From 0a8e90a8b3bcf9059ba968222840a7ee8a411c9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Tue, 17 Feb 2009 15:27:43 +0000 Subject: [PATCH] EZ-Components --- include/ezcomponents/Base/CREDITS | 16 + include/ezcomponents/Base/ChangeLog | 251 + include/ezcomponents/Base/DESCRIPTION | 2 + .../Base/design/class_diagram.png | Bin 0 -> 151717 bytes include/ezcomponents/Base/design/design.txt | 9 + .../Base/docs/repos/Me/myclass1.php | 9 + .../Base/docs/repos/Me/myclass2.php | 9 + .../Base/docs/repos/You/yourclass1.php | 9 + .../Base/docs/repos/You/yourclass2.php | 9 + .../Base/docs/repos/autoloads/my_autoload.php | 6 + .../docs/repos/autoloads/your_autoload.php | 6 + include/ezcomponents/Base/docs/tutorial.txt | 224 + .../Base/docs/tutorial_autoload.php | 20 + .../Base/docs/tutorial_example_01.php | 9 + .../Base/docs/tutorial_example_02.php | 11 + .../Base/docs/tutorial_example_03.php | 6 + .../docs/tutorial_lazy_initialization.php | 38 + include/ezcomponents/Base/review-1.5.txt | 23 + include/ezcomponents/Base/src/base.php | 592 ++ .../Base/src/exceptions/autoload.php | 38 + .../double_class_repository_prefix.php | 34 + .../Base/src/exceptions/exception.php | 43 + .../src/exceptions/extension_not_found.php | 38 + .../Base/src/exceptions/file_exception.php | 25 + .../Base/src/exceptions/file_io.php | 50 + .../Base/src/exceptions/file_not_found.php | 43 + .../Base/src/exceptions/file_permission.php | 63 + .../exceptions/init_callback_configured.php | 31 + .../src/exceptions/invalid_callback_class.php | 31 + .../src/exceptions/invalid_parent_class.php | 29 + .../src/exceptions/property_not_found.php | 30 + .../src/exceptions/property_permission.php | 42 + .../Base/src/exceptions/setting_not_found.php | 29 + .../Base/src/exceptions/setting_value.php | 42 + .../Base/src/exceptions/value.php | 43 + .../Base/src/exceptions/whatever.php | 40 + .../ezcomponents/Base/src/ezc_bootstrap.php | 39 + include/ezcomponents/Base/src/features.php | 329 + include/ezcomponents/Base/src/file.php | 377 ++ include/ezcomponents/Base/src/init.php | 125 + .../interfaces/configuration_initializer.php | 30 + .../Base/src/interfaces/persistable.php | 40 + include/ezcomponents/Base/src/options.php | 174 + .../Base/src/options/autoload.php | 75 + include/ezcomponents/Base/src/struct.php | 42 + .../Base/src/structs/repository_directory.php | 83 + .../Base/tests/base_init_test.php | 81 + .../Base/tests/base_options_test.php | 129 + include/ezcomponents/Base/tests/base_test.php | 497 ++ .../extra_repository/Translation/test.php | 5 + .../autoload/translation_autoload.php | 5 + .../ezcomponents/Base/tests/features_test.php | 145 + .../file_calculate_relative_path_test.php | 67 + .../Base/tests/file_copy_recursive_test.php | 234 + .../Base/tests/file_find_recursive_test.php | 142 + .../Base/tests/file_is_absolute_path.php | 224 + .../Base/tests/file_remove_recursive_test.php | 131 + .../Base/tests/init/base_init_callback.php | 23 + .../Base/tests/init/base_init_class.php | 31 + .../ezcomponents/Base/tests/struct_test.php | 53 + include/ezcomponents/Base/tests/suite.php | 49 + .../ezcomponents/Base/tests/test_options.php | 18 + .../TestClasses/base_test_class.php | 4 + .../base_test_class_number_two.php | 4 + .../TestClasses/base_test_long_class.php | 4 + .../autoload_files/basetest_autoload.php | 7 + .../autoload_files/basetest_long_autoload.php | 5 + .../autoload_files/object_autoload.php | 5 + .../tests/test_repository/object/object.php | 4 + include/ezcomponents/ChangeLog | 1055 ++++ include/ezcomponents/Graph/CREDITS | 27 + include/ezcomponents/Graph/ChangeLog | 228 + include/ezcomponents/Graph/DESCRIPTION | 1 + .../Graph/design/class_diagram.png | Bin 0 -> 2154549 bytes include/ezcomponents/Graph/design/design.txt | 143 + .../enhancements/interactive_data_points.txt | 167 + .../design/enhancements/multiple_axis.txt | 97 + .../Graph/design/requirements.txt | 75 + .../requirements/interactive_data_points.txt | 81 + .../design/requirements/multiple_axis.txt | 60 + .../Graph/docs/examples/ez_green.php | 82 + .../Graph/docs/examples/ez_red.php | 82 + .../Graph/docs/examples/forum_evolution.php | 48 + .../Graph/docs/examples/forum_month.php | 47 + .../Graph/docs/examples/forum_weekly.php | 45 + .../Graph/docs/examples/forum_year.php | 45 + .../Graph/docs/examples/php_magazine.php | 45 + .../Graph/docs/examples/wikipedia.php | 39 + .../docs/img/tutorial_axis_datetime.svg.png | Bin 0 -> 15411 bytes .../docs/img/tutorial_axis_labeled.svg.png | Bin 0 -> 10674 bytes .../docs/img/tutorial_axis_numeric.svg.png | Bin 0 -> 17913 bytes .../Graph/docs/img/tutorial_bar_chart.svg.png | Bin 0 -> 14450 bytes .../docs/img/tutorial_bar_chart_3d.svg.png | Bin 0 -> 25350 bytes .../img/tutorial_bar_chart_options.svg.png | Bin 0 -> 17995 bytes .../docs/img/tutorial_bar_line_chart.svg.png | Bin 0 -> 15246 bytes .../docs/img/tutorial_bar_options.svg.png | Bin 0 -> 18447 bytes .../img/tutorial_chart_background.svg.png | Bin 0 -> 23140 bytes .../docs/img/tutorial_chart_legend.svg.png | Bin 0 -> 21679 bytes .../docs/img/tutorial_chart_title.svg.png | Bin 0 -> 21907 bytes .../img/tutorial_complex_radar_chart.svg.png | Bin 0 -> 72733 bytes .../tutorial_custom_odometer_chart.svg.png | Bin 0 -> 8620 bytes .../docs/img/tutorial_custom_palette.svg.png | Bin 0 -> 16224 bytes .../docs/img/tutorial_dataset_average.svg.png | Bin 0 -> 16904 bytes .../docs/img/tutorial_dataset_numeric.svg.png | Bin 0 -> 9839 bytes .../Graph/docs/img/tutorial_driver_flash.swf | Bin 0 -> 35265 bytes .../Graph/docs/img/tutorial_driver_gd.jpg | Bin 0 -> 37275 bytes .../docs/img/tutorial_driver_svg.svg.png | Bin 0 -> 72895 bytes .../docs/img/tutorial_legend_options.svg.png | Bin 0 -> 19582 bytes .../docs/img/tutorial_line_chart.svg.png | Bin 0 -> 15623 bytes .../docs/img/tutorial_line_chart_3d.svg.png | Bin 0 -> 32321 bytes ...utorial_line_chart_additional_axis.svg.png | Bin 0 -> 18277 bytes .../img/tutorial_line_chart_markers.svg.png | Bin 0 -> 17421 bytes .../img/tutorial_modified_palette.svg.png | Bin 0 -> 18143 bytes .../docs/img/tutorial_odometer_chart.svg.png | Bin 0 -> 5370 bytes .../docs/img/tutorial_pie_chart_3d.svg.png | Bin 0 -> 29893 bytes .../img/tutorial_pie_chart_options.svg.png | Bin 0 -> 23609 bytes .../img/tutorial_pie_chart_pimped.svg.png | Bin 0 -> 26199 bytes .../docs/img/tutorial_pie_options.svg.png | Bin 0 -> 19934 bytes .../docs/img/tutorial_radar_chart.svg.png | Bin 0 -> 26220 bytes .../Graph/docs/img/tutorial_reference_gd.html | 31 + .../Graph/docs/img/tutorial_reference_gd.png | Bin 0 -> 52161 bytes .../Graph/docs/img/tutorial_reference_svg.svg | 2 + .../docs/img/tutorial_renderer_3d.svg.png | Bin 0 -> 20436 bytes .../docs/img/tutorial_rotated_labels.svg.png | Bin 0 -> 16097 bytes .../docs/img/tutorial_simple_pie.svg.png | Bin 0 -> 20946 bytes .../img/tutorial_stacked_bar_chart.svg.png | Bin 0 -> 14957 bytes .../docs/img/tutorial_user_palette.svg.png | Bin 0 -> 17862 bytes include/ezcomponents/Graph/docs/tutorial.txt | 1223 ++++ .../ezcomponents/Graph/docs/tutorial/ez.png | Bin 0 -> 1291 bytes .../Graph/docs/tutorial/template.svg | 191 + .../Graph/docs/tutorial/tutorial_autoload.php | 20 + .../docs/tutorial/tutorial_axis_datetime.php | 33 + .../docs/tutorial/tutorial_axis_labeled.php | 31 + .../docs/tutorial/tutorial_axis_numeric.php | 32 + .../docs/tutorial/tutorial_bar_chart.php | 17 + .../docs/tutorial/tutorial_bar_chart_3d.php | 26 + .../tutorial/tutorial_bar_chart_options.php | 35 + .../docs/tutorial/tutorial_bar_line_chart.php | 20 + .../docs/tutorial/tutorial_bar_options.php | 28 + .../tutorial/tutorial_chart_background.php | 23 + .../docs/tutorial/tutorial_chart_legend.php | 21 + .../docs/tutorial/tutorial_chart_title.php | 26 + .../tutorial/tutorial_complex_radar_chart.php | 32 + .../tutorial_custom_odometer_chart.php | 36 + .../docs/tutorial/tutorial_custom_palette.php | 22 + .../tutorial_custom_palette_palette.php | 24 + .../tutorial/tutorial_dataset_average.php | 25 + .../tutorial/tutorial_dataset_numeric.php | 24 + .../docs/tutorial/tutorial_driver_cairo.php | 36 + .../docs/tutorial/tutorial_driver_flash.php | 31 + .../docs/tutorial/tutorial_driver_gd.php | 33 + .../docs/tutorial/tutorial_driver_svg.php | 31 + .../Graph/docs/tutorial/tutorial_font.fdb | Bin 0 -> 31365 bytes .../Graph/docs/tutorial/tutorial_font.pfb | Bin 0 -> 19280 bytes .../Graph/docs/tutorial/tutorial_font.ttf | Bin 0 -> 60280 bytes .../docs/tutorial/tutorial_legend_options.php | 23 + .../docs/tutorial/tutorial_line_chart.php | 17 + .../docs/tutorial/tutorial_line_chart_3d.php | 28 + .../tutorial_line_chart_additional_axis.php | 33 + .../tutorial/tutorial_line_chart_markers.php | 23 + .../tutorial/tutorial_modified_palette.php | 22 + .../docs/tutorial/tutorial_odometer_chart.php | 16 + .../Graph/docs/tutorial/tutorial_output.php | 19 + .../docs/tutorial/tutorial_pie_chart_3d.php | 42 + .../tutorial/tutorial_pie_chart_options.php | 34 + .../tutorial/tutorial_pie_chart_pimped.php | 40 + .../docs/tutorial/tutorial_pie_options.php | 25 + .../docs/tutorial/tutorial_radar_chart.php | 19 + .../docs/tutorial/tutorial_reference_gd.php | 41 + .../docs/tutorial/tutorial_reference_svg.php | 25 + .../docs/tutorial/tutorial_renderer_3d.php | 21 + .../docs/tutorial/tutorial_rotated_labels.php | 24 + .../docs/tutorial/tutorial_simple_pie.php | 19 + .../tutorial/tutorial_stacked_bar_chart.php | 22 + .../docs/tutorial/tutorial_user_palette.php | 21 + .../docs/tutorial/tutorial_wikipedia_data.php | 30 + .../ezcomponents/Graph/src/axis/container.php | 221 + include/ezcomponents/Graph/src/axis/date.php | 585 ++ .../ezcomponents/Graph/src/axis/labeled.php | 448 ++ .../Graph/src/axis/logarithmic.php | 303 + .../ezcomponents/Graph/src/axis/numeric.php | 422 ++ include/ezcomponents/Graph/src/charts/bar.php | 94 + .../ezcomponents/Graph/src/charts/line.php | 652 ++ .../Graph/src/charts/odometer.php | 296 + include/ezcomponents/Graph/src/charts/pie.php | 308 + .../ezcomponents/Graph/src/charts/radar.php | 457 ++ .../ezcomponents/Graph/src/colors/color.php | 269 + .../Graph/src/colors/linear_gradient.php | 147 + .../Graph/src/colors/radial_gradient.php | 173 + .../Graph/src/data_container/base.php | 225 + .../Graph/src/data_container/single.php | 51 + .../ezcomponents/Graph/src/datasets/array.php | 71 + .../Graph/src/datasets/average.php | 359 ++ .../ezcomponents/Graph/src/datasets/base.php | 295 + .../Graph/src/datasets/numeric.php | 287 + .../Graph/src/datasets/property/axis.php | 56 + .../Graph/src/datasets/property/boolean.php | 31 + .../Graph/src/datasets/property/color.php | 31 + .../Graph/src/datasets/property/integer.php | 31 + .../Graph/src/datasets/property/string.php | 31 + .../ezcomponents/Graph/src/driver/cairo.php | 1010 ++++ .../ezcomponents/Graph/src/driver/flash.php | 972 +++ include/ezcomponents/Graph/src/driver/gd.php | 1209 ++++ include/ezcomponents/Graph/src/driver/svg.php | 1230 ++++ .../Graph/src/driver/svg_font.php | 299 + .../ezcomponents/Graph/src/driver/verbose.php | 242 + .../ezcomponents/Graph/src/element/axis.php | 438 ++ .../Graph/src/element/background.php | 202 + .../ezcomponents/Graph/src/element/legend.php | 298 + .../ezcomponents/Graph/src/element/text.php | 122 + .../Graph/src/exceptions/date_parsing.php | 33 + .../Graph/src/exceptions/exception.php | 20 + .../src/exceptions/flash_bitmap_type.php | 31 + .../Graph/src/exceptions/font_rendering.php | 40 + .../Graph/src/exceptions/font_type.php | 32 + .../src/exceptions/incompatible_driver.php | 34 + .../src/exceptions/invalid_assignement.php | 31 + .../Graph/src/exceptions/invalid_data.php | 32 + .../src/exceptions/invalid_data_source.php | 33 + .../src/exceptions/invalid_dimensions.php | 35 + .../src/exceptions/invalid_display_type.php | 46 + .../Graph/src/exceptions/invalid_id.php | 32 + .../src/exceptions/invalid_image_file.php | 31 + .../Graph/src/exceptions/invalid_keys.php | 31 + .../Graph/src/exceptions/no_data.php | 30 + .../Graph/src/exceptions/no_such_data.php | 31 + .../Graph/src/exceptions/no_such_dataset.php | 31 + .../Graph/src/exceptions/no_such_element.php | 31 + .../Graph/src/exceptions/not_rendered.php | 32 + .../Graph/src/exceptions/out_of_boundings.php | 35 + .../out_of_logarithmical_boundings.php | 32 + .../src/exceptions/reducement_failed.php | 31 + .../src/exceptions/too_many_datasets.php | 31 + .../exceptions/unknown_color_definition.php | 32 + .../Graph/src/exceptions/unregular_steps.php | 31 + .../src/exceptions/unsupported_image_type.php | 61 + include/ezcomponents/Graph/src/graph.php | 134 + .../src/interfaces/axis_label_renderer.php | 438 ++ .../Graph/src/interfaces/chart.php | 288 + .../Graph/src/interfaces/dataset_property.php | 179 + .../Graph/src/interfaces/driver.php | 740 +++ .../Graph/src/interfaces/element.php | 280 + .../src/interfaces/odometer_renderer.php | 51 + .../Graph/src/interfaces/palette.php | 284 + .../Graph/src/interfaces/radar_renderer.php | 54 + .../Graph/src/interfaces/renderer.php | 571 ++ .../src/interfaces/stacked_bar_renderer.php | 46 + .../ezcomponents/Graph/src/math/boundings.php | 105 + .../ezcomponents/Graph/src/math/matrix.php | 502 ++ .../ezcomponents/Graph/src/math/polynom.php | 230 + .../ezcomponents/Graph/src/math/rotation.php | 90 + .../Graph/src/math/transformation.php | 85 + .../Graph/src/math/translation.php | 38 + .../ezcomponents/Graph/src/math/vector.php | 187 + .../Graph/src/options/cairo_driver.php | 100 + .../ezcomponents/Graph/src/options/chart.php | 107 + .../ezcomponents/Graph/src/options/driver.php | 157 + .../Graph/src/options/flash_driver.php | 103 + .../ezcomponents/Graph/src/options/font.php | 292 + .../Graph/src/options/gd_driver.php | 181 + .../Graph/src/options/line_chart.php | 189 + .../Graph/src/options/odometer_chart.php | 113 + .../Graph/src/options/pie_chart.php | 143 + .../Graph/src/options/radar_chart.php | 172 + .../Graph/src/options/renderer.php | 212 + .../Graph/src/options/renderer_2d.php | 120 + .../Graph/src/options/renderer_3d.php | 185 + .../Graph/src/options/svg_driver.php | 272 + .../ezcomponents/Graph/src/palette/black.php | 114 + include/ezcomponents/Graph/src/palette/ez.php | 97 + .../Graph/src/palette/ez_blue.php | 90 + .../Graph/src/palette/ez_green.php | 90 + .../ezcomponents/Graph/src/palette/ez_red.php | 90 + .../ezcomponents/Graph/src/palette/tango.php | 87 + .../ezcomponents/Graph/src/renderer/2d.php | 1707 ++++++ .../ezcomponents/Graph/src/renderer/3d.php | 2407 ++++++++ .../Graph/src/renderer/axis_label_boxed.php | 227 + .../src/renderer/axis_label_centered.php | 275 + .../Graph/src/renderer/axis_label_exact.php | 279 + .../Graph/src/renderer/axis_label_none.php | 44 + .../Graph/src/renderer/axis_label_radar.php | 322 + .../Graph/src/renderer/axis_label_rotated.php | 428 ++ .../Graph/src/structs/context.php | 76 + .../Graph/src/structs/coordinate.php | 70 + .../ezcomponents/Graph/src/structs/step.php | 99 + include/ezcomponents/Graph/src/tools.php | 183 + .../ezcomponents/GraphDatabaseTiein/CREDITS | 16 + .../ezcomponents/GraphDatabaseTiein/ChangeLog | 17 + include/ezcomponents/GraphDatabaseTiein/DEPS | 1 + .../GraphDatabaseTiein/DESCRIPTION | 2 + include/ezcomponents/GraphDatabaseTiein/TODO | 3 + .../design/class_diagram.png | Bin 0 -> 3721 bytes .../GraphDatabaseTiein/design/design.txt | 29 + .../docs/img/tutorial_multiple.svg.png | Bin 0 -> 30527 bytes .../docs/img/tutorial_simple.svg.png | Bin 0 -> 28631 bytes .../docs/img/tutorial_single.svg.png | Bin 0 -> 18720 bytes .../GraphDatabaseTiein/docs/tutorial.txt | 132 + .../docs/tutorial/tutorial_autoload.php | 20 + .../docs/tutorial/tutorial_insert_data.php | 19 + .../docs/tutorial/tutorial_multiple.php | 45 + .../docs/tutorial/tutorial_simple.php | 22 + .../docs/tutorial/tutorial_single.php | 26 + .../GraphDatabaseTiein/src/dataset.php | 139 + .../src/exceptions/exception.php | 20 + .../src/exceptions/missing_column.php | 31 + .../src/exceptions/statement_not_executed.php | 31 + .../src/exceptions/too_many_columns.php | 33 + .../tests/dataset_pdo_test.php | 374 ++ .../GraphDatabaseTiein/tests/suite.php | 31 + include/ezcomponents/ImageAnalysis/CREDITS | 16 + include/ezcomponents/ImageAnalysis/ChangeLog | 113 + .../ezcomponents/ImageAnalysis/DESCRIPTION | 3 + .../ImageAnalysis/design/class_diagram.png | Bin 0 -> 21927 bytes .../ImageAnalysis/design/imageanalysis.png | Bin 0 -> 3306 bytes .../ImageAnalysis/design/imageanalysis.xml | 379 ++ .../ImageAnalysis/docs/example.php | 32 + .../docs/img/imageanalysis_example_01.jpg | Bin 0 -> 17018 bytes .../docs/img/imageanalysis_example_02.jpg | Bin 0 -> 25984 bytes .../docs/img/imageanalysis_example_03.jpg | Bin 0 -> 26365 bytes .../ezcomponents/ImageAnalysis/docs/toby.jpg | Bin 0 -> 76383 bytes .../ImageAnalysis/docs/tutorial.txt | 126 + .../ImageAnalysis/docs/tutorial_autoload.php | 20 + .../docs/tutorial_example_01.php | 8 + .../docs/tutorial_example_02.php | 15 + .../docs/tutorial_example_03.php | 21 + .../ImageAnalysis/src/analyzer.php | 354 ++ .../src/exceptions/exception.php | 20 + .../src/exceptions/file_not_processable.php | 37 + .../src/exceptions/invalid_handler.php | 31 + .../src/handlers/imagemagick.php | 637 ++ .../ImageAnalysis/src/handlers/php.php | 458 ++ .../ImageAnalysis/src/interfaces/handler.php | 131 + .../src/structs/analyzer_data.php | 221 + .../ImageAnalysis/tests/analyzer_test.php | 818 +++ .../ImageAnalysis/tests/data/gif_animated.gif | Bin 0 -> 4100 bytes .../tests/data/gif_nonanimated.gif | Bin 0 -> 5849 bytes .../ImageAnalysis/tests/data/jpeg_exif.jpg | Bin 0 -> 76383 bytes .../ImageAnalysis/tests/data/jpeg_noexif.jpg | Bin 0 -> 68802 bytes .../tests/data/png_nonanimated.png | Bin 0 -> 5420 bytes .../ImageAnalysis/tests/data/svg.svg | 62 + .../ImageAnalysis/tests/data/tiff_exif.tiff | Bin 0 -> 108125 bytes .../ImageAnalysis/tests/data/tiff_noexif.tiff | Bin 0 -> 108043 bytes .../ImageAnalysis/tests/suite.php | 37 + include/ezcomponents/ImageConversion/CREDITS | 16 + .../ezcomponents/ImageConversion/ChangeLog | 279 + include/ezcomponents/ImageConversion/DEPS | 1 + .../ezcomponents/ImageConversion/DESCRIPTION | 2 + include/ezcomponents/ImageConversion/TODO | 1 + .../ImageConversion/design/class_diagram.png | Bin 0 -> 119211 bytes .../ImageConversion/design/design.htm | 157 + .../ImageConversion/design/design.txt | 218 + .../ImageConversion/design/image.png | Bin 0 -> 13618 bytes .../ImageConversion/design/image.xml | 4571 ++++++++++++++ .../design/image_exceptions.png | Bin 0 -> 7794 bytes .../ImageConversion/design/image_filters.png | Bin 0 -> 20757 bytes .../ImageConversion/docs/example_general.php | 66 + .../docs/example_singleton.php | 90 + .../img/imageconversion_example_01_after.jpg | Bin 0 -> 30518 bytes .../img/imageconversion_example_01_before.bmp | Bin 0 -> 90054 bytes .../img/imageconversion_example_02_after.jpg | Bin 0 -> 7776 bytes .../img/imageconversion_example_02_before.jpg | Bin 0 -> 25091 bytes .../img/imageconversion_example_03_after.jpg | Bin 0 -> 7208 bytes .../img/imageconversion_example_03_before.jpg | Bin 0 -> 14312 bytes .../img/imageconversion_example_04_after.jpg | Bin 0 -> 12768 bytes .../img/imageconversion_example_04_before.jpg | Bin 0 -> 18879 bytes .../img/imageconversion_example_05_after.jpg | Bin 0 -> 3105 bytes .../img/imageconversion_example_05_before.jpg | Bin 0 -> 68004 bytes .../ImageConversion/docs/img/watermark.png | Bin 0 -> 797 bytes .../ImageConversion/docs/jpeg.jpg | Bin 0 -> 4903 bytes .../ImageConversion/docs/tutorial.txt | 243 + .../docs/tutorial_autoload.php | 20 + .../tutorial_example_01_simpleconvert.php | 32 + .../docs/tutorial_example_02_simpletrans.php | 42 + .../docs/tutorial_example_03_complextrans.php | 58 + .../docs/tutorial_example_04_watermark.php | 45 + .../docs/tutorial_example_05_thumbnail.php | 49 + .../ImageConversion/review-1.3.4.txt | 4 + .../ImageConversion/src/converter.php | 527 ++ .../src/exceptions/exception.php | 20 + .../src/exceptions/file_name_invalid.php | 31 + .../src/exceptions/file_not_processable.php | 37 + .../src/exceptions/filter_failed.php | 37 + .../src/exceptions/filter_not_available.php | 31 + .../src/exceptions/handler_not_available.php | 37 + .../exceptions/handler_settings_invalid.php | 31 + .../exceptions/invalid_filter_parameter.php | 40 + .../src/exceptions/invalid_reference.php | 37 + .../src/exceptions/mime_type_unsupported.php | 32 + .../exceptions/missing_filter_parameter.php | 32 + .../src/exceptions/transformation.php | 55 + .../transformation_already_exists.php | 31 + .../transformation_not_available.php | 31 + .../ImageConversion/src/handlers/gd.php | 953 +++ .../ImageConversion/src/handlers/gd_base.php | 297 + .../src/handlers/imagemagick.php | 769 +++ .../src/handlers/imagemagick_base.php | 471 ++ .../src/interfaces/colorspace.php | 69 + .../ImageConversion/src/interfaces/effect.php | 90 + .../src/interfaces/geometry.php | 177 + .../src/interfaces/handler.php | 280 + .../src/interfaces/methodcall_handler.php | 573 ++ .../src/interfaces/thumbnail.php | 70 + .../src/interfaces/watermark.php | 74 + .../src/options/save_options.php | 84 + .../src/structs/converter_settings.php | 71 + .../ImageConversion/src/structs/filter.php | 81 + .../src/structs/handler_settings.php | 87 + .../ImageConversion/src/transformation.php | 401 ++ .../ImageConversion/tests/converter_test.php | 614 ++ ...erterTest_testApplyFilterSuccessColorspace | Bin 0 -> 6732 bytes ...ApplyFilterSuccessColorspaceDefinedHandler | Bin 0 -> 6732 bytes ...nConverterTest_testApplyFilterSuccessScale | Bin 0 -> 740 bytes ...ConversionFiltersGdTest_testColorspaceGrey | Bin 0 -> 4623 bytes ...sionFiltersGdTest_testColorspaceMonochrome | Bin 0 -> 6732 bytes ...onversionFiltersGdTest_testColorspaceSepia | Bin 0 -> 4758 bytes ...sionFiltersGdTest_testCropNegativeOffset_1 | Bin 0 -> 1526 bytes ...sionFiltersGdTest_testCropNegativeOffset_2 | Bin 0 -> 1400 bytes ...sionFiltersGdTest_testCropNegativeOffset_3 | Bin 0 -> 1526 bytes ...nFiltersGdTest_testCropThumbnailHorizontal | Bin 0 -> 2247 bytes ...ionFiltersGdTest_testCropThumbnailVertical | Bin 0 -> 1559 bytes ...onversionFiltersGdTest_testCropTransparent | Bin 0 -> 95 bytes ...eConversionFiltersGdTest_testCrop_0_Offset | Bin 0 -> 717 bytes ...ezcImageConversionFiltersGdTest_testCrop_1 | Bin 0 -> 1328 bytes ...ezcImageConversionFiltersGdTest_testCrop_2 | Bin 0 -> 1328 bytes ...ezcImageConversionFiltersGdTest_testCrop_3 | Bin 0 -> 1700 bytes ...ezcImageConversionFiltersGdTest_testCrop_4 | Bin 0 -> 1080 bytes ...nFiltersGdTest_testFillThumbnailHorizontal | Bin 0 -> 1928 bytes ...GdTest_testFillThumbnailTooLargeColorArray | Bin 0 -> 1928 bytes ...ionFiltersGdTest_testFillThumbnailVertical | Bin 0 -> 1580 bytes ...nversionFiltersGdTest_testScaleTransparent | Bin 0 -> 2632 bytes ...FiltersGdTest_testWatermarkAbsoluteNoScale | Bin 0 -> 5161 bytes ...onFiltersGdTest_testWatermarkAbsoluteScale | Bin 0 -> 5360 bytes ...nFiltersGdTest_testWatermarkPercentNoScale | Bin 0 -> 5133 bytes ...ionFiltersGdTest_testWatermarkPercentScale | Bin 0 -> 5067 bytes ...ageConversionFiltersShellTest_testBorder_2 | Bin 0 -> 5619 bytes ...ageConversionFiltersShellTest_testBorder_5 | Bin 0 -> 5701 bytes ...versionFiltersShellTest_testColorspaceGrey | Bin 0 -> 3990 bytes ...nFiltersShellTest_testColorspaceMonochrome | Bin 0 -> 7284 bytes ...ersionFiltersShellTest_testColorspaceSepia | Bin 0 -> 5248 bytes ...nFiltersShellTest_testCropNegativeOffset_1 | Bin 0 -> 1205 bytes ...nFiltersShellTest_testCropNegativeOffset_2 | Bin 0 -> 1056 bytes ...nFiltersShellTest_testCropNegativeOffset_3 | Bin 0 -> 1205 bytes ...ltersShellTest_testCropThumbnailHorizontal | Bin 0 -> 2120 bytes ...FiltersShellTest_testCropThumbnailVertical | Bin 0 -> 1280 bytes ...nversionFiltersShellTest_testCrop_0_Offset | Bin 0 -> 325 bytes ...ImageConversionFiltersShellTest_testCrop_1 | Bin 0 -> 1005 bytes ...ImageConversionFiltersShellTest_testCrop_2 | Bin 0 -> 1005 bytes ...ImageConversionFiltersShellTest_testCrop_3 | Bin 0 -> 1365 bytes ...ltersShellTest_testFillThumbnailHorizontal | Bin 0 -> 1717 bytes ...llTest_testFillThumbnailTooLargeColorArray | Bin 0 -> 1717 bytes ...FiltersShellTest_testFillThumbnailVertical | Bin 0 -> 1271 bytes ...nversionFiltersShellTest_testNoiseGaussian | Bin 0 -> 16834 bytes ...onversionFiltersShellTest_testNoiseImpulse | Bin 0 -> 11127 bytes ...versionFiltersShellTest_testNoiseLaplacian | Bin 0 -> 15707 bytes ...onFiltersShellTest_testNoiseMultiplicative | Bin 0 -> 17177 bytes ...onversionFiltersShellTest_testNoisePoisson | Bin 0 -> 11239 bytes ...onversionFiltersShellTest_testNoiseUniform | Bin 0 -> 4892 bytes ...cImageConversionFiltersShellTest_testScale | Bin 0 -> 20797 bytes ...onversionFiltersShellTest_testScaleDown_do | Bin 0 -> 315 bytes ...versionFiltersShellTest_testScaleDown_dont | Bin 0 -> 4890 bytes ...onversionFiltersShellTest_testScaleExact_1 | Bin 0 -> 7611 bytes ...onversionFiltersShellTest_testScaleExact_2 | Bin 0 -> 1008 bytes ...onversionFiltersShellTest_testScaleExact_3 | Bin 0 -> 1141 bytes ...sionFiltersShellTest_testScaleHeightDown_1 | Bin 0 -> 4890 bytes ...sionFiltersShellTest_testScaleHeightDown_2 | Bin 0 -> 796 bytes ...ersionFiltersShellTest_testScaleHeightUp_1 | Bin 0 -> 15616 bytes ...ersionFiltersShellTest_testScaleHeightUp_2 | Bin 0 -> 4890 bytes ...versionFiltersShellTest_testScalePercent_1 | Bin 0 -> 1839 bytes ...versionFiltersShellTest_testScalePercent_2 | Bin 0 -> 7611 bytes ...eConversionFiltersShellTest_testScaleUp_do | Bin 0 -> 20797 bytes ...onversionFiltersShellTest_testScaleUp_dont | Bin 0 -> 4890 bytes ...versionFiltersShellTest_testScaleWidthBoth | Bin 0 -> 1087 bytes ...rsionFiltersShellTest_testScaleWidthDown_1 | Bin 0 -> 4890 bytes ...rsionFiltersShellTest_testScaleWidthDown_2 | Bin 0 -> 1087 bytes ...versionFiltersShellTest_testScaleWidthUp_1 | Bin 0 -> 4890 bytes ...versionFiltersShellTest_testScaleWidthUp_2 | Bin 0 -> 10168 bytes ...ageConversionFiltersShellTest_testSwirl_10 | Bin 0 -> 4544 bytes ...geConversionFiltersShellTest_testSwirl_100 | Bin 0 -> 4662 bytes ...ageConversionFiltersShellTest_testSwirl_50 | Bin 0 -> 4605 bytes ...tersShellTest_testWatermarkAbsoluteNoScale | Bin 0 -> 5119 bytes ...iltersShellTest_testWatermarkAbsoluteScale | Bin 0 -> 4948 bytes ...ltersShellTest_testWatermarkPercentNoScale | Bin 0 -> 5069 bytes ...FiltersShellTest_testWatermarkPercentScale | Bin 0 -> 4999 bytes ...rsionHandlerGdTest_testApplyFilterMultiple | Bin 0 -> 2938 bytes ...versionHandlerGdTest_testApplyFilterSingle | Bin 0 -> 6466 bytes ...dTest_testConvertTransparentNonTransparent | Bin 0 -> 1626 bytes ...ersionHandlerGdTest_testSaveNewfileConvert | Bin 0 -> 32246 bytes ...sionHandlerGdTest_testSaveNewfileNoconvert | Bin 0 -> 4969 bytes ...sionHandlerGdTest_testSaveOldfileNoconvert | Bin 0 -> 4969 bytes ...onHandlerShellTest_testApplyFilterMultiple | Bin 0 -> 3089 bytes ...sionHandlerShellTest_testApplyFilterSingle | Bin 0 -> 6366 bytes ...lTest_testConvertTransparentNonTransparent | Bin 0 -> 1541 bytes ...HandlerTest_testSaveIllegalFileNameFailure | Bin 0 -> 32338 bytes ...nversionHandlerTest_testSaveNewfileConvert | Bin 0 -> 32338 bytes ...ersionHandlerTest_testSaveNewfileNoconvert | Bin 0 -> 4890 bytes ...ersionHandlerTest_testSaveOldfileNoconvert | Bin 0 -> 4890 bytes ...nTransformationTest_testMultiTransformjpeg | Bin 0 -> 1001 bytes ...onTransformationTest_testMultiTransformpng | Bin 0 -> 936 bytes ...mationTest_testTransformSuccessGifAnimated | Bin 0 -> 4100 bytes ...ansformationTest_testTransformSuccessGif_1 | Bin 0 -> 1282 bytes ...ansformationTest_testTransformSuccessGif_2 | Bin 0 -> 316 bytes ...ansformationTest_testTransformSuccessGif_3 | Bin 0 -> 7430 bytes ...nsformationTest_testTransformSuccessJpeg_1 | Bin 0 -> 1001 bytes ...nsformationTest_testTransformSuccessJpeg_2 | Bin 0 -> 1610 bytes ...nsformationTest_testTransformSuccessJpeg_3 | Bin 0 -> 2331 bytes ...ansformationTest_testTransformSuccessPng_1 | Bin 0 -> 1455 bytes ...ansformationTest_testTransformSuccessPng_2 | Bin 0 -> 346 bytes ...ansformationTest_testTransformSuccessPng_3 | Bin 0 -> 9825 bytes ...ansformationTest_testTransformSuccessPng_4 | Bin 0 -> 2888 bytes ...stTransformationChangingHandlersForFilters | Bin 0 -> 26126 bytes .../tests/data/gif_animated.gif | Bin 0 -> 4100 bytes .../tests/data/gif_nonanimated.gif | Bin 0 -> 15112 bytes .../ImageConversion/tests/data/jpeg.jpg | Bin 0 -> 4903 bytes .../ImageConversion/tests/data/png.png | Bin 0 -> 28726 bytes .../tests/data/png_transparent.png | Bin 0 -> 5546 bytes .../ImageConversion/tests/data/text.txt | 1 + .../ImageConversion/tests/data/watermark.png | Bin 0 -> 797 bytes .../ImageConversion/tests/data/xpm.xpm | 5318 +++++++++++++++++ .../ImageConversion/tests/filtersgd_test.php | 1067 ++++ .../tests/filtersshell_test.php | 1089 ++++ .../ImageConversion/tests/handler_test.php | 214 + .../ImageConversion/tests/handlergd_test.php | 374 ++ .../tests/handlershell_test.php | 281 + .../tests/save_options_test.php | 103 + .../ImageConversion/tests/suite.php | 44 + .../ImageConversion/tests/test_case.php | 100 + .../tests/transformation_test.php | 970 +++ include/ezcomponents/LICENSE | 32 + .../autoload/archive_autoload.php | 45 + .../autoload/authentication_autoload.php | 52 + .../authentication_database_autoload.php | 17 + .../authentication_openid_autoload.php | 16 + .../ezcomponents/autoload/base_autoload.php | 41 + .../ezcomponents/autoload/cache_autoload.php | 63 + .../autoload/configuration_autoload.php | 43 + .../autoload/console_autoload.php | 70 + include/ezcomponents/autoload/db_autoload.php | 32 + .../autoload/db_schema_autoload.php | 68 + .../ezcomponents/autoload/debug_autoload.php | 30 + .../autoload/document_autoload.php | 108 + .../autoload/execution_autoload.php | 22 + .../ezcomponents/autoload/feed_autoload.php | 52 + .../ezcomponents/autoload/file_autoload.php | 15 + .../ezcomponents/autoload/graph_autoload.php | 124 + .../autoload/graph_database_autoload.php | 19 + .../autoload/image_analyzer_autoload.php | 22 + .../ezcomponents/autoload/image_autoload.php | 45 + .../ezcomponents/autoload/input_autoload.php | 25 + .../ezcomponents/autoload/log_autoload.php | 27 + .../autoload/log_database_autoload.php | 15 + .../ezcomponents/autoload/mail_autoload.php | 81 + .../autoload/persistent_autoload.php | 62 + .../autoload/persistent_object_autoload.php | 15 + .../autoload/php_generator_autoload.php | 19 + .../ezcomponents/autoload/query_autoload.php | 33 + .../ezcomponents/autoload/search_autoload.php | 46 + .../ezcomponents/autoload/signal_autoload.php | 20 + .../ezcomponents/autoload/system_autoload.php | 22 + .../autoload/template_autoload.php | 299 + .../template_translation_autoload.php | 19 + .../autoload/translation_autoload.php | 34 + .../autoload/translation_cache_autoload.php | 15 + .../ezcomponents/autoload/tree_autoload.php | 44 + .../autoload/tree_db_autoload.php | 21 + .../autoload/tree_persistent_autoload.php | 15 + .../ezcomponents/autoload/url_autoload.php | 22 + .../ezcomponents/autoload/webdav_autoload.php | 112 + .../autoload/workflow_autoload.php | 91 + .../autoload/workflow_database_autoload.php | 18 + .../autoload/workflow_event_autoload.php | 16 + .../autoload/workflow_signal_autoload.php | 17 + include/ezcomponents/descriptions.txt | 219 + 572 files changed, 64490 insertions(+) create mode 100644 include/ezcomponents/Base/CREDITS create mode 100644 include/ezcomponents/Base/ChangeLog create mode 100644 include/ezcomponents/Base/DESCRIPTION create mode 100644 include/ezcomponents/Base/design/class_diagram.png create mode 100644 include/ezcomponents/Base/design/design.txt create mode 100644 include/ezcomponents/Base/docs/repos/Me/myclass1.php create mode 100644 include/ezcomponents/Base/docs/repos/Me/myclass2.php create mode 100644 include/ezcomponents/Base/docs/repos/You/yourclass1.php create mode 100644 include/ezcomponents/Base/docs/repos/You/yourclass2.php create mode 100644 include/ezcomponents/Base/docs/repos/autoloads/my_autoload.php create mode 100644 include/ezcomponents/Base/docs/repos/autoloads/your_autoload.php create mode 100644 include/ezcomponents/Base/docs/tutorial.txt create mode 100644 include/ezcomponents/Base/docs/tutorial_autoload.php create mode 100644 include/ezcomponents/Base/docs/tutorial_example_01.php create mode 100644 include/ezcomponents/Base/docs/tutorial_example_02.php create mode 100644 include/ezcomponents/Base/docs/tutorial_example_03.php create mode 100644 include/ezcomponents/Base/docs/tutorial_lazy_initialization.php create mode 100644 include/ezcomponents/Base/review-1.5.txt create mode 100644 include/ezcomponents/Base/src/base.php create mode 100644 include/ezcomponents/Base/src/exceptions/autoload.php create mode 100644 include/ezcomponents/Base/src/exceptions/double_class_repository_prefix.php create mode 100644 include/ezcomponents/Base/src/exceptions/exception.php create mode 100644 include/ezcomponents/Base/src/exceptions/extension_not_found.php create mode 100644 include/ezcomponents/Base/src/exceptions/file_exception.php create mode 100644 include/ezcomponents/Base/src/exceptions/file_io.php create mode 100644 include/ezcomponents/Base/src/exceptions/file_not_found.php create mode 100644 include/ezcomponents/Base/src/exceptions/file_permission.php create mode 100644 include/ezcomponents/Base/src/exceptions/init_callback_configured.php create mode 100644 include/ezcomponents/Base/src/exceptions/invalid_callback_class.php create mode 100644 include/ezcomponents/Base/src/exceptions/invalid_parent_class.php create mode 100644 include/ezcomponents/Base/src/exceptions/property_not_found.php create mode 100644 include/ezcomponents/Base/src/exceptions/property_permission.php create mode 100644 include/ezcomponents/Base/src/exceptions/setting_not_found.php create mode 100644 include/ezcomponents/Base/src/exceptions/setting_value.php create mode 100644 include/ezcomponents/Base/src/exceptions/value.php create mode 100644 include/ezcomponents/Base/src/exceptions/whatever.php create mode 100644 include/ezcomponents/Base/src/ezc_bootstrap.php create mode 100644 include/ezcomponents/Base/src/features.php create mode 100644 include/ezcomponents/Base/src/file.php create mode 100644 include/ezcomponents/Base/src/init.php create mode 100644 include/ezcomponents/Base/src/interfaces/configuration_initializer.php create mode 100644 include/ezcomponents/Base/src/interfaces/persistable.php create mode 100644 include/ezcomponents/Base/src/options.php create mode 100644 include/ezcomponents/Base/src/options/autoload.php create mode 100644 include/ezcomponents/Base/src/struct.php create mode 100644 include/ezcomponents/Base/src/structs/repository_directory.php create mode 100644 include/ezcomponents/Base/tests/base_init_test.php create mode 100644 include/ezcomponents/Base/tests/base_options_test.php create mode 100644 include/ezcomponents/Base/tests/base_test.php create mode 100644 include/ezcomponents/Base/tests/extra_repository/Translation/test.php create mode 100644 include/ezcomponents/Base/tests/extra_repository/autoload/translation_autoload.php create mode 100644 include/ezcomponents/Base/tests/features_test.php create mode 100644 include/ezcomponents/Base/tests/file_calculate_relative_path_test.php create mode 100644 include/ezcomponents/Base/tests/file_copy_recursive_test.php create mode 100644 include/ezcomponents/Base/tests/file_find_recursive_test.php create mode 100644 include/ezcomponents/Base/tests/file_is_absolute_path.php create mode 100644 include/ezcomponents/Base/tests/file_remove_recursive_test.php create mode 100644 include/ezcomponents/Base/tests/init/base_init_callback.php create mode 100644 include/ezcomponents/Base/tests/init/base_init_class.php create mode 100644 include/ezcomponents/Base/tests/struct_test.php create mode 100644 include/ezcomponents/Base/tests/suite.php create mode 100644 include/ezcomponents/Base/tests/test_options.php create mode 100644 include/ezcomponents/Base/tests/test_repository/TestClasses/base_test_class.php create mode 100644 include/ezcomponents/Base/tests/test_repository/TestClasses/base_test_class_number_two.php create mode 100644 include/ezcomponents/Base/tests/test_repository/TestClasses/base_test_long_class.php create mode 100644 include/ezcomponents/Base/tests/test_repository/autoload_files/basetest_autoload.php create mode 100644 include/ezcomponents/Base/tests/test_repository/autoload_files/basetest_long_autoload.php create mode 100644 include/ezcomponents/Base/tests/test_repository/autoload_files/object_autoload.php create mode 100644 include/ezcomponents/Base/tests/test_repository/object/object.php create mode 100644 include/ezcomponents/ChangeLog create mode 100644 include/ezcomponents/Graph/CREDITS create mode 100644 include/ezcomponents/Graph/ChangeLog create mode 100644 include/ezcomponents/Graph/DESCRIPTION create mode 100644 include/ezcomponents/Graph/design/class_diagram.png create mode 100644 include/ezcomponents/Graph/design/design.txt create mode 100644 include/ezcomponents/Graph/design/enhancements/interactive_data_points.txt create mode 100644 include/ezcomponents/Graph/design/enhancements/multiple_axis.txt create mode 100644 include/ezcomponents/Graph/design/requirements.txt create mode 100644 include/ezcomponents/Graph/design/requirements/interactive_data_points.txt create mode 100644 include/ezcomponents/Graph/design/requirements/multiple_axis.txt create mode 100644 include/ezcomponents/Graph/docs/examples/ez_green.php create mode 100644 include/ezcomponents/Graph/docs/examples/ez_red.php create mode 100644 include/ezcomponents/Graph/docs/examples/forum_evolution.php create mode 100644 include/ezcomponents/Graph/docs/examples/forum_month.php create mode 100644 include/ezcomponents/Graph/docs/examples/forum_weekly.php create mode 100644 include/ezcomponents/Graph/docs/examples/forum_year.php create mode 100644 include/ezcomponents/Graph/docs/examples/php_magazine.php create mode 100644 include/ezcomponents/Graph/docs/examples/wikipedia.php create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_axis_datetime.svg.png create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_axis_labeled.svg.png create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_axis_numeric.svg.png create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_bar_chart.svg.png create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_bar_chart_3d.svg.png create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_bar_chart_options.svg.png create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_bar_line_chart.svg.png create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_bar_options.svg.png create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_chart_background.svg.png create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_chart_legend.svg.png create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_chart_title.svg.png create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_complex_radar_chart.svg.png create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_custom_odometer_chart.svg.png create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_custom_palette.svg.png create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_dataset_average.svg.png create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_dataset_numeric.svg.png create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_driver_flash.swf create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_driver_gd.jpg create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_driver_svg.svg.png create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_legend_options.svg.png create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_line_chart.svg.png create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_line_chart_3d.svg.png create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_line_chart_additional_axis.svg.png create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_line_chart_markers.svg.png create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_modified_palette.svg.png create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_odometer_chart.svg.png create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_pie_chart_3d.svg.png create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_pie_chart_options.svg.png create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_pie_chart_pimped.svg.png create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_pie_options.svg.png create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_radar_chart.svg.png create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_reference_gd.html create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_reference_gd.png create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_reference_svg.svg create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_renderer_3d.svg.png create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_rotated_labels.svg.png create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_simple_pie.svg.png create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_stacked_bar_chart.svg.png create mode 100644 include/ezcomponents/Graph/docs/img/tutorial_user_palette.svg.png create mode 100644 include/ezcomponents/Graph/docs/tutorial.txt create mode 100644 include/ezcomponents/Graph/docs/tutorial/ez.png create mode 100644 include/ezcomponents/Graph/docs/tutorial/template.svg create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_autoload.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_axis_datetime.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_axis_labeled.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_axis_numeric.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_bar_chart.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_bar_chart_3d.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_bar_chart_options.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_bar_line_chart.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_bar_options.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_chart_background.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_chart_legend.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_chart_title.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_complex_radar_chart.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_custom_odometer_chart.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_custom_palette.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_custom_palette_palette.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_dataset_average.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_dataset_numeric.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_driver_cairo.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_driver_flash.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_driver_gd.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_driver_svg.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_font.fdb create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_font.pfb create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_font.ttf create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_legend_options.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_line_chart.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_line_chart_3d.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_line_chart_additional_axis.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_line_chart_markers.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_modified_palette.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_odometer_chart.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_output.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_pie_chart_3d.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_pie_chart_options.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_pie_chart_pimped.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_pie_options.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_radar_chart.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_reference_gd.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_reference_svg.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_renderer_3d.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_rotated_labels.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_simple_pie.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_stacked_bar_chart.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_user_palette.php create mode 100644 include/ezcomponents/Graph/docs/tutorial/tutorial_wikipedia_data.php create mode 100644 include/ezcomponents/Graph/src/axis/container.php create mode 100644 include/ezcomponents/Graph/src/axis/date.php create mode 100644 include/ezcomponents/Graph/src/axis/labeled.php create mode 100644 include/ezcomponents/Graph/src/axis/logarithmic.php create mode 100644 include/ezcomponents/Graph/src/axis/numeric.php create mode 100644 include/ezcomponents/Graph/src/charts/bar.php create mode 100644 include/ezcomponents/Graph/src/charts/line.php create mode 100644 include/ezcomponents/Graph/src/charts/odometer.php create mode 100644 include/ezcomponents/Graph/src/charts/pie.php create mode 100644 include/ezcomponents/Graph/src/charts/radar.php create mode 100644 include/ezcomponents/Graph/src/colors/color.php create mode 100644 include/ezcomponents/Graph/src/colors/linear_gradient.php create mode 100644 include/ezcomponents/Graph/src/colors/radial_gradient.php create mode 100644 include/ezcomponents/Graph/src/data_container/base.php create mode 100644 include/ezcomponents/Graph/src/data_container/single.php create mode 100644 include/ezcomponents/Graph/src/datasets/array.php create mode 100644 include/ezcomponents/Graph/src/datasets/average.php create mode 100644 include/ezcomponents/Graph/src/datasets/base.php create mode 100644 include/ezcomponents/Graph/src/datasets/numeric.php create mode 100644 include/ezcomponents/Graph/src/datasets/property/axis.php create mode 100644 include/ezcomponents/Graph/src/datasets/property/boolean.php create mode 100644 include/ezcomponents/Graph/src/datasets/property/color.php create mode 100644 include/ezcomponents/Graph/src/datasets/property/integer.php create mode 100644 include/ezcomponents/Graph/src/datasets/property/string.php create mode 100644 include/ezcomponents/Graph/src/driver/cairo.php create mode 100644 include/ezcomponents/Graph/src/driver/flash.php create mode 100644 include/ezcomponents/Graph/src/driver/gd.php create mode 100644 include/ezcomponents/Graph/src/driver/svg.php create mode 100644 include/ezcomponents/Graph/src/driver/svg_font.php create mode 100644 include/ezcomponents/Graph/src/driver/verbose.php create mode 100644 include/ezcomponents/Graph/src/element/axis.php create mode 100644 include/ezcomponents/Graph/src/element/background.php create mode 100644 include/ezcomponents/Graph/src/element/legend.php create mode 100644 include/ezcomponents/Graph/src/element/text.php create mode 100644 include/ezcomponents/Graph/src/exceptions/date_parsing.php create mode 100644 include/ezcomponents/Graph/src/exceptions/exception.php create mode 100644 include/ezcomponents/Graph/src/exceptions/flash_bitmap_type.php create mode 100644 include/ezcomponents/Graph/src/exceptions/font_rendering.php create mode 100644 include/ezcomponents/Graph/src/exceptions/font_type.php create mode 100644 include/ezcomponents/Graph/src/exceptions/incompatible_driver.php create mode 100644 include/ezcomponents/Graph/src/exceptions/invalid_assignement.php create mode 100644 include/ezcomponents/Graph/src/exceptions/invalid_data.php create mode 100644 include/ezcomponents/Graph/src/exceptions/invalid_data_source.php create mode 100644 include/ezcomponents/Graph/src/exceptions/invalid_dimensions.php create mode 100644 include/ezcomponents/Graph/src/exceptions/invalid_display_type.php create mode 100644 include/ezcomponents/Graph/src/exceptions/invalid_id.php create mode 100644 include/ezcomponents/Graph/src/exceptions/invalid_image_file.php create mode 100644 include/ezcomponents/Graph/src/exceptions/invalid_keys.php create mode 100644 include/ezcomponents/Graph/src/exceptions/no_data.php create mode 100644 include/ezcomponents/Graph/src/exceptions/no_such_data.php create mode 100644 include/ezcomponents/Graph/src/exceptions/no_such_dataset.php create mode 100644 include/ezcomponents/Graph/src/exceptions/no_such_element.php create mode 100644 include/ezcomponents/Graph/src/exceptions/not_rendered.php create mode 100644 include/ezcomponents/Graph/src/exceptions/out_of_boundings.php create mode 100644 include/ezcomponents/Graph/src/exceptions/out_of_logarithmical_boundings.php create mode 100644 include/ezcomponents/Graph/src/exceptions/reducement_failed.php create mode 100644 include/ezcomponents/Graph/src/exceptions/too_many_datasets.php create mode 100644 include/ezcomponents/Graph/src/exceptions/unknown_color_definition.php create mode 100644 include/ezcomponents/Graph/src/exceptions/unregular_steps.php create mode 100644 include/ezcomponents/Graph/src/exceptions/unsupported_image_type.php create mode 100644 include/ezcomponents/Graph/src/graph.php create mode 100644 include/ezcomponents/Graph/src/interfaces/axis_label_renderer.php create mode 100644 include/ezcomponents/Graph/src/interfaces/chart.php create mode 100644 include/ezcomponents/Graph/src/interfaces/dataset_property.php create mode 100644 include/ezcomponents/Graph/src/interfaces/driver.php create mode 100644 include/ezcomponents/Graph/src/interfaces/element.php create mode 100644 include/ezcomponents/Graph/src/interfaces/odometer_renderer.php create mode 100644 include/ezcomponents/Graph/src/interfaces/palette.php create mode 100644 include/ezcomponents/Graph/src/interfaces/radar_renderer.php create mode 100644 include/ezcomponents/Graph/src/interfaces/renderer.php create mode 100644 include/ezcomponents/Graph/src/interfaces/stacked_bar_renderer.php create mode 100644 include/ezcomponents/Graph/src/math/boundings.php create mode 100644 include/ezcomponents/Graph/src/math/matrix.php create mode 100644 include/ezcomponents/Graph/src/math/polynom.php create mode 100644 include/ezcomponents/Graph/src/math/rotation.php create mode 100644 include/ezcomponents/Graph/src/math/transformation.php create mode 100644 include/ezcomponents/Graph/src/math/translation.php create mode 100644 include/ezcomponents/Graph/src/math/vector.php create mode 100644 include/ezcomponents/Graph/src/options/cairo_driver.php create mode 100644 include/ezcomponents/Graph/src/options/chart.php create mode 100644 include/ezcomponents/Graph/src/options/driver.php create mode 100644 include/ezcomponents/Graph/src/options/flash_driver.php create mode 100644 include/ezcomponents/Graph/src/options/font.php create mode 100644 include/ezcomponents/Graph/src/options/gd_driver.php create mode 100644 include/ezcomponents/Graph/src/options/line_chart.php create mode 100644 include/ezcomponents/Graph/src/options/odometer_chart.php create mode 100644 include/ezcomponents/Graph/src/options/pie_chart.php create mode 100644 include/ezcomponents/Graph/src/options/radar_chart.php create mode 100644 include/ezcomponents/Graph/src/options/renderer.php create mode 100644 include/ezcomponents/Graph/src/options/renderer_2d.php create mode 100644 include/ezcomponents/Graph/src/options/renderer_3d.php create mode 100644 include/ezcomponents/Graph/src/options/svg_driver.php create mode 100644 include/ezcomponents/Graph/src/palette/black.php create mode 100644 include/ezcomponents/Graph/src/palette/ez.php create mode 100644 include/ezcomponents/Graph/src/palette/ez_blue.php create mode 100644 include/ezcomponents/Graph/src/palette/ez_green.php create mode 100644 include/ezcomponents/Graph/src/palette/ez_red.php create mode 100644 include/ezcomponents/Graph/src/palette/tango.php create mode 100644 include/ezcomponents/Graph/src/renderer/2d.php create mode 100644 include/ezcomponents/Graph/src/renderer/3d.php create mode 100644 include/ezcomponents/Graph/src/renderer/axis_label_boxed.php create mode 100644 include/ezcomponents/Graph/src/renderer/axis_label_centered.php create mode 100644 include/ezcomponents/Graph/src/renderer/axis_label_exact.php create mode 100644 include/ezcomponents/Graph/src/renderer/axis_label_none.php create mode 100644 include/ezcomponents/Graph/src/renderer/axis_label_radar.php create mode 100644 include/ezcomponents/Graph/src/renderer/axis_label_rotated.php create mode 100644 include/ezcomponents/Graph/src/structs/context.php create mode 100644 include/ezcomponents/Graph/src/structs/coordinate.php create mode 100644 include/ezcomponents/Graph/src/structs/step.php create mode 100644 include/ezcomponents/Graph/src/tools.php create mode 100644 include/ezcomponents/GraphDatabaseTiein/CREDITS create mode 100644 include/ezcomponents/GraphDatabaseTiein/ChangeLog create mode 100644 include/ezcomponents/GraphDatabaseTiein/DEPS create mode 100644 include/ezcomponents/GraphDatabaseTiein/DESCRIPTION create mode 100644 include/ezcomponents/GraphDatabaseTiein/TODO create mode 100644 include/ezcomponents/GraphDatabaseTiein/design/class_diagram.png create mode 100644 include/ezcomponents/GraphDatabaseTiein/design/design.txt create mode 100644 include/ezcomponents/GraphDatabaseTiein/docs/img/tutorial_multiple.svg.png create mode 100644 include/ezcomponents/GraphDatabaseTiein/docs/img/tutorial_simple.svg.png create mode 100644 include/ezcomponents/GraphDatabaseTiein/docs/img/tutorial_single.svg.png create mode 100644 include/ezcomponents/GraphDatabaseTiein/docs/tutorial.txt create mode 100644 include/ezcomponents/GraphDatabaseTiein/docs/tutorial/tutorial_autoload.php create mode 100644 include/ezcomponents/GraphDatabaseTiein/docs/tutorial/tutorial_insert_data.php create mode 100644 include/ezcomponents/GraphDatabaseTiein/docs/tutorial/tutorial_multiple.php create mode 100644 include/ezcomponents/GraphDatabaseTiein/docs/tutorial/tutorial_simple.php create mode 100644 include/ezcomponents/GraphDatabaseTiein/docs/tutorial/tutorial_single.php create mode 100644 include/ezcomponents/GraphDatabaseTiein/src/dataset.php create mode 100644 include/ezcomponents/GraphDatabaseTiein/src/exceptions/exception.php create mode 100644 include/ezcomponents/GraphDatabaseTiein/src/exceptions/missing_column.php create mode 100644 include/ezcomponents/GraphDatabaseTiein/src/exceptions/statement_not_executed.php create mode 100644 include/ezcomponents/GraphDatabaseTiein/src/exceptions/too_many_columns.php create mode 100644 include/ezcomponents/GraphDatabaseTiein/tests/dataset_pdo_test.php create mode 100644 include/ezcomponents/GraphDatabaseTiein/tests/suite.php create mode 100644 include/ezcomponents/ImageAnalysis/CREDITS create mode 100644 include/ezcomponents/ImageAnalysis/ChangeLog create mode 100644 include/ezcomponents/ImageAnalysis/DESCRIPTION create mode 100644 include/ezcomponents/ImageAnalysis/design/class_diagram.png create mode 100644 include/ezcomponents/ImageAnalysis/design/imageanalysis.png create mode 100644 include/ezcomponents/ImageAnalysis/design/imageanalysis.xml create mode 100644 include/ezcomponents/ImageAnalysis/docs/example.php create mode 100644 include/ezcomponents/ImageAnalysis/docs/img/imageanalysis_example_01.jpg create mode 100644 include/ezcomponents/ImageAnalysis/docs/img/imageanalysis_example_02.jpg create mode 100644 include/ezcomponents/ImageAnalysis/docs/img/imageanalysis_example_03.jpg create mode 100644 include/ezcomponents/ImageAnalysis/docs/toby.jpg create mode 100644 include/ezcomponents/ImageAnalysis/docs/tutorial.txt create mode 100644 include/ezcomponents/ImageAnalysis/docs/tutorial_autoload.php create mode 100644 include/ezcomponents/ImageAnalysis/docs/tutorial_example_01.php create mode 100644 include/ezcomponents/ImageAnalysis/docs/tutorial_example_02.php create mode 100644 include/ezcomponents/ImageAnalysis/docs/tutorial_example_03.php create mode 100644 include/ezcomponents/ImageAnalysis/src/analyzer.php create mode 100644 include/ezcomponents/ImageAnalysis/src/exceptions/exception.php create mode 100644 include/ezcomponents/ImageAnalysis/src/exceptions/file_not_processable.php create mode 100644 include/ezcomponents/ImageAnalysis/src/exceptions/invalid_handler.php create mode 100644 include/ezcomponents/ImageAnalysis/src/handlers/imagemagick.php create mode 100644 include/ezcomponents/ImageAnalysis/src/handlers/php.php create mode 100644 include/ezcomponents/ImageAnalysis/src/interfaces/handler.php create mode 100644 include/ezcomponents/ImageAnalysis/src/structs/analyzer_data.php create mode 100644 include/ezcomponents/ImageAnalysis/tests/analyzer_test.php create mode 100644 include/ezcomponents/ImageAnalysis/tests/data/gif_animated.gif create mode 100644 include/ezcomponents/ImageAnalysis/tests/data/gif_nonanimated.gif create mode 100644 include/ezcomponents/ImageAnalysis/tests/data/jpeg_exif.jpg create mode 100644 include/ezcomponents/ImageAnalysis/tests/data/jpeg_noexif.jpg create mode 100644 include/ezcomponents/ImageAnalysis/tests/data/png_nonanimated.png create mode 100644 include/ezcomponents/ImageAnalysis/tests/data/svg.svg create mode 100644 include/ezcomponents/ImageAnalysis/tests/data/tiff_exif.tiff create mode 100644 include/ezcomponents/ImageAnalysis/tests/data/tiff_noexif.tiff create mode 100644 include/ezcomponents/ImageAnalysis/tests/suite.php create mode 100644 include/ezcomponents/ImageConversion/CREDITS create mode 100644 include/ezcomponents/ImageConversion/ChangeLog create mode 100644 include/ezcomponents/ImageConversion/DEPS create mode 100644 include/ezcomponents/ImageConversion/DESCRIPTION create mode 100644 include/ezcomponents/ImageConversion/TODO create mode 100644 include/ezcomponents/ImageConversion/design/class_diagram.png create mode 100644 include/ezcomponents/ImageConversion/design/design.htm create mode 100644 include/ezcomponents/ImageConversion/design/design.txt create mode 100644 include/ezcomponents/ImageConversion/design/image.png create mode 100644 include/ezcomponents/ImageConversion/design/image.xml create mode 100644 include/ezcomponents/ImageConversion/design/image_exceptions.png create mode 100644 include/ezcomponents/ImageConversion/design/image_filters.png create mode 100644 include/ezcomponents/ImageConversion/docs/example_general.php create mode 100644 include/ezcomponents/ImageConversion/docs/example_singleton.php create mode 100644 include/ezcomponents/ImageConversion/docs/img/imageconversion_example_01_after.jpg create mode 100644 include/ezcomponents/ImageConversion/docs/img/imageconversion_example_01_before.bmp create mode 100644 include/ezcomponents/ImageConversion/docs/img/imageconversion_example_02_after.jpg create mode 100644 include/ezcomponents/ImageConversion/docs/img/imageconversion_example_02_before.jpg create mode 100644 include/ezcomponents/ImageConversion/docs/img/imageconversion_example_03_after.jpg create mode 100644 include/ezcomponents/ImageConversion/docs/img/imageconversion_example_03_before.jpg create mode 100644 include/ezcomponents/ImageConversion/docs/img/imageconversion_example_04_after.jpg create mode 100644 include/ezcomponents/ImageConversion/docs/img/imageconversion_example_04_before.jpg create mode 100644 include/ezcomponents/ImageConversion/docs/img/imageconversion_example_05_after.jpg create mode 100644 include/ezcomponents/ImageConversion/docs/img/imageconversion_example_05_before.jpg create mode 100644 include/ezcomponents/ImageConversion/docs/img/watermark.png create mode 100644 include/ezcomponents/ImageConversion/docs/jpeg.jpg create mode 100644 include/ezcomponents/ImageConversion/docs/tutorial.txt create mode 100644 include/ezcomponents/ImageConversion/docs/tutorial_autoload.php create mode 100644 include/ezcomponents/ImageConversion/docs/tutorial_example_01_simpleconvert.php create mode 100644 include/ezcomponents/ImageConversion/docs/tutorial_example_02_simpletrans.php create mode 100644 include/ezcomponents/ImageConversion/docs/tutorial_example_03_complextrans.php create mode 100644 include/ezcomponents/ImageConversion/docs/tutorial_example_04_watermark.php create mode 100644 include/ezcomponents/ImageConversion/docs/tutorial_example_05_thumbnail.php create mode 100644 include/ezcomponents/ImageConversion/review-1.3.4.txt create mode 100644 include/ezcomponents/ImageConversion/src/converter.php create mode 100644 include/ezcomponents/ImageConversion/src/exceptions/exception.php create mode 100644 include/ezcomponents/ImageConversion/src/exceptions/file_name_invalid.php create mode 100644 include/ezcomponents/ImageConversion/src/exceptions/file_not_processable.php create mode 100644 include/ezcomponents/ImageConversion/src/exceptions/filter_failed.php create mode 100644 include/ezcomponents/ImageConversion/src/exceptions/filter_not_available.php create mode 100644 include/ezcomponents/ImageConversion/src/exceptions/handler_not_available.php create mode 100644 include/ezcomponents/ImageConversion/src/exceptions/handler_settings_invalid.php create mode 100644 include/ezcomponents/ImageConversion/src/exceptions/invalid_filter_parameter.php create mode 100644 include/ezcomponents/ImageConversion/src/exceptions/invalid_reference.php create mode 100644 include/ezcomponents/ImageConversion/src/exceptions/mime_type_unsupported.php create mode 100644 include/ezcomponents/ImageConversion/src/exceptions/missing_filter_parameter.php create mode 100644 include/ezcomponents/ImageConversion/src/exceptions/transformation.php create mode 100644 include/ezcomponents/ImageConversion/src/exceptions/transformation_already_exists.php create mode 100644 include/ezcomponents/ImageConversion/src/exceptions/transformation_not_available.php create mode 100644 include/ezcomponents/ImageConversion/src/handlers/gd.php create mode 100644 include/ezcomponents/ImageConversion/src/handlers/gd_base.php create mode 100644 include/ezcomponents/ImageConversion/src/handlers/imagemagick.php create mode 100644 include/ezcomponents/ImageConversion/src/handlers/imagemagick_base.php create mode 100644 include/ezcomponents/ImageConversion/src/interfaces/colorspace.php create mode 100644 include/ezcomponents/ImageConversion/src/interfaces/effect.php create mode 100644 include/ezcomponents/ImageConversion/src/interfaces/geometry.php create mode 100644 include/ezcomponents/ImageConversion/src/interfaces/handler.php create mode 100644 include/ezcomponents/ImageConversion/src/interfaces/methodcall_handler.php create mode 100644 include/ezcomponents/ImageConversion/src/interfaces/thumbnail.php create mode 100644 include/ezcomponents/ImageConversion/src/interfaces/watermark.php create mode 100644 include/ezcomponents/ImageConversion/src/options/save_options.php create mode 100644 include/ezcomponents/ImageConversion/src/structs/converter_settings.php create mode 100644 include/ezcomponents/ImageConversion/src/structs/filter.php create mode 100644 include/ezcomponents/ImageConversion/src/structs/handler_settings.php create mode 100644 include/ezcomponents/ImageConversion/src/transformation.php create mode 100644 include/ezcomponents/ImageConversion/tests/converter_test.php create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionConverterTest_testApplyFilterSuccessColorspace create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionConverterTest_testApplyFilterSuccessColorspaceDefinedHandler create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionConverterTest_testApplyFilterSuccessScale create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersGdTest_testColorspaceGrey create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersGdTest_testColorspaceMonochrome create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersGdTest_testColorspaceSepia create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersGdTest_testCropNegativeOffset_1 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersGdTest_testCropNegativeOffset_2 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersGdTest_testCropNegativeOffset_3 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersGdTest_testCropThumbnailHorizontal create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersGdTest_testCropThumbnailVertical create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersGdTest_testCropTransparent create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersGdTest_testCrop_0_Offset create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersGdTest_testCrop_1 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersGdTest_testCrop_2 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersGdTest_testCrop_3 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersGdTest_testCrop_4 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersGdTest_testFillThumbnailHorizontal create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersGdTest_testFillThumbnailTooLargeColorArray create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersGdTest_testFillThumbnailVertical create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersGdTest_testScaleTransparent create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersGdTest_testWatermarkAbsoluteNoScale create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersGdTest_testWatermarkAbsoluteScale create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersGdTest_testWatermarkPercentNoScale create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersGdTest_testWatermarkPercentScale create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testBorder_2 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testBorder_5 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testColorspaceGrey create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testColorspaceMonochrome create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testColorspaceSepia create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testCropNegativeOffset_1 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testCropNegativeOffset_2 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testCropNegativeOffset_3 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testCropThumbnailHorizontal create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testCropThumbnailVertical create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testCrop_0_Offset create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testCrop_1 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testCrop_2 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testCrop_3 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testFillThumbnailHorizontal create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testFillThumbnailTooLargeColorArray create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testFillThumbnailVertical create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testNoiseGaussian create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testNoiseImpulse create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testNoiseLaplacian create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testNoiseMultiplicative create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testNoisePoisson create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testNoiseUniform create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScale create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleDown_do create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleDown_dont create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleExact_1 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleExact_2 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleExact_3 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleHeightDown_1 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleHeightDown_2 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleHeightUp_1 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleHeightUp_2 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScalePercent_1 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScalePercent_2 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleUp_do create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleUp_dont create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleWidthBoth create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleWidthDown_1 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleWidthDown_2 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleWidthUp_1 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleWidthUp_2 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testSwirl_10 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testSwirl_100 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testSwirl_50 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testWatermarkAbsoluteNoScale create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testWatermarkAbsoluteScale create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testWatermarkPercentNoScale create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testWatermarkPercentScale create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionHandlerGdTest_testApplyFilterMultiple create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionHandlerGdTest_testApplyFilterSingle create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionHandlerGdTest_testConvertTransparentNonTransparent create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionHandlerGdTest_testSaveNewfileConvert create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionHandlerGdTest_testSaveNewfileNoconvert create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionHandlerGdTest_testSaveOldfileNoconvert create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionHandlerShellTest_testApplyFilterMultiple create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionHandlerShellTest_testApplyFilterSingle create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionHandlerShellTest_testConvertTransparentNonTransparent create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionHandlerTest_testSaveIllegalFileNameFailure create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionHandlerTest_testSaveNewfileConvert create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionHandlerTest_testSaveNewfileNoconvert create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionHandlerTest_testSaveOldfileNoconvert create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionTransformationTest_testMultiTransformjpeg create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionTransformationTest_testMultiTransformpng create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionTransformationTest_testTransformSuccessGifAnimated create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionTransformationTest_testTransformSuccessGif_1 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionTransformationTest_testTransformSuccessGif_2 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionTransformationTest_testTransformSuccessGif_3 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionTransformationTest_testTransformSuccessJpeg_1 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionTransformationTest_testTransformSuccessJpeg_2 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionTransformationTest_testTransformSuccessJpeg_3 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionTransformationTest_testTransformSuccessPng_1 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionTransformationTest_testTransformSuccessPng_2 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionTransformationTest_testTransformSuccessPng_3 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionTransformationTest_testTransformSuccessPng_4 create mode 100644 include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionTransformationTest_testTransformationChangingHandlersForFilters create mode 100644 include/ezcomponents/ImageConversion/tests/data/gif_animated.gif create mode 100644 include/ezcomponents/ImageConversion/tests/data/gif_nonanimated.gif create mode 100644 include/ezcomponents/ImageConversion/tests/data/jpeg.jpg create mode 100644 include/ezcomponents/ImageConversion/tests/data/png.png create mode 100644 include/ezcomponents/ImageConversion/tests/data/png_transparent.png create mode 100644 include/ezcomponents/ImageConversion/tests/data/text.txt create mode 100644 include/ezcomponents/ImageConversion/tests/data/watermark.png create mode 100644 include/ezcomponents/ImageConversion/tests/data/xpm.xpm create mode 100644 include/ezcomponents/ImageConversion/tests/filtersgd_test.php create mode 100644 include/ezcomponents/ImageConversion/tests/filtersshell_test.php create mode 100644 include/ezcomponents/ImageConversion/tests/handler_test.php create mode 100644 include/ezcomponents/ImageConversion/tests/handlergd_test.php create mode 100644 include/ezcomponents/ImageConversion/tests/handlershell_test.php create mode 100644 include/ezcomponents/ImageConversion/tests/save_options_test.php create mode 100644 include/ezcomponents/ImageConversion/tests/suite.php create mode 100644 include/ezcomponents/ImageConversion/tests/test_case.php create mode 100644 include/ezcomponents/ImageConversion/tests/transformation_test.php create mode 100644 include/ezcomponents/LICENSE create mode 100644 include/ezcomponents/autoload/archive_autoload.php create mode 100644 include/ezcomponents/autoload/authentication_autoload.php create mode 100644 include/ezcomponents/autoload/authentication_database_autoload.php create mode 100644 include/ezcomponents/autoload/authentication_openid_autoload.php create mode 100644 include/ezcomponents/autoload/base_autoload.php create mode 100644 include/ezcomponents/autoload/cache_autoload.php create mode 100644 include/ezcomponents/autoload/configuration_autoload.php create mode 100644 include/ezcomponents/autoload/console_autoload.php create mode 100644 include/ezcomponents/autoload/db_autoload.php create mode 100644 include/ezcomponents/autoload/db_schema_autoload.php create mode 100644 include/ezcomponents/autoload/debug_autoload.php create mode 100644 include/ezcomponents/autoload/document_autoload.php create mode 100644 include/ezcomponents/autoload/execution_autoload.php create mode 100644 include/ezcomponents/autoload/feed_autoload.php create mode 100644 include/ezcomponents/autoload/file_autoload.php create mode 100644 include/ezcomponents/autoload/graph_autoload.php create mode 100644 include/ezcomponents/autoload/graph_database_autoload.php create mode 100644 include/ezcomponents/autoload/image_analyzer_autoload.php create mode 100644 include/ezcomponents/autoload/image_autoload.php create mode 100644 include/ezcomponents/autoload/input_autoload.php create mode 100644 include/ezcomponents/autoload/log_autoload.php create mode 100644 include/ezcomponents/autoload/log_database_autoload.php create mode 100644 include/ezcomponents/autoload/mail_autoload.php create mode 100644 include/ezcomponents/autoload/persistent_autoload.php create mode 100644 include/ezcomponents/autoload/persistent_object_autoload.php create mode 100644 include/ezcomponents/autoload/php_generator_autoload.php create mode 100644 include/ezcomponents/autoload/query_autoload.php create mode 100644 include/ezcomponents/autoload/search_autoload.php create mode 100644 include/ezcomponents/autoload/signal_autoload.php create mode 100644 include/ezcomponents/autoload/system_autoload.php create mode 100644 include/ezcomponents/autoload/template_autoload.php create mode 100644 include/ezcomponents/autoload/template_translation_autoload.php create mode 100644 include/ezcomponents/autoload/translation_autoload.php create mode 100644 include/ezcomponents/autoload/translation_cache_autoload.php create mode 100644 include/ezcomponents/autoload/tree_autoload.php create mode 100644 include/ezcomponents/autoload/tree_db_autoload.php create mode 100644 include/ezcomponents/autoload/tree_persistent_autoload.php create mode 100644 include/ezcomponents/autoload/url_autoload.php create mode 100644 include/ezcomponents/autoload/webdav_autoload.php create mode 100644 include/ezcomponents/autoload/workflow_autoload.php create mode 100644 include/ezcomponents/autoload/workflow_database_autoload.php create mode 100644 include/ezcomponents/autoload/workflow_event_autoload.php create mode 100644 include/ezcomponents/autoload/workflow_signal_autoload.php create mode 100644 include/ezcomponents/descriptions.txt diff --git a/include/ezcomponents/Base/CREDITS b/include/ezcomponents/Base/CREDITS new file mode 100644 index 000000000..2cc9fc273 --- /dev/null +++ b/include/ezcomponents/Base/CREDITS @@ -0,0 +1,16 @@ +CREDITS +======= + +eZ Components team +------------------ + +- Sergey Alexeev +- Sebastian Bergmann +- Jan Borsodi +- Raymond Bosman +- Frederik Holljen +- Kore Nordmann +- Derick Rethans +- Vadym Savchuk +- Tobias Schlitt +- Alexandru Stanoi diff --git a/include/ezcomponents/Base/ChangeLog b/include/ezcomponents/Base/ChangeLog new file mode 100644 index 000000000..f57c75cb3 --- /dev/null +++ b/include/ezcomponents/Base/ChangeLog @@ -0,0 +1,251 @@ +1.5 - Monday 16 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.5rc1 - Tuesday 10 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes + + +1.5beta1 - Tuesday 27 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Added the ezcBasePersistable interface that can be used to ensure that the + object implementing this interface can be used with PersistentObject and + Search. + + +1.5alpha2 - Tuesday 13 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed a bug in ezcBaseFile::findRecursive that prevented you from passing an + empty array to collect statistics. +- Changed ezcBase::getInstallationPath() so that it always returns a trailing + directory separator. + + +1.5alpha1 - Monday 07 April 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Implemented issue #8529: Added a by-reference argument to + ezcBaseFile::findRecursive that returns statistsics (count and total size) + of all files that are returned by this function. +- Implemented issue #11506: Added the static method + ezcBase::getInstallationPath(). +- Implemented issue #12694: replace reflection test for class type with spl + function. + + +1.4.1 - Monday 14 January 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #11448: ezc_bootsrap.php uses relative paths. +- Fixed issue #12316: Numbers in own component prefix not possible. +- Fixed issue #12329: ezcBaseFeatures::findExecutableInPath's return value + does not include the extension to the executable at the end on Windows. +- Added an optional argument to the ezcBaseValueException constructor to allow + the exception to be used for non-property/setting type violations as well. + + +1.4 - Monday 17 December 2007 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.4rc1 - Wednesday 05 December 2007 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.4beta1 - Wednesday 28 November 2007 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.4alpha2 - Monday 29 October 2007 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Added the ezcBaseFile::copyRecursive() method, to recursively copy files or + directories +- Fixed issue #11540: Problems with ezcFile::findRecursive and + ezcFile::calculateRelativePath on systems where DIRECTORY_SEPERATOR is not + //. + + +1.4alpha1 - Tuesday 18 September 2007 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Added the ezcBaseFile class, which was moved from the File component. +- Added the ezcBaseFile::isAbsolutePath() method, which returns whether a path + is absolute or relative. + + +1.3.1 - Monday 30 July 2007 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #11057: The ezcBaseConfigurationInitializer inteface is not + enforced for callback classes. + + +1.3 - Monday 02 July 2007 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Documentation fixes and updates. + + +1.3rc1 - Monday 25 June 2007 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Documentation fixes and updates. + + +1.3beta2 - Thursday 31 May 2007 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #10704: Autoload fails on class not found. The exception is now + off by default, but can be turned on through the "debug" property of the + ezcBaseAutoloadOptions class. This option class can be set with + ezcBase::setOptions(). + + +1.3beta1 - Monday 07 May 2007 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #8433: ezcBase::getRepositoryDirectories() problems. +- Fixed issue #10583: ezcBaseOptions misses __isset(). +- Fixed issue #10666: ezc_bootstrap.php fails on Windows. +- Implemented issue #9569: Add "autoload.php" as 3rd fallback autoload file to + search for. +- Implemented issue #9988: Implement component preloading for better opcode + cache performance. +- Added exception class ezcBaseExtensionNotFoundException to be thrown when an + extension is required but is not found. +- Changed the ezcBaseInit::fetchConfig() method to return the value that was + returned from the callback function. + + +1.2 - Monday 18 December 2006 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #9658: Checking if $_ENV['PATH'] is set before using it in + ezcBaseFeatures. +- Fixed issue #9780: ezcBaseFeatures throws notice about non-existing array + key "PATH". +- Fixed issue #9819: Let all components deal with the ezcBaseAutoloadException + properly. +- Fixed the exception name for 'ezcBaseDoubleClassRepositoryPrefix' - it was + missing "Exception". +- Implemented issue #9811: If a file for a class can not be found through + autoloading, we now throw the ezcBaseAutoloadException which makes debugging + easier. +- Added the static method ezcBaseFeatures::findExecutableInPath() that searches the + path for the given executable. +- Added the static method ezcBaseFeatures::os() that returns a sanitized + version of the current OS' name. + + +1.2beta2 - Monday 20 November 2006 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #8507: Two autoload directories with the same basepath don't + work. +- Fixed issue #9390: Classes in external repositories that map to the same + autoload filename of an internal component were added to the external + autoload cache array as well. + + +1.2beta1 - Tuesday 24 October 2006 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Added the ezcBaseFeatures class to check whether the current PHP + installation and environment provides features that can be used in the + components. +- Added the ezcBaseInit class that assists you by setting up on-demand + configurations for objects (most notable useful for singleton classes). +- Implemented FR #8508: Display search paths for the autoload files in case of + a missing class. +- Implemented FR #8753: Added the 'Base/ezc_bootstrap.php' file which sets up + the autoload environment for you to facilitate an easier way of starting to + use the eZ components. + + +1.1.1 - Monday 28 August 2006 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Added the ezcBaseStruct class from which all structs in all components + should inherit from. + + +1.1 - Friday 09 June 2006 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed bug #8434: ezcBase autoload system does not handle classes without a + prefix. +- Fixed bug #8435: ezcBase::addClassRepository assumes the ezc way of + structuring files. From now on the path specifying the autoload directory is + *not* relative to the repository directory anymore. + + +1.1rc1 - Monday 29 May 2006 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed bug #8252: Autoloading for external repositories only works for the + first such class. + + +1.1beta2 - Tuesday 09 May 2006 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Added support for external class repositories. You can now add a class + repository to the autoload mechanism by using the addClassRepository() + method. +- Added a method to return all configured class repositories. +- Added the REMOVE constant to the ezcBaseFileException. +- Added the ezcBaseOptions class that serves as base class for all option + classes in the components. + + +1.1beta1 - Wednesday 19 April 2006 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Changed the way how files are included when the SVN checkout of the eZ + components was used. This does not affect normal use of the components. +- Fixed class descriptions for the exceptions in the documentation. + + +1.0 - Monday 30 January 2006 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Added HTML escaping of exception messages so that they show up correctly in + a browser. The original message is stored in the originalMessage property + in the exception object. + + +1.0rc1 - Monday 16 January 2006 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Added the ezcBaseException that all exceptions in the components library + should descent from. +- Added generic File and IO exceptions that all other components can use + instead of having to reimplement them. +- Added ezcBase::checkDependency() method that allows components to specify + dependencies on either a PHP version or a PHP extension. + + +1.0beta2 - Wednesday 21 December 2005 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Added the ezcBasePropertyException that can be used by components to signal + that an property was assigned a value which it does not allows. + + +1.0beta1 - Tuesday 22 November 2005 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Initial release of this package. diff --git a/include/ezcomponents/Base/DESCRIPTION b/include/ezcomponents/Base/DESCRIPTION new file mode 100644 index 000000000..170a06566 --- /dev/null +++ b/include/ezcomponents/Base/DESCRIPTION @@ -0,0 +1,2 @@ +The Base package provides the basic infrastructure that all packages rely on. +Therefore every component relies on this package. diff --git a/include/ezcomponents/Base/design/class_diagram.png b/include/ezcomponents/Base/design/class_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..2415977b589ee28dc97dee2139b601b5130335dc GIT binary patch literal 151717 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%0AZ%olq=Y7- z_7lB|64y2}WopWWSEDp?w(lfhEkoWUCJ2;;%`SuYos5~Ta&sj$gaRAR)W>UTOXMGs zw8VGMx!-N=FPu5|Jd+fOurBLkJgPkfBEBg+GIZltFvI~eQ*2kuQSgwDB*97^gQe`E zVfk@$qu-ec9!k_$$lyA3{mR|ctx5xEsc=p9L{v@Sl;sZ!+3ci%6*3MpY{{T0tB4x= zXsNrQmKmn4O$o8}v-g8`bW+j`z|AkJjBo7d<&aoY-`%OmWvi$Va06g1kO4ONbeij{ zT5cbbzutynf5m*NY5H54FrWq=hw9F|e+SRU0SKR4xYx=Bq5x=ZR_W^IWJ$0vY-xNn zwFJeB0*YgHBgEqMb~B^4<+H^r!u?B6G#k zN!xCn>CN;>?gf{~sH_QV)?Cob|2O{nG1ff*G$jE z6k6G9$JSlWwdBrOg9XSFMv0F!I|Dk`naGsSk@GHB`Jgf6LDaeZ7muGja8tKrdAP4b zZ2-x@y&c8OTSR;9KM!ub=YLe^Rg`>fPFqFZrzz$U8xQ13ped#E7;xjn+%~82weS%u zOxQv>b+nkwPG5+!(|Lc#7;nP5p<~Al!Q-E=KxMQUJc>xo zZp_NuS@TX~lSiD|ZMiY}>N=5(l>$70G47^{5A3L+u9<4y&nVEgL}-E|D#9`Q#5Mi= zKPl#|`FpLJrQg5bK6TF24(zIdrluknyvUtT5R_Z-;G!m)P%+ZxqqLoHrLp!0s=`Ms zs-dNXF@3&v-eIn$LQLp@X9cMT)1_G$&>~8yRxB)R3tSR`avVKVqQzeskyohGKhiPq zXdI%~7i2*J8#U*qdd9-Vf#&OhgSWr*PjBqnI5G9`q#u=1*geireuAqe?~mm=w_b_4 z7?oI`vvzRDwLm8#Au8#`OlCxywz7r;Ny*O-pgBWaAj5aQ*IzR?M4G{Hq#O71-RlQI zNJ%eTzT0MyRYPD7a>Euh*nzp3fqD->=1FD)Nz}L!{W^cu#Z$p_hX3NI)lJW)zAwD$ z7A_4gSUmC)(>b*AdFMkttg=%j-={1$U0;FzF}!f0E7`U|6*`pa5ecoIOX+nBkYS3Pc}S#SzNRn#BITDRTpM#GmQS zNApM>caDW*RAlqJT}uCEa^#3q2qFXp@4?EkPJl@{inJs|>upE6IS(AaNO-`}Plwv) zjohx%-OFuz?Tf5!)TGG~G?F$Ucj;3|#})(a=N>s*OAvEzUvI~r0Fz6$Jvbs172uSa zJ-(s!TC1OtsoJAJc@>YsSfG=i`k8u{!3?SsI>p_p8b{qnj8WINb0yHwQCfA zI18$9{+f@G;g56Ly-=uI{yUFS)g$$nTeU}__P6BJ{?VWjc1)^z6YVaSF8Fay3>qEg zJI%J{x!<@pqX$E5htF?fN=d$4f`2^0@(};`Qua=5SwLn~cVPLTX9fzsCg@GkJvDaz#{UH)v8O%& literal 0 HcmV?d00001 diff --git a/include/ezcomponents/Base/design/design.txt b/include/ezcomponents/Base/design/design.txt new file mode 100644 index 000000000..72a080dc4 --- /dev/null +++ b/include/ezcomponents/Base/design/design.txt @@ -0,0 +1,9 @@ +Base +==== + +Purpose +------- +This is the base package of the eZ publish components, offering the basic +support that all Components need. In the first version this will be the +autoload support. + diff --git a/include/ezcomponents/Base/docs/repos/Me/myclass1.php b/include/ezcomponents/Base/docs/repos/Me/myclass1.php new file mode 100644 index 000000000..4389b6387 --- /dev/null +++ b/include/ezcomponents/Base/docs/repos/Me/myclass1.php @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/include/ezcomponents/Base/docs/repos/Me/myclass2.php b/include/ezcomponents/Base/docs/repos/Me/myclass2.php new file mode 100644 index 000000000..0e04f38b4 --- /dev/null +++ b/include/ezcomponents/Base/docs/repos/Me/myclass2.php @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/include/ezcomponents/Base/docs/repos/You/yourclass1.php b/include/ezcomponents/Base/docs/repos/You/yourclass1.php new file mode 100644 index 000000000..3a399a78f --- /dev/null +++ b/include/ezcomponents/Base/docs/repos/You/yourclass1.php @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/include/ezcomponents/Base/docs/repos/You/yourclass2.php b/include/ezcomponents/Base/docs/repos/You/yourclass2.php new file mode 100644 index 000000000..66cbf13e8 --- /dev/null +++ b/include/ezcomponents/Base/docs/repos/You/yourclass2.php @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/include/ezcomponents/Base/docs/repos/autoloads/my_autoload.php b/include/ezcomponents/Base/docs/repos/autoloads/my_autoload.php new file mode 100644 index 000000000..37e19e91b --- /dev/null +++ b/include/ezcomponents/Base/docs/repos/autoloads/my_autoload.php @@ -0,0 +1,6 @@ + 'Me/myclass1.php', + 'erMyClass2' => 'Me/myclass2.php', + ); +?> diff --git a/include/ezcomponents/Base/docs/repos/autoloads/your_autoload.php b/include/ezcomponents/Base/docs/repos/autoloads/your_autoload.php new file mode 100644 index 000000000..ceeeb4038 --- /dev/null +++ b/include/ezcomponents/Base/docs/repos/autoloads/your_autoload.php @@ -0,0 +1,6 @@ + 'You/yourclass1.php', + 'erYourClass2' => 'You/yourclass2.php', + ); +?> diff --git a/include/ezcomponents/Base/docs/tutorial.txt b/include/ezcomponents/Base/docs/tutorial.txt new file mode 100644 index 000000000..1bbc5d9fc --- /dev/null +++ b/include/ezcomponents/Base/docs/tutorial.txt @@ -0,0 +1,224 @@ +eZ Components - Base +~~~~~~~~~~~~~~~~~~~~ + +.. contents:: Table of Contents + +Introduction +============ + +The Base component provides the basic functionality, such as autoloading, that +all eZ Components need to function properly. The Base component needs to be +loaded specifically. Base can also autoload external class repositories from +outside the eZ Components. + +Aside from the autoload functionality, the Base component also contains a number of +generic Exception classes that all inherit from the ezcBaseException class. + + +Installation +============ + +The installation and configuration of the eZ Components environment is +described in a separate article. Please refer to the `Components Introduction`_ +for instructions on installation and configuration of the eZ Components library +and the Base component. + +.. _Components Introduction: /docs/install + + +Usage +===== + +Debugging +--------- + +By default the ezcBase component's autoload mechanism will not throw an +exception when an autoload class can not be found. In some cases (during +development) it is useful to have an exception with detailed information +about which autoload files where search for, and in which directories. +ezcBase supports an option that enables this behavior:: + + debug = true; + ezcBase::setOptions( $options ); + ?> + +**Warning**: Exceptions are ignored when they are thrown from an autoload() +handler in PHP. In order to see the exception message that is thrown when a +class can not be found, you need to catch the exception *in* the autoload() +handler. Your autoload() function could then look like:: + + function __autoload( $className ) + { + try + { + ezcBase::autoload( $className ); + } + catch ( Exception $e ) + { + echo $e->getMessage(); + } + } + +Preloading +---------- + +The default autoload policy of the eZ Components is to load every class +file on demand only. It is also possible to load all classes of one +component at the same time, when one of the component's classes is +requested for the first time. You can change this behavior with the +"preload" option that is available through the ezcBaseAutoloadOptions option +class. You can turn preloading on with:: + + preload = true; + ezcBase::setOptions( $options ); + ?> + +Please note that preloading will *not* be done for Exception classes. + +Adding class repositories located outside eZ Components to autoload system +-------------------------------------------------------------------------- + +It can be useful to add repositories of user-defined classes to the eZ +Components autoload system. The ezcBase::addClassRepository() method can be +used to perform this task. You need to arrange the desired external classes +in a class repository. That is, make sure that classes and corresponding +\*_autoload.php files are named and placed according to the explanations below. +After they are in the proper structure, you can call addClassRepository() with +the proper parameters before you use the external classes. +External classes will then be loaded by autoload system. + +ezcBase::addClassRepository() takes two arguments: + +- $basePath is the base path for the whole class repository. +- $autoloadDirPath is the path where autoload files for this repository are found. + +The paths in the autoload files are *not* relative to the package directory +as specified by the $basePath argument. In other words, class definition files will +only be searched for in the location $autoloadDirPath. + +Consider the following example: + +- There is a class repository stored in the directory "./repos". +- Autoload files for this repository are stored in "./repos/autoloads". +- There are two components in this repository: "Me" and "You". +- The "Me" component has the classes "erMyClass1" and "erMyClass2". +- The "You" component has the classes "erYourClass1" and "erYourClass2". + +In this case, you need to create the following files in "./repos/autoloads". +Note that the prefix to _autoload.php ("my" and "your") in the filename is the +first part of the classname (excluding the lowercase classname prefix - "er"). + +Content of my_autoload.php: + +.. include:: repos/autoloads/my_autoload.php + :literal: + +Content of your_autoload.php: + +.. include:: repos/autoloads/your_autoload.php + :literal: + +The directory structure for the external repository is then: :: + + ./repos/autoloads/my_autoload.php + ./repos/autoloads/your_autoload.php + ./repos/Me/myclass1.php + ./repos/Me/myclass2.php + ./repos/You/yourclass1.php + ./repos/You/yourclass2.php + +To use this repository with the autoload mechanism, use the +following code: + +.. include:: tutorial_example_01.php + :literal: + +The above code will output: :: + + Class 'erMyClass2' + Class 'erYourClass1' + +Lazy initialization +------------------- + +Lazy initialization is a mechanism to load and configure a component, only +when it is really used in your application. This mechanism saves time for +parsing the classes and configuration, when the component is not used at all +during one request. The implementation in ezcBaseInit may be reused by other +applications and components, like the following example will show. + +.. include:: tutorial_lazy_initialization.php + :literal: + +The example shows a random class implementing the singleton pattern, which may +be some database connection handler, or anything similar in your case. The +getInstance() method shows a typical PHP 5 implementation except the +additional line 14, which checks, if a configuration callback was provided +earlier and configures the newly created instance. If no configuration +callback was provided, nothing will happen. The customKey is used to receive +the right callback from ezcBaseInit and needs to be known by the user, who +wants to define a configuration callback for your class. + +In line 32 the class used to configure your instance on creation is defined. +The first parameter is the key used earlier in the getInstance method, to +reference the right class, and the second parameter is the name of your +configuration class. + +The configuration class beginning in line 22 just needs to implement the +ezcBaseConfigurationInitializer interface, which defines one +method: configureObject(). This method will be called with the object to +configure as a single parameter. In the example, a new public property on the +customSingleton instance is created, which will be echo'd later to show the +success of the configuration. + +The configuration itself will not happen before the actual instance is created +in line 35 performing the static call on customSingleton::getInstance(). The +var_dump() in the following line shows, that the property value is set and +contains the earlier set value (int) 42. + +File Operations +--------------- + +Finding files recursively +````````````````````````` + +This example shows how to use the ezcBaseFile::findRecursive() method: + +.. include:: tutorial_example_02.php + :literal: + +The code in this example searches for files in the ``/dat/dev/ezcomponents`` +directory. It will only include files that match *all* patterns in the +$includeFilters array (the second parameter). Files that match *any* of the +patterns in the $excludeFilters array (the third parameter) will not be returned. + +In other words, the code above searches for files in the ``dat/dev/ezcomponents`` +directory, which are in the ``src/`` directory and end with ``_autoload.php``, +except for files that are in the ``/autoload/`` directory. + +Removing directories recursively +```````````````````````````````` + +This example shows how to use the ezcBaseFile::removeRecursive() method: + +.. include:: tutorial_example_03.php + :literal: + +This code simply removes the directory ``/dat/dev/ezcomponents/trash`` and all +of its files and sub-directories. + +**Warning: Use this function with care, as it has the potential to erase +everything that the current user has access to.** + + + +.. + Local Variables: + mode: rst + fill-column: 79 + End: + vim: et syn=rst tw=79 diff --git a/include/ezcomponents/Base/docs/tutorial_autoload.php b/include/ezcomponents/Base/docs/tutorial_autoload.php new file mode 100644 index 000000000..66b1dcf1e --- /dev/null +++ b/include/ezcomponents/Base/docs/tutorial_autoload.php @@ -0,0 +1,20 @@ + diff --git a/include/ezcomponents/Base/docs/tutorial_example_01.php b/include/ezcomponents/Base/docs/tutorial_example_01.php new file mode 100644 index 000000000..316780d23 --- /dev/null +++ b/include/ezcomponents/Base/docs/tutorial_example_01.php @@ -0,0 +1,9 @@ +toString(); +$yourVar1 = new erYourClass1(); +$yourVar1->toString(); +?> diff --git a/include/ezcomponents/Base/docs/tutorial_example_02.php b/include/ezcomponents/Base/docs/tutorial_example_02.php new file mode 100644 index 000000000..3748b60cc --- /dev/null +++ b/include/ezcomponents/Base/docs/tutorial_example_02.php @@ -0,0 +1,11 @@ + diff --git a/include/ezcomponents/Base/docs/tutorial_example_03.php b/include/ezcomponents/Base/docs/tutorial_example_03.php new file mode 100644 index 000000000..3e989b253 --- /dev/null +++ b/include/ezcomponents/Base/docs/tutorial_example_03.php @@ -0,0 +1,6 @@ + diff --git a/include/ezcomponents/Base/docs/tutorial_lazy_initialization.php b/include/ezcomponents/Base/docs/tutorial_lazy_initialization.php new file mode 100644 index 000000000..2a6f5272d --- /dev/null +++ b/include/ezcomponents/Base/docs/tutorial_lazy_initialization.php @@ -0,0 +1,38 @@ +value = 42; + } +} + +// Register for lazy initilization +ezcBaseInit::setCallback( 'customKey', 'customSingletonConfiguration' ); + +// Configure on first initilization +$object = customSingleton::getInstance(); +var_dump( $object->value ); + +?> diff --git a/include/ezcomponents/Base/review-1.5.txt b/include/ezcomponents/Base/review-1.5.txt new file mode 100644 index 000000000..1ccfb4937 --- /dev/null +++ b/include/ezcomponents/Base/review-1.5.txt @@ -0,0 +1,23 @@ +Review Alexandru 2008-05-08 +=========================== + +[X] Regarding feature request #8529 (a du -s implementation). The documentation + for ezcBaseFile::findRecursive() says that you can supply an empty array + as the 4th argument to get the statistics. + + If I pass for example $stats which I initialized with array() before, then + I get notices: "Undefined index: count in /home/as/dev/ezcomponents/trunk/Base/src/file.php + on line 139", and the same notice for index "size". + + Also the documentation does not mention that you need to pass a variable and not + a value - if I pass array() as the 4th argument I get the error "Cannot pass + parameter 4 by reference" + + If I pass $stats which I initialize with null, false or empty string before, + then the function works. + + Also all the file recursive tests fail on Windows (slash issues mostly). + +[X] Regarding feature request #11506 (method ezcBase::getInstallationPath()). On + Linux it returns the path without any slash at the end, but on Windows (Vista) + it adds a Windows slash at the end. diff --git a/include/ezcomponents/Base/src/base.php b/include/ezcomponents/Base/src/base.php new file mode 100644 index 000000000..a203b79b9 --- /dev/null +++ b/include/ezcomponents/Base/src/base.php @@ -0,0 +1,592 @@ +array) + */ + protected static $repositoryDirs = array(); + + /** + * This variable stores all the elements from the autoload arrays. When a + * new autoload file is loaded, their files are added to this array. + * + * @var array(string=>string) + */ + protected static $autoloadArray = array(); + + /** + * This variable stores all the elements from the autoload arrays for + * external repositories. When a new autoload file is loaded, their files + * are added to this array. + * + * @var array(string=>string) + */ + protected static $externalAutoloadArray = array(); + + /** + * Options for the ezcBase class. + * + * @var ezcBaseOptions + */ + static private $options; + + /** + * Associates an option object with this static class. + * + * @param ezcBaseAutoloadOptions $options + */ + static public function setOptions( ezcBaseAutoloadOptions $options ) + { + self::$options = $options; + } + + /** + * Tries to autoload the given className. If the className could be found + * this method returns true, otherwise false. + * + * This class caches the requested class names (including the ones who + * failed to load). + * + * @param string $className The name of the class that should be loaded. + * + * @return bool + */ + public static function autoload( $className ) + { + ezcBase::setPackageDir(); + + // Check whether the classname is already in the cached autoloadArray. + if ( array_key_exists( $className, ezcBase::$autoloadArray ) ) + { + // Is it registered as 'unloadable'? + if ( ezcBase::$autoloadArray[$className] == false ) + { + return false; + } + ezcBase::loadFile( ezcBase::$autoloadArray[$className] ); + + return true; + } + + // Check whether the classname is already in the cached autoloadArray + // for external repositories. + if ( array_key_exists( $className, ezcBase::$externalAutoloadArray ) ) + { + // Is it registered as 'unloadable'? + if ( ezcBase::$externalAutoloadArray[$className] == false ) + { + return false; + } + ezcBase::loadExternalFile( ezcBase::$externalAutoloadArray[$className] ); + + return true; + } + + // Not cached, so load the autoload from the package. + // Matches the first and optionally the second 'word' from the classname. + $fileNames = array(); + if ( preg_match( "/^([a-z0-9]*)([A-Z][a-z0-9]*)([A-Z][a-z0-9]*)?/", $className, $matches ) !== false ) + { + $autoloadFile = ""; + // Try to match with both names, if available. + switch ( sizeof( $matches ) ) + { + case 4: + // check for x_y_autoload.php + $autoloadFile = strtolower( "{$matches[2]}_{$matches[3]}_autoload.php" ); + $fileNames[] = $autoloadFile; + if ( ezcBase::requireFile( $autoloadFile, $className, $matches[1] ) ) + { + return true; + } + // break intentionally missing. + + case 3: + // check for x_autoload.php + $autoloadFile = strtolower( "{$matches[2]}_autoload.php" ); + $fileNames[] = $autoloadFile; + if ( ezcBase::requireFile( $autoloadFile, $className, $matches[1] ) ) + { + return true; + } + + // check for autoload.php + $autoloadFile = 'autoload.php'; + $fileNames[] = $autoloadFile; + if ( ezcBase::requireFile( $autoloadFile, $className, $matches[1] ) ) + { + return true; + } + break; + } + + // Maybe there is another autoload available. + // Register this classname as false. + ezcBase::$autoloadArray[$className] = false; + } + + $path = ezcBase::$packageDir . 'autoload/'; + $realPath = realpath( $path ); + + if ( $realPath == '' ) + { + // Can not be tested, because if this happens, then the autoload + // environment has not been set-up correctly. + trigger_error( "Couldn't find autoload directory '$path'", E_USER_ERROR ); + } + + $dirs = self::getRepositoryDirectories(); + if ( ezcBase::$options && ezcBase::$options->debug ) + { + throw new ezcBaseAutoloadException( $className, $fileNames, $dirs ); + } + + return false; + } + + /** + * Sets the current working directory to $directory. + * + * @param string $directory + */ + public static function setWorkingDirectory( $directory ) + { + self::$libraryMode = 'custom'; + self::$currentWorkingDirectory = $directory; + } + + /** + * Figures out the base path of the eZ Components installation. + * + * It stores the path that it finds in a static member variable. The path + * depends on the installation method of the eZ Components. The SVN version + * has a different path than the PEAR installed version. + */ + protected static function setPackageDir() + { + if ( ezcBase::$packageDir !== null ) + { + return; + } + + // Get the path to the components. + $baseDir = dirname( __FILE__ ); + + switch ( ezcBase::$libraryMode ) + { + case "custom": + ezcBase::$packageDir = self::$currentWorkingDirectory . '/'; + break; + case "devel": + case "tarball": + ezcBase::$packageDir = $baseDir. "/../../"; + break; + case "pear"; + ezcBase::$packageDir = $baseDir. "/../"; + break; + } + } + + /** + * Tries to load the autoload array and, if loaded correctly, includes the class. + * + * @param string $fileName Name of the autoload file. + * @param string $className Name of the class that should be autoloaded. + * @param string $prefix The prefix of the class repository. + * + * @return bool True is returned when the file is correctly loaded. + * Otherwise false is returned. + */ + protected static function requireFile( $fileName, $className, $prefix ) + { + $autoloadDir = ezcBase::$packageDir . "autoload/"; + + // We need the full path to the fileName. The method file_exists() doesn't + // automatically check the (php.ini) library paths. Therefore: + // file_exists( "ezc/autoload/$fileName" ) doesn't work. + if ( $prefix === 'ezc' && file_exists( "$autoloadDir$fileName" ) ) + { + $array = require( "$autoloadDir$fileName" ); + + if ( is_array( $array) && array_key_exists( $className, $array ) ) + { + // Add the array to the cache, and include the requested file. + ezcBase::$autoloadArray = array_merge( ezcBase::$autoloadArray, $array ); + if ( ezcBase::$options !== null && ezcBase::$options->preload && !preg_match( '/Exception$/', $className ) ) + { + foreach ( $array as $loadClassName => $file ) + { + if ( $loadClassName !== 'ezcBase' && !class_exists( $loadClassName, false ) && !interface_exists( $loadClassName, false ) && !preg_match( '/Exception$/', $loadClassName ) /*&& !class_exists( $loadClassName, false ) && !interface_exists( $loadClassName, false )*/ ) + { + ezcBase::loadFile( ezcBase::$autoloadArray[$loadClassName] ); + } + } + } + else + { + ezcBase::loadFile( ezcBase::$autoloadArray[$className] ); + } + return true; + } + } + + // It is not in components autoload/ dir. + // try to search in additional dirs. + foreach ( ezcBase::$repositoryDirs as $repositoryPrefix => $extraDir ) + { + if ( gettype( $repositoryPrefix ) === 'string' && $repositoryPrefix !== $prefix ) + { + continue; + } + + if ( file_exists( $extraDir['autoloadDirPath'] . '/' . $fileName ) ) + { + $array = array(); + $originalArray = require( $extraDir['autoloadDirPath'] . '/' . $fileName ); + + // Building paths. + // Resulting path to class definition file consists of: + // path to extra directory with autoload file + + // basePath provided for current extra directory + + // path to class definition file stored in autoload file. + foreach ( $originalArray as $class => $classPath ) + { + $array[$class] = $extraDir['basePath'] . '/' . $classPath; + } + + if ( is_array( $array ) && array_key_exists( $className, $array ) ) + { + // Add the array to the cache, and include the requested file. + ezcBase::$externalAutoloadArray = array_merge( ezcBase::$externalAutoloadArray, $array ); + ezcBase::loadExternalFile( ezcBase::$externalAutoloadArray[$className] ); + return true; + } + } + } + + // Nothing found :-(. + return false; + } + + /** + * Loads, require(), the given file name. If we are in development mode, + * "/src/" is inserted into the path. + * + * @param string $file The name of the file that should be loaded. + */ + protected static function loadFile( $file ) + { + switch ( ezcBase::$libraryMode ) + { + case "devel": + case "tarball": + list( $first, $second ) = explode( '/', $file, 2 ); + $file = $first . "/src/" . $second; + break; + + case "custom": + list( $first, $second ) = explode( '/', $file, 2 ); + // Add the "src/" after the package name. + if ( $first == 'Base' || $first == 'UnitTest' ) + { + list( $first, $second ) = explode( '/', $file, 2 ); + $file = $first . "/src/" . $second; + } + else + { + list( $first, $second, $third ) = explode( '/', $file, 3 ); + $file = $first . '/' . $second . "/src/" . $third; + } + break; + + case "pear": + /* do nothing, it's already correct */ + break; + } + + if ( file_exists( ezcBase::$packageDir . $file ) ) + { + require( ezcBase::$packageDir . $file ); + } + else + { + // Can not be tested, because if this happens, then one of the + // components has a broken autoload file. + throw new ezcBaseFileNotFoundException( ezcBase::$packageDir.$file ); + } + } + + /** + * Loads, require(), the given file name from an external package. + * + * @param string $file The name of the file that should be loaded. + */ + protected static function loadExternalFile( $file ) + { + if ( file_exists( $file ) ) + { + require( $file ); + } + else + { + throw new ezcBaseFileNotFoundException( $file ); + } + } + + /** + * Checks for dependencies on PHP versions or extensions + * + * The function as called by the $component component checks for the $type + * dependency. The dependency $type is compared against the $value. The + * function aborts the script if the dependency is not matched. + * + * @param string $component + * @param int $type + * @param mixed $value + */ + public static function checkDependency( $component, $type, $value ) + { + switch ( $type ) + { + case self::DEP_PHP_EXTENSION: + if ( extension_loaded( $value ) ) + { + return; + } + else + { + // Can not be tested as it would abort the PHP script. + die( "\nThe {$component} component depends on the default PHP extension '{$value}', which is not loaded.\n" ); + } + break; + + case self::DEP_PHP_VERSION: + $phpVersion = phpversion(); + if ( version_compare( $phpVersion, $value, '>=' ) ) + { + return; + } + else + { + // Can not be tested as it would abort the PHP script. + die( "\nThe {$component} component depends on the PHP version '{$value}', but the current version is '{$phpVersion}'.\n" ); + } + break; + } + } + + /** + * Return the list of directories that contain class repositories. + * + * The path to the eZ components directory is always included in the result + * array. Each element in the returned array has the format of: + * packageDirectory => ezcBaseRepositoryDirectory + * + * @return array(string=>ezcBaseRepositoryDirectory) + */ + public static function getRepositoryDirectories() + { + $autoloadDirs = array(); + ezcBase::setPackageDir(); + $repositoryDir = self::$currentWorkingDirectory ? self::$currentWorkingDirectory : ( realpath( dirname( __FILE__ ) . '/../../' ) ); + $autoloadDirs['ezc'] = new ezcBaseRepositoryDirectory( ezcBaseRepositoryDirectory::TYPE_INTERNAL, $repositoryDir, $repositoryDir . "/autoload" ); + + foreach ( ezcBase::$repositoryDirs as $extraDirKey => $extraDirArray ) + { + $repositoryDirectory = new ezcBaseRepositoryDirectory( ezcBaseRepositoryDirectory::TYPE_EXTERNAL, realpath( $extraDirArray['basePath'] ), realpath( $extraDirArray['autoloadDirPath'] ) ); + $autoloadDirs[$extraDirKey] = $repositoryDirectory; + } + + return $autoloadDirs; + } + + /** + * Adds an additional class repository. + * + * Used for adding class repositoryies outside the eZ components to be + * loaded by the autoload system. + * + * This function takes two arguments: $basePath is the base path for the + * whole class repository and $autoloadDirPath the path where autoload + * files for this repository are found. The paths in the autoload files are + * relative to the package directory as specified by the $basePath + * argument. I.e. class definition file will be searched at location + * $basePath + path to the class definition file as stored in the autoload + * file. + * + * addClassRepository() should be called somewhere in code before external classes + * are used. + * + * Example: + * Take the following facts: + *

    + *
  • there is a class repository stored in the directory "./repos"
  • + *
  • autoload files for that repository are stored in "./repos/autoloads"
  • + *
  • there are two components in this repository: "Me" and "You"
  • + *
  • the "Me" component has the classes "erMyClass1" and "erMyClass2"
  • + *
  • the "You" component has the classes "erYourClass1" and "erYourClass2"
  • + *
+ * + * In this case you would need to create the following files in + * "./repos/autoloads". Please note that the part before _autoload.php in + * the filename is the first part of the classname, not considering + * the all lower-case letter prefix. + * + * "my_autoload.php": + * + * 'Me/myclass1.php', + * 'erMyClass2' => 'Me/myclass2.php', + * ); + * ?> + * + * + * "your_autoload.php": + * + * 'You/yourclass1.php', + * 'erYourClass2' => 'You/yourclass2.php', + * ); + * ?> + * + * + * The directory structure for the external repository is then: + * + * ./repos/autoloads/my_autoload.php + * ./repos/autoloads/you_autoload.php + * ./repos/Me/myclass1.php + * ./repos/Me/myclass2.php + * ./repos/You/yourclass1.php + * ./repos/You/yourclass2.php + * + * + * To use this repository with the autoload mechanism you have to use the + * following code: + * + * + * + * + * @throws ezcBaseFileNotFoundException if $autoloadDirPath or $basePath do not exist. + * @param string $basePath + * @param string $autoloadDirPath + * @param string $prefix + */ + public static function addClassRepository( $basePath, $autoloadDirPath = null, $prefix = null ) + { + // check if base path exists + if ( !is_dir( $basePath ) ) + { + throw new ezcBaseFileNotFoundException( $basePath, 'base directory' ); + } + + // calculate autoload path if it wasn't given + if ( is_null( $autoloadDirPath ) ) + { + $autoloadDirPath = $basePath . '/autoload'; + } + + // check if autoload dir exists + if ( !is_dir( $autoloadDirPath ) ) + { + throw new ezcBaseFileNotFoundException( $autoloadDirPath, 'autoload directory' ); + } + + // add info to $repositoryDirs + if ( $prefix === null ) + { + $array = array( 'basePath' => $basePath, 'autoloadDirPath' => $autoloadDirPath ); + + // add info to the list of extra dirs + ezcBase::$repositoryDirs[] = $array; + } + else + { + if ( array_key_exists( $prefix, ezcBase::$repositoryDirs ) ) + { + throw new ezcBaseDoubleClassRepositoryPrefixException( $prefix, $basePath, $autoloadDirPath ); + } + + // add info to the list of extra dirs, and use the prefix to identify the new repository. + ezcBase::$repositoryDirs[$prefix] = array( 'basePath' => $basePath, 'autoloadDirPath' => $autoloadDirPath ); + } + } + + /** + * Returns the base path of the eZ Components installation + * + * This method returns the base path, including a trailing directory + * separator. + * + * @return string + */ + public static function getInstallationPath() + { + self::setPackageDir(); + + $path = realpath( self::$packageDir ); + if ( substr( $path, -1 ) !== DIRECTORY_SEPARATOR ) + { + $path .= DIRECTORY_SEPARATOR; + } + return $path; + } +} +?> diff --git a/include/ezcomponents/Base/src/exceptions/autoload.php b/include/ezcomponents/Base/src/exceptions/autoload.php new file mode 100644 index 000000000..e822f80d3 --- /dev/null +++ b/include/ezcomponents/Base/src/exceptions/autoload.php @@ -0,0 +1,38 @@ +autoloadPath ); + } + parent::__construct( "Could not find a class to file mapping for '{$className}'. Searched for ". implode( ', ', $files ) . " in: " . implode( ', ', $paths ) ); + } +} +?> diff --git a/include/ezcomponents/Base/src/exceptions/double_class_repository_prefix.php b/include/ezcomponents/Base/src/exceptions/double_class_repository_prefix.php new file mode 100644 index 000000000..d92064fc3 --- /dev/null +++ b/include/ezcomponents/Base/src/exceptions/double_class_repository_prefix.php @@ -0,0 +1,34 @@ + diff --git a/include/ezcomponents/Base/src/exceptions/exception.php b/include/ezcomponents/Base/src/exceptions/exception.php new file mode 100644 index 000000000..c5db8ac48 --- /dev/null +++ b/include/ezcomponents/Base/src/exceptions/exception.php @@ -0,0 +1,43 @@ +originalMessage = $message; + + if ( php_sapi_name() == 'cli' ) + { + parent::__construct( $message ); + } + else + { + parent::__construct( htmlspecialchars( $message ) ); + } + } +} +?> diff --git a/include/ezcomponents/Base/src/exceptions/extension_not_found.php b/include/ezcomponents/Base/src/exceptions/extension_not_found.php new file mode 100644 index 000000000..4b21f780f --- /dev/null +++ b/include/ezcomponents/Base/src/exceptions/extension_not_found.php @@ -0,0 +1,38 @@ + diff --git a/include/ezcomponents/Base/src/exceptions/file_exception.php b/include/ezcomponents/Base/src/exceptions/file_exception.php new file mode 100644 index 000000000..364b9a18f --- /dev/null +++ b/include/ezcomponents/Base/src/exceptions/file_exception.php @@ -0,0 +1,25 @@ + diff --git a/include/ezcomponents/Base/src/exceptions/file_io.php b/include/ezcomponents/Base/src/exceptions/file_io.php new file mode 100644 index 000000000..c07e851ba --- /dev/null +++ b/include/ezcomponents/Base/src/exceptions/file_io.php @@ -0,0 +1,50 @@ + diff --git a/include/ezcomponents/Base/src/exceptions/file_not_found.php b/include/ezcomponents/Base/src/exceptions/file_not_found.php new file mode 100644 index 000000000..d9de45004 --- /dev/null +++ b/include/ezcomponents/Base/src/exceptions/file_not_found.php @@ -0,0 +1,43 @@ + diff --git a/include/ezcomponents/Base/src/exceptions/file_permission.php b/include/ezcomponents/Base/src/exceptions/file_permission.php new file mode 100644 index 000000000..3cd2d090d --- /dev/null +++ b/include/ezcomponents/Base/src/exceptions/file_permission.php @@ -0,0 +1,63 @@ + diff --git a/include/ezcomponents/Base/src/exceptions/init_callback_configured.php b/include/ezcomponents/Base/src/exceptions/init_callback_configured.php new file mode 100644 index 000000000..59f9c8f3f --- /dev/null +++ b/include/ezcomponents/Base/src/exceptions/init_callback_configured.php @@ -0,0 +1,31 @@ + diff --git a/include/ezcomponents/Base/src/exceptions/invalid_callback_class.php b/include/ezcomponents/Base/src/exceptions/invalid_callback_class.php new file mode 100644 index 000000000..450388c6b --- /dev/null +++ b/include/ezcomponents/Base/src/exceptions/invalid_callback_class.php @@ -0,0 +1,31 @@ + diff --git a/include/ezcomponents/Base/src/exceptions/invalid_parent_class.php b/include/ezcomponents/Base/src/exceptions/invalid_parent_class.php new file mode 100644 index 000000000..69d63055b --- /dev/null +++ b/include/ezcomponents/Base/src/exceptions/invalid_parent_class.php @@ -0,0 +1,29 @@ + diff --git a/include/ezcomponents/Base/src/exceptions/property_not_found.php b/include/ezcomponents/Base/src/exceptions/property_not_found.php new file mode 100644 index 000000000..5c29bb79d --- /dev/null +++ b/include/ezcomponents/Base/src/exceptions/property_not_found.php @@ -0,0 +1,30 @@ + diff --git a/include/ezcomponents/Base/src/exceptions/property_permission.php b/include/ezcomponents/Base/src/exceptions/property_permission.php new file mode 100644 index 000000000..e453c5ec0 --- /dev/null +++ b/include/ezcomponents/Base/src/exceptions/property_permission.php @@ -0,0 +1,42 @@ + diff --git a/include/ezcomponents/Base/src/exceptions/setting_not_found.php b/include/ezcomponents/Base/src/exceptions/setting_not_found.php new file mode 100644 index 000000000..2394b2c25 --- /dev/null +++ b/include/ezcomponents/Base/src/exceptions/setting_not_found.php @@ -0,0 +1,29 @@ + diff --git a/include/ezcomponents/Base/src/exceptions/setting_value.php b/include/ezcomponents/Base/src/exceptions/setting_value.php new file mode 100644 index 000000000..e72b3ef3c --- /dev/null +++ b/include/ezcomponents/Base/src/exceptions/setting_value.php @@ -0,0 +1,42 @@ + diff --git a/include/ezcomponents/Base/src/exceptions/value.php b/include/ezcomponents/Base/src/exceptions/value.php new file mode 100644 index 000000000..c63e86b9d --- /dev/null +++ b/include/ezcomponents/Base/src/exceptions/value.php @@ -0,0 +1,43 @@ + diff --git a/include/ezcomponents/Base/src/exceptions/whatever.php b/include/ezcomponents/Base/src/exceptions/whatever.php new file mode 100644 index 000000000..fd382249a --- /dev/null +++ b/include/ezcomponents/Base/src/exceptions/whatever.php @@ -0,0 +1,40 @@ + diff --git a/include/ezcomponents/Base/src/ezc_bootstrap.php b/include/ezcomponents/Base/src/ezc_bootstrap.php new file mode 100644 index 000000000..cef136cfe --- /dev/null +++ b/include/ezcomponents/Base/src/ezc_bootstrap.php @@ -0,0 +1,39 @@ + diff --git a/include/ezcomponents/Base/src/features.php b/include/ezcomponents/Base/src/features.php new file mode 100644 index 000000000..55d25f2a9 --- /dev/null +++ b/include/ezcomponents/Base/src/features.php @@ -0,0 +1,329 @@ + + * + * + * + * @package Base + * @version 1.5 + */ +class ezcBaseFeatures +{ + /** + * Used to store the path of the ImageMagick convert utility. + * + * It is initialized in the {@link getImageConvertExecutable()} function. + * + * @var string + */ + private static $imageConvert = null; + + /** + * Used to store the path of the ImageMagick identify utility. + * + * It is initialized in the {@link getImageIdentifyExecutable()} function. + * + * @var string + */ + private static $imageIdentify = null; + + /** + * Used to store the operating system. + * + * It is initialized in the {@link os()} function. + * + * @var string + */ + private static $os = null; + + /** + * Determines if hardlinks are supported. + * + * @return bool + */ + public static function supportsLink() + { + return function_exists( 'link' ); + } + + /** + * Determines if symlinks are supported. + * + * @return bool + */ + public static function supportsSymLink() + { + return function_exists( 'symlink' ); + } + + /** + * Determines if posix uids are supported. + * + * @return bool + */ + public static function supportsUserId() + { + return function_exists( 'posix_getpwuid' ); + } + + /** + * Determines if the ImageMagick convert utility is installed. + * + * @return bool + */ + public static function hasImageConvert() + { + return !is_null( self::getImageConvertExecutable() ); + } + + /** + * Returns the path to the ImageMagick convert utility. + * + * On Linux, Unix,... it will return something like: /usr/bin/convert + * On Windows it will return something like: C:\Windows\System32\convert.exe + * + * @return string + */ + public static function getImageConvertExecutable() + { + if ( !is_null( self::$imageConvert ) ) + { + return self::$imageConvert; + } + return ( self::$imageConvert = self::findExecutableInPath( 'convert' ) ); + } + + /** + * Determines if the ImageMagick identify utility is installed. + * + * @return bool + */ + public static function hasImageIdentify() + { + return !is_null( self::getImageIdentifyExecutable() ); + } + + /** + * Returns the path to the ImageMagick identify utility. + * + * On Linux, Unix,... it will return something like: /usr/bin/identify + * On Windows it will return something like: C:\Windows\System32\identify.exe + * + * @return string + */ + public static function getImageIdentifyExecutable() + { + if ( !is_null( self::$imageIdentify ) ) + { + return self::$imageIdentify; + } + return ( self::$imageIdentify = self::findExecutableInPath( 'identify' ) ); + } + + /** + * Determines if the specified extension is loaded. + * + * If $version is specified, the specified extension will be tested also + * against the version of the loaded extension. + * + * Examples: + * + * hasExtensionSupport( 'gzip' ); + * + * will return true if gzip extension is loaded. + * + * + * hasExtensionSupport( 'pdo_mysql', '1.0.2' ); + * + * will return true if pdo_mysql extension is loaded and its version is at least 1.0.2. + * + * @param string $extension + * @param string $version + * @return bool + */ + public static function hasExtensionSupport( $extension, $version = null ) + { + if ( is_null( $version ) ) + { + return extension_loaded( $extension ); + } + return extension_loaded( $extension ) && version_compare( phpversion( $extension ), $version, ">=" ) ; + } + + /** + * Determines if the specified function is available. + * + * Examples: + * + * ezcBaseFeatures::hasFunction( 'imagepstext' ); + * + * will return true if support for Type 1 fonts is available with your GD + * extension. + * + * @param string $functionName + * @return bool + */ + public static function hasFunction( $functionName ) + { + return function_exists( $functionName ); + } + + /** + * Returns if a given class exists. + * Checks for a given class name and returns if this class exists or not. + * Catches the ezcBaseAutoloadException and returns false, if it was thrown. + * + * @param string $className The class to check for. + * @param bool $autoload True to use __autoload(), otherwise false. + * @return bool True if the class exists. Otherwise false. + */ + public static function classExists( $className, $autoload = true ) + { + try + { + if ( class_exists( $className, $autoload ) ) + { + return true; + } + return false; + } + catch ( ezcBaseAutoloadException $e ) + { + return false; + } + } + + /** + * Returns the operating system on which PHP is running. + * + * This method returns a sanitized form of the OS name, example + * return values are "Windows", "Mac", "Linux" and "FreeBSD". In + * all other cases it returns the value of the internal PHP constant + * PHP_OS. + * + * @return string + */ + public static function os() + { + if ( is_null( self::$os ) ) + { + $uname = php_uname( 's' ); + if ( substr( $uname, 0, 7 ) == 'Windows' ) + { + self::$os = 'Windows'; + } + elseif ( substr( $uname, 0, 3 ) == 'Mac' ) + { + self::$os = 'Mac'; + } + elseif ( strtolower( $uname ) == 'linux' ) + { + self::$os = 'Linux'; + } + elseif ( strtolower( substr( $uname, 0, 7 ) ) == 'freebsd' ) + { + self::$os = 'FreeBSD'; + } + else + { + self::$os = PHP_OS; + } + } + return self::$os; + } + + /** + * Returns the path of the specified executable, if it can be found in the system's path. + * + * It scans the PATH enviroment variable based on the OS to find the + * $fileName. For Windows, the path is with \, not /. If $fileName is not + * found, it returns null. + * + * @todo consider using getenv( 'PATH' ) instead of $_ENV['PATH'] + * (but that won't work under IIS) + * + * @param string $fileName + * @return string + */ + public static function findExecutableInPath( $fileName ) + { + if ( array_key_exists( 'PATH', $_ENV ) ) + { + $envPath = $_ENV['PATH']; + if ( strlen( trim( $envPath ) ) == 0 ) + { + $envPath = false; + } + } + else + { + $envPath = false; + } + switch ( self::os() ) + { + case 'Unix': + case 'FreeBSD': + case 'Mac': + case 'MacOS': + case 'Darwin': + case 'Linux': + if ( $envPath ) + { + $dirs = explode( ':', $envPath ); + foreach ( $dirs as $dir ) + { + if ( file_exists( "{$dir}/{$fileName}" ) ) + { + return "{$dir}/{$fileName}"; + } + } + } + elseif ( file_exists( "./{$fileName}" ) ) + { + return $fileName; + } + break; + case 'Windows': + if ( $envPath ) + { + $dirs = explode( ';', $envPath ); + foreach ( $dirs as $dir ) + { + if ( file_exists( "{$dir}\\{$fileName}.exe" ) ) + { + return "{$dir}\\{$fileName}.exe"; + } + } + } + elseif ( file_exists( "{$fileName}.exe" ) ) + { + return "{$fileName}.exe"; + } + break; + } + return null; + } +} +?> diff --git a/include/ezcomponents/Base/src/file.php b/include/ezcomponents/Base/src/file.php new file mode 100644 index 000000000..2d4494cd9 --- /dev/null +++ b/include/ezcomponents/Base/src/file.php @@ -0,0 +1,377 @@ + + * + * + * + * @package Base + * @version 1.5 + * @mainclass + */ +class ezcBaseFile +{ + /** + * Finds files recursively on a file system + * + * With this method you can scan the file system for files. You can use + * $includeFilters to include only specific files, and $excludeFilters to + * exclude certain files from being returned. The function will always go + * into subdirectories even if the entry would not have passed the filters. + * + * Filters are regular expressions and are therefore required to have + * starting and ending delimiters. The Perl Compatible syntax is used as + * regular expression language. + * + * If you pass an empty array to the $statistics argument, the function + * will in details about the number of files found into the 'count' array + * element, and the total filesize in the 'size' array element. Because this + * argument is passed by reference, you *have* to pass a variable and you + * can not pass a constant value such as "array()". + * + * @param string $sourceDir + * @param array(string) $includeFilters + * @param array(string) $excludeFilters + * @param array() $statistics + * + * @throws ezcBaseFileNotFoundException if the $sourceDir directory is not + * a directory or does not exist. + * @throws ezcBaseFilePermissionException if the $sourceDir directory could + * not be opened for reading. + * @return array + */ + static public function findRecursive( $sourceDir, array $includeFilters = array(), array $excludeFilters = array(), &$statistics = null ) + { + if ( !is_dir( $sourceDir ) ) + { + throw new ezcBaseFileNotFoundException( $sourceDir, 'directory' ); + } + $elements = array(); + $d = @dir( $sourceDir ); + if ( !$d ) + { + throw new ezcBaseFilePermissionException( $sourceDir, ezcBaseFileException::READ ); + } + + // init statistics array + if ( !is_array( $statistics ) || !array_key_exists( 'size', $statistics ) || !array_key_exists( 'count', $statistics ) ) + { + $statistics['size'] = 0; + $statistics['count'] = 0; + } + + while ( ( $entry = $d->read() ) !== false ) + { + if ( $entry == '.' || $entry == '..' ) + { + continue; + } + + $fileInfo = @stat( $sourceDir . DIRECTORY_SEPARATOR . $entry ); + if ( !$fileInfo ) + { + $fileInfo = array( 'size' => 0, 'mode' => 0 ); + } + + if ( $fileInfo['mode'] & 0x4000 ) + { + // We need to ignore the Permission exceptions here as it can + // be normal that a directory can not be accessed. We only need + // the exception if the top directory could not be read. + try + { + $subList = self::findRecursive( $sourceDir . DIRECTORY_SEPARATOR . $entry, $includeFilters, $excludeFilters, $statistics ); + $elements = array_merge( $elements, $subList ); + } + catch ( ezcBaseFilePermissionException $e ) + { + } + } + else + { + // By default a file is included in the return list + $ok = true; + // Iterate over the $includeFilters and prohibit the file from + // being returned when atleast one of them does not match + foreach ( $includeFilters as $filter ) + { + if ( !preg_match( $filter, $sourceDir . DIRECTORY_SEPARATOR . $entry ) ) + { + $ok = false; + break; + } + } + // Iterate over the $excludeFilters and prohibit the file from + // being returns when atleast one of them matches + foreach ( $excludeFilters as $filter ) + { + if ( preg_match( $filter, $sourceDir . DIRECTORY_SEPARATOR . $entry ) ) + { + $ok = false; + break; + } + } + + if ( $ok ) + { + $elements[] = $sourceDir . DIRECTORY_SEPARATOR . $entry; + $statistics['count']++; + $statistics['size'] += $fileInfo['size']; + } + } + } + sort( $elements ); + return $elements; + } + + /** + * Removes files and directories recursively from a file system + * + * This method recursively removes the $directory and all its contents. + * You should be extremely careful with this method as it has the + * potential to erase everything that the current user has access to. + * + * @param string $directory + */ + static public function removeRecursive( $directory ) + { + $sourceDir = realpath( $directory ); + if ( !$sourceDir ) + { + throw new ezcBaseFileNotFoundException( $directory, 'directory' ); + } + $d = @dir( $sourceDir ); + if ( !$d ) + { + throw new ezcBaseFilePermissionException( $directory, ezcBaseFileException::READ ); + } + while ( ( $entry = $d->read() ) !== false ) + { + if ( $entry == '.' || $entry == '..' ) + { + continue; + } + + if ( is_dir( $sourceDir . DIRECTORY_SEPARATOR . $entry ) ) + { + self::removeRecursive( $sourceDir . DIRECTORY_SEPARATOR . $entry ); + } + else + { + if ( @unlink( $sourceDir . DIRECTORY_SEPARATOR . $entry ) === false ) + { + throw new ezcBaseFilePermissionException( $directory . DIRECTORY_SEPARATOR . $entry, ezcBaseFileException::REMOVE ); + } + } + } + $d->close(); + rmdir( $sourceDir ); + } + + /** + * Recursively copy a file or directory. + * + * Recursively copy a file or directory in $source to the given + * destination. If a depth is given, the operation will stop, if the given + * recursion depth is reached. A depth of -1 means no limit, while a depth + * of 0 means, that only the current file or directory will be copied, + * without any recursion. + * + * You may optionally define modes used to create files and directories. + * + * @throws ezcBaseFileNotFoundException + * If the $sourceDir directory is not a directory or does not exist. + * @throws ezcBaseFilePermissionException + * If the $sourceDir directory could not be opened for reading, or the + * destination is not writeable. + * + * @param string $source + * @param string $destination + * @param int $depth + * @param int $dirMode + * @param int $fileMode + * @return void + */ + static public function copyRecursive( $source, $destination, $depth = -1, $dirMode = 0775, $fileMode = 0664 ) + { + // Check if source file exists at all. + if ( !is_file( $source ) && !is_dir( $source ) ) + { + throw new ezcBaseFileNotFoundException( $source ); + } + + // Destination file should NOT exist + if ( is_file( $destination ) || is_dir( $destination ) ) + { + throw new ezcBaseFilePermissionException( $destination, ezcBaseFileException::WRITE ); + } + + // Skip non readable files in source directory + if ( !is_readable( $source ) ) + { + return; + } + + // Copy + if ( is_dir( $source ) ) + { + mkdir( $destination ); + // To ignore umask, umask() should not be changed with + // multithreaded servers... + chmod( $destination, $dirMode ); + } + elseif ( is_file( $source ) ) + { + copy( $source, $destination ); + chmod( $destination, $fileMode ); + } + + if ( ( $depth === 0 ) || + ( !is_dir( $source ) ) ) + { + // Do not recurse (any more) + return; + } + + // Recurse + $dh = opendir( $source ); + while( $file = readdir( $dh ) ) + { + if ( ( $file === '.' ) || + ( $file === '..' ) ) + { + continue; + } + + self::copyRecursive( + $source . '/' . $file, + $destination . '/' . $file, + $depth - 1, $dirMode, $fileMode + ); + } + } + + /** + * Calculates the relative path of the file/directory '$path' to a given + * $base path. + * This method does not touch the filesystem. + * + * @param string $path + * @param string $base + * @return string + */ + static public function calculateRelativePath( $path, $base ) + { + // Sanitize the paths to use the correct directory separator for the platform + $path = strtr( $path, '\\/', DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR ); + $base = strtr( $base, '\\/', DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR ); + + $base = explode( DIRECTORY_SEPARATOR, $base ); + $path = explode( DIRECTORY_SEPARATOR, $path ); + + $result = ''; + + $pathPart = array_shift( $path ); + $basePart = array_shift( $base ); + while ( $pathPart == $basePart ) + { + $pathPart = array_shift( $path ); + $basePart = array_shift( $base ); + } + + if ( $pathPart != null ) + { + array_unshift( $path, $pathPart ); + } + if ( $basePart != null ) + { + array_unshift( $base, $basePart ); + } + + $result = str_repeat( '..' . DIRECTORY_SEPARATOR, count( $base ) ); + $result .= join( DIRECTORY_SEPARATOR, $path ); + + return $result; + } + + /** + * Returns whether the passed $path is an absolute path, giving the current $os. + * + * With the $os parameter you can tell this function to use the semantics + * for a different operating system to determine whether a path is + * absolute. The $os argument defaults to the OS that the script is running + * on. + * + * @param string $path + * @param string $os + * @return bool + */ + public static function isAbsolutePath( $path, $os = null ) + { + if ( $os === null ) + { + $os = ezcBaseFeatures::os(); + } + + switch ( $os ) + { + case 'Windows': + // Sanitize the paths to use the correct directory separator for the platform + $path = strtr( $path, '\\/', '\\\\' ); + + // Absolute paths with drive letter: X:\ + if ( preg_match( '@^[A-Z]:\\\\@i', $path ) ) + { + return true; + } + + // Absolute paths with network paths: \\server\share\ + if ( preg_match( '@^\\\\\\\\[A-Z]+\\\\[^\\\\]@i', $path ) ) + { + return true; + } + break; + case 'Mac': + case 'Linux': + case 'FreeBSD': + default: + // Sanitize the paths to use the correct directory separator for the platform + $path = strtr( $path, '\\/', '//' ); + + if ( $path[0] == '/' ) + { + return true; + } + } + return false; + } +} +?> diff --git a/include/ezcomponents/Base/src/init.php b/include/ezcomponents/Base/src/init.php new file mode 100644 index 000000000..805ca947c --- /dev/null +++ b/include/ezcomponents/Base/src/init.php @@ -0,0 +1,125 @@ + + * + * + * + * You will also need to configure which callback class to call. This you do + * with the ezcBaseInit::setCallback() method. The following examples sets the + * callback classname for the configuration identifier + * 'ezcInitConfigurationManager' to 'cfgConfigurationManager': + * + * + * + * + * + * The class 'cfgConfigurationManager' is required to implement the + * ezcBaseConfigurationInitializer interface, which defines only one method: + * configureObject(). An example on how to implement such a class could be: + * + * + * init( 'ezcConfigurationIniReader', 'settings', array( 'useComments' => true ) ); + * } + * } + * ?> + * + * + * Of course the implementation of this callback class is up to the application + * developer that uses the component (in this example the Configuration + * component's class ezcConfigurationManager). + * + * @package Base + * @version 1.5 + */ +class ezcBaseInit +{ + /** + * Contains the callback where the identifier is the key of the array, and the classname to callback to the value. + * + * @var array(string=>string) + */ + static private $callbackMap = array(); + + /** + * Adds the classname $callbackClassname as callback for the identifier $identifier. + * + * @param string $identifier + * @param string $callbackClassname + */ + public static function setCallback( $identifier, $callbackClassname ) + { + if ( array_key_exists( $identifier, self::$callbackMap ) ) + { + throw new ezcBaseInitCallbackConfiguredException( $identifier, self::$callbackMap[$identifier] ); + } + else + { + // Check if the passed classname actually exists + if ( !ezcBaseFeatures::classExists( $callbackClassname, true ) ) + { + throw new ezcBaseInitInvalidCallbackClassException( $callbackClassname ); + } + + // Check if the passed classname actually implements the interface. + if ( !in_array( 'ezcBaseConfigurationInitializer', class_implements( $callbackClassname ) ) ) + { + throw new ezcBaseInitInvalidCallbackClassException( $callbackClassname ); + } + + self::$callbackMap[$identifier] = $callbackClassname; + } + } + + /** + * Uses the configured callback belonging to $identifier to configure the $object. + * + * The method will return the return value of the callback method, or null + * in case there was no callback set for the specified $identifier. + * + * @param string $identifier + * @param object $object + * @return mixed + */ + public static function fetchConfig( $identifier, $object ) + { + if ( isset( self::$callbackMap[$identifier] ) ) + { + $callbackClassname = self::$callbackMap[$identifier]; + return call_user_func( array( $callbackClassname, 'configureObject' ), $object ); + } + return null; + } +} +?> diff --git a/include/ezcomponents/Base/src/interfaces/configuration_initializer.php b/include/ezcomponents/Base/src/interfaces/configuration_initializer.php new file mode 100644 index 000000000..e7d5d13d7 --- /dev/null +++ b/include/ezcomponents/Base/src/interfaces/configuration_initializer.php @@ -0,0 +1,30 @@ + diff --git a/include/ezcomponents/Base/src/interfaces/persistable.php b/include/ezcomponents/Base/src/interfaces/persistable.php new file mode 100644 index 000000000..b46c04e73 --- /dev/null +++ b/include/ezcomponents/Base/src/interfaces/persistable.php @@ -0,0 +1,40 @@ +mixed) + */ + public function getState(); + + /** + * Accepts an array containing data for one or more of the class' properties. + * + * @param array $properties + */ + public function setState( array $properties ); +} +?> diff --git a/include/ezcomponents/Base/src/options.php b/include/ezcomponents/Base/src/options.php new file mode 100644 index 000000000..baeda2da1 --- /dev/null +++ b/include/ezcomponents/Base/src/options.php @@ -0,0 +1,174 @@ +mixed) + */ + protected $properties; + + /** + * Construct a new options object. + * Options are constructed from an option array by default. The constructor + * automatically passes the given options to the __set() method to set them + * in the class. + * + * @throws ezcBasePropertyNotFoundException + * If trying to access a non existent property. + * @throws ezcBaseValueException + * If the value for a property is out of range. + * @param array(string=>mixed) $options The initial options to set. + */ + public function __construct( array $options = array() ) + { + foreach ( $options as $option => $value ) + { + $this->__set( $option, $value ); + } + } + + /** + * Merge an array into the actual options object. + * This method merges an array of new options into the actual options object. + * + * @throws ezcBasePropertyNotFoundException + * If trying to access a non existent property. + * @throws ezcBaseValueException + * If the value for a property is out of range. + * @param array(string=>mixed) $newOptions The new options. + */ + public function merge( array $newOptions ) + { + foreach ( $newOptions as $key => $value ) + { + $this->__set( $key, $value ); + } + } + + /** + * Property get access. + * Simply returns a given option. + * + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @param string $propertyName The name of the option to get. + * @return mixed The option value. + * @ignore + * + * @throws ezcBasePropertyNotFoundException + * if the given property does not exist. + * @throws ezcBasePropertyPermissionException + * if the property to be set is a write-only property. + */ + public function __get( $propertyName ) + { + if ( $this->__isset( $propertyName ) === true ) + { + return $this->properties[$propertyName]; + } + throw new ezcBasePropertyNotFoundException( $propertyName ); + } + + /** + * Sets an option. + * This method is called when an option is set. + * + * @param string $propertyName The name of the option to set. + * @param mixed $propertyValue The option value. + * @ignore + * + * @throws ezcBasePropertyNotFoundException + * if the given property does not exist. + * @throws ezcBaseValueException + * if the value to be assigned to a property is invalid. + * @throws ezcBasePropertyPermissionException + * if the property to be set is a read-only property. + */ + abstract public function __set( $propertyName, $propertyValue ); + + /** + * Returns if a option exists. + * + * @param string $propertyName Option name to check for. + * @return bool Whether the option exists. + * @ignore + */ + public function __isset( $propertyName ) + { + return array_key_exists( $propertyName, $this->properties ); + } + + /** + * Returns if an option exists. + * Allows isset() using ArrayAccess. + * + * @param string $propertyName The name of the option to get. + * @return bool Whether the option exists. + */ + public function offsetExists( $propertyName ) + { + return $this->__isset( $propertyName ); + } + + /** + * Returns an option value. + * Get an option value by ArrayAccess. + * + * @throws ezcBasePropertyNotFoundException + * If $propertyName is not a key in the $properties array. + * @param string $propertyName The name of the option to get. + * @return mixed The option value. + */ + public function offsetGet( $propertyName ) + { + return $this->__get( $propertyName ); + } + + /** + * Set an option. + * Sets an option using ArrayAccess. + * + * @throws ezcBasePropertyNotFoundException + * If $propertyName is not a key in the $properties array. + * @throws ezcBaseValueException + * If the value for a property is out of range. + * @param string $propertyName The name of the option to set. + * @param mixed $propertyValue The value for the option. + */ + public function offsetSet( $propertyName, $propertyValue ) + { + $this->__set( $propertyName, $propertyValue ); + } + + /** + * Unset an option. + * Unsets an option using ArrayAccess. + * + * @throws ezcBasePropertyNotFoundException + * If $propertyName is not a key in the $properties array. + * @throws ezcBaseValueException + * If a the value for a property is out of range. + * @param string $propertyName The name of the option to unset. + */ + public function offsetUnset( $propertyName ) + { + $this->__set( $propertyName, null ); + } +} +?> diff --git a/include/ezcomponents/Base/src/options/autoload.php b/include/ezcomponents/Base/src/options/autoload.php new file mode 100644 index 000000000..e6faec3f8 --- /dev/null +++ b/include/ezcomponents/Base/src/options/autoload.php @@ -0,0 +1,75 @@ +mixed) $options + */ + public function __construct( array $options = array() ) + { + $this->preload = false; + $this->debug = false; + + parent::__construct( $options ); + } + + /** + * Sets the option $name to $value. + * + * @throws ezcBasePropertyNotFoundException + * if the property $name is not defined + * @throws ezcBaseValueException + * if $value is not correct for the property $name + * @param string $name + * @param mixed $value + * @ignore + */ + public function __set( $name, $value ) + { + switch ( $name ) + { + case 'debug': + case 'preload': + if ( !is_bool( $value ) ) + { + throw new ezcBaseValueException( $name, $value, 'bool' ); + } + $this->properties[$name] = $value; + break; + + default: + throw new ezcBasePropertyNotFoundException( $name ); + } + } +} +?> diff --git a/include/ezcomponents/Base/src/struct.php b/include/ezcomponents/Base/src/struct.php new file mode 100644 index 000000000..5a36a1ee9 --- /dev/null +++ b/include/ezcomponents/Base/src/struct.php @@ -0,0 +1,42 @@ + diff --git a/include/ezcomponents/Base/src/structs/repository_directory.php b/include/ezcomponents/Base/src/structs/repository_directory.php new file mode 100644 index 000000000..fdcf0622a --- /dev/null +++ b/include/ezcomponents/Base/src/structs/repository_directory.php @@ -0,0 +1,83 @@ +type = $type; + $this->basePath = $basePath; + $this->autoloadPath = $autoloadPath; + } + + /** + * Returns a new instance of this class with the data specified by $array. + * + * $array contains all the data members of this class in the form: + * array('member_name'=>value). + * + * __set_state makes this class exportable with var_export. + * var_export() generates code, that calls this method when it + * is parsed with PHP. + * + * @param array(string=>mixed) $array + * @return ezcBaseRepositoryDirectory + */ + static public function __set_state( array $array ) + { + return new ezcBaseRepositoryDirectory( $array['type'], $array['basePath'], $array['autoloadPath'] ); + } +} +?> diff --git a/include/ezcomponents/Base/tests/base_init_test.php b/include/ezcomponents/Base/tests/base_init_test.php new file mode 100644 index 000000000..7a6298e79 --- /dev/null +++ b/include/ezcomponents/Base/tests/base_init_test.php @@ -0,0 +1,81 @@ +fail( "Expected exception not thrown." ); + } + catch ( ezcBaseInitInvalidCallbackClassException $e ) + { + $this->assertEquals( "Class 'classDoesNotExist' does not exist, or does not implement the 'ezcBaseConfigurationInitializer' interface.", $e->getMessage() ); + } + } + + public function testCallbackWithClassThatDoesNotImplementTheInterface() + { + try + { + ezcBaseInit::setCallback( 'testBaseInit', 'ezcBaseFeatures' ); + $this->fail( "Expected exception not thrown." ); + } + catch ( ezcBaseInitInvalidCallbackClassException $e ) + { + $this->assertEquals( "Class 'ezcBaseFeatures' does not exist, or does not implement the 'ezcBaseConfigurationInitializer' interface.", $e->getMessage() ); + } + } + + public function testCallback1() + { + $obj = testBaseInitClass::getInstance(); + $this->assertEquals( false, $obj->configured ); + } + + public function testCallback2() + { + ezcBaseInit::setCallback( 'testBaseInit', 'testBaseInitCallback' ); + $obj = testBaseInitClass::getInstance(); + $this->assertEquals( true, $obj->configured ); + } + + public function testCallback3() + { + try + { + ezcBaseInit::setCallback( 'testBaseInit', 'testBaseInitCallback' ); + $this->fail( "Expected exception not thrown." ); + } + catch ( ezcBaseInitCallbackConfiguredException $e ) + { + $this->assertEquals( "The 'testBaseInit' is already configured with callback class 'testBaseInitCallback'.", $e->getMessage() ); + } + } + + public static function suite() + { + return new PHPUnit_Framework_TestSuite("ezcBaseInitTest"); + } +} +?> diff --git a/include/ezcomponents/Base/tests/base_options_test.php b/include/ezcomponents/Base/tests/base_options_test.php new file mode 100644 index 000000000..9edb30caa --- /dev/null +++ b/include/ezcomponents/Base/tests/base_options_test.php @@ -0,0 +1,129 @@ +properties; + } + catch ( ezcBasePropertyNotFoundException $e ) + { + return; + } + $this->fail( "ezcBasePropertyNotFoundException not thrown on access to forbidden property \$properties" ); + } + + public function testGetOffsetAccessFailure() + { + $opt = new ezcBaseTestOptions(); + try + { + echo $opt["properties"]; + } + catch ( ezcBasePropertyNotFoundException $e ) + { + return; + } + $this->fail( "ezcBasePropertyNotFoundException not thrown on access to forbidden property \$properties" ); + } + + public function testSetOffsetAccessFailure() + { + $opt = new ezcBaseTestOptions(); + try + { + $opt["properties"] = "foo"; + } + catch ( ezcBasePropertyNotFoundException $e ) + { + return; + } + $this->fail( "ezcBasePropertyNotFoundException not thrown on access to forbidden property \$properties" ); + } + + public function testConstructorWithParameters() + { + $options = new ezcBaseTestOptions( array( 'foo' => 'xxx' ) ); + $this->assertEquals( 'xxx', $options->foo ); + } + + public function testMerge() + { + $options = new ezcBaseTestOptions(); + $this->assertEquals( 'bar', $options->foo ); + $options->merge( array( 'foo' => 'xxx' ) ); + $this->assertEquals( 'xxx', $options->foo ); + } + + public function testOffsetExists() + { + $options = new ezcBaseTestOptions(); + $this->assertEquals( true, $options->offsetExists( 'foo' ) ); + $this->assertEquals( false, $options->offsetExists( 'bar' ) ); + } + + public function testOffsetSet() + { + $options = new ezcBaseTestOptions(); + $this->assertEquals( 'bar', $options->foo ); + $options->offsetSet( 'foo', 'xxx' ); + $this->assertEquals( 'xxx', $options->foo ); + } + + public function testOffsetUnset() + { + $options = new ezcBaseTestOptions(); + $this->assertEquals( 'bar', $options->foo ); + $options->offsetUnset( 'foo' ); + $this->assertEquals( null, $options->foo ); + $this->assertEquals( true, $options->offsetExists( 'foo' ) ); + } + + public function testAutoloadOptions() + { + $options = new ezcBaseAutoloadOptions(); + + try + { + $options->no_such_property = 'value'; + $this->fail( 'Expected exception was not thrown.' ); + } + catch ( ezcBasePropertyNotFoundException $e ) + { + $this->assertEquals( "No such property name 'no_such_property'.", $e->getMessage() ); + } + + try + { + $options->preload = 'wrong value'; + $this->fail( 'Expected exception was not thrown.' ); + } + catch ( ezcBaseValueException $e ) + { + $this->assertEquals( "The value 'wrong value' that you were trying to assign to setting 'preload' is invalid. Allowed values are: bool.", $e->getMessage() ); + } + } +} + +?> diff --git a/include/ezcomponents/Base/tests/base_test.php b/include/ezcomponents/Base/tests/base_test.php new file mode 100644 index 000000000..fdb3c738d --- /dev/null +++ b/include/ezcomponents/Base/tests/base_test.php @@ -0,0 +1,497 @@ +assertEquals( "The setting 'broken' is not a valid configuration setting.", $e->getMessage() ); + } + } + + public function testConfigExceptionOutOfRange1() + { + try + { + throw new ezcBaseSettingValueException( 'broken', 42 ); + } + catch ( ezcBaseSettingValueException $e ) + { + $this->assertEquals( "The value '42' that you were trying to assign to setting 'broken' is invalid.", $e->getMessage() ); + } + } + + public function testConfigExceptionOutOfRange2() + { + try + { + throw new ezcBaseSettingValueException( 'broken', 42, "int, 40 - 48" ); + } + catch ( ezcBaseSettingValueException $e ) + { + $this->assertEquals( "The value '42' that you were trying to assign to setting 'broken' is invalid. Allowed values are: int, 40 - 48", $e->getMessage() ); + } + } + + public function testConfigExceptionOutOfRange3() + { + try + { + throw new ezcBaseSettingValueException( 'broken', array(1, 1, 3, 4, 5), 'int' ); + } + catch ( ezcBaseSettingValueException $e ) + { + $this->assertEquals( "The value 'a:5:{i:0;i:1;i:1;i:1;i:2;i:3;i:3;i:4;i:4;i:5;}' that you were trying to assign to setting 'broken' is invalid. Allowed values are: int", $e->getMessage() ); + } + } + + public function testFileIoException1() + { + try + { + throw new ezcBaseFileIoException( 'testfile.php', ezcBaseFileException::READ ); + } + catch ( ezcBaseFileIoException $e ) + { + $this->assertEquals( "An error occurred while reading from 'testfile.php'.", $e->getMessage() ); + } + } + + public function testFileIoException2() + { + try + { + throw new ezcBaseFileIoException( 'testfile.php', ezcBaseFileException::WRITE ); + } + catch ( ezcBaseFileIoException $e ) + { + $this->assertEquals( "An error occurred while writing to 'testfile.php'.", $e->getMessage() ); + } + } + + public function testFileIoException3() + { + try + { + throw new ezcBaseFileIoException( 'testfile.php', ezcBaseFileException::WRITE, "Extra extra" ); + } + catch ( ezcBaseFileIoException $e ) + { + $this->assertEquals( "An error occurred while writing to 'testfile.php'. (Extra extra)", $e->getMessage() ); + } + } + + public function testFileNotFoundException1() + { + try + { + throw new ezcBaseFileNotFoundException( 'testfile.php' ); + } + catch ( ezcBaseFileNotFoundException $e ) + { + $this->assertEquals( "The file 'testfile.php' could not be found.", $e->getMessage() ); + } + } + + public function testFileNotFoundException2() + { + try + { + throw new ezcBaseFileNotFoundException( 'testfile.php', 'INI' ); + } + catch ( ezcBaseFileNotFoundException $e ) + { + $this->assertEquals( "The INI file 'testfile.php' could not be found.", $e->getMessage() ); + } + } + + public function testFileNotFoundException3() + { + try + { + throw new ezcBaseFileNotFoundException( 'testfile.php', 'INI', "Extra extra" ); + } + catch ( ezcBaseFileNotFoundException $e ) + { + $this->assertEquals( "The INI file 'testfile.php' could not be found. (Extra extra)", $e->getMessage() ); + } + } + + public function testFilePermissionException1() + { + try + { + throw new ezcBaseFilePermissionException( 'testfile.php', ezcBaseFileException::READ ); + } + catch ( ezcBaseFilePermissionException $e ) + { + $this->assertEquals( "The file 'testfile.php' can not be opened for reading.", $e->getMessage() ); + } + } + + public function testFilePermissionException2() + { + try + { + throw new ezcBaseFilePermissionException( 'testfile.php', ezcBaseFileException::WRITE ); + } + catch ( ezcBaseFileException $e ) + { + $this->assertEquals( "The file 'testfile.php' can not be opened for writing.", $e->getMessage() ); + } + } + + public function testFilePermissionException3() + { + try + { + throw new ezcBaseFilePermissionException( 'testfile.php', ezcBaseFileException::EXECUTE ); + } + catch ( ezcBaseException $e ) + { + $this->assertEquals( "The file 'testfile.php' can not be executed.", $e->getMessage() ); + } + } + + public function testFilePermissionException4() + { + try + { + throw new ezcBaseFilePermissionException( 'testfile.php', ezcBaseFilePermissionException::CHANGE, "Extra extra" ); + } + catch ( ezcBaseException $e ) + { + $this->assertEquals( "The permissions for 'testfile.php' can not be changed. (Extra extra)", $e->getMessage() ); + } + } + + public function testFilePermissionException5() + { + try + { + throw new ezcBaseFilePermissionException( 'testfile.php', ezcBaseFilePermissionException::READ | ezcBaseFilePermissionException::WRITE, "Extra extra" ); + } + catch ( ezcBaseException $e ) + { + $this->assertEquals( "The file 'testfile.php' can not be opened for reading and writing. (Extra extra)", $e->getMessage() ); + } + } + + public function testFilePermissionException6() + { + try + { + throw new ezcBaseFilePermissionException( 'testfile.php', ezcBaseFilePermissionException::REMOVE, "Extra extra" ); + } + catch ( ezcBaseException $e ) + { + $this->assertEquals( "The file 'testfile.php' can not be removed. (Extra extra)", $e->getMessage() ); + } + } + + public function testPropertyNotFoundException() + { + try + { + throw new ezcBasePropertyNotFoundException( 'broken' ); + } + catch ( ezcBasePropertyNotFoundException $e ) + { + $this->assertEquals( "No such property name 'broken'.", $e->getMessage() ); + } + } + + public function testPropertyPermissionException1() + { + try + { + throw new ezcBasePropertyPermissionException( 'broken', ezcBasePropertyPermissionException::READ ); + } + catch ( ezcBaseException $e ) + { + $this->assertEquals( "The property 'broken' is read-only.", $e->getMessage() ); + } + } + + public function testPropertyPermissionException2() + { + try + { + throw new ezcBasePropertyPermissionException( 'broken', ezcBasePropertyPermissionException::WRITE ); + } + catch ( ezcBaseException $e ) + { + $this->assertEquals( "The property 'broken' is write-only.", $e->getMessage() ); + } + } + + public function testBaseValue1() + { + try + { + throw new ezcBaseValueException( 'broken', array( 42 ) ); + } + catch ( ezcBaseValueException $e ) + { + $this->assertEquals( "The value 'a:1:{i:0;i:42;}' that you were trying to assign to setting 'broken' is invalid.", $e->getMessage() ); + } + } + + public function testBaseValue2() + { + try + { + throw new ezcBaseValueException( 'broken', "string", "strings" ); + } + catch ( ezcBaseValueException $e ) + { + $this->assertEquals( "The value 'string' that you were trying to assign to setting 'broken' is invalid. Allowed values are: strings.", $e->getMessage() ); + $this->assertEquals( "The value 'string' that you were trying to assign to setting 'broken' is invalid. Allowed values are: strings.", $e->originalMessage ); + } + } + + public function testExtraDirNotFoundException() + { + try + { + ezcBase::addClassRepository( 'wrongDir' ); + } + catch ( ezcBaseFileNotFoundException $e ) + { + $this->assertEquals( "The base directory file 'wrongDir' could not be found.", $e->getMessage() ); + } + } + + public function testExtraDirBaseNotFoundException() + { + try + { + ezcBase::addClassRepository( '.', './wrongAutoloadDir' ); + } + catch ( ezcBaseFileNotFoundException $e ) + { + $this->assertEquals( "The autoload directory file './wrongAutoloadDir' could not be found.", $e->getMessage() ); + } + } + + public function testBaseAddAndGetAutoloadDirs1() + { + ezcBase::addClassRepository( '.' ); + $resultArray = ezcBase::getRepositoryDirectories(); + + if ( count( $resultArray ) != 2 ) + { + $this->fail( "Duplicating or missing extra autoload dirs while adding." ); + } + + if ( !isset( $resultArray['ezc'] ) ) + { + $this->fail( "No packageDir found in result of getRepositoryDirectories()" ); + } + + if ( !isset( $resultArray[0] ) || $resultArray[0]->basePath != getcwd() ) + { + $this->fail( "Extra base dir '{$resultArray[0]->basePath}' is added incorrectly" ); + } + + if ( !isset( $resultArray[0] ) || $resultArray[0]->autoloadPath != getcwd() . '/autoload' ) + { + $this->fail( "Extra autoload dir '{$resultArray[0]->autoloadPath}' is added incorrectly" ); + } + } + + // this test is sorta obsolete, but we keep it around for good measure + public function testBaseAddAndGetAutoloadDirs2() + { + ezcBase::addClassRepository( '.', './autoload' ); + ezcBase::addClassRepository( './Base/tests/test_repository', './Base/tests/test_repository/autoload_files' ); + ezcBase::addClassRepository( './Base/tests/test_repository', './Base/tests/test_repository/autoload_files' ); + $resultArray = ezcBase::getRepositoryDirectories(); + + if ( count( $resultArray ) != 5 ) + { + $this->fail( "Duplicating or missing extra autoload dirs while adding." ); + } + + if ( !isset( $resultArray['ezc'] ) ) + { + $this->fail( "No packageDir found in result of getRepositoryDirectories()" ); + } + + if ( !isset( $resultArray[2] ) || $resultArray[2]->autoloadPath != getcwd() . '/Base/tests/test_repository/autoload_files' ) + { + $this->fail( "Extra autoload dir '{$resultArray[2]->autoloadPath}' is added incorrectly" ); + } + + self::assertEquals( true, class_exists( 'trBasetestClass', true ) ); + self::assertEquals( true, class_exists( 'trBasetestClass2', true ) ); + + try + { + self::assertEquals( false, class_exists( 'trBasetestClass3', true ) ); + self::fail( 'The expected exception was not thrown.' ); + } + catch ( ezcBaseAutoloadException $e ) + { + $cwd = getcwd(); + self::assertEquals( "Could not find a class to file mapping for 'trBasetestClass3'. Searched for basetest_class3_autoload.php, basetest_autoload.php, autoload.php in: $cwd/autoload, $cwd/autoload, $cwd/autoload, $cwd/Base/tests/test_repository/autoload_files, $cwd/Base/tests/test_repository/autoload_files", $e->getMessage() ); + } + + self::assertEquals( true, class_exists( 'trBasetestLongClass', true ) ); + + try + { + class_exists( 'trBasetestClass4', true ); + self::fail( 'The expected exception was not thrown.' ); + } + catch ( ezcBaseFileNotFoundException $e ) + { + self::assertEquals( "The file './Base/tests/test_repository/TestClasses/base_test_class_number_four.php' could not be found.", $e->getMessage() ); + } + } + + public function testBaseAddAndGetAutoloadDirs3() + { + ezcBase::addClassRepository( './Base/tests/extra_repository', null, 'ext' ); + + $resultArray = ezcBase::getRepositoryDirectories(); + self::assertEquals( true, array_key_exists( 'ezc', $resultArray ) ); + self::assertEquals( true, array_key_exists( 'ext', $resultArray ) ); + + self::assertEquals( true, class_exists( 'extTranslationTest', true ) ); + self::assertEquals( true, class_exists( 'ezcTranslationTsBackend', true ) ); + } + + public function testBaseAddAndGetAutoloadDirs4() + { + ezcBase::addClassRepository( './Base/tests/test_repository', './Base/tests/test_repository/autoload_files', 'tr' ); + + try + { + ezcBase::addClassRepository( './Base/tests/test_repository', './Base/tests/test_repository/autoload_files', 'tr' ); + } + catch ( ezcBaseDoubleClassRepositoryPrefixException $e ) + { + self::assertEquals( "The class repository in './Base/tests/test_repository' (with autoload dir './Base/tests/test_repository/autoload_files') can not be added because another class repository already uses the prefix 'tr'.", $e->getMessage() ); + } + + $resultArray = ezcBase::getRepositoryDirectories(); + self::assertEquals( 7, count( $resultArray ) ); + + self::assertEquals( true, array_key_exists( 'ezc', $resultArray ) ); + self::assertEquals( true, array_key_exists( 'tr', $resultArray ) ); + + self::assertEquals( getcwd() . '/Base/tests/test_repository', $resultArray['tr']->basePath ); + self::assertEquals( getcwd() . '/Base/tests/test_repository/autoload_files', $resultArray['tr']->autoloadPath ); + } + + public function testNoPrefixAutoload() + { + ezcBase::addClassRepository( './Base/tests/test_repository', './Base/tests/test_repository/autoload_files' ); + __autoload( 'Object' ); + if ( !class_exists( 'Object' ) ) + { + $this->fail( "Autoload does not handle classes with no prefix" ); + } + } + + public function testCheckDependencyExtension() + { + ezcBase::checkDependency( 'Tester', ezcBase::DEP_PHP_EXTENSION, 'standard' ); + } + + public function testCheckDependencyVersion() + { + ezcBase::checkDependency( 'Tester', ezcBase::DEP_PHP_VERSION, '5.1.1' ); + } + + public function testInvalidClass() + { + try + { + self::assertEquals( false, class_exists( 'ezcNoSuchClass', true ) ); + self::fail( 'The expected exception was not thrown.' ); + } + catch ( ezcBaseAutoloadException $e ) + { + $cwd = getcwd(); + self::assertEquals( "Could not find a class to file mapping for 'ezcNoSuchClass'. Searched for no_such_autoload.php, no_autoload.php, autoload.php in: $cwd/autoload, $cwd/autoload, $cwd/autoload, $cwd/Base/tests/test_repository/autoload_files, $cwd/Base/tests/test_repository/autoload_files, $cwd/Base/tests/extra_repository/autoload, $cwd/Base/tests/test_repository/autoload_files, $cwd/Base/tests/test_repository/autoload_files", $e->getMessage() ); + } + } + + public function testDebug() + { + try + { + class_exists( 'ezcTestingOne' ); + self::fail( "There should have been an exception" ); + } + catch ( ezcBaseAutoloadException $e ) + { + } + } + + public function testNoDebug() + { + try + { + $options = new ezcBaseAutoloadOptions; + $options->debug = false; + ezcBase::setOptions( $options ); + + class_exists( 'ezcTestingOne' ); + } + catch ( Exception $e ) + { + self::fail( "There should not have been an exception" ); + } + } + + public function testGetInstallationPath() + { + $path = ezcBase::getInstallationPath(); + $pathParts = explode( DIRECTORY_SEPARATOR, $path ); + self::assertEquals( array( 'trunk', '' ), array_splice( $pathParts, -2 ) ); + self::assertEquals( DIRECTORY_SEPARATOR, substr( $path, -1 ) ); + } + + public function setup() + { + $options = new ezcBaseAutoloadOptions; + $options->debug = true; + ezcBase::setOptions( $options ); + } + + public function teardown() + { + $options = new ezcBaseAutoloadOptions; + $options->debug = true; + ezcBase::setOptions( $options ); + } + + public static function suite() + { + return new PHPUnit_Framework_TestSuite("ezcBaseTest"); + } +} +?> diff --git a/include/ezcomponents/Base/tests/extra_repository/Translation/test.php b/include/ezcomponents/Base/tests/extra_repository/Translation/test.php new file mode 100644 index 000000000..a953fc188 --- /dev/null +++ b/include/ezcomponents/Base/tests/extra_repository/Translation/test.php @@ -0,0 +1,5 @@ + diff --git a/include/ezcomponents/Base/tests/extra_repository/autoload/translation_autoload.php b/include/ezcomponents/Base/tests/extra_repository/autoload/translation_autoload.php new file mode 100644 index 000000000..8ad317c98 --- /dev/null +++ b/include/ezcomponents/Base/tests/extra_repository/autoload/translation_autoload.php @@ -0,0 +1,5 @@ + 'Translation/test.php', +); +?> diff --git a/include/ezcomponents/Base/tests/features_test.php b/include/ezcomponents/Base/tests/features_test.php new file mode 100644 index 000000000..8d4e51a9d --- /dev/null +++ b/include/ezcomponents/Base/tests/features_test.php @@ -0,0 +1,145 @@ +markTestSkipped( 'Unix tests' ); + } + } + + public function testSupportsLink() + { + $this->assertEquals( true, ezcBaseFeatures::supportsLink() ); + } + + public function testSupportsSymLink() + { + $this->assertEquals( true, ezcBaseFeatures::supportsSymLink() ); + } + + public function testSupportsUserId() + { + $this->assertEquals( true, ezcBaseFeatures::supportsUserId() ); + } + +/* // Need to find a way to make this test work, as setting global enviroment variables + // is not working (putenv( "PATH=" ) doesn't unset $_ENV["PATH"]) + // One solution would be to use in the ezcBaseFeatures::getPath(): + // getenv( 'PATH' ) instead of $_ENV['PATH'] (but that won't work under IIS). + public function testHasImageIdentifyNoPath() + { + $envPath = getenv( 'PATH' ); + putenv( "PATH=" ); + $this->assertEquals( false, ezcBaseFeatures::hasImageIdentify() ); + putenv( "PATH={$envPath}" ); + } +*/ + + public function testHasImageConvert() + { + $this->assertEquals( true, ezcBaseFeatures::hasImageConvert() ); + } + + public function testGetImageConvertExecutable() + { + $this->assertEquals( '/usr/bin/convert', ezcBaseFeatures::getImageConvertExecutable() ); + } + + public function testGetImageIdentifyExecutable() + { + $this->assertEquals( '/usr/bin/identify', ezcBaseFeatures::getImageIdentifyExecutable() ); + } + + public function testHasImageIdentify() + { + $this->assertEquals( true, ezcBaseFeatures::hasImageIdentify() ); + } + + public function testHasExtensionSupport1() + { + $this->assertEquals( true, ezcBaseFeatures::hasExtensionSupport( 'standard' ) ); + } + + public function testHasExtensionSupportNotFound1() + { + $this->assertEquals( false, ezcBaseFeatures::hasExtensionSupport( 'non_existent_extension' ) ); + try + { + throw new ezcBaseExtensionNotFoundException( 'non_existent_extension', null, 'This is just a test.' ); + } + catch ( ezcBaseExtensionNotFoundException $e ) + { + $this->assertEquals( "The extension 'non_existent_extension' could not be found. This is just a test.", + $e->getMessage() ); + } + } + + public function testHasExtensionSupportNotFound2() + { + $this->assertEquals( false, ezcBaseFeatures::hasExtensionSupport( 'non_existent_extension' ) ); + try + { + throw new ezcBaseExtensionNotFoundException( 'non_existent_extension', '1.2', 'This is just a test.' ); + } + catch ( ezcBaseExtensionNotFoundException $e ) + { + $this->assertEquals( "The extension 'non_existent_extension' with version '1.2' could not be found. This is just a test.", + $e->getMessage() ); + } + } + + public function testHasFunction1() + { + $this->assertEquals( true, ezcBaseFeatures::hasFunction( 'function_exists' ) ); + } + + public function testHasFunction2() + { + $this->assertEquals( false, ezcBaseFeatures::hasFunction( 'non_existent_function_in_php' ) ); + } + + public function testHasExtensionSupport2() + { + $this->assertEquals( true, ezcBaseFeatures::hasExtensionSupport( 'date', '5.1.0' ) ); + } + + public function testClassExists() + { + $this->assertEquals( true, ezcBaseFeatures::classExists( 'Exception', false ) ); + } + + public function testClassExistsAutoload() + { + $this->assertEquals( true, ezcBaseFeatures::classExists( 'ezcBaseFeatures' ) ); + } + + public function testClassExistsNotFound() + { + $this->assertEquals( false, ezcBaseFeatures::classExists( 'ezcBaseNonExistingClass', false ) ); + } + + public function testClassExistsNotFoundAutoload() + { + $this->assertEquals( false, ezcBaseFeatures::classExists( 'ezcBaseNonExistingClass' ) ); + } + + public static function suite() + { + return new PHPUnit_Framework_TestSuite("ezcBaseFeaturesTest"); + } +} +?> diff --git a/include/ezcomponents/Base/tests/file_calculate_relative_path_test.php b/include/ezcomponents/Base/tests/file_calculate_relative_path_test.php new file mode 100644 index 000000000..dff495fd4 --- /dev/null +++ b/include/ezcomponents/Base/tests/file_calculate_relative_path_test.php @@ -0,0 +1,67 @@ + diff --git a/include/ezcomponents/Base/tests/file_copy_recursive_test.php b/include/ezcomponents/Base/tests/file_copy_recursive_test.php new file mode 100644 index 000000000..095cc8c01 --- /dev/null +++ b/include/ezcomponents/Base/tests/file_copy_recursive_test.php @@ -0,0 +1,234 @@ +tempDir = $this->createTempDir( __CLASS__ ); + mkdir( $this->tempDir . '/dir1' ); + mkdir( $this->tempDir . '/dir2' ); + mkdir( $this->tempDir . '/dir2/dir1' ); + mkdir( $this->tempDir . '/dir2/dir1/dir1' ); + mkdir( $this->tempDir . '/dir2/dir2' ); + mkdir( $this->tempDir . '/dir4' ); + mkdir( $this->tempDir . '/dir5' ); + mkdir( $this->tempDir . '/dir6' ); + file_put_contents( $this->tempDir . '/dir1/file1.txt', 'test' ); + file_put_contents( $this->tempDir . '/dir1/file2.txt', 'test' ); + file_put_contents( $this->tempDir . '/dir1/.file3.txt', 'test' ); + file_put_contents( $this->tempDir . '/dir2/file1.txt', 'test' ); + file_put_contents( $this->tempDir . '/dir2/dir1/file1.txt', 'test' ); + file_put_contents( $this->tempDir . '/dir2/dir1/dir1/file1.txt', 'test' ); + file_put_contents( $this->tempDir . '/dir2/dir1/dir1/file2.txt', 'test' ); + file_put_contents( $this->tempDir . '/dir2/dir2/file1.txt', 'test' ); + file_put_contents( $this->tempDir . '/dir4/file1.txt', 'test' ); + file_put_contents( $this->tempDir . '/dir4/file2.txt', 'test' ); + file_put_contents( $this->tempDir . '/dir5/file1.txt', 'test' ); + file_put_contents( $this->tempDir . '/dir5/file2.txt', 'test' ); + file_put_contents( $this->tempDir . '/dir6/file1.txt', 'test' ); + file_put_contents( $this->tempDir . '/dir6/file2.txt', 'test' ); + chmod( $this->tempDir . '/dir4/file1.txt', 0 ); + chmod( $this->tempDir . '/dir5', 0 ); + chmod( $this->tempDir . '/dir6', 0400 ); + } + + protected function tearDown() + { + chmod( $this->tempDir . '/dir5', 0700 ); + chmod( $this->tempDir . '/dir6', 0700 ); + $this->removeTempDir(); + } + + public function testRecursiveCopyEmptyDir() + { + ezcBaseFile::copyRecursive( + $this->tempDir . '/dir1', + $this->tempDir . '/dest' + ); + + $this->assertEquals( + count( ezcBaseFile::findRecursive( $this->tempDir . '/dir1' ) ), + count( ezcBaseFile::findRecursive( $this->tempDir . '/dest' ) ) + ); + + $this->assertSame( + 0775, + fileperms( $this->tempDir . '/dest' ) & 0777, + 'Directory mode should equal 0775.' + ); + } + + public function testRecursiveCopyFile() + { + ezcBaseFile::copyRecursive( + $this->tempDir . '/dir1/file1.txt', + $this->tempDir . '/dest' + ); + + $this->assertTrue( + is_file( $this->tempDir . '/dest' ) + ); + + $this->assertSame( + 0664, + fileperms( $this->tempDir . '/dest' ) & 0777, + 'File mode should equal 0664.' + ); + } + + public function testRecursiveCopyEmptyDirMode() + { + ezcBaseFile::copyRecursive( + $this->tempDir . '/dir1', + $this->tempDir . '/dest', + -1, + 0777, + 0777 + ); + + $this->assertEquals( + count( ezcBaseFile::findRecursive( $this->tempDir . '/dir1' ) ), + count( ezcBaseFile::findRecursive( $this->tempDir . '/dest' ) ) + ); + + $this->assertSame( + 0777, + fileperms( $this->tempDir . '/dest' ) & 0777, + 'Directory mode should equal 0777.' + ); + } + + public function testRecursiveCopyFileMode() + { + ezcBaseFile::copyRecursive( + $this->tempDir . '/dir1/file1.txt', + $this->tempDir . '/dest', + -1, + 0777, + 0777 + ); + + $this->assertTrue( + is_file( $this->tempDir . '/dest' ) + ); + + $this->assertSame( + 0777, + fileperms( $this->tempDir . '/dest' ) & 0777, + 'File mode should equal 0777.' + ); + } + + public function testRecursiveCopyFullDir() + { + ezcBaseFile::copyRecursive( + $this->tempDir . '/dir2', + $this->tempDir . '/dest' + ); + + $this->assertEquals( + count( ezcBaseFile::findRecursive( $this->tempDir . '/dir2' ) ), + count( ezcBaseFile::findRecursive( $this->tempDir . '/dest' ) ) + ); + } + + public function testRecursiveCopyFullDirDepthZero() + { + ezcBaseFile::copyRecursive( + $this->tempDir . '/dir2', + $this->tempDir . '/dest', + 0 + ); + + $this->assertEquals( + 0, + count( ezcBaseFile::findRecursive( $this->tempDir . '/dest' ) ) + ); + + $this->assertTrue( + is_dir( $this->tempDir . '/dest' ) + ); + } + + public function testRecursiveCopyFullDirLimitedDepth() + { + ezcBaseFile::copyRecursive( + $this->tempDir . '/dir2', + $this->tempDir . '/dest', + 2 + ); + + $this->assertEquals( + 3, + count( ezcBaseFile::findRecursive( $this->tempDir . '/dest' ) ) + ); + } + + public function testRecursiveCopyFailureNotExisting() + { + try + { + ezcBaseFile::copyRecursive( + $this->tempDir . '/not_existing', + $this->tempDir . '/dest' + ); + } + catch ( ezcBaseFileNotFoundException $e ) + { + return; + } + + $this->fail( 'Expected ezcBaseFileNotFoundException.' ); + } + + public function testRecursiveCopyFailureNotReadable() + { + ezcBaseFile::copyRecursive( + $this->tempDir . '/dir5', + $this->tempDir . '/dest' + ); + + $this->assertFalse( + is_dir( $this->tempDir . '/dest' ) + ); + + $this->assertFalse( + is_file( $this->tempDir . '/dest' ) + ); + } + + public function testRecursiveCopyFailureNotWriteable() + { + try + { + ezcBaseFile::copyRecursive( + $this->tempDir . '/dir2', + $this->tempDir . '/dir4' + ); + } + catch ( ezcBaseFilePermissionException $e ) + { + return; + } + + $this->fail( 'Expected ezcBaseFilePermissionException.' ); + } + + public static function suite() + { + return new PHPUnit_Framework_TestSuite( __CLASS__ ); + } +} +?> diff --git a/include/ezcomponents/Base/tests/file_find_recursive_test.php b/include/ezcomponents/Base/tests/file_find_recursive_test.php new file mode 100644 index 000000000..82b2adedd --- /dev/null +++ b/include/ezcomponents/Base/tests/file_find_recursive_test.php @@ -0,0 +1,142 @@ + 'File/CREDITS', + 1 => 'File/ChangeLog', + 2 => 'File/DESCRIPTION', + 3 => 'File/design/class_diagram.png', + 4 => 'File/design/design.txt', + 5 => 'File/design/file.xml', + 6 => 'File/design/file_operations.png', + 7 => 'File/design/md5.png', + 8 => 'File/design/requirements.txt', + 9 => 'File/src/file.php', + 10 => 'File/src/file_autoload.php', + 11 => 'File/tests/file_calculate_relative_path_test.php', + 12 => 'File/tests/file_find_recursive_test.php', + 13 => 'File/tests/file_remove_recursive_test.php', + 14 => 'File/tests/suite.php', + ); + self::assertEquals( $expected, ezcBaseFile::findRecursive( "File", array(), array( '@/docs/@', '@svn@', '@\.swp$@' ), $stats ) ); + self::assertEquals( array( 'size' => 130984, 'count' => 15 ), $stats ); + } + + public function testRecursive2() + { + $expected = array ( + 0 => './File/CREDITS', + 1 => './File/ChangeLog', + 2 => './File/DESCRIPTION', + 3 => './File/design/class_diagram.png', + 4 => './File/design/design.txt', + 5 => './File/design/file.xml', + 6 => './File/design/file_operations.png', + 7 => './File/design/md5.png', + 8 => './File/design/requirements.txt', + 9 => './File/src/file.php', + 10 => './File/src/file_autoload.php', + 11 => './File/tests/file_calculate_relative_path_test.php', + 12 => './File/tests/file_find_recursive_test.php', + 13 => './File/tests/file_remove_recursive_test.php', + 14 => './File/tests/suite.php', + ); + self::assertEquals( $expected, ezcBaseFile::findRecursive( ".", array( '@^\./File/@' ), array( '@/docs/@', '@\.svn@', '@\.swp$@' ), $stats ) ); + self::assertEquals( array( 'size' => 130984, 'count' => 15 ), $stats ); + } + + public function testRecursive3() + { + $expected = array ( + 0 => 'File/design/class_diagram.png', + 1 => 'File/design/file_operations.png', + 2 => 'File/design/md5.png', + ); + self::assertEquals( $expected, ezcBaseFile::findRecursive( "File", array( '@\.png$@' ), array( '@\.svn@' ), $stats ) ); + self::assertEquals( array( 'size' => 17642, 'count' => 3 ), $stats ); + } + + public function testRecursive4() + { + $expected = array ( + 0 => 'File/design/class_diagram.png', + 1 => 'File/design/design.txt', + 2 => 'File/design/file.xml', + 3 => 'File/design/file_operations.png', + 4 => 'File/design/md5.png', + 5 => 'File/design/requirements.txt', + ); + self::assertEquals( $expected, ezcBaseFile::findRecursive( "File", array( '@/design/@' ), array( '@\.svn@' ), $stats ) ); + self::assertEquals( array( 'size' => 114282, 'count' => 6 ), $stats ); + } + + public function testRecursive5() + { + $expected = array ( + 0 => 'File/design/design.txt', + 1 => 'File/design/requirements.txt', + 2 => 'File/src/file.php', + 3 => 'File/src/file_autoload.php', + 4 => 'File/tests/file_calculate_relative_path_test.php', + 5 => 'File/tests/file_find_recursive_test.php', + 6 => 'File/tests/file_remove_recursive_test.php', + 7 => 'File/tests/suite.php', + ); + self::assertEquals( $expected, ezcBaseFile::findRecursive( "File", array( '@\.(php|txt)$@' ), array( '@/docs/@', '@\.svn@' ) ) ); + } + + public function testRecursive6() + { + $expected = array(); + self::assertEquals( $expected, ezcBaseFile::findRecursive( "File", array( '@xxx@' ) ) ); + } + + public function testNonExistingDirectory() + { + $expected = array(); + try + { + ezcBaseFile::findRecursive( "NotHere", array( '@xxx@' ) ); + } + catch ( ezcBaseFileNotFoundException $e ) + { + self::assertEquals( "The directory file 'NotHere' could not be found.", $e->getMessage() ); + } + } + + public function testStatsEmptyArray() + { + $expected = array ( + 0 => 'File/design/class_diagram.png', + 1 => 'File/design/design.txt', + 2 => 'File/design/file.xml', + 3 => 'File/design/file_operations.png', + 4 => 'File/design/md5.png', + 5 => 'File/design/requirements.txt', + ); + $stats = array(); + self::assertEquals( $expected, ezcBaseFile::findRecursive( "File", array( '@/design/@' ), array( '@\.svn@' ), $stats ) ); + self::assertEquals( array( 'size' => 114282, 'count' => 6 ), $stats ); + } + + public static function suite() + { + return new PHPUnit_Framework_TestSuite( "ezcBaseFileFindRecursiveTest" ); + } +} +?> diff --git a/include/ezcomponents/Base/tests/file_is_absolute_path.php b/include/ezcomponents/Base/tests/file_is_absolute_path.php new file mode 100644 index 000000000..1e2acd510 --- /dev/null +++ b/include/ezcomponents/Base/tests/file_is_absolute_path.php @@ -0,0 +1,224 @@ + diff --git a/include/ezcomponents/Base/tests/file_remove_recursive_test.php b/include/ezcomponents/Base/tests/file_remove_recursive_test.php new file mode 100644 index 000000000..55b24643f --- /dev/null +++ b/include/ezcomponents/Base/tests/file_remove_recursive_test.php @@ -0,0 +1,131 @@ +tempDir = $this->createTempDir( 'ezcBaseFileRemoveFileRecursiveTest' ); + mkdir( $this->tempDir . '/dir1' ); + mkdir( $this->tempDir . '/dir2' ); + mkdir( $this->tempDir . '/dir2/dir1' ); + mkdir( $this->tempDir . '/dir2/dir1/dir1' ); + mkdir( $this->tempDir . '/dir2/dir2' ); + mkdir( $this->tempDir . '/dir4' ); + mkdir( $this->tempDir . '/dir5' ); + mkdir( $this->tempDir . '/dir6' ); + file_put_contents( $this->tempDir . '/dir1/file1.txt', 'test' ); + file_put_contents( $this->tempDir . '/dir1/file2.txt', 'test' ); + file_put_contents( $this->tempDir . '/dir1/.file3.txt', 'test' ); + file_put_contents( $this->tempDir . '/dir2/file1.txt', 'test' ); + file_put_contents( $this->tempDir . '/dir2/dir1/file1.txt', 'test' ); + file_put_contents( $this->tempDir . '/dir2/dir1/dir1/file1.txt', 'test' ); + file_put_contents( $this->tempDir . '/dir2/dir1/dir1/file2.txt', 'test' ); + file_put_contents( $this->tempDir . '/dir2/dir2/file1.txt', 'test' ); + file_put_contents( $this->tempDir . '/dir4/file1.txt', 'test' ); + file_put_contents( $this->tempDir . '/dir4/file2.txt', 'test' ); + file_put_contents( $this->tempDir . '/dir5/file1.txt', 'test' ); + file_put_contents( $this->tempDir . '/dir5/file2.txt', 'test' ); + file_put_contents( $this->tempDir . '/dir6/file1.txt', 'test' ); + file_put_contents( $this->tempDir . '/dir6/file2.txt', 'test' ); + chmod( $this->tempDir . '/dir4/file1.txt', 0 ); + chmod( $this->tempDir . '/dir5', 0 ); + chmod( $this->tempDir . '/dir6', 0400 ); + } + + protected function tearDown() + { + chmod( $this->tempDir . '/dir5', 0700 ); + chmod( $this->tempDir . '/dir6', 0700 ); + $this->removeTempDir(); + } + + public function testRecursive1() + { + self::assertEquals( 12, count( ezcBaseFile::findRecursive( $this->tempDir ) ) ); + ezcBaseFile::removeRecursive( $this->tempDir . '/dir1' ); + self::assertEquals( 9, count( ezcBaseFile::findRecursive( $this->tempDir ) ) ); + ezcBaseFile::removeRecursive( $this->tempDir . '/dir2' ); + self::assertEquals( 4, count( ezcBaseFile::findRecursive( $this->tempDir ) ) ); + } + + public function testRecursive2() + { + self::assertEquals( 12, count( ezcBaseFile::findRecursive( $this->tempDir ) ) ); + try + { + ezcBaseFile::removeRecursive( $this->tempDir . '/dir3' ); + } + catch ( ezcBaseFileNotFoundException $e ) + { + self::assertEquals( "The directory file '{$this->tempDir}/dir3' could not be found.", $e->getMessage() ); + } + self::assertEquals( 12, count( ezcBaseFile::findRecursive( $this->tempDir ) ) ); + } + + public function testRecursive3() + { + self::assertEquals( 12, count( ezcBaseFile::findRecursive( $this->tempDir ) ) ); + try + { + ezcBaseFile::removeRecursive( $this->tempDir . '/dir4' ); + } + catch ( ezcBaseFilePermissionException $e ) + { + self::assertEquals( "The file '{$this->tempDir}/dir5' can not be opened for reading.", $e->getMessage() ); + } + self::assertEquals( 10, count( ezcBaseFile::findRecursive( $this->tempDir ) ) ); + } + + public function testRecursive4() + { + self::assertEquals( 12, count( ezcBaseFile::findRecursive( $this->tempDir ) ) ); + try + { + ezcBaseFile::removeRecursive( $this->tempDir . '/dir5' ); + } + catch ( ezcBaseFilePermissionException $e ) + { + self::assertEquals( "The file '{$this->tempDir}/dir5' can not be opened for reading.", $e->getMessage() ); + } + self::assertEquals( 12, count( ezcBaseFile::findRecursive( $this->tempDir ) ) ); + } + + public function testRecursive5() + { + self::assertEquals( 12, count( ezcBaseFile::findRecursive( $this->tempDir ) ) ); + try + { + ezcBaseFile::removeRecursive( $this->tempDir . '/dir6' ); + } + catch ( ezcBaseFilePermissionException $e ) + { + // Make no asumption on which file is tryed to be removed first + self::assertEquals( + 1, + preg_match( + "(The file '{$this->tempDir}/dir6/file[12].txt' can not be removed.)", + $e->getMessage() + ) + ); + } + self::assertEquals( 12, count( ezcBaseFile::findRecursive( $this->tempDir ) ) ); + } + + public static function suite() + { + return new PHPUnit_Framework_TestSuite( "ezcBaseFileRemoveRecursiveTest" ); + } +} +?> diff --git a/include/ezcomponents/Base/tests/init/base_init_callback.php b/include/ezcomponents/Base/tests/init/base_init_callback.php new file mode 100644 index 000000000..3724adf16 --- /dev/null +++ b/include/ezcomponents/Base/tests/init/base_init_callback.php @@ -0,0 +1,23 @@ +configured = true; + } +} +?> diff --git a/include/ezcomponents/Base/tests/init/base_init_class.php b/include/ezcomponents/Base/tests/init/base_init_class.php new file mode 100644 index 000000000..6567d4fba --- /dev/null +++ b/include/ezcomponents/Base/tests/init/base_init_class.php @@ -0,0 +1,31 @@ + diff --git a/include/ezcomponents/Base/tests/struct_test.php b/include/ezcomponents/Base/tests/struct_test.php new file mode 100644 index 000000000..b14552cff --- /dev/null +++ b/include/ezcomponents/Base/tests/struct_test.php @@ -0,0 +1,53 @@ +no_such_property = 'value'; + $this->fail( 'Expected exception was not thrown.' ); + } + catch ( ezcBasePropertyNotFoundException $e ) + { + $this->assertEquals( "No such property name 'no_such_property'.", $e->getMessage() ); + } + + try + { + $value = $struct->no_such_property; + $this->fail( 'Expected exception was not thrown.' ); + } + catch ( ezcBasePropertyNotFoundException $e ) + { + $this->assertEquals( "No such property name 'no_such_property'.", $e->getMessage() ); + } + } + + public function testBaseRepositoryDirectorySetState() + { + $dir = ezcBaseRepositoryDirectory::__set_state( array( 'type' => ezcBaseRepositoryDirectory::TYPE_EXTERNAL, 'basePath' => '/tmp', 'autoloadPath' => '/tmp/autoload' ) ); + $this->assertEquals( ezcBaseRepositoryDirectory::TYPE_EXTERNAL, $dir->type ); + $this->assertEquals( '/tmp', $dir->basePath ); + $this->assertEquals( '/tmp/autoload', $dir->autoloadPath ); + } + + public static function suite() + { + return new PHPUnit_Framework_TestSuite( "ezcBaseStructTest" ); + } +} +?> diff --git a/include/ezcomponents/Base/tests/suite.php b/include/ezcomponents/Base/tests/suite.php new file mode 100644 index 000000000..623914dc4 --- /dev/null +++ b/include/ezcomponents/Base/tests/suite.php @@ -0,0 +1,49 @@ +setName("Base"); + + $this->addTest( ezcBaseTest::suite() ); + $this->addTest( ezcBaseInitTest::suite() ); + $this->addTest( ezcBaseFeaturesTest::suite() ); + $this->addTest( ezcBaseOptionsTest::suite() ); + $this->addTest( ezcBaseStructTest::suite() ); + $this->addTest( ezcBaseFileCalculateRelativePathTest::suite() ); + $this->addTest( ezcBaseFileFindRecursiveTest::suite() ); + $this->addTest( ezcBaseFileIsAbsoluteTest::suite() ); + $this->addTest( ezcBaseFileCopyRecursiveTest::suite() ); + $this->addTest( ezcBaseFileRemoveRecursiveTest::suite() ); + } + + public static function suite() + { + return new ezcBaseSuite(); + } +} +?> diff --git a/include/ezcomponents/Base/tests/test_options.php b/include/ezcomponents/Base/tests/test_options.php new file mode 100644 index 000000000..c86a01789 --- /dev/null +++ b/include/ezcomponents/Base/tests/test_options.php @@ -0,0 +1,18 @@ + "bar" ); + + public function __set( $propertyName, $propertyValue ) + { + if ( $this->__isset( $propertyName ) ) + { + $this->properties[$propertyName] = $propertyValue; + } + else + { + throw new ezcBasePropertyNotFoundException( $propertyName ); + } + } +} +?> diff --git a/include/ezcomponents/Base/tests/test_repository/TestClasses/base_test_class.php b/include/ezcomponents/Base/tests/test_repository/TestClasses/base_test_class.php new file mode 100644 index 000000000..cd91ad5a0 --- /dev/null +++ b/include/ezcomponents/Base/tests/test_repository/TestClasses/base_test_class.php @@ -0,0 +1,4 @@ + diff --git a/include/ezcomponents/Base/tests/test_repository/TestClasses/base_test_class_number_two.php b/include/ezcomponents/Base/tests/test_repository/TestClasses/base_test_class_number_two.php new file mode 100644 index 000000000..0e86a858b --- /dev/null +++ b/include/ezcomponents/Base/tests/test_repository/TestClasses/base_test_class_number_two.php @@ -0,0 +1,4 @@ + diff --git a/include/ezcomponents/Base/tests/test_repository/TestClasses/base_test_long_class.php b/include/ezcomponents/Base/tests/test_repository/TestClasses/base_test_long_class.php new file mode 100644 index 000000000..a5712a304 --- /dev/null +++ b/include/ezcomponents/Base/tests/test_repository/TestClasses/base_test_long_class.php @@ -0,0 +1,4 @@ + diff --git a/include/ezcomponents/Base/tests/test_repository/autoload_files/basetest_autoload.php b/include/ezcomponents/Base/tests/test_repository/autoload_files/basetest_autoload.php new file mode 100644 index 000000000..93279df78 --- /dev/null +++ b/include/ezcomponents/Base/tests/test_repository/autoload_files/basetest_autoload.php @@ -0,0 +1,7 @@ + 'TestClasses/base_test_class.php', + 'trBasetestClass2' => 'TestClasses/base_test_class_number_two.php', + 'trBasetestClass4' => 'TestClasses/base_test_class_number_four.php', +); +?> diff --git a/include/ezcomponents/Base/tests/test_repository/autoload_files/basetest_long_autoload.php b/include/ezcomponents/Base/tests/test_repository/autoload_files/basetest_long_autoload.php new file mode 100644 index 000000000..52b73ac9b --- /dev/null +++ b/include/ezcomponents/Base/tests/test_repository/autoload_files/basetest_long_autoload.php @@ -0,0 +1,5 @@ + 'TestClasses/base_test_long_class.php', +); +?> diff --git a/include/ezcomponents/Base/tests/test_repository/autoload_files/object_autoload.php b/include/ezcomponents/Base/tests/test_repository/autoload_files/object_autoload.php new file mode 100644 index 000000000..5e3dc908e --- /dev/null +++ b/include/ezcomponents/Base/tests/test_repository/autoload_files/object_autoload.php @@ -0,0 +1,5 @@ + 'object/object.php', +); +?> diff --git a/include/ezcomponents/Base/tests/test_repository/object/object.php b/include/ezcomponents/Base/tests/test_repository/object/object.php new file mode 100644 index 000000000..3b46ba6e4 --- /dev/null +++ b/include/ezcomponents/Base/tests/test_repository/object/object.php @@ -0,0 +1,4 @@ + diff --git a/include/ezcomponents/ChangeLog b/include/ezcomponents/ChangeLog new file mode 100644 index 000000000..b2ed56560 --- /dev/null +++ b/include/ezcomponents/ChangeLog @@ -0,0 +1,1055 @@ +SVN Revision: 8406 + + +Archive +======= + +1.3 - Monday 16 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.3rc1 - Tuesday 10 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #13137: Subsequent files where seen as hardlinks on Windows + because inodes do not exist. + + +1.3beta1 - Tuesday 27 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.3alpha1 - Monday 05 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Implemented issue #12818: Add the possibility to open archives in read-only + mode. + + + +Authentication +============== + +1.2 - Monday 16 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.2rc1 - Tuesday 10 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes + + +1.2beta1 - Tuesday 27 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #12992: LDAP registerFetchData() now correctly uses normal case + attributes (eg. 'displayName'). + + +1.2alpha1 - Monday 05 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Implemented feature request #12935: Added the returnUrl OpenID option to + customize the return URL on OpenID authentification. +- Fixed the issue where a failed connection to an LDAP server would not be + detected. + + + +Base +==== + +1.5 - Monday 16 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.5rc1 - Tuesday 10 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes + + +1.5beta1 - Tuesday 27 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Added the ezcBasePersistable interface that can be used to ensure that the + object implementing this interface can be used with PersistentObject and + Search. + + +1.5alpha2 - Tuesday 13 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed a bug in ezcBaseFile::findRecursive that prevented you from passing an + empty array to collect statistics. +- Changed ezcBase::getInstallationPath() so that it always returns a trailing + directory separator. + + +1.5alpha1 - Monday 07 April 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Implemented issue #8529: Added a by-reference argument to + ezcBaseFile::findRecursive that returns statistsics (count and total size) + of all files that are returned by this function. +- Implemented issue #11506: Added the static method + ezcBase::getInstallationPath(). +- Implemented issue #12694: replace reflection test for class type with spl + function. + + + +Cache +===== + +1.4 - Monday 16 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.4rc1 - Tuesday 10 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #13053: Fixed calculation of remaining life time in all storage + classes and with that resolved the strange behavior in the Memcach storage. +- Fixed issue #13112: Corrected the tutorial text. +- Fixed issue #13119: Replaced references to /tmp with createTempDir() calls. + + +1.4beta1 - Tuesday 27 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #12993: Hierarchical caching does not prune items in the correct + situation. Note that the internal structure of the stack meta data changed + drastically with this fix. You need to reset() the whole storage after this + update. + + +1.4alpha1 - Monday 05 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Implemented feature #12587: Hierachic caching for the Cache component. The + class ezcCacheStack and related classes provide that feature. +- Fixed issue #12666: ezcCacheStorageMemcache potentially creates multiple + connections to the same memcached server. + + + +Configuration +============= + +1.3 - Monday 16 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.3rc1 - Tuesday 10 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes + + +1.3beta1 - Tuesday 27 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.3alpha1 - Monday 05 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Implemented issue #12694: replace reflection test for class type with spl + function. +- Implemented issue #12911: Added the hasGroup() and getSettingsInGroup() + methods to ezcConfigurationManager to allow for fetching of all settings + in a group. (Patch by James Pic) + + +1.2.1 - Monday 03 March 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #12477: missing backslash \ in file format part of configuration + component tutorial. + + + +ConsoleTools +============ + +1.4 - Monday 16 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.4rc1 - Tuesday 10 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #13118: Class::method() replaced by Class->method() for object + method calls and attribute accesses where appropriate. + + +1.4beta1 - Tuesday 27 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.4alpha1 - Monday 05 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Implemented issue #10765: ezcConsoleQuestionDialog::YesNoQuestion does not + accept "Yes" or "yes" / "no", "No" as valid answer. A new validator + (ezcConsoleQuestionMappingValidator) was introduced for this, which extends + ezcConsoleQuestionCollectionValidator and is now used for the yes-no-question. +- Implemented issue #10791: ezcConsoleTable should implement __toString. +- Implemented issue #10838: ezcConsoleOutputFormats should implement Iterator + and Countable. +- Fixed issue #12561: getSynopsis() bugs when at least 2 options don't have + short-names. +- Fixed issue #12623: console menu dialog handles unexisting options wrong. +- Fixed issue #12624: Wrong text in documentation of eZConsoleDialogViewer. +- Fixed issue #12625: console tools lacks documentation on targets. +- Fixed issue #12626: Type "ta" in ezconsoleoutput documentation. +- Fixed issue #12628: Missing space in ezcConsoleInput::getHelp API doc. +- Fixed issue #12629: Method name not replaced with link in + ezcConsoleMenuDialog::display() API doc. +- Fixed issue #12630: Add link to ezcDialogNoValidResultException in + ezcConsoleDialog::getResult() API doc. +- Fxied issue #12636: ezcConsoleOutput->outputLine() prints EOL always to + STDOUT instead of the defined target. + + + +Database +======== + +1.4 - Monday 16 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #13188: Sub select queries are no more quoted in SQLite IN + statements. + + +1.4rc1 - Tuesday 10 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes + + +1.4beta1 - Tuesday 27 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #12150: Connect to MSSQL database fails due to wrong driver + specification. + + +1.4alpha1 - Monday 05 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Implemented issue #10753: ezcDbQuery should implement __toString(). +- Implemented issue #12540: subselect support for other query types besides + SELECT. + + + +DatabaseSchema +============== + +1.4 - Monday 16 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.4rc1 - Tuesday 10 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #12937: PersistentObject definition writer now creates correct + PHP type definition for non-number primary keys. +- Fixed issue #13072: SQLite schema reader does not work with uppercase type + names. + + +1.4beta1 - Tuesday 27 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Changed the class name ezcDbSchemaNonUniqueIndexNameValidator to + ezcDbSchemaUniqueIndexNameValidator. +- Changed ezcDbSchemaDbReader back to an interface, and created a common SQL + reader class that implements the common methods. +- Moved ezcDbSchema*Reader/getReaderType() to the new common SQL reader class + ezcDbSchemaCommonSqlReader. +- Created a common method ezcDbSchemaCommonSqlReader::processSchema() that + iterates over all the tables and gathers information about them and their + indexes. + + +1.4alpha1 - Monday 05 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Implemented issue #10069: DatabaseSchema only for particular tables. +- Implemented issue #10364: Added support for table name prefixes. +- Implemented issue #11562: Schema validator for duplicate index names. +- Implemented issue #12694: Replace reflection test for class type with SPL + function. +- Fixed bug #12538: No warning is thrown when an unsupported type is found + while reading from a database, or writing to a database. + + + +Debug +===== + +1.2 - Monday 16 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.2rc1 - Tuesday 10 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes + + +1.2beta1 - Tuesday 27 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.2alpha1 - Monday 03 March 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Implemented enhancement #10701: Getting a readable backtrace. The + ezcDebug->log() method now allows you to selectively add a stack trace to + debug log messages. The new ezcDebugOptions class allows to globally switch + on stack traces for all log messages. +- Fixed issue #12427: Changed output rendering of the debug formatter to not + include a stylesheet by default, but instead the formatter now includes easy + overridable CSS classes. + + +Document +======== + +1.0 - Monday 16 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #13164: Handle dense enumerated lists. + + +1.0rc1 - Tuesday 10 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #13167: Correctly handle indetation change after definition + lists. +- Fixed issue #13166: Handle embeddded URLs in inline references. + + +1.0alpha1 - Tuesday 13 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Initial release of this package. + +EventLog +======== + +1.3 - Monday 16 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.3rc1 - Tuesday 10 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes + + +1.3beta1 - Tuesday 27 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.3alpha3 - Tuesday 13 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #13008: ezcLogFileWriter::openFile() throws wrong Exception. + + +1.3alpha2 - Monday 05 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Implemented feature #12907: Using both trigger_error() and all available + error types. (Patch by James Pic) +- Implemented feature: Trim spaces around source. + + +1.3alpha1 - Monday 07 April 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Implemented feature #12503: Ability to disable log rotation by setting the + max log file option to the constructor to false. + + + +Execution +========= + +1.1.1 - Monday 16 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Implemented issue #12694: Replace reflection test for class type with SPL + function. + + +Feed +==== + +1.1 - Monday 16 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.1rc1 - Tuesday 10 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- ATOM generator considers feed entry links without the rel attribute set as + rel="alternate" by default. +- Fixed issue #13109: Fixed RSS1 (RDF) parsing when the "resource" attribute + is specified as "rdf:resource". +- Fixed iTunes module elements handling if using a different prefix than + 'itunes'. +- Fixed issue #13110: Added redirection support for feed URLs returning the + 301, 302 and 307 HTTP headers. + + +1.1beta1 - Tuesday 27 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Removed ezcFeedCanNotParseException class, using ezcFeedParseErrorException + instead. +- Changed protected methods and variables from processor classes to private. +- Changed get() and set() functions from ezcFeedProcessor into __get() and + __set(), and added __isset(). +- Added the registerFeed() and registerModule() functions to ezcFeed. +- Removed plural properties from ezcFeed (authors, categories, contributors, + items, links). +- Added feed element types (person, category, link, image, etc) to specify + different feed and module elements. +- Removed the method set() from ezcFeed and ezcFeedItem. +- Removed the class ezcFeedTools. +- Renamed ezcFeedItem to ezcFeedEntryElement. +- Added a feed type to the ezcFeed method generate() to specify the output + feed type, and made the ezcFeed constructor feed type argument optional. +- The properties are stored in ezcFeed and are assigned in the same way + without being dependent on the feed type. + + +1.1alpha1 - Monday 07 April 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Reorganized internal structure of classes. +- Added ezcFeedSchema to define different feed types. +- Added ezcFeedElement instead of ezcFeedItem. +- Added support for XML attributes for feeds. +- Added regression tests based on the ones from Template. +- In RSS2 the title, link and description nodes of item nodes are not all + required, but at least one of title or description nodes is required. +- Added support for RSS2 enclosure and tutorial on how to use it for creating + and parsing podcasts. +- Completed support for creating and parsing RSS2 feeds. +- Completed support for creating and parsing RSS1 feeds. +- Completed support for creating and parsing ATOM feeds. +- Added the getContentType() method in ezcFeed to return its Content-Type. +- Added support for ATOM xml:lang attribute. +- The RSS1 about attribute is accessed as id through ezcFeed. +- Added support for the Content module. +- Added support for the DublinCore module. +- Fixed issue #12557: added parse support for version 0.91 and 0.92 RSS feeds, + which are considered as RSS2 feeds. +- Added support for the iTunes module. +- Added support for the CreativeCommons module. +- Added the required xmlns attribute when creating RSS1 feeds. +- Added parse support for version 0.93 and 0.94 RSS feeds. +- The RSS2 guid item attribute is accessed as id through ezcFeed. +- Added a feed creator example application. +- Changed the method ezcFeedTools::prepareDate() to return a DateTime object + - PHP 5.2 is required now. +- Added generator information for ATOM when generating the feed. + + +1.0beta1 - Monday 18 December 2006 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Added the ezcFeed::parseContent() method that parses a feed contained in a + variable. + + +1.0alpha1 - Tuesday 24 October 2006 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Initial release of this package. + +Graph +===== + +1.3 - Monday 16 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.3rc1 - Tuesday 10 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #12581: Wrong axis captions in bar charts with manual min/max + values + + +1.3beta1 - Tuesday 27 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.3alpha1 - Monday 05 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Implemented feature #10829: Get resource from driver. +- Implemented feature #10957: Embed glyphs for exact SVG font width + estimation. + (Patch by Freddie Witherden) +- Implemented feature #11979: Line width configurable per data set. +- Implemented feature #12382: Enhance line chart to allow invisible lines. +- Fixed issue #12483: Average dataset does not work with a single value. + + +1.2.1 - Monday 21 January 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Implemented feature #9407: Cairo driver. +- Fixed issue #11777: Optionally independent axis font configuration. +- Fixed issue #12254: Bad property-check for strokeLineJoin in SVG driver. +- Fixed issue #12295: Broken automatic scaling with manually set min value, + not divisible by major step. +- Fixed issue #12326: Per datapoint colors not used with bar charts. +- Fixed issue #12405: Highlightfontsize reduced when padding > 0 in highlight + font options. + + + +ImageAnalysis +============= + +1.1.3 - Monday 05 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed bug #12638: ezcImageAnalyzerImagemagickHandler::checkImagemagick + method missing SunOS in switch. + + + +ImageConversion +=============== + +1.3.5 - Monday 16 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #13134: Fixed array_splice() call in + ezcImageTransformation->addFilter(). + + +1.3.4 - Monday 05 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #12592: New thumbnail filter. Documentation about the scale() + filter has been added to the thumbnail filters. +- Fixed issue #12667: ezcImageConverter doesn't pass saveOptions to + ezcImageTransformation. +- Fixed issue #12671: Unhandled exception in ezcImageTransformation. Checks to + avoid double throwing of exceptions have been introduced. Additional + parameter checks are performed. + + + +Mail +==== + +1.5 - Monday 16 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.5rc1 - Tuesday 10 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #13038: Added support for non-ascii and mime-emcoded (non-RFC) + filenames for mail attachments. + + +1.5beta1 - Tuesday 27 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #13010: The transport connection handles correcly cases where + CRLF is split in 2 different blocks read from server. + + +1.5alpha1 - Monday 05 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #12844: getTmpDir() not properly set in Windows. +- Fixed issue #12903: The mail digest size is not calculated twice anymore. +- Fixed issue #12930: The SMTP authentication methods are used in correct + strength order now. +- Implemented feature request #11937: Switch to turn off automatic inclusion + of files with the Mail Composer. +- Implemented feature request #12203: Replaced hard-coded paths for temporary + directory with the PHP 5.2.1 function sys_get_temp_dir(). +- Implemented feature request #12694: Replace reflection test for class type + with SPL function. + + +1.4.3 - Monday 03 March 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #12595: Folding is no longer applied twice for To, Cc and Bcc + headers. + + +1.4.2 - Thursday 17 January 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #12372: MTA transport does not encode subject. + + + +PersistentObject +================ + +1.4 - Monday 16 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.4rc1 - Tuesday 10 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes + + +1.4beta1 - Tuesday 27 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.4alpha1 - Monday 05 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Refactored ezcPersistentSession. +- Implemented enhancement #10151: Improved Database and PersistentObject + datatype support (especially binary data). The object definitions allow to + specify the datatype of the database column assigned to a property. +- Implemented enhancement #10373: Several relations to the same table for + PersistentObject. +- Implemented enhancement #10727: Improved error messages for PersistentObject + with ManualGenerator. +- Fixed issue #10205: Binding variables with an undeclared var doesn't throw + an exception. If getState() on a persistent object does not return an array + an exception is thrown now. +- Fixed issue #12471: PersistentObject misses support for boolean datatype. + + +Search +====== + +1.0 - Monday 16 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.0rc1 - Tuesday 10 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Changed the way how ezcSearchQueryBuilder works. You will now have to + run parseSearchQuery() instead of just passing the query object, query + string and fields to the constructor. +- Changed the nested array result for documents into a structure where each + ezcSearchResult contains an array of ezcSearchResultDocument objects, which + on its turn contain the score, highlighting and document itself. +- Changed the default limit fo returned search results for the Solr handler + from 10 to unlimited (well, 999999). + + +1.0alpha2 - Tuesday 13 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixes to the Solr handler: + + - Implemented missing "order by" support. + - Fixed between support. + - Fixed boost support in case a field already had a boost value assigned by + default. + + +1.0alpha1 - Monday 05 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Initial release of this package. + + +SignalSlot +========== + +1.1.1 - Monday 05 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed bug #12676: Wrong link under "callback" in SignalSlot tutorial. + + + +SystemInformation +================= + +1.0.6 - Monday 05 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed retrieving CPU count, type and speed on Windows Vista. + + + +Template +======== + +1.3 - Monday 16 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.3rc1 - Tuesday 10 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes + + +1.3beta1 - Tuesday 27 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Changed the date_format() template function to only accept DateTime objects. + + +1.3alpha2 - Monday 05 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Implemented issue #12723: Make Template date functions support the DateTime + object. +- Fixed issue #11152: ezcTemplateLocationInterface should not have "Interface" + in the classname. +- Fixed issue #12322: Template regression between 1.1 and 1.2 - support for + variable object properties re-added. + + +1.3alpha1 - Monday 03 March 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Made the TemplateObject available in CustomBlocks. Thanks to Felix Weis for + the patch. +- Fixed issue #11228: Cannot supply an absolute Win32-Path to $t->process(). +- Better error message when an external (use) variable is not given. +- Fixed issue #12289: String function str_last_index documented, but not + defined. +- Fixed issue #12323: Using {cache_template} inside a block will now throw an + exception. +- Fixed issue #11056: + + * {dynamic} is only allowed after {cache_template} or in {cache_block}. + * corrected documentation in regard to TTL vs. ttl. + * fixed the cache file names in Windows (replace '\' with '-'). + +- Fixed issue #12368: ezcTemplateConfiguration::addExtension() did not + check for invalid arguments correctly. +- Implemented issue #10940: Possibility to set default permissions to + the compiled templates and generated cache files, by using the 0777 mode for + creating the directories in which the compiled templates are stored. This + mode is still modified by the umask. +- Implemented issue #9973: Added a translation compiler to convert a string in + the original language, to the translated one without substituting parameters. + This is to have translation support for the Template component. +- Added the capture() template block to collect a part of a template into a + variable. +- Added support for variable length argument lists for custom functions + through the variableArgumentList element of the + ezcTemplateCustomFunctionDefinition. +- Added support for additional parameters for custom blocks through the + excessParameters element of the ezcTemplateCustomBlockDefinition. + + +TemplateTranslationTiein +======================== + +1.0 - Monday 16 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.0rc1 - Tuesday 10 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes + + +1.0beta1 - Tuesday 27 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.0alpha2 - Monday 05 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #12810: Issues with translations in templates (part c1): Quotes + incorrectly handled in string extractor. + + +1.0alpha1 - Monday 03 March 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Initial release of this package. + +Translation +=========== + +1.2 - Monday 16 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.2rc1 - Tuesday 10 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes + + +1.2beta1 - Tuesday 27 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Renamed the private ezcTranslation->callback_compile() and + ezcTranslation->parameter_callback_compile() to + ezcTranslation->callbackCompile() and + ezcTranslation->parameterCallbackCompile(). + + +1.2alpha2 - Monday 05 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #12810: Issues with translations in templates. + + +1.2alpha1 - Monday 03 March 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Implemented issue #9973: Added a translation compiler to convert a string in + the original language, to the translated one without substituting + parameters. This is to have translation support for the Template + component. +- Implemented issue #10912: Add translation entries. +- Added support for the new location element in Linguist version 1.1 files. +- Added support for the keepObsolete option for the TsBackend. With this + enabled, the obsolete translations are not dropped while reading contexts. + This is both useful for testing as well as for manipulating TS files. + + + +Tree +==== + +1.1 - Monday 16 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.1rc1 - Tuesday 10 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #13155: ezcTreeXmlInternalDataStore::fetchDataForNode fetches + data for wrong nodes. + + +1.1beta1 - Tuesday 27 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Implemented issue #12694: replace reflection test for class type with spl + function. + + +1.1alpha1 - Monday 03 March 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Implemented issue #12139: Allow tree node keys to be auto-generated. +- Fixed issue #12395: Tree docs lacking XHTML visualizaton. + + + +TreeDatabaseTiein +================= + +1.1 - Monday 16 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.1rc1 - Tuesday 10 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes + + +1.1beta1 - Tuesday 27 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.1alpha1 - Monday 03 March 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Implemented issue #12139: Allow tree node keys to be auto-generated. + + + +Url +=== + +1.2.1 - Monday 05 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #12825: No longer throw a notice when an unordered parameter + name is empty. + + + +UserInput +========= + +1.3 - Monday 16 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.3rc1 - Tuesday 10 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes + + +1.3beta1 - Tuesday 27 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.3alpha1 - Tuesday 13 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Implemented issue #12345: Added ezcInputForm::isValid(). + + + +Workflow +======== + +1.2 - Monday 16 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.2rc1 - Tuesday 10 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes + + +1.2beta1 - Tuesday 27 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Implemented issue #12694: Replace reflection test for class type with SPL + function. + + +1.2alpha1 - Monday 07 April 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Implemented issue #10941: Support for the Cancel Case workflow pattern. The + execution of a workflow can now be cancelled by either reaching a + ezcWorkflowNodeCancel node or by calling the cancel() node on an + ezcWorkflowExecution object. In either case, the execution is immediately + halted, already activated nodes will not be executed. +- Implemented issue #12404: Separate file i/o from XML processing in + ezcWorkflowDefinitionStorageXml. +- Implemented a plugin system that allows plugin developers to hook into + various extension points in the workflow execution engine. +- The visualization visitor can now show the current state of a workflow in + execution. This includes the highlighting of activated nodes as well as the + contents of the workflow variables. +- The new execution visualizer plugin (ezcWorkflowExecutionVisualizerPlugin) + uses the visualization visitor to create visualizations of each step of a + workflow execution. + + + +WorkflowDatabaseTiein +===================== + +1.2 - Monday 16 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.2rc1 - Tuesday 10 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes + + +1.2beta1 - Tuesday 27 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Consistently use ezcDbHandler::quoteIdentifier() to quote SQL identifiers. + + +1.2alpha1 - Monday 07 April 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Implemented issue #10941: Support for the Cancel Case workflow pattern. +- Fixed issue #12403: Multiple construction of + ezcWorkflowDatabaseDefinitionStorage. + + + diff --git a/include/ezcomponents/Graph/CREDITS b/include/ezcomponents/Graph/CREDITS new file mode 100644 index 000000000..b4685afd0 --- /dev/null +++ b/include/ezcomponents/Graph/CREDITS @@ -0,0 +1,27 @@ +CREDITS +======= + +eZ Components team +------------------ + +- Sergey Alexeev +- Sebastian Bergmann +- Jan Borsodi +- Raymond Bosman +- Frederik Holljen +- Kore Nordmann +- Derick Rethans +- Vadym Savchuk +- Tobias Schlitt +- Alexandru Stanoi + +Contributors +------------ + +- Lars Jankowski + + * ODO Meter Charts + +- Elger Thiele + + * Custom highlight values in line and bar charts. diff --git a/include/ezcomponents/Graph/ChangeLog b/include/ezcomponents/Graph/ChangeLog new file mode 100644 index 000000000..d02db2b2d --- /dev/null +++ b/include/ezcomponents/Graph/ChangeLog @@ -0,0 +1,228 @@ +1.3 - Monday 16 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.3rc1 - Tuesday 10 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #12581: Wrong axis captions in bar charts with manual min/max + values + + +1.3beta1 - Tuesday 27 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.3alpha1 - Monday 05 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Implemented feature #10829: Get resource from driver. +- Implemented feature #10957: Embed glyphs for exact SVG font width + estimation. + (Patch by Freddie Witherden) +- Implemented feature #11979: Line width configurable per data set. +- Implemented feature #12382: Enhance line chart to allow invisible lines. +- Fixed issue #12483: Average dataset does not work with a single value. + + +1.2.1 - Monday 21 January 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Implemented feature #9407: Cairo driver. +- Fixed issue #11777: Optionally independent axis font configuration. +- Fixed issue #12254: Bad property-check for strokeLineJoin in SVG driver. +- Fixed issue #12295: Broken automatic scaling with manually set min value, + not divisible by major step. +- Fixed issue #12326: Per datapoint colors not used with bar charts. +- Fixed issue #12405: Highlightfontsize reduced when padding > 0 in highlight + font options. + + +1.2 - Monday 17 December 2007 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #12238: Documentation error. +- Fixed issue #12246: dataBorder doesn't works in 2D renderer for piecharts. + + +1.2beta1 - Wednesday 28 November 2007 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #12064: Gradients are not rendered correctly in Flash driver. +- Implemented support for odometer charts. Thanks to Lars Jankowski from Oxid + esales for the initial patch. + + +1.2alpha1 - Monday 29 October 2007 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #11640: Polygon size reducement fails for very thin four edged + polygons. +- Fixed issue #11511: Line thickness wasn't used for rendering. +- Fixed issue #11509: Typo in line chart option. +- Implemented feature #10978: Add support for stacked bar charts. +- Implemented feature #11325: Allow values of 0 to be added to pie charts, to + be included in the legend and not rendered in the actual pie. +- Implemented feature #11247: Custom highlight values in line and bar charts. + Thanks to Elger Thiele for the basic patch. +- Implemented feature #10322 and #10565: Support for multiple x, y axis, + vertical and horizontal lines in line and bar charts. + + +1.1.1 - Monday 13 August 2007 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #11107: Floating point inaccuracies caused missing grid in line + chart. +- Fixed issue #11157: Wrong display of single record with labeled axis. +- Fixed issue #11180: Color Palette: $dataSetColor in ezcGraphPalette starts + with index 1 and not zero in pie charts. +- Fixed issue #11207: Missing URL property for legend, or missing legend, may + cause PHP notice. +- Fixed issue #11233: Path for circular arcs in SVG driver may break because + of locale settings. +- Fixed issue #11235: In interactive 3D bar charts circle and bullet bars are + not linked. +- Fixed issue #11236: Legend is not properly linked in interactive 3D line and + bar charts. + + +1.1 - Monday 02 July 2007 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Documentation updates. + + +1.1rc1 - Monday 25 June 2007 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #10828: PHP error when overwriting renderer in extended + ezGraphPieChart. +- Documentation updates and fixes. + + +1.1beta2 - Thursday 31 May 2007 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #10741: Make ezcGraphOutOfLogithmicalBoundingsException more + descriptive. +- Fixed issue #10744: ExactAxisLabelRenderer shows last value at position of + second last value if showLastValue is disabled. +- Fixed issue #10745 (BaxedAxisLabelRenderer wrong label positions for angles: + (135 <= $angle <= 325). +- Fixed issue #10746: Border size reducement algorithm fails for polygones + with edge lengths < reducement. +- Fixed issue #10747: axisLabelRotatedRenderer accesses unitialised variables + for Angles % 90 != .0 +- Fixed issue #10750: SVG drivers output broken with wrong LC_NUMERIC. +- Fixed issue #10759: Unset implementation broken in array access in datasets + and dataset properties. +- Fixed issue #10830: Automatically shorten labels if not enough space is + available. +- Fixed issue #10842: Pie charts fatal error with datasets with value sum <= + 0. +- Fixed issue #10846: Division by zero in polygon size reducement algorithm + for edges with an angle equals 0 degree. +- Fixed issue #10848: Missing pie segment labels in pie charts with 3d + renderer. +- Fixed issue #10852: Fixed radar chart documentation. +- Fixed issue #10858: Document on how to embed the SVG graphs in an HTML + document. +- Fixed issue #10861: Circle sector size reducement failes for very big + angles. +- Fixed issue #10881: Wrong labeling with ezcGraphDateAxis. + + +1.1beta1 - Monday 07 May 2007 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #9916: Not documented: ArrayDataSet also can use Iterators. +- Fixed issue #9926: Float values with date axis result in date parsing + exception. +- Fixed issue #9948: Make ezcGraphPolynom documentation public. +- Fixed issue #9950: Improved ezcGraphPolynom::__toString method for more + exact output. +- Fixed issue #10018: Axis scale incorrect when startDate != first day of + month. +- Fixed issue #10025: Wrong statement in tutorial about swf versions supported + by ext/ming. +- Fixed issue #10074: Use iconv instead of mbstring. +- Fixed issue #10055: Improve chart class documentation with chart elements. +- Fixed issue #10056: Fixed drawing order for boxes with background and + border. +- Fixed issue #10199: Use saveXML instead of save( 'php://output' ) to work + around PHP bug #40429. +- Fixed issue #10246: sprintf output modification in PHP 5.2.1. +- Fixed issue #10275: Low label count on labeled axis, when having (prime + number > 10) + 1 labels. +- Fixed issue #10536: Bar side polygons are drawn at the wrong side. +- Fixed issue #10599: Pie chart label formatting callback only accepts callback + functions but neither static nor non static methods. +- Fixed issue #10606: Call to undefined function imagePsLoadFont() in gd tests + when no t1lib is available. +- Fixed issue #10675: Arrow heads on axis too small. +- Fixed issue #10693: ezcGraphChartElementAxis::getSteps returns minor steps + after last major steps. +- Implemented feature #9402: Numeric datasets. +- Implemented feature #9404: Add support for rotated texts on axis. +- Implemented feature #9406: Add support for radar charts. +- Implemented feature #9511: Added helper functions to create image maps an link SVG + images in ezcGraphTools. +- Implemented feature #10017: Plot whole months on date axis respecting their + different length. +- Implemented feature #10375: Manually reduce or increase the label count on + labeled axis. +- Implemented feature #10470: Add support for format callback functions on all + axis. + + +1.0 - Monday 18 December 2006 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Renamed ezcGraphMingDriver to ezcGraphFlashDriver. +- Renamed pie chart options percentTreshHold to percentThreshold and + absoluteTreshHold to absoluteThreshold. +- Added feature #9647: Added the renderToOutput() method to the drivers. +- Fixed issue #9545: Pie chart treshhold does not work if aggregated data + stays below treshhold. +- Fixed issue #9549: Pie chart slices are not contiguous with the flash driver. +- Fixed issue #9568: Division by zero warning. +- Fixed issue #9583: Data typecasting should only be done in axis. +- Fixed issue #9586: No data rendered with string keys on date axis. +- Fixed issue #9588: Wrong polynoms build from data. +- Fixed issue #9612: Element links for SVG image in the legend require you to + click on exactly the text. +- Fixed issue #9655: pieChartOffset and highlight do not work together in 2D + renderer. +- Fixed issue #9762: Structs don't inherit from ezcBaseStruct. +- Fixed issue #9764: 3D Pie chart segment side polygon in front of circular + arc. +- Fixed issue #9795: Interferring bars, when bars count is higher then major + step count. +- Fixed issue #9823: Failing tests with PHP 5.1, because of different + parameter handling in imagepng, and (string) not calling __toString method. +- Fixed issue #9827: Use majorStep size for min/max estimating on numeric axis + with only one value. + + +1.0beta2 - Monday 20 November 2006 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Added logarithmical scaled numeric axis. +- Added treshhold for pie charts. +- Added custom maximum value for pie charts. +- Added ming driver for flash output. +- Added text shadow, background and border to font options. +- Added gleam to 2D pie charts. +- Added feature #9304: Possibility to format labels via callback. +- Fixed issue #9403: Element references do not work with Gleam in SVG. + + +1.0beta1 - Monday 25 September 2006 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Initial release of this package. diff --git a/include/ezcomponents/Graph/DESCRIPTION b/include/ezcomponents/Graph/DESCRIPTION new file mode 100644 index 000000000..841497441 --- /dev/null +++ b/include/ezcomponents/Graph/DESCRIPTION @@ -0,0 +1 @@ +A component for creating pie charts, line graphs and other kinds of diagrams. diff --git a/include/ezcomponents/Graph/design/class_diagram.png b/include/ezcomponents/Graph/design/class_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..fd2023580a0085777db89f1f132655f97f38d977 GIT binary patch literal 2154549 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

-n|Bd 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�BQa55QGYW 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ⅈ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͜xIpL{>8t100e-9jrf`ZS0ks)5(tKN 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

*BhTYr%|O5WFL2Y(QvL5&ENYFQ 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

$LPwLQBj+* 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

lQ?b90Te0YtVs@96T3TDJtRH{=rZ$F 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

KZ9cK2aK?) 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 z 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%0DE?pN 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/Graph/docs/img/tutorial_custom_palette.svg.png b/include/ezcomponents/Graph/docs/img/tutorial_custom_palette.svg.png new file mode 100644 index 0000000000000000000000000000000000000000..5788f041d972ad2ac1a90d4fa2d860b401b7ddf8 GIT binary patch literal 16224 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 Gto|>Gr1#_i literal 0 HcmV?d00001 diff --git a/include/ezcomponents/Graph/docs/img/tutorial_driver_gd.jpg b/include/ezcomponents/Graph/docs/img/tutorial_driver_gd.jpg new file mode 100644 index 0000000000000000000000000000000000000000..33e84d977e8348f07c7a3ca1d6da848546941eb7 GIT binary patch literal 37275 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/Graph/docs/img/tutorial_driver_svg.svg.png b/include/ezcomponents/Graph/docs/img/tutorial_driver_svg.svg.png new file mode 100644 index 0000000000000000000000000000000000000000..04427d448d5b34c5ffca22a78a947a54ecadcf98 GIT binary patch literal 72895 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/Graph/docs/img/tutorial_line_chart.svg.png b/include/ezcomponents/Graph/docs/img/tutorial_line_chart.svg.png new file mode 100644 index 0000000000000000000000000000000000000000..1eb57760c1cf75d0ee4b50f8da717e0e3418c8da GIT binary patch literal 15623 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 Xk;g6KHEYnc43YXM|Djm)oA>_#d7%FX literal 0 HcmV?d00001 diff --git a/include/ezcomponents/Graph/docs/img/tutorial_line_chart_3d.svg.png b/include/ezcomponents/Graph/docs/img/tutorial_line_chart_3d.svg.png new file mode 100644 index 0000000000000000000000000000000000000000..0e26bce58e8b2c1b79e395b3404d1d654efc0b64 GIT binary patch literal 32321 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 QY5)KL07*qoM6N<$g8nVyE&u=k literal 0 HcmV?d00001 diff --git a/include/ezcomponents/Graph/docs/img/tutorial_line_chart_markers.svg.png b/include/ezcomponents/Graph/docs/img/tutorial_line_chart_markers.svg.png new file mode 100644 index 0000000000000000000000000000000000000000..546fd75384e83124d745d73d864163914e6d2116 GIT binary patch literal 17421 zcma*Pby$>L)Hg~=NeW0w2+|S~(p?gQAPn8zDV@^N-5@0*B_Q41Al;n@2D7{MpXb+10?&1kTmfmBqr=%E`#U z-h{=@(JcK?fCLVX5>7@!RK+dhAk)lEMUv2Or4-ss_~HX98uYaaE_Ak$>Lq@K&-=IZ zvm!`JI7$^vjNfLNz9LXHyMA~k=JC4OEWUIldTG&EMvUVH)tS(!kf*EZ;ZW*Q^NzeA zb@5Mnj@LM-NC@r3R7aNZNC^HSe+6-oCG0ivlM`a%)6EDVT3XVUntYn2(~S4Wu^5a@ z#SHXs4cpVh^N&~59{aaT7v_ic@+>y1pFJ-sE#3E8W450ClPU};O%iH-+@?Ygk9xA& z%4Es*z9HymU?`L?oPxU9w2S@v^=s5$1);s@zndM*HAWXrWY?nKd2dk&aBj)C9LzHZ zO-)XpuI7F2>mQWN8;kL|{*CXt`u8<^lu1o`Yx{RP8ZNSC(WfI7I37pNfc#ArsMGCQ zC#N~*lcxJWhZXVYIG@d*s_Leuw5n6pg-vSZGgX$u^G+;PB7boQ%3gx!3=NOW`(us! zEJzaR`VRj0)2A0>v9Yh@Ww+zPLlEqbKe00w#Px-uPFfO#3ws^?Idye*Hinu}WG7nF z#-pXmyY!r7yHG9^o$}-6jfHCaoYts2Wzo6DPTAGqaClDSt zT$``Rr#wP_I+y3x=h3@sQAOd*Pa;>*hW0bhG%࿛ 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/Graph/docs/img/tutorial_odometer_chart.svg.png b/include/ezcomponents/Graph/docs/img/tutorial_odometer_chart.svg.png new file mode 100644 index 0000000000000000000000000000000000000000..17120c6f1938d12557d7dc29d4e1480243ff3b93 GIT binary patch literal 5370 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/Graph/docs/img/tutorial_pie_chart_3d.svg.png b/include/ezcomponents/Graph/docs/img/tutorial_pie_chart_3d.svg.png new file mode 100644 index 0000000000000000000000000000000000000000..086ea9d67135a2a9bc9fa5ee0c9b85e2e8c41020 GIT binary patch literal 29893 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

F`)_0R!Ie}m54wouPKb|QTOeyJuEufE)O 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 P43xCEf>`-S{eb@gDbMQo literal 0 HcmV?d00001 diff --git a/include/ezcomponents/Graph/docs/img/tutorial_reference_gd.html b/include/ezcomponents/Graph/docs/img/tutorial_reference_gd.html new file mode 100644 index 000000000..e33e7950a --- /dev/null +++ b/include/ezcomponents/Graph/docs/img/tutorial_reference_gd.html @@ -0,0 +1,31 @@ + + Image map example + + + Mozilla + Mozilla + Explorer + Explorer + Opera + Opera + Safari + Safari + Konqueror + Konqueror + Mozilla + Mozilla + Explorer + Explorer + Opera + Opera + Safari + Safari + Konqueror + Konqueror + + + + diff --git a/include/ezcomponents/Graph/docs/img/tutorial_reference_gd.png b/include/ezcomponents/Graph/docs/img/tutorial_reference_gd.png new file mode 100644 index 0000000000000000000000000000000000000000..4ecaa52b71ddcf5982d99c30ff8fd9d96a435e03 GIT binary patch literal 52161 zcmYgXWl$Vlv|QXRc+e2s-8E=%f(N$%A1uDGxVr{-4esu40fIY=yE_EuZC=%@dOv1r zYG!Kh&XqoW`t%J~RhGp-{fG(x05HDFNqqwVVB(n1C<1;-m^Af)ip%&r= zVQ;vF^c@2)K`x5i0V_ZU4KK4o3pks|fMoe# zgM48!%r8I?YQ7TkmTy^;uJb-+yCCanX{pKUB!6y!Fbwl@5jjFo%86`iUe&mi zscRJQO?xyv;J7O^&!lWtX@yd_)==MoZ0tj1lw!Av<+zN8hah7N`Cx!_q&P!#pW6J9 ze5wS2g4)QvUP=w;fZ$e4;b+f-&NO;9w&4ahODmKA%xtnwhtusVq%+@Xb4)(#0ndtd z@XPfjMj}R=SKzDL4(TiaD2z>Mk*v?LH1*AUMv#(sJ#)4uV7u$ZP)wGP<6p97IKYqb zY(2VV7af8BBo7vA?574wfJNDBB1p??&R@nX^lT4}K!ba7%F07YDF$W1DCGzCgUzgw z)_1Hvh|?vN=!}B3qxe5ST6!BFo3Q7Jf7dQOV+uwhx6@hW7emlQ2s{g#JP$x7vx~Hf zQo6dtcI|tUMC?|`@(KzZCp%b<`jDnP>*bYp)=7RJ70>fVhCd_wRYuS4c}9dyl}w#6 zdmZKF_2PPljq{(A>tosk7ge_gJZLKdqs^kX5B{|k5pU8wu6XM+);Y!QU^1akUzjT5 zM$XFbOMkpr9b1ot4gh$GTG}Z({cD7a7xI;&i1dUdyzQ4G^VkIg`{Ivz>w1rhu`2>Z zF#?ZTQlvSH%ebTYyZ>mEZP8aq>a(PVJ?aKMLcS3`znV-C2AHGbzApN{^32T6I+})J z0{kLb`6&SGp69|eXF6mj_TGpZkh8)z#>UpXFTuVQV;3SlY4Qf+)9)4}HQ!R4cXWPJ z5_Sa_uH37Uv7Q7(q0-9n|ID%0Q+UxBF|Mbs7ocARdX~D(kX4MxF4Dh6_wazWqZOCLtwc0IHPT-9s+Q35dX)d+=SXgXJt<*2_XjE!1d_`q5D z_;ghRw|5yD)SJm~yO7?i2H(%c-t*v)F!HpcTe7PR+hdZGlcq;U<)3y`#HNe0y<=RD z7XqP2!2*AVv$J(~{bb?dIvCfW-A9Clg{fd~Z;$(LhW%k>^Tt=tThTz)?;Qi7T)w?u z($_>n*Z*#A98E%e^XBL08yYI2stmfb4PEaV)r9-{kfKX#Zi%YoeOq1rH864{O{bjw z1&fqlj){rsXd=t~ww2H*AG+lJ_ot!v8e0U{c^!B?Mx2+l*l>;H`(v|op2Qo1Z4+vI z2Dn2{B9fIlE6G8crdQ64qyzHY%-R3-l&$=yXa6~8JeOmnECAzkPDFPV>xb|u6|o%Y zilaR(SI&JC? zSG{A>LCs{AO}FNP`M7h@C(3IcQ_#h)asQ}L-6bOgI*}+=_8lHpA4qa9A3_RDa6i0_ zKVyvDSV6>|U;4R6FdV~NzA9EEIzMimA+_}5EjaC+bB%JjZ!_Z%afG@bewt%?e*W2R zr%~Wg6CXm8d&Djax+GKRjP~M1(&0r?p|T}|dZ4YP6dlZI=Fm{Qp1Nlq32ilC4d3`5?tW z7#+ZV5s9GIpeXF(thTSFCp7q7!%Vh_DTYi}tJPPr?s&gJm`?Mq%+$F;KASKv zHFvV>Z=slE?1!249OhH4R?GRpSbWT0s^Ll5;};hI zd<@8j+2LkPp&>25<0&;Ywa$2H+qt^I&jY0;fp^b)oZ&k7qso_0CI(!ISv;0@(|HoN z$8{yiK_(9?zwwiYS|!@Ut%pI*pO`)t74O7!M@hum ztxeH?hP%4DlK)tj$?2U%j&27X$kF?@1tw%xtJBn{&lMHJWpfM7bA|SG7#_7xg>7*> zd0I;mruE(So`~24O-(dmc0fq~j846s$VWcAAOzQbw$oY2SvdKyLnWx*B35K3el*Fii#=EicXLHTbX_6*C6|nz4Y++nsv5+aC7J5)NQ|QdQLgq$_ zNiG;PZ_`mxqjE6|1JLVwTu8TM=C{mVCInpG6^$?Om&K>1hS?dY^lw~rVq1y+vq6YipBAqWp%jfp zj95$=^q@{cTXdGQGV|UT{i>HdGxLpEuM0L1Da!`Ick59(_t9m+){t+ztUN9|JBIk8 zyLw=`L4Xj7+z#Uye7akz@;v<7R9y8O>zPlyj7&^P9aD=ZgE<~^uY6!SW`R0BUGO>u>D@ty&(k3el{Tc#1&n-g}7<9#tI^PH21IfB{ zE<6*%zm~47ThO545YRCj8Xyds;WXHq>(yA{ICmmY1_lIgS^BzWtMs=7ORkMCilRW@DIh=vw<#T)gwMTkQ8ys>42;{$am~ zlcl-&<~*U1l-gGmJ5q17g$ljcx@)Joxj9NUd%_~+j2KVy7m~VkzF{*gvD1X-`|kBX z3ns1H++2X)PJ>gkZEq*m8^+zqe80Ebh9=WP?gz9^C`iEo{_z@Ug#MFy#Qz7zG8+ZZ z@*D&C85igG{C~VJ^W$SlX=!g>f9TcLaL%TGC^^R{p47X}p)_(SzR?#s#T}N4 z3JGFwW{5zM^Djd&l#3tn7d9~5spe`7R}*mm3=e@5hN%3&0>Ws3PF=_zWw=wkp&NRa4T>~Sf)?y zTs2;MjHk=(gg@orE5A31Ul?{eyoT9KS6I)|r`=QV8%Ot_e*5+>nIJshp~s zn*ZFKMuWW@>C@d=>wefvqd{6 z(HRbhmnH*)gL%*~K8#-@);4k^t|E2pRN-~SCYKW9;n93P#BnWo?O&+OyEVNJOR5Hk z*>kO@^Vtl!hyI+`P!y%Mnn>SoiXjMWP8vzJ!;aFY8_O$4yABj2fq&Hel65WS#)}jA zhqm||2{{PZ-8OU9oOrOvI6QN2V)dR4bYYHU96=4J#Kw!tjp$gggC6;)o+23U2AB1ZnKj-pnJjFM9G zZ_8gaZLQLuSgbk_Di!;l(rRAGWDK)J0){fs>1JoA4}fI=C+51+n%>eX_qX@-Pl!qH z^<(czMogY>m80*~q$RH#tozNNqNy!zEw}d9$ox&Ko<=?hgc@!JGP~?$QQbY6DV->Y1yTXm8@~ z5+U6>4>S`*;3lm7sjdDN>syw?m2y5iBA$<-v7|773jNNHgy`My2A+3Acb{cVHoCks zkqSOT3>y?CxhA4!ypJ1>UOcH=2yuZJtTj<_DD*>5?pR3wN>HZw^*l<8wLnq=UvRSBt`vjlmdAkee zeps^w=s9u0Odb*5F8WF2w8j4C+0@_3x@d(9Umyu{WnD0#>;6e*=eJ=TlfOn*qitzWH?PQeIH z+Xbm<5LW|-FySevBG?7rXe~*9jFA7>OyA`&$dEUleYRgT^$cWtP4>cQ4 z=XrR0zThw&K>m}#$EIrEl>YlXJMg@7vIk4A`ALfoN{lXdxhA)6ec&$lx(Q{EXlX-E zO|sE1pkZ3(fLui2k8a>(|6&F&4B(*GSaI*wtw{Q){lB~a^u71+<>cl2=Cuv|HOsZ( z08~Gbx8+EYKgr3Lg@QmTx?jx#KhT^i`CLl+9@q9 zjj+-z6w^O)M+-56g2&S>McA_Q!Q-(tbpVt!fNfS>Ry`N9)W8_Cv$f8PtSkl)Q~4@j zg~M*nX;yFt*RKG}Si&0lht6OWH=AQ24rDj42sy};sZ zlF%DOtRd?xAz7eiDW^36?7dBWdnASp{d}*q@Ka+8q!I|C+Lrr|Pcq>7d#B zQRsMWKAS(g-!Wp}Zj26ReJOc?>rqfX%*y1c5?*FsR#sNyG5-DbY*rTHYx-It;LN@s z(|)<>{rBlfp-TJC?fj`RRnVPEX5B%ARxuk^o}sGi8daaq39qVs|G$p=A$W9R7ghqc z*U{!m8iJ(m8e+XVwpy}hM&F(dq#3Fm{!^BvPZfN~@7Qj&1LE^_KMCD+Ta6Fh`5i8e z=Z@h3-<$sn$1t*o2Q)b5G_*R+|L67I?|U`v$u-p~t8ymMO8RLd`weqFof{@CEsg)6 zkPQkAOr0L{>paQTJ=6TTKS>8Vz--MeXx0 zA>JiYEavG37Toh+xJ_X~+xrgp?}FP0P$}&)RLn(OMn*Cc(34q<`gi0s0sF_Bqk1hVy#4a}Lw3$a za5Zn$-^x8Ig@)J^f2-ZHeKdTTGBKDow-1$ zJagpHY60B`T->XJ3|ZJqyIzZ&zZ=ecZ}-1-Ue12jzMy2hdpr@Ju6H7JKHcvKO9`+2 z9b@f;=UWy2m{8O);y&h7Z)2dv@*`>+#7tZgZiMYS--yb`j3r<;e-(FhxXUwwFN0-3 zK#r&!gu}(4j#xCKE3Hx(D^I)J#VDZovRi9u#+GDzdeL@LCE4zJ#;>11tHl1}4^d7< zS_E_t)=T!b^aqQgVjxsNFG47I0`tpXv->J=Z9=iZs^4s1v?GSbR;9DHS=#D)G zg&B^`KU@XiZ}J@faM#+IwR-{zcJ|%RSkRuSdGGP>@kq0D{Y&cgzClsr`wqj64a)-% z{@bTOByvs5t*C+&ErlJfIwcp>?Az&xi-;w-$bX6#9IQIFzHb1a;dB5nPS2wrREx(X{?nku)+2I*?lA&lq|KD}gvm#&{G zZSkely9{eh5kfFXLWIs+;LL`iBno7ry&j6_9_yN*VBf!q#(F((1Vz>d+XdT~ovl!Z z1;4j0uE@oq?y%6IH#orMq;HfoG->hja$2k&Ob4A@O)bf)>FY;96)kM&h`ZsTZ)T!( z@K}FITr<~^&nhO^c;4Ko*~_q>F5M{w-;dBuQFGy5bnxNYD`o~kb4q=e-p3a2Kb2vT z&aNlYt$S-R^^-yr_FY$kD-Ge80Z^gmA5^Y7X5hvZcMHKmL+-yU$L{sUN}u<|6wo8Y zwSF^ia(HT-bidZLUjdO(W(rN(v;6)Icdd)=9uCtfafOYk#hM?nFiz+H@OlSqol z?BN-$T57@CsaOlrLkEV!RDMS)Uc1#W6kJ;P89=}RexXKdV@3R@Fi|E(5z|V(qr3#A zIf=q%4DW>XIt+92GITM5CteTuJ2&7h0Q;3bVf45_=V{Gy>0!*N2Jl5fLOgE12E)UJ zAC0bAkVW1->5By7x5hO2I49l*kbil+NZ1c%VY9);Moa9f=!vp>9diu>xF53Q$+9|+ zwh!||h_v6GrUh(U^}$=gEk{Ke4!sD3bKfz0a%v+lm}}Gen|5gB>~V7D5vI$~)|5ad zE1H*n2H3nbRT57jSM|J2np@Pr188aH`URF#3jThTT-^xa4+C-v{$q?6$@pJJoiIctft7JB0P$yKRhvZh355Y|L4ss)!Nk>xEm6_Z()SeI z(o2ghMKj9NU&(iTM^z*c-ny~Nx^vT76n=>tHGTJz)57Pf8Ch~M+Be4ZB0)`0RimSq zV5RP*CZwz6YRw&;WQD)P=4iFbe3nX_<+sXHIC7OKA&0@3Kp&R;9N2BBf%q1Uk9D>>Y~!-xkGa+XOSxHUrJIqS4fIPQbsp zf#y8XNNcOA_#}FOo;=A=)$iXUT+dc?r!_}L<)=E(CH0a@QcuhJco0nSf%8PF2rlZm zd`Gsk@7G>aN7NHaNtKEX1E%sbif{D47Z0EOz8$X(*)X=zo5Pv)B|&y467i9@Ni=LZ z)eU}NYuF-om$9H@;i}+MBy`%SYa}SY%`MMLsV8!kh`C4zlpH=u4MV#wB6-3j9URtn z!l{SYZrcCfsYr`aIb;&zBje*ET326Rusaj&to{zaY(z-pV#f9xr~JiVnP3+D)A}d^ zb)CCPx>cGqA+xQPF}6Ba+&aGyIw6z4+O6qmA624LHYJGuE|K6im)HwuKx1uAvszYs zVfR<#$pbYZ&(hu?b4{CJV4J|jDjOz|fohvq{{SW_6dX93F>-O<+_R56PKB*K zecbGy6dme%36!%=k9i4zowJFHiqcZ@x}=Vw{KPO#gBtdCv3?9c;UHIYcxSq3EWB$2 z10X*A=9Ng8m}>$p&7zG>Q|5_QwO@b#cSk$r+-km~P;Gq!^3srWqcd8G_KlYle#E|9 zHWfbw!>Wp%5>&5zQ9P&4ho$(6ziS@&q&JU6yOdjN z7HJPzY(#-K36OGGrXl@5F94C{WR)(oJh6ketMVnQ@29Uo1KK28YQ#$&l?k>`&K+*T zRO|Rii$#xS7#BY^Bt}C(B&)_rO~9^I2?=*MQ^^Y`Pm}?FRiD&9H$qEt*oAZzopk<= z8q0o3+mV0$!K==NwQIG3G!%;rQHj!OwMk$b7Z;n50%@_`6L*{iudE9WnVu36v6+;G zWjG?de)?|a&1$ZwR5lV@)PJvM2b((gCvr@3;?Cv7YnUWyIxjGy-t(@1>KtyGxwCeG zfHx+(H~hZ7(ClM36-&l$AMGQ`$rNa3;#WHhmL`XQ2Z_6q$H2$mP(8{B^K1y$d0pIn zUJWHdLWn{nc5+`rN?Wnle|`*fn(aJ)Q)3$t3nrtEjjkxWs91uBgZP_{`YAq`7zaFz z36@?;6Om-~Un4Wco=Ksa5kf?#mV=Wp#O!*b5ORzU{MT|ZKEx${+gJ{Wm)hqptzU?p z2}do*-k$e&c*g?pcbJJSD89oUh;YN^Qb%A(x&&ZvhEUOU$+gXCXck!ciXKaEPuEE+ zL=ky0c#u~6980C{$}JAlhSKz>?nlHRF_|3Xpvv+k2Y^d11HF>b&EV{}^G@h+v1Yvh zn_^Ob5wJcPm@H$H_}TbO3_2=(H??y0Rh4gyH6?)aX9b5Xp4Ot2*(x6lC@mL^Zb}dr zFieerO}JpmI_xfwZ%z2iq7?TTAWPgtE=_nqs+BLSMPKQ+$LdNWCTde}*_X#Oc5CSu zN3J7Y`*#`WnTC*V#0Ep1MWw%VN>TIL_$AU>mn_zOlJm+usp`~(+k)`}qhWnnWie~U z0XV+nHrLVPM$)_dXxIuuE?(B#y6mF4)DmN*f)NjQUYIFS;-dV}+ZF$rNN9_gI#E_t zO+N-&V@B>rLYJOx7?P3w$lay*Ca&#r^Cd(r+SlQWiX4Yr^><<6bRg%!qCzaEy}gXr$G{h7!wc3rc94aNZTzMAYC<$ zXaI*2P=0Lf@1?#h3x)j}DsW6`3X6=C6c)O4C2Opwr?lI2P$3xH+*17;5EMBE3gqts za~q>l`X2aj+d(p`b#z2ld!$#f_tB`Lu;59z{=f%O3b5eckx&;LTj75L{8?^+k95}F ziibJax#kLaI;DdczHuV}vI=I#CGHJQ|56@Qq(8U)Qnj5O2eukye`fT;C(BY#IVxGv zgpnSGa5pJQeA6V-Cxv^vJ(2e5Ls#v{b)bbSEGZF;c-$z-Df`MWxDT=sFRd3eVJrP< zRQxzszcbbTF3t=sfm>3_ThBqz7z#;aJNPG+H?Jt(^;XF*=a+6GgdVavD-0=3!7XlnH8@%>bko|8R@QoJsC zIM{zBR6pp9T@=d+`9*LfH)7@Y>*)?VCvo$^sKwXr^3tlkH%PD?ep?XK2MgCuU<%)( z^;tN_xmzgj6Wd?9hLLmZvzE2o!IM>#vpHOQJFb;P?>;oaAW8-Sl<>QRsTPnrHTT!v zsKK1AMwKGd*L(X0vlZ?b^VHl{%h?~Oij0P|!;CWt!-4=M|sZVPTeIB_N(_S=N|6Ne*LiU8^E!&2?x6@MY@#4 zfgOogeIN0hx9Aauoweu(DqS|Ez{L}KLMdLVHag&qUFAF7Z$4?!jcAQ%x^YG2c|FP)is*Zs#vTil(86m-uvOU1NPg zpdGiYyj-&TR}tt$Yb9l_W~NBVhFr1FyrNA}!@`S9DWN{uJ$NJ=R8E15rP*$`_p1Px z+A>aYn^F@2CrO`?I4~ghWsO#$o{S{%8(wnCX1Lq%PG|>E&MrA-h|b&{eEA}5B-g@( zE-rWb*cwz{xd(AFZK>0@Wg7e3djiNcp8TYNmqc~4yYsLdihNkGhrGvAf1`w|P2M!V z-}?|i-c4JQlN|7b5ntQ9%TDgTWBrnMb_G6M5z3#C)p(_ig%c=^hiI5dVrmF}=gr}) z(s#LmP)9N+=v&&L>FJH!e|S7}(L5p?P#@T0ireATd*UL&in5eZ)*7TjchLW#P}qz7 z=>=WN=c|&B1WYI-vwiSy{6{t2S%v?IR32$~oZtxy8f^grXsXiSEIURbO_}l?6G+i0 zqe~s)QC?tUp~-B~?4TAeq^o9{qvBlRjHKB+GL%jvItT49Wv3D@H7yOwnO{m?|60>E zrz?f`=t^&M$%AXWk<~|x zp5?CVqUL9|SSNi~BhC-9s$wkoX~UK#DuX63-q*8UJf`)iIFWW8k!Ka6=qv_BRbx|{ zW=b!tlOX);O0Tk~T>Oj(OI6s?zQrRP>V)d(HWs7zYcj)^YamTr4f|HsN|7VMo4~0u z_LnF(ljW{o`=|bJUTo3fdo(vc8aB2L0JWn6Kxf`i;nMO!ir}gi5=gc!vRWT zm*)YoYC2j`yG2KGB?oH}3abzcZ(VX>x-nR^gWfEzt;HY;JG4crig+ZW008__(>4j| zY7>%(Y-ai1r_tPPl_jx6pf(qOarQL8qM1ZUUq^XF#>~Q6AmW}>Vpb-NXyt&^XNnav z&&>;ZHJ`or74|V8@7nMez8#5NasGftMP z@6ft^X*=dve^Y8yQ^-*>0ef2cYJ5Ugav3OE6Ef7#Ds`N|c<{-ogFx zsYk%^DgYKgh)R+FD-3u(=yf6pTZ5wV%kq{fx{w)mh|5WAk##h}a$hu321i*zVPNxC z-VGsd7pt6D)+(=q$%&>5=uPc_4%GJO6K?3yK&tX5%P&h!VgS-bmAF0Bm6E$b;rS5s zgT3f9wYS8OsgyHyB952X4Ow3C_?vGKou*qZ9MRM-%l>jl7osSm)9dg_YO8 zs0k<`5sV#xkdeFPcwy#^b{^0UU2A-U7 zv7!MffipaLVt!o%>=@ldpLNQueR<|^5KPwo6~O*pn|grB*NraN+hq}@tC$Y?+DYz=I4*#;EL6X18|0<6rK^wPj& z_?1+NaMGbyM?=!2m%j*x3-q4Vr*jP>P*)Fs>rR7yDbbBw(!w246*0t*{XqVXF#;}| zkGBps9t}}?(cl*pu_ddsjt@Q}(JVcaLg^!fnC6YFppHgx*enx1xSYWnUFMR1c!3Dm zkyV@e`}M+Yv()GtawHIvHIld>|N12!myxB;KCH-41DxkuYBR?T5$5g_B7qSv0SmFB z;VO%NqWpsGBJm49(YIIXQ}#UlaFQQ&h*Xt2b-=baLQBhqG5Yxm*7yupftAB|4q8DI zt9hE(nhswDa*3|b6_xo~lqLlwjH+RPt2fsWnL?8<&&^`ugOK)mH&6<+R9Gv3-9TdQON%-sJC_pDQK)eyo>ab%bb!r&E~} z#h&+j(|%7@{%s$a%n=qPO9BcAqg8h=M1!=V)3d)-@qu;Kwyw65Ox2?!f3OTCZ|9!Dc8rN4DR54xUg3XkJ+K7riTDa3Sjvx zdCEtz-lXi3dnE)^p^)l#GKCkbd_lBXf9qS!^fsYz5mxE=JcFhq`1;r@te3x>qx`X(z1cAzhGJ7sF?a8ex)h^bQ@r`_=7dXTD=$c z-iKk~gG^CNn=!#0YhTR;ubS2#wUiETi>*0wJW~{=X_h=i?L;C@`KAsIQhfwcJFmqj zD*L3J=6R)keC}4oUh%?|QUePy+Q=MDR-zS~8d4PpEd3=(h$ia*wzLdReM zj5aIf(^2z4FyV2qpE$#_bjyaq^O-{avp+V0Zd|jYP2!oW-OBNHE9Z?+^(F#B>E$f? zc7=3HRyb46=Mp1p{%ag^;hw$g?+7HVoN8`^>TEp3nqTqMi&O^v^FL2>ewC0^4syBC zIvi#>%s@CW{mj}+65*(0kN5jo4OSKtW{G!q?2DWdp_`%48|48Lmi&Eg!jTEe(I;RLutRid~Z>x@2V~`CJ2rG%CPURm!fjZb>2mF9Ffsig#Tq z0)Dm|%}BA`e`#GQ1c{_6Sp*O|RgQv$LJWG1XbZU_DxyZVPL54knkG6}t=<-#(yRvL z7rB>gB!%ed-#!K-#3t?^Q93$i`{I(8&)_gdoa_ihvFXV9iPA;a2=9(uY$XyV`z@&c zGB0|JHJ0KZITA|AW@jW$bZYGl;6OeWS>FI`o;d#nWP1Q3jX&}eCbR(n__)Ovky2M0VA9^lvIL(QS>3|u2-UyDbIG%=vnj`2+v&N2f-H>|Ea#Inm)b3avfFNO zZUqa=c~3O&%Eu$VRQz3rJ>KQD(#((V-K|g>qy+@$0l6+LGL{}3aAM{M!!d-xfJ^1R z61OuSpR2o%UQPco(1Y%CKmSC|rg-Ok$_8Oh5IGQJ``D2}YmqIvQKihkDt}shq{@CV zIMBC6E6Cd}eNrExBrrgN%DOJ*{JLxjEaq*Df`S4AUFsNC1}No$e+5C0l2XB{8I;Jne_yZu>BS@+a(el;O0^FKv|Xv>VGW;uo7l=(3;^#e(l zxA5t>*AhnT(KA7#!kOq1V^l%GjZwJYr;SVtn>gubA#r5yF~vOHjuuvqas= zZat`os^gF3!qrOpu_6J)SzRUZrrzsVGQ7&5!>sAH42K0h{)eUe{>{4j$bw zIt^eHz$G7MHqV2w?P|v|((`72?B#()bc;20h(15M^MP;PA1TnZ0e95uCth9t6K2h( z+_4hSawIz4Xu;Th(yHk*U#B0wR9tnJShR1m{Q+N8blnn5l{UpN$W&b#9=+{Q6I4w&9)FwTx5LR<0Tuf@i;Ws z>Mf06%^d}DdaGy1i(a)8onr1$^y;CBi5Fn%o;M|Bz^HGp%AmD42DnQme-1RN|C3b- zzl#nTYv_E04Ve@pVr%ls^&+oLiXilbuSUB_FI6$%r?TbYAlhFg)9blgm`UAaLds*y z7YgN*>Qy7RY+W04Jr2EBPr+5sGyE05%8p-p#sy6@V|R?NaDV|HZjVZFqnQ?EGkU~a z`+ds5hw%!JDhDl~uUW`DT;;SVyfoglA{uqnC4Mj^zT77O*?B(T4E!?|sd!`sv#LDQ z7X-s?zwoEnIAvnFq^ztjyVFyGVX$h=)5{(g&%$c04ga5KWRXs}FDmV#pyd~}Jh9`~ zV&~De-=&<%BPOMS@~5Oj>O4fC4s)=2ld;o%TTDtl_S)u*0GP~(cru9XX0ejW1(#n= zHt9^to!s|~*tS|AEJQa=n9Eg!$!!bs1EA{y4y@bZyo%Pm?6%2jK4U09$T%ozap8~_ z&}Io(_iv>eieK{pBBoW?dUCMOe+ z`t2jN>biqhN(l#JMJn;%4);sLm8@4Cm{rCITUju&@^=okT zHp@!y?wE_P%Lot~10U1KpLCIVj4cXMpq!P9ZGwV2=r~?4j@&Cvm>HX5=z}jkI7rXP zI;6nX9f1~-eSm8^yRZLtFYyK0H)9hjJJ#3@avCKMi2ieQ(01LU5=>-Oo&x5L)hy1+ z#99p&zh1kgH64Gyv+mcERTwlXP9W6*-K&mR=iAIo1~Fktsj+5>XuRgt7f<{!+OO)l zuk)6(N#63*76AAtG3-Hv6nT?rgc?fPEmb;zEKM|n`-p{`RM!wwkztBGys-A9fq;k_ zup?;+VFZ5_Wd_k5eLc>cN6XM=hB>?g`RqjVDz%$()@F}5vg4xmIUQD%@kHdXo*foy zOF3h+@?OuQSQPKpHA;y1m{?=~%ec{2f#wZtV1PbbY$v5ykHzdC-`Si3869BHJ8uOsz$&KD{08T z1L`F=o>Ss`BJyqpb3h&1603q9c!15`=kviz-&Q!0Nq*ePC{J?00}0adfkld80Er!W z^jG!u-Mb=mqc_~7Bv(l#oIPRb*~IJ+)~?GgWQEugYDvt4Z{fx?0Az%9 zV^Tac%ii}aCqeClBQ%pN6<7GauAYLq1rvJ-*eX32@KB*hUPkMUa|aQog*gY0AQBLD z^puQ-^`@{ULIR&rVQVy#JE(A+)Vss=A|tI2H4f@NcUQH3y1apP9k_m&g1 z-QEiq^LT-L~83@jHMl<~p0&#EY* zEXp_OOSn?vmv{j}0&W}paUjm`&rn5n%cMd041Qp6xYhAXO=!Ejbm=q7ekL(X%QZ}X z!Y=zMS}a)v2jw4<*y7Zi=fHSE>eWiFt7Qi4-5_%$s!LC# z_!yY^MjbYStZKF1j29V$KZIF|MXjd&dLi{!1x^{LIoR8k;!t<%ei3A?arH>}b!AyH9;5h=T1+ z#B)XS{w0y6M!RCT&|MdtWCuZd~rxy2upNo{GX#QH@8~dV6-31jRd&1O)jgMv0MFoo;mpUcMW96 zpY&$tr-y-VV&PWyKY35EQ2FH8!9J)vXYvy0{LEm~a*i&ML)~EPT%Udojky23+Q2b- zgd&E!9xB3jV71B*I-O^!JWzYxo?wEn+7acLaX&f`IfjNw1QT2VrJvsyX>U;a)VIoRc`6fKlnn-l z&2uP;HSQQ+m0aVFeoHsc%pBR)H7nC*XlCp1+0Rocrv7D}`EE(Y`f2^50$@T0VB;cK zBXv%vqBg={*BRBuyky^c!5kPnWzcKIeK24^sJ_u+1UwHm5w>^WBVb|7jKcSw`xQid zC6sW(>YvmzEPS-xGivn<<4*l{Ugq!6XNrX)oVp}6o*{;qed$xiEEdt%5lG~@BXa2e zjc{ibB|TOUoJCPHemVGoJEiY;!49sgUHZP>l)mPXN?1)W4O*S|26;#Q(({@0@I76w z(eUgPJ&TCEagu}vreO!>_hba(f!!#JmRyev{Ft(F+Q=G=I$qw{5p28`r9kOqO`3Kk zY|d#+##(e&;&V9@Q9E)^x@`!L)a#u2q_==|bwVE3v%|Z*Zo;M>g6!|p13|H??=CT` zXIztVOY(tR(n9KpJB?2!!gS}ucvLw7p}B!I!FyjX)Cyo(Vk5=q{jm#eG3`4GK2=HV z0Xce5>hw+JgL@8~wp}_Y|2&XBSo5t|H1v>Q36DLd4%O&b?)xJVY-e=&z`3q&;x2!)20I992B4Qk*hj%($!xCnGzH zs4^Hj9}HS*3%3Z+9>I~JB~y-DE%PU%uKr{5Rwqp_F7Tb__qD~Q+Kaj6h(3cJzG`wg zmyfM&z46X{EqJ`nnm~8}1ZO!2b(}S(gyRw@E}@lx;|f@HFFO3|;r8mTxCmq*NC$nR zH!0dEZa-Tq1XLL8F8ySGC826Y+x(z2F?3Q}0yUf}>f0gmh53Kuwwp!YsC>s-cyq&b zQa;WnMJubt-|YyD*IDDoNQbmtP`$E?QYywXO`5E|%pFyt5}m5geO8v55fINRAcUC1 zjWw8iX(E*#9#?^K$}XHtfV4XJ@096vHwj1OPzQ%%8`qQIcP9$?W%)%4!8XC~jJk@h z82$Z;93Q@@YN!S1juBGU8xTB%2<_$`(e?(Y;{^tt6s~#*#6A`LpBJF7+&v5J7@lZ& z%<14aEG`;B-3}=HDsHcjU5v?xv-lhrX2yUM&+p)@2UOXk!u!H48xbdpO4#(zd@1f^{0QkK>){9#jOlGfM^KD#rg9JrMO-FMe_fua+ zor&YO@;aqfWxK@@>ah<@SR`pmu0Mg4v(r}%kF3|oqxu>zp#P!itfJy-nl(IFNN|F? zy9^dwg9nEoVQ>lV?iw5hcXxMpCrHrX?j9K2IrE*h{=1pA@49yPu6pZzs-KQe39&oCL zuWuq23e!W!H7zxRAA=3Zr42P^B0vJ>K0JNDeAywC38uTWh5Qnb_L1_xH#QxPJQnjm zDZu{nMOLfX95vZy1;bRS4SKZu#zbr0dG~}IA9o)kW$I=^}+Un2v{oU z18VGC7m;67B9dN7i_RclW&cb!md`p5(dA+ZS+B0rI=Cadoh(5lJwo@{RoXP{YF6QP zz0p#c@5_9>a?76T>++TIDD-4nq(!7t|ITxqpP*k9IjSMnoN%kL+*hn8Il?98Vk~ix zhr}lKa*Yf&=)3x1KA%T0OSB+8qNs3La`%ZG0Z}DcAH_9@-q1FOkNT_kA+?_4q?%pI zC&7_1SlAYkRsQ&Tl@rKKdxZT)H-NEPv2~MX4T6QfIwHV-)Tg< zxh*S!OV!2q5L5iNb{leJu;zqC*$p>{>L_nZrqr^od(`Ih^%cWbv;Z?A-$!z(jsbmt zXufo_6_a+-JM@~3MtXwQsB4XtPHyMF6@7X1O;p|g@0ZHdJyo!T&?Xoou!T;kzjI1t zf9f92|5Q5W^V4Jk69WT7x$o#~4b(TAxzSLfbm#MYXFQgnHgkR>jPLyRORMvS2^y)J z3ezwNde8fl{UESu_Si2G`P>SkV7;?V>k~{C`hZXg}wj7rlq&luAx>)`FbgA)Cpuf0@y=yoLSGnRJA%Sg+pY-$t0GJV1 zJCY@5*gfDx_;GeHirQ~V}SDE zQUtp4M&8}}8QfKI9lk8kStcrv-aRd}3d&nr5dpgRVVWxU}MmRYsj{X;76ng zWOlDnLHWmrb9w|*sr;R*!wfqm@fyzOYcjks_x7U17u}@jRn{R1d;;lU6@ow5fbUP^ ze*7LLUggA9^3p?U$;o#x3%D2bs z*Z;iOPf6piCmr7VhtFl+fnfs?^v^p8*Z)OKf4$aVy6V)Tw7T4JYxm<0)(#9H5^rJz z8Y$jPs9YnN#5U$Q6yA&8^TK--dG(4#_%=x!Y%nvZO3MQ4i8w5HBtx z;wsM1FR+|j4(JQFaqRjgth+!f;EkhOcVwax9gyqaWwc94Ts8MTh>FjrB#bM9#bycZ38N~^ERi+ba^9fAKP(seF2r{J}o3Yhr##@Axs0ULw z^ZKx@7`&X>2~kp9FD;rPQB#jEcQ5t;kG2lc&nI~*r?_ECG5~=L*gR2Uv7gV)?iZ15 z?shZYzaSiso)Z>c9_sNv1P@{M2E~ZV&(d z(r&%lbhkMuq!)iia(SnKkDi4>b#aewpiqq6sO+3#D1@y zd~PWy?G4ItXbltYq{naV%R&%@b&z38D`#T3y2sA9x1%`Wu@3WOVEDIgv@sSM1{03) z9UG^>^4-vz+kr8idty4~i^_#~DB5C37Rq_2ahe%DTy8_L^!9eb8imv_ z0b8Qo0W;&g|AuOtER# zBC}NPWw2xlkCF&lwT_s8T!&q$rK|H6=+p`6cVDw74cxPsptkFttvT6OqhowDhKNd%e$+I_r-YXz<#Bnnl5sLIuK#!tAIl3FFH3oam+q zG}QwIYiaFU+49U~hXg$PN_FadVpFuf-f7uxXxo+Y^ypj@d1{*l8!(q02`@kIGr9B` zWa=T1USc6b^RJtqKmQWng5)PgBPb!@rXmCdu{d{njvcd^?=*x{E#{FxKgSk$V^>UZ z8z zFPJMUc{2D&0UaXYlZcKrLg!V%_+0R}t*iMz3e@yu72sc9&WQ3K23oCso*`b6>CI6* zn|nyM{uQA9qL)0r_|5gFI*v=V#Tw{>=8W@$n{YONx&Ld<}_9vAAkNQc8xV{`*_T zW4K!E2>6&%FNq$J9APx{7~?PBVZ@6o2n`&!xDcG;LK#ydU(gQ8zIN?N@J`0lJZ766 z#6;J3#L+Jadl?xKYqz*eN^8@m@c;Bv~xWnLBQG2DMFH=#wxXnM8?i^r_Xa-h(Zf< zXHJP(Pb4f!bi4br^*cX0P3Tx``Z7L4H0K&^3HoD15CU&MwPO*~1*+psEVAq9{y1U^ zWfl)6vmzJuyikGN50r|+k0xtwn?Ayij*gCO?w1C(6&}dA`B2Mi(kQx)T@w;2Ys zrkik6@N@gHku8X6*K^GZoq@%E?L)lS%;K5zuZOAp)IyidExU!JBm=RWauR*Hm$?jj%>A=)RbM-P3iy#0JFtV2NO(j9lK11qQ0wW&bDhB?^F9e; zK3luMXTU`@Leg}3zSGb0Gm+9TDQ-RmqNifh{3TYuat#tgm)OVCqcRQrVzH8bP6UTG zJrrEA&V5zoMDW-N5;ZlA)8UTky5lr8l#F(k06aX(Xg{eyKYVyYGE$B|KR`|1tvOhn zHa(>9FLhLZ1$Z1Z7?@E@@_X=joXF8A`rqP+0o!7O^I!o52pVk)BF=?QepHto3+>PI z%9v1$9kMx6Tu{^R*IhpM?hkp17h`oJ{cL&esYb@DT@5GGF$1M#g))=oQ4hfqZy*B7 zOFX-eTSQ5N=&7kXWDUu{;iAK=sr|KjQ{-lw)sVF{oxe5uWN;r)M8Tv&(~TBt08v+0 z?n$A0ohTw6H0VJ!bh$m?(|$2AE-n@F{*Uzz6alj9;T+T0N$v98qkn0%A^O*IXp2I^ zvDBbT4Q)8Xc7CyGzo=#kS!EL<5pX-dS{;kEFFOD;M}C}Ik-r8>&T&a&;fqEV|5);} z&mohM33}Kw5etE3N&g9BpX_MYDM-5Bp8cQJn_t;UoXGD+3`MbEIXF2TCOr2c@F3eSy6(v(CbvtqG9usA)Eu2YVWZ<+~y^Ly4Sw)f^* zsV&=#mj5c1XO^<`H0~4s#w7Z0VE#u&sqsM6(@~-d*)If~rMgq{F|4`RHF||O@s5qS zP~4GM&+yikbbEI;v%{}QU{Z%)fm_<^j|VFEHk%LVygDTlnH7sCB5s&_SSC25%HTAC z5=nu65L>H#qND^a{$TeZcX4K`TjJg~QHF9xOMCMXLu@i;@oxnvgO}J9YLmP@#_tVb$$SR71mQ&0`fm(`n(ye}uR9<+e2Mdnd)iWr9)xzvbW;O`=t& z#hTmo6Q&K{Vn=yeIs)3rMFL$sduL3cux^IjH0OE-!{e1BYrwg5EPG>B*gow*p# zZw)wjXao^6n!1s!y6yBMv9_J;t6}y7tR1j+3f^$2MBMNc@UK$@!BFH{*t3`@09sG% zo>7R`8O|dqUYFRc+F!F6UoK0N89-_O)XOpVsP1!DW>6zWFb47H)W{#dZXB{dncE4H ziAp?E-#=xPHpptOXEtsBf%^zpyIRWXR+mY1&~k*?y0dzVg5fh`{DtE9-H>CA+zdO| zxZxWc1W8*AzAt1Sb5F;`6W)|aj0rX?rdW&sTiMzsZnb{l?0TOxEvcVNUl=~o5Qra46dI-mijChj*9?Z3CxiGlA+u@AnY zGNO-QjBtUGFhpccDOY;Yv>@7khhLG%mt;Ji&Z*U;=(ZHBVEKWrpWHh-VZfyao{iLv z!QBySESQKpyxo*&4|@J1;#jY~AV^>flCg&A?#Br|MO{eW0Pn-Dt2L+_*HjuwSwskx zjQ^e(#as!pBdMMehCz>$w%8ucqgYQ6}!N1p2 z-PXrs5c|QTfWv#2+x62vlcv#o09>o{!%%MG&Pqj1KWc&0Zo5_W0o(iIo0o4@1|ol( z=>xfb<*wmwr1$L(Qm|^o0D|=8i5FJg@v{y%Hz@od?T@`i&0FhUW@J9G?6gLt?P)(e z)7%%E@uLUm*<@3cDlDl(AYBqEFRdPE5a|3Dl4P1>k$QtR3p6h>V&on_&)j&s`8T(>0i<1geZWbKSHwdj=MmDF+W83a7vT*4XrNM&hL>PS@%w$^RA?x8x1;c2*Sz z5La%wcX%$g90&V7IjMsw+PTo|3)b*Q!F2}Z*cL>(Cd)_*C84R27>n+)UHLDY-+f1h z$&L<;r@hhgaf;U)gYwcBxj7{N*qkJm%DxTURi*O18^>IhpwSiRgE^S+MSsZALezgK$d83wzl| z$(f`n1s^W3<2K%P^CXRfPP*%Y67@h-68NV_HMhL{!}DFT(Nv%1V9^(6*zm0au^~2! zo9Nv(pSl2{u-N(}*sT!?%0PXzss!*3jg)MDxI(%=)O|Nm{FUvX6P^&KXrA}s8Z!|m znWD=>ZIF%@$!B8HNKg-yQaK2$=s6Ia193@*a(d;T$-qD*)9F$Lra~^uu)#zVU~FCO zh&6>X=ys-{bfpe)9QsYNCrv-FR^~9d0vf)=hG9|XOtu6EB$)n%X!M<0k6!f0quxTB zJw|6$=!{9t(UpwuBr#DnR&xjxce;B;r-GOZg(*nGAtBXlPyAk^^&zj=J&~U92(VbF zYVRvcTr!FY%#`m!&u$cLVnT~%kAh{?WUKuF&!wMRVwS}PtuQik8b;6`NElq+>HgDV zPMa-$TVnQgcNHyl-P6Z&5>W~>U~VL%m`wzIzU_i?Im8IjHOD3F&j*9>oGNh>?HqTJ5S#m$t{=v&yQ zTvUrLMQocpd~&sWo82*M11~T`x2uf!4<=dABU{bfE zN;kTM1or8mNS)%Zf(UJ~hh{%{3X*OelalfQ70Cl~4+U=3Wfhu^F~z1jaAl|>X#%Rt z)yj$WT&N>i+6pd94!F`aP4Lttk352m{vCYji5_&lC5JWA@%g|s9Bzb;3UIL%z$+pl z$cjqWL_;2WpZ8+ljZE`xpO@>xqU&!9$4&)B-*E$=_b;8q$G60GG#wcf@+dWmkC>a^ zB7d>IcNwn@>Y=zwQg7th-DT-Sbgl%&KI6nQg6;dNvCZxqo*bkJED$r(Ce zG zeA1t&-)_bNo`#@L3AA8v+I<+PcU9b6Z-%%lpKWS}kaU14S%si^5^Cx}^?(V}2gD4| ziGs83(W#fpT2FF89Y-?x$Mc^$lA)p0Ezk*idjiPK8x7li#+XUX<>aHE^XP@O0^wG# zF;ilXGM%VtMWbY5PM}UDJHDYk#AX&yP>yEh?tJuWlUPed=B7<+7fiPU%~GsClIN30 zA|4LaKYPsN$p?CS!3fDOq(j`_7@#&rjlZ1l@=DD(7Yj(~YDP1U9sl`*pd)m4psLYU z$HjZ(jIr$iRMHa-dwLA~Pl&x~Db6i!|6u&D6PYRHML-!h!RLE7g&0Dm(;$C7BULJ_ z>NIrD%%_Y8#L@En0;e^`75+!(5FE&0%&bd#OpT(eIy;MqWP7_TrSHlIg!!uxarJ*+rZ` z8ng?c^A3gY&RP1hvk*#i=7}M)pDrmgp)KN)`_(b0giFZbqP4}~>fm1@L3#|ls8tm$ zL$<6T5`J5OlQ@%E55?7APP2ZAI9`Z*WogkqJ!{h6bJTLOmcdLvUTpn5c?w(1htX#m z-pE`oNNP1z&XL~_Y>vA^;Xjg-tA3RYP==$#k1%5Xts?PNWyTohyM!3HpD$wFSgh6c z3GgRopoeQN388t4i|o{k*QngxfGl0MvLl*ZxBVw> z>!q;q4Oa#|j}@kGZdO9g))r;HGsh)EPjmVXjK0s$tCZ+t8m%bKYfl-QTTVRQjNJ~g z*?cnRd%!K(?&^QG@);bGx+5-uTh_`)sFBrr@35pEPr}op3R$&ucbm`3QKamOR;1ye zI4(0iI=EP_LZh~37s@k!E+-W)5^eQK`Q5(pM%NCfzj2&ydL_EH+v=vF>OXdXe)q;N zJKc7>{snhPK3L?*u%Ht>szc?;?hKn&;t2}KCRHIyfPdXYK~GCSN%l&Ft}T8@G+EHX zT{AVE7!#YFAx*d!5;(k zy>jAx3cGp^`KD3*QEQx=b>;p17v5!#ei!Dw$Rz+x=)s`#l*Dd84CrHF@sHSVtgQ9^ zuAjo3;I{)^5App=o;%L)S=%+_H0KrDEc2RB@V}LRMZnXYy@@ZQ0_*vw0CmDd);#EF z6;u70Ht+SA1tGz+f-eUxJwZ7yFL)2PQ*)@wBF{s>y2Wg-ol+{WdA*pejit^0eKCrO z^r6Pu>t#)y?cA8^u1ki-c3YC)urDWiUmPNd{-*=>b|V+QJg%+U#O+rP{Za9Py!r7X zo$+F3<8kg}A;(5j9}-_az=HGSGM(8eqcr7t!kiLQ%9Z)#Q?r*}P}#G*%ob_y$4`@3 zlh}!(UYFS0BW!7=w8z@;JI$DU;qft(BlSi^k^Qcp`vyF6y9y9OiTO!ao1Kk^#+r^! z@WTzUh9z^OmwtDTnDnP$18lA@>lm7?X2GxDjEPC~XVO+;JuE6B3|%Keyop0ioXBh! z&(Hsj93+8ijg9F-VhE$_yyTH-54h1?nfP*@tEi)ah_-l7Nt^{oty{ANYeHLuuf3uo z?XJ%GO$B%_*p1O|^P)C8kB2|ATy#ASi%nisa!&Q) z^<2%%9M+BGh)PRKJCi0CG@g`?ebcOSb+#R{``3YB)pkw)7Xff~wh}Xv^N2;N=j#^! zQK^7BNJjt}-xS2Zc!Wj^Tb*AqQ-?wyFgdHXoA;{DSC!eRZk)F)mY_B#eFC(Q1l zBLSxwKhLxo;keqYk5V22!eG3!l-N#TbKIksum&!>5_K>CG7(k--X1a%zq&rv>Ae^O zwE8@EKJ7ki6wR_jhin~u&c`cf^_*iHUk_7cqy&@KpH0#Qw7!3VNuN=_8qsKz+X zHa7)+BZ@b6T9MuJOm(}IR{XcdSe!#QaU|31v%3p>JVuY&r(E*T3I z?r|VwC6QOIjr;CU=RHQ~mI_JCBoPI*0W|VSl)TDG87lvM8E= zvjURkpS$oO;jgTQw37WZFf)>Xh^#VZ-VoL2R6_V{VVh8u)vrB)Zhrc3RvKe#Q!zGn9j|xA zW^Y|DdkK&AH(ZN!ML=T@T`VeXNSGkA&NedlGW*I712kxwZ{b0$SdXtvS7AjZzwF9p_t(XqT z_6>{Zo=9x{uuND&NJEK zevb)gXeXE*COIg7w9teTj<1I?U=7}EC$!zR|~y62eJUIyR zo)0`RV-QZV_x?n$j__GtMH$5$$ZKt|G^XROT7ta*1?`%ffo%3qIm-O7Gn&Hh{c+Oc zbhatmtx$T=Zwkz$>9pGgX1bj4v_CveFU*9TXEYo3-^k*#|D-ne!swQ7!dK&VYXiei zFV2Ndep$6&tn!08ph`**Q}liLx^IerNn?jlWxYr)MN03A<<~n8nx~wh*Mmy2D~jvu zE2qVv6**YgCub&D5|5d2rOk>c`|%lz*WhA+a@Q=|2RG;K11n94O3ddAm0Znfa!%i zUV3S!c}pwq%ZLlvNL(lx>FVq{s{UjDq1?;iRK}_^;-K+(GIx=qOUrP6lI0E44|RYk ztLIeFrZ!{s{NYWl$?RA;M;jvuH3Sh*xmx={T-rG{c)9Y|Pez}}xK6s%50SY)m=3Us z$F`0TqWjxge~T}SREFl?kV|_>GocAN3pQV!QWd4p(fCtKhsH;(RVOmnR-nLGk8+WQ zO;WA!&clPKx-*QgBUp~kPey9%b|XNJyF>9;7v{V|W8X5(2=eT?{l(=9dVaIE^9OY6 z-JC52;JTv_@ex-K8Q%PLSZZ{oBJFuLwAO7Qpc;wk?`}Zv-2kp?^7>SZ%?j|l0;1nw zthF0pKzeIo89mpiX9AoEb$*ZI`bHsr;FuUREWxrhKD=LRDc37qHzK8Iozm=K4%4~K1+FVGe2s6M4{_BAON;D?H;&%9}~!i?s)ueneat? zi6?#L9^JRPz3dmPaCgh^d&thuZQM_XQidbtHc~FkbFUlldT`%e|42`7Y{Z-jd%$%+ zM`sv=+B*zugv`=k9!W4vh>;DN%r_%;z6^kZzDsf*VwCr`a!m*Anerh-C%f!fCpr;! zUI>W1Xhf}y7*7PpSyU7TGyVb5v(sTHQWoP1+L03qrke(Q#-ZMj>78)DJ}(YLNKl); z1T0h?4LSDSW}ObjLbg9uD7u7eernhi!mvhewT zazWDr0vZ|*k79LFo;)MMrB;%C*K<)NO>{z`^`i4qL#j|o-K~IOQ8@IM#jd4VM_p=8 zlLuwuo(Jr+m6@{1DiTn0K}kbLS!Yob!fuJ;;6W1+QOT=O3B=yV7GXmmlZ*MOlNXFzAlh+;}!25p$T555?Gdui+BG@A?)8Ju~rIPCOO*PvMaD~sinTQM^^ zQ+c}gVRiC^$%bN8rOoLs>u0f#Pq@|?ykHJ^59Q<2qbq7kz|ThD9C?p&@WsrsvdlVtjg1h0kG$J$%N_!Ye+RA;4IB-k4bB;odmy`ggLHq{&#b zQ=q)5>%Y`Z5+v~2%kf(xW*RSC(alVA)B_+oRc*`M^Zx1VwcaO}WbWsAKps`d7e2n( zww@MrpumGEFJutw&*SJgt$eD#z(pq(&xSiyw(paLj?28dR;__pt;LM(&{z`Wm0Z-5 z?00o_b@Aqp=|^bqkxb<6?S6V@Cg6I~2TsrHpGQ&CHW8}zMmJRVcV`Qg<~BL3Kh!G3k-E@Ar0roWyYZ>n4WoFU zY}O3O-K{Tv7arMMN#1t3>M+&$6A5zmAh<9_)l=^(WC0V4TKRCr*6enc*GH6B4vo2g zWii5y`+D41g_-4_NO6l;LB|U$*D3ub$Xk=xnCO8x%s_VtCZb{s(Ubj*O)Nu#{yjJ3YNgp?8M3MMRpRzZOtc(UM=}^HEAEC)s%` zC+5-W00Snss0U9-S4dQo?ulPu=IB@|5-ubf|HI-Ao8`%p2~`-M6dIqqrDKD*G|Et6 znp!$XY!EmrI&UB-;iF=@nfIP3C~IJeeTc*;OTaa+qXO@|ipAW@9f1Q3N0UU_thT`UKPLAtzRP*aQHW40 z?k}j$wTY{-;JDNd`?f`rf>77DbNQ2MnDK40nP*wL-@A z`?K8EqX!Nq2A+X_WYtf z8Sk<3apJgq(vhIpuQiEn-ft{Q_`70R4@#JhPg|7LYiIcyqU>l8i2hk(q%sJCR671t zH}T7io_s{@E!)Hqvoj3n-7wK@@ZDP#TS+kO-#JMY?^*4qCBJq!?y8|`1<*JFn%}0h zy)x?;z-xQ9?K4da;W%OM9jXANzo4Sl=3EhlOoVh`;1+MhM%?-Lj3@fyYV^h*5L>M) zj_d2W$C>*9uy^>2`T6-^>WnzM!;^%3DmUhU6e{pvqT_aYc+_y(8tai#eM@80wm%Tnu$}KNE2hL`&s^nUh8x3ckaQy0A~3 zo(cR!!oq8QG0OXN>0`gut;X)?Eq9W z8&H4R9gZ1Ft^yTs5^#EQWjeLqeB-0hj<^t{4SiNP~yY(Wb{mNAlx`N??@}9k{Nb?VK+=s2qk4?=20&ZJZ zN;(mvK#~y5g3!QU8^;M~$;8yOI|7~G21d?$hlKUK7cHJ>n`7z$dU@Ws1PQE9?M)s1 zw{Z^m{GRTv!tqYuU~8SwoiENtijzRo9Tg%QKWG-6zuV-J`R0=OtTw~?bRBKfA=}{h z#%_zlVE+&Ufvk+;iO{)L$Mqx-`0&b1&DNM}pS(H33` zl2(xet?WZ~giptdSTd0F&Vt)1tia^dgyPNn!|BCGGso(cDNlna}{DG^4a2G zL-iNopV*Dq91)tl-a%tf+ zKqi%BhSLN5Z_?NL^)c7o9t=tAW`-Aqynxs148JV5iS`I2p2|! zQYb{fUVoBCQK9qqMR6g*=`F-Xeryc;lH&5$qCm3Og`XK0p9Y%cfb3^Qp!c+1+bL+=QWd=#b50EVx!SpOV5ng?F zGCzrtKDJLGdpF;5hR`unM4E8cSq9jh*YF#gTk5$x?Y7yU+YxI`=QXVLd$7c%V)|oM zs0vVyPQ|7sb084|p#%!1r87+i(0DS%OetMNTTRxrvopsmgD@ zy(*rDu4lL>8q0ao@FuKI%XzKG;5G#B@@VdUC`OI$UpU+yKT3gAluZP2kt3hzC`=6k zEuZMDsB-cTNA2NCxcZeXZT@c=m*QiBsW4T@f7^W3XQGOOBn8~eJ>@oV|9r-WE1Jly zBz`8(rSsf|kO=D;C~oZw@gd`#hLx-hMeHY9CO(x!kT*3KdhJrFER~&i?-T+ewywo zXlNw);`{P3ii`&Vz&5?v+gv5!|K=;7A&6Tbg(Bwn4rsP!zI&E-Ys@Vuz^SS_=QW>_ zrAcUMZraKXx}ywA79v+Y7|vpW;@vBoZX@EcBR(x6QIe5Lj0aMLv&Dcub~xNmMqM6d ze?+P>$$~!ZG`bjVXEon(wYj$?$}L!=j#y|lPp^Qi8XA8MrJb{T;NGPQGBG96v`VQl zO$C^d#7@m?!gTNdb-c3hlvQrJnLkt8hktNeR!XQ-l*r@Llv^au;m1^Eb+0wy!DH=c zkXgXY?eOmnmzwD=L-oI@M#}%e3lGbW=81`oY-n6eX_0(}#7Bm#qT_5mN^!*;b|ecO zJ&ZEa`e~rfRe?@VtBz5REC7+8$IWo}nrM1`If$Jq)PTBuy2qF5r58Zh<%7>{{V^uJ z0qDPj2LW;0h+A1P4Wlw-7yae#gafWy8I2a(*i`Wz<#vr>iZsA@ADcyOds&Kms$LuH zON3^c;@1=?@e<2j_*PO67)q0b>AzmOp4A;<%V%dU>3?y6`TEep@0%y5Svq}61w>c>FeV&|~SI7~DjBF==9YHz zT_Nbo#JI3_`*QCSbKy=*(rC+v#+FNz7#yW{;wFUVaFCMrkM!{z;(E81Ho?ymuOYzRrn%?DAVSHC~yGoO1UZd zCqIXqyF0@gpZnf)_0yS69{+H)VZ*cF8GHd-E;Zn647-!w>idkSJPs%1C+jv8TN*(*9DyhO0v4JIr)+FU2{mBwF-mmX`6yqAR zQt7^Yj~N2wFwQd-vLAr%ZT2eaZ>pW-(vJ1!WP8@wcZu`x?U?VfZtcJ252-mJ{)shb z65o25!60MV?B9$Z7dK`CyM9LZk#b5I9S*YsjIqlijTxmfT;BBsHtd%emb$C3e7by6 z*(|J?a~@`YK)eld0~Cmwjppa9>O9WTZUhm{DTh3;7Fs&4OYj9)ng{s1JA@AfFf zl6xAA=gaXN{$fgV30+TVlU1i?-5 zlQU195-K_YG#Yh6i#4+0EGu;G5<;E130eMR>!3&Dz1#BPDk`1)=^1xTe^H2JSbN3O z9y&+%rQrUFv0Yu7-!5wKs1;vGG`1XuxD~G^%NpRH#fP7h`Q3X$<~UGx`(tX7sGBv! zhTAvb*G;Y!xx-t4dlAa07kHr=H!6*v^7w?@od0v9x%dS<1ykY~Ng`7gTu~_S0|{|L z&EFK0{f$W{;Y#}7hXWnoOaG*nQE9!C+j+FI8-i7q-Y9ZdQStcuF-ISDL9)P-oAC}O!0Z^rs0;l}sg41*8^+ODf zJ}dA;`tYRTi5}MFET7kIqSK*KUs`BhM+2hY+uU{Q;UU;)uARkwFHZXJ<4DipK^-%q zzni`<&4%lYWGaV;qqWm(iSV!gPYd(g|vFcg&i) zkJBqlR>g|;D+~Xug@&oOb{BVc9H|W)X8usg1nvx5fI@_q+J_wvS@%wlLUpchM4&o) zQ{rEl0W_nGl#Y6nn>g{AKRhugQ>qKi?ENGK>Duz2ZeCcVQm>HTjvn!+q;vWZ z!s$t^!4K<07o&%R%%Aq_g5~h)WDy-by}3y6QLiWlIcMd5ppEXCug1;djhqq2G~a2Q z`90`eULLJ12YLBEm{sbueeQXhud%=ELo_~^NK5@l`F`++56S;+ zLZluw$?g6I;Qu%w5}k72eU;`1W&uS&yMP8)C5N!E^j)+(p>Ul&`w{>L)Iucs^2u;n z*4K*9+DJgL5!iH{#?0L~CvF#OiswC5gGePb?xqufGh|lC;N-8`<)OX+g<{*%z&XtJmaxM2HAW2i4`xq zyNRBL%aevl)tol7?VP&_k$hmz<6&mx)XS=0&#S!rZ^&Wj0Sa?xH4+L;qMr;sx($<< zRY5=iJVq6(W^q$lz9D46r0xm5_}n0-oIaza;EA6@yOCL1m8M|0qx!8as zN#Xiuat;p6*UvSgIpYee1~-?zA7?qP%yLgHe*%0bySeC!6CCL;_^yoe?C$(z-N~8>tgNdb=Gy>tou^(<)K7m z;PKs&wEO9HCp1a_c?!6F0xkZaK4$yLipgQ9N}?Zr2UY)fl;l#9AILcUd=okWI~i!l zrTwYpSCw#iRCqI*rg-Yha;#2qT#cnmCj-xx(vvEGN1K_^^+q(*Jr^u;oO+XORW%}8 z4l*5o$k@s|ojY|NU)NUv={FELd?liM3*@#ig$5EDB?pKB_`FH^K2-LGys|e%2|H04 z!z}(z!LOgku^Hs1W1doo35*h_AoJIyt5p1{v_hR6zWsI3zyZ2MBd*C)l?Zac&3AQ% zwU|!iDx>tR=v-1%Em-lJx1M{tFe+q1kW^|&(C0-biLI+dd=9?D3;h9?;3v_G%rU4=YfH) zm~y@79Lq5(tn;BtXIEukuoZ=7UBw?E!0Fhi*^EoBycPC4!HK87zd_VI!P2$-KpzfX z^bgR~Z#)?6}E8X*fN#)YEF{6rG?Vh5sd0Kc^;O^YfQ?RES>B;K_6 z1uv~pw$$opdQP8IvWUr`n|pbO5%|08Xo9iE-^r8LHhg$lN|}p;<5VlO7K&&Is9orw zOzY3TJu0ep#nJfS>9U+Zw|9&KOD(wwk4{c3(?{e|gtR>4d6anr{}a%lom}>drJK)8 z7eb`&mwBq(qK?YTe>Pt*m0O;nw z9MkL~^n00mRlx;7SVGf%DsQ!#oh(=LzbyEx!U+iDs|OVZB;od1b~5MAnQIb|OAo-h zEBK<~S2#EB#XXHX$!W?i!Wuo!9Tkffr##6Dd=-4&h;XZ; z5?k=6On?`^e^ArSU>CMI-{YAI(?qs6t`C2q6)kz9X4nx&m0LArRVhLi$v&MxP)aZE zo?*vbO-{_@8`)>J8<5=Ci4~&;$Y=6mrs%rYi(HnHBjq-fBIhU zmJz`s4}fauokCt1T5Ugd(JVmoU(z z7|sFtOklI4=!W+J)OXYTD-CQn+k2j@AaTZu6a7}o*%{s8M7+Fh_BVs zrpi%H#)4QOyxf;>zb!vr53QEB)zYs%=6-xxfoTdgeRwWjGeKNYa9m@>O;-FWNwK23 zvmPv^*&OL3N5=}w&WCdtar&`N2_E-=9>cy|bR7ScZu$mO*_it5v-8L!Rs&|t_rAD6 zK8;I;!Tk)8J;3hk?JjKZCcT3W(z@M!OgI_ePR5^}<26 zZ3xn&9@N5Dap0{(k#`R^m-yX;oJVHX_RBzO>D<>jGGDR{uQit`AuZ_rWOXqui-CV} zpsr^q)~YkI2Ty}P>EhjZcKmQZ<2Tzs^U8b#Ux_C}hYrQL=bnoPAAAtkUVAO}-h1!TSlxNo-DosC794$a zq{Bb^`}=YK(g$$-vB$zW*VMjhT~S$kd%IfBKObAR6yLn*Ml8ADE%@3^H^X}$-*R~V zznoWk%OT&^vas1IzE9%vF$?PI$C`m`7Q5E?Q z#_3vgEZQWam2GH%Ze;>FSuAIvIZUg+b!bjQ_P4(CzB8uniCsIo0k{~AQ=}W61Df?A zP$8#M&QMYx0BK7qW-YGtN%RQTioJRlz*df9c`GUQWdNJvc^4g+b1wY=G6>^&f0BbD zdQe*q_spKc7BO*QTVbVa&8ICfx{eSts%Y!jv*g$)=%?{0-D*vlLJ*ldDo5YpgbjiC z7DiGRF)1k@J~1FtVQ}xU9Fps;W(0z~=I6w5$l(I;0)tx#bWoJ+%H>xhAI-JxJbl+iNmwV{Od? zskdeal4Hd1k!Wja$H2e<(vS2gmZp9EK$8a$h}fLy#f$9$(H)D*9f5IC7BDynh1fRv z9>$x8)s*E3fF>Rh1YPROuof}u_C7`W_aMx20M<09KTxS~Y zI#;}O@9DohgLUiHW8{btrL}g$XFrcimRyL@qej6u8fY{;e4`QTAAaOfoPOFXn&?a2 zwZwtj#C!HAlN=auBU+Ka75(NScnMsxF2^e;i#+E%G?3Kvx1xC2-_lRBSCx~<>8SCL z<(6%@EL?s~ubeD7-m;ISm)1t>L*EZR;4q9GIvG2+bpc`9NXq3ygzmUJjz`;}EssIV{#+%xv?Xm=>lma)rb2@3;jE%Vq^^Q4*$PbK%=U>G70@F{dEAF&HTOUhE zhl0QNg`4y~Y_~;V_sOQgs6|_HtVBP$`Ji9uODPJwIK{WmA`ORB9(eTj^kbmY;fRCh zm~%?v2$jh{IX5Lett?k3dCR)0a!FrnZ}G9@&}dqEXf)I}63Rn!0CnoLdOk1~0BQA> zj1tW29%{tL&aHac&H_j26sv5b$!0lKYYZeXTYaRBHJRlCvTRdjD@jN4upAC=v*+}^ zv1@xbXzPR=1_4wAHHw78_J;T6w(uhI!Kk{H2l%r~}C|mG|p))I|jy^ozwp_;L zbIHHO=d+Mg3buaLv}AFE9cV>J0JTGG)} z1%x>~(PYxryK^po7nT*#YKQcC8c5`X<-%FCHE*bal0{Fe%Q+pYmr;qu+oH*7$nRB= zKppUwye$W9MK`i-73f>^s%Y{)RpZ8a4;wZdt>Hqti{(CHY|~;Oa3$LX`VQ$k12_Ji zJ{{RJp&ep`?*RHS9BCLejX+JH&*UV%;-gTAMzBpFNLfds6Komk*yRt#IO&E`bYBMg zIERzB3V_bXjczRP%!ehrCXGExH#N8tSC%mZr$Kz_FDgfNcd;)wZ2Hdm72}?!P0^vZ zrypa-jIX`Ma*=(VfK*~c6@BZF?d#&ORwpq+wy)!ewDuAcy!XuxMDvO{(5dpEyiS6z z1xA_?ISq@K1b9hX^5=CH?;JqNvfQT?*;rYMWviSXmP{Ntq=U)XL0d$cyt&CLqa0}m zK7Xt%y+ImS{NdQw#RIEbkFybWM7aV@a8g3joY6emlhNBvLNsCcbD8 z=SS**;zBu_7xXd_#U^}Q=)COn9OD=L3-=9oc{9IcX7JW@#sb5YWDVJ=gIaRpW6Tqwgq;uZJ~fd1V99mF^dRZCpiKJs1yYQ37AL^B2D(?dol!Y3DHXhY3HZh z$Ailpl@2V+0T0O%MRG-2;F(OxL6pH4@;m3~!c~ia(#>0B9{lB2Q6}d6oO3MmNW@*V zfR8+!3uB(F$_`g5Y68?a#?65S$=2J|hu$5)QHRe@vawHDra2RKVFL`Kz zlcZM%Z{^ypBNy+Zt!F7C?_7(pLJMXPNQWxtGe_hk2;P~a|l&Vph~8?vRYuD zo4{67qGc_X%$mco7Kh}W)5j{4x=N>$A8P_U$G{ZDwvcl%f+nB?0bFPslML23ZEflG zX$yu0BNWZM6t&a8gm*<>NjuTd-AdQ8O0tS7^j=}vTC&oTYb6e;|j@gquT$iMCduuz!4xeDo|6Fv= z+ggEBvZKDMAn8fk)SuVoGLbrK%HqvwSlN)4d2l^7z4`Y{ZcOR|d>!XtEl4fuvGn7gny$RfetRE)(L=_g zYiCc2Yzd@8WLofUo}autT{|g<<53Rq&vYI|^FE+k>RtkMB--)13JcE*K7npYuCy(e zw$&2Lbio+G5e7XXaW)Sj!998mBzMO)?+E>UuxqMdR^aw>We@3-{zY-xAWTj=Y&!YE zp2=^xw2kGGdBN(FcFb`yjj8#%m0NJa{8OS%gUJBuV42pwPJI>aT!3Z;e%4yi=xMf) z7*zL=yj2I116NsIl~&aO?kZzh?KOogIb~`ld00T219B@us2UJ0BB-l}HBltJI%B9s zE;9Pj#xFO9Io_OZRiq``j2kl^FJEvbUVLsn`(2x7(JukGi{(H9&=Lqz|IjC1XpYe_ zzto$6kuG3UM9sn2xiVh>@%dfcNffe{GoL0sSZUFZ?Bk+@K@27%(GVGh2b0SsJ?Pwr zTA%E~yaLlP+1R<@1RUZMb(^;7_y`2Az;s^;rw9Oh7TBx&bcyK4nwE%Z_j;i${`Q#jjrIYMa#mnL^dC|Ff4MYQks>1?jxkbT0b08vl zTYx0%CCFI=E)A?1$l_5)&N`V{E&{NeQ(b27db-N6vN!?)Nfu z@90OP-xt6Bri-^80PW!W5Vd-K4uHRV!Xv!v0}-PlUZH5?oC`nW2q7<(Bk}X{`T(md z@H#jy_A6`e8L)>xmpo$BBVF9~Q64b)NuQ{*ccnT+hr#q9TJqQ7^ecOEhb$X{ci}tf zLj8jNLC->-;M$6Pwa9~Pm~sgwD`^~PxRMTxN7OyZ>Rhs2cV{mqkDiXh_M6)@@3gsR zVGUmc+WOK0ILi^_`df5lc~$Tz<;`K6<%BdlXy=j+klDh@rCS!zg0scvH{I$S^83)Y$tV<-=&^)7L(?TEFRiodHq>$ z#+v6h7g>m7(J5R)y}~CnKR3%!B%D4SxO@Sa1FhIMM%BbBIUI_%fe^V9AD6DCB(K0C zZG;R$&@bBo!9mj8k0K&oq;`mH$$63UNY@u!$RrRmhU8E}P*3`h<6$z#tvk}kC*J81 zVMNnKlXyNZL0?j`uq~M?Y^Skyao!XI8SNRz&LKLfom;zr-ZmUHyPSPkYs)&cb*s&L zD@c>Ha+p$;5#_R&96ngir3wSA?^Z@cpCt!k8D0uyMbR>{)M!aM8f~pl&cR6I^23Tq zw22{gkaRTJq+`$qQ0pgcG?;#x&N=5SkE-#Nye+4mlZoq<8_%4R)5i0V17~CW@Tu6j zbyv(Dns^g~@8h|Pdp<$Fh;K2D4na1xV{x-j*8@^iO}>D# z8!?A{h{WSo8?y_N{4Q>vg*N0IfG$MtAp24UTv-Auvp3=KT8gzZVFZv{afjh6`^Wrl4WRX5@;Zmi-L0l zruFB%tij;=OCHj>=Je9j2q zI)#jaK8v2oW{FPpM@`p2LLcW6&j@lX@#D`5Vz1{1*S{bQCF&?+jyyr0E+Vv<4JA;o-(1} zDrjwivOaFxL~YXO>1MFV`N=sYWvPnFWtlbaE#B68)@W&MIo4R%$;&KUlIE4s~<=M>15^Ft~j2RP@IIUnh8G+@ukST(UUCm{z%8z@a)S*|%Ei?)=lP9&o7 z*4kTT*0~k6<>ae6h{kbq7h?UYEvdh!aYl@s3G{-807_9-Sb)?yX-}L2Xr=zKZ>f1X zs|kVxIT53C?|ppRVRAP-%ShX1MO&grAS^PWKs!hp^-nepU>oY$C`6k?TLD2fW&zT% zAdp@#<;!%U%OGd#P~27=9Wk{l|5uO@^EJri$wAZ8dC3mo^M}U8p|7_eUE6ywb^4^H zd8!>U>dv(-$w%X;V28GrG+fcviTrK_cN(T}J*+jA3+^l&kb320ZF-@UCWK}L4Ircd z^1OJ%krEKntXK^la$SB zqw%#Ci?oY14^BSzG_-aPD}EE=Qe;YTY>ZSP7G08%1WlO)Whb8GPuER6E2F5JfDz!4 zd+0~H0!ao3#?!MbgRX&)uPS&Hya~Kr)Q5O`mH{PslWy_U6Cadplk$(`WYV|=UD>q` zI2W(QP?@KU$s=YYo@GkZoa{i3IT^^u`e--eMe~C>9M8K2-PZnX6ZYHp037y`c}-wx z&CfJkx&zPv+5%f^9b5dYHOA|-HD9Gm6-}v&)<5S^Exl{KP)e)Q+Gx?L1Ptx41ecyz zp7Sy(n^v#!(Dc*#avk`e7L91~Xgsy(K$BUcmzywBUk$J|M<5rD<;*pCb522PFWX7G z=IlFR+(cY_?z=IttsMgcjk2?7`XQkQMfQmLG3OdF(SwECpa&fmV3o=WpAvI|5}km3 z0RYLKAOwwoN=yl4>CUhM=hJ8KD1nBL{fVw)cSJECQP3`J)A@M!Rdhro8@L_F)`hDH z{xfD`F3LcVPuC(+#uYOv_VnI#2Nux|vX{n{=@K*`TX30tkih}y?e4?K_VIY<8?Q=w zDgbG%Z_Q~)EV9xrJ57t5&s<#?M8T8g0!J zYy33_l$%6#bke|*x2c+_n&-FZSTbnm)+DoZvL;xSt#ZzAHjuV>=xu)S8i`M+9oo=el&7>U#`sbh z!uFMH@4>Po1i2Cql7sUtKtB2%aPv9VpZ_kUa8MNK2l;#g|8&N(s30$S$7uJsMa5() zJZgO3dvHzUQ~Br$x!HCXZ4DyPXf%N59$SSo7rX(}r|gjhQ7Y4-Y%S2KT4&U*D#+wz zbgp5clv(nZvQb$sW3Xhl=0ux=ybF=I zN1_oU`$UrfHT^Dx&DPv8^ZK--gDLMI>e@zFsN=`x)pce+kfjA0~R(DkVf zqC4?OKFcv%vn?;uA@J$kwhOI&LvZZelhiqC%|Cg_HLJ~KnI*{iDA%e+Q)-N3P8oS4sXOvm`0wx-BwC#UC-j8dLA!KNKd|Y zfU4+OGDs!)r!|P$WU>aK4&c?{VI8?BqpD5Lp;S3dD-f`F)R9s0lRUH_BS%lOVUdMw zLZi_D5ARF!&C78OpX@Dx-h;ya(1v&wAlC#e6fLuB4FrIxf2#MKo}-PP0N$y009hA- z6|sF;hV-bDBrBn}XZj=d0n!C~Uu-D_IeqM!99~3!mt2QuXK}m~5K9imMcH{VIXqXQ zUDVKz8q1!aHS$2`wp~DXD^5H9?Cc!VfjEt=)1pypAajCO$(*BKCmP5_&Q;}>=hr3;cX-l18ZZ85 z0kNjP6~SnHseR5l@;*{`=`i`Ck^MEh)p4@a=HLTok*p>uP0z`O!Mc{UP!M(CVA zeb{OtfKB#9={twc7*hLkIXNLVdhx&5&x`KPAzmmhfkn^}G!BWEi^`;n%;`Ex5TGn# z(g~iw-Xmooj^v>_AFExYQMiHRoFp(30V-oQV{OwmRnV2WPrAzCxo|`^^z#5#Keq|z zobh^$8!<_pza-OO@WpDY%~5Tx=jOjgPx7rRgY{P>qa|C8uC;FYr+OEbJaQnZ8AF1+ z1>990Qv)1L3CTyJDZk5s)FxDw$L8l;NA6s;NQe)PCZlHKoIHHMEj=_RV)3@36FH7t zcgrTy4%%VO3;tc3gT&**@4g;Gc1^_gO*=!R9&F;7Gi28bBFKs8pH5v2z7yJ}r@y<{ z!#NkfMW+*55q)^dHrSZ506TJy4k!|d)3emGp_GHip{5<8_t; z;$@3YI0w)F`Nh)p3SW}b1&|J)#8EonZqkPs1n>gkrwf3_H*+E<5;$NrfpDmG2*1z{ zygk{#C4OM_fsdFaal0wn4RlQ<$mW33qjqUMM5o~+r9z#8mt!0p(IH3Z5pRzsS5>kA z@dVk+BR)IKr#7S=$&O%?s_vD;lOU2@bg|AxGQtew@BEOdT2OI6f;~ z(+^qQ*tAi#!O_Ju8oqH^>8#;6$hd-jtny@hY07 zYZiq(Y&(e@NAMXDggLD!MA0eA>;dmmcEy$A?>Hw}ImEf(MEGWxBY8@#5Iee59BdUW z9h_F7CwG!S@`W2-+=7$lpNerKCM6CTtV;cx0~p@Un!{D|f3WK#7c@#atLR$gTA*A< zer5C5BwYBqcVb|BI~t8f(Y|N_+CB;Bi+CZxQ#Fgm zJ&Th)U4KXph7i%Swq*~**u;9otb)+g`;?``wvmi4XCcAMr598of<5(1PLF33&GK+v ze4t5JYJ!g~+C{HM*IFF-+aAkKi8+T-ZpN+wxiVkkQRrFN(gl9eK1k!;*V~T~tz&W4 zsf$bFo;$2HrD23dQ|r&yxh%JWT6VP;$yk&h(cB!vMLq_YoFF&t}Xf&Rd1GePN(ei#F!~g&w z07*naRFa2Qo^!BTf6IXaz`Vm3;LsVz;Q2qlh$15PDW!?xpo68gI{}o%gZJe}6|G#Lozq>?(0JzpR`31be+OcLsuUmxf>xOZ zRMI)g2vzoz@>oXGXiM2N-7K)vK%Eb&<}hVjZ6egkUbMlt=t)~x6V`H6atth6@pElb z=jM&&Oe9}!V>;4vvbsT!e~sjP0{p}x@QZK0i_pj*%pv{K9Y}Y1m0`2UC{k8IedAUQ z^(UY%^`-t~Cw3nB7Mo{|=~akP3hxU&LqEFsOgu;~?|r&4z=y4v_30 z@Kp|~YLIhnq^wm=LURmOKY3^qQv{CU(J!f62g35XMLCc&w#E5AdWc{B18%~3iNK6-$1CglUt zdrsGp17tSlzXKtNcSM?62YUsR6!K7+E8hl8lDNWc#O*H>4kfA=*?TyVEhTMuSunT* z8V!%(Eo0;JuA)iBe6r@Pby({vmmO5`wm??Ww1V0yr(gx3lD>sE+Pbymm3%e%il9KD zrWv;i&@AsInQQ&3+E--_TErlu{;COP8C~+X+U97~XasfeC`L=VE9zPwT7rY0y$zPK%`hv{ETO!($mYCd{IbX9-9OvMe_jG zp>3JBkC{l~8Eit2Gy#xW3E4`-Lcq>>d)YSCr}kV|H0c}V57|a?oG#LjcT%zEhmlRe z+A)Qa!PwW5cpm8Q?MGur2bL_lqG{`j&joAl@iN|CJ90sh#UsaiFacw3&1o37J2+sq z`A2!HKP0p~pjD?upLHTujjk1~@@QFWo1Ma0Kr} z8_^??*0jCk;5dOKGl8`8>GiPe?SXJE%0)7!s~`n|m<0rUj=br5Ny$dRd4Sr-OZGv< z5YdvId~$xJOv)!&XuGRqtLPs*&?K)*JYwdO+5*LOk0trGvSgWv+%T|?jSnGq=X*gu{(bh^8eG4Zz?^-`3v=p-xt0K4!I0TK&(#J{xVLm-#pbNVeuq=Vo-icmYz0`2vOYa!7wIR>#|aYjHc zJDqp|JtDhj?HuS|cwc^ntSf1i#*h%*A^e)$m*k>ujy!4vj-;Cd+X5q5Lf=BSppy&j zsBdgTGWt?K%1q)oG(38C_2Kjd=irC~j&2%n3Gy@YII9&@&H6EILod00j zS`I^Vmbt^yLDQYSTWgu*8q}jqG==K);R0Lbyk2^C?NiE=^Okj;qa~A!A}nClCYlAn z7A-5<2J(}!s(l?h=5*jRH77%L8cj{_T)C!$<=}EUO&mWNXD(cfjn8yp*Us)#??cu= z5p>*3DG)W@)*JrPbriOB<$Wyo-Xq?MN=_mIG|7#UlK{_z$XOt@jayss`Rt@4<4eFx z4{eO&1CRqO`XIFn47?{jl5B+~Jc^6($^Im7lp6&0KK2E-MQl&bi}9fP=#hPiy!XJ$ zXV+n1%MiTv4R4R*np;QFqJscZI&y0@2duojZZO9WE26h#)dImBz-u~L4mPK|B@?wD z)T2zQ+GzX zMix&ii_mnGwCn0OVcaBKu=pKl+c^eZ+j{}9IYvP3=u3b`FX#|JMolqip5+g-E`7o1GooI~8Qinr}Xrz5fhMxR*I zBjypd!<-|IMXuyrbbU;It1cxbF$3~}2Y}wLJ{-Bv3ApUs52|tK-^w!#FGUe=Q(UW~Y_Ju3aJ9;BV zjUSQfi7kOY&k+cy^W)7inm6)-kS>K?7x3&-+$I z>{^}FU$)EHM2nJSy`?*yTYP1`96LD{yp0?mxj=G3jHQor4(Gh$Jgj+k8yW)*#H@oy z`USW6V?7FzV>BMmSYH>AP;6O&WQ}_>sf?ok+kfyNzI^3R@ZfFB@%5{JfnWcxKO&0H zethU+v>vhspCpMFqPasO5QmR?@~6HNdV5x%cqVa^&c3X9v^zOf7xm`1sQe6&MwTMWYn7OP&{&Bh-V6}Q_ zE6t|Xm}oZ8_*yc{MX&MWi^g)o^jQ@M@Z*pJXXBHXe-(b)aQFebz@3oQIS06KsW{3R z%3QjzT}05KolltyheyN=ha3!-(P7KlZFuy~r%UoZdH?fR`}a+OHxg`z=$>y?(Kn(; z*FaFR4H2Miu8@VW_mQV9v7%kP`;2)IYDexi+BvXJt{_U4=30|e=pq%>nz|Ygg@&N4~fi}wmV#fge zl)2EBocHXs=weK2M?hbFu$x0`sVO$kP1JHj+SohG3oQnc; z^*OKt>H(Xq8?1bTZKFAmDj9M-w0?DXXmSD7nNyX1|7aU(M@JobayF1{>W;5QbK~aq z_|@${!tk(ObzByLiK6a)R}FnkG6U5L^r&lrb;=FP&$ zF~e}|*|V|uoeN3%7`3O&gJcNjA+zzGG6g1|_lQr<^*(|>X!|MBO_@O)JJ!bsd(bwR z_aV!ma^gjqnTswW$?JV^I6iFq6?Rzp>^k(UZ^OBZ-dZ^is>Yp@_Sa(p>G3p}d$TJrw!!MkzWL%)C@)rp}a+fzMUynGRG zGdTpRFLMRCo4Az|uZJLJ2INULuiK8FeBpMy?%k(g?4(fz4<~p98A^=8_mpLnvl7OF z$FmkD5U1*eg=ypjXy+0}>Xtq0-s<6d3*mAO1}Sd+sb ziyqOWdJB)L_**nN-8xxyPF9Oo9XYGoahV5`<*9AzIFLHROQAFYa|2K{Ky?jc)$>CR zrbR~^_#FK@ZF7A!J6Mxb<57q2U?zx0)9PPktHIbLN7D)ns_a*#>#y(p2_9JaI}97u z4(D2c@LP^}w-R}PfYSWB2Yk58DPAlNcW03t0Z{qfUblVk0kpNZV&UuN1c3J8Gqn#A z0*ps=T+HK??Z9<&g&rKl3uBa>RJg_w`9tuIZGn`p0LeilJ>#8SWDC|44PeWfU6?&{ z0p57#lBO}%#?l%yZTuyTI^XNA1B-W^_Bq~~9#xKNFl(zWt=+}gL0?3-h-yGs2h4Ki zk|zI?GRQjqNwQQqGb@IbB7k&92~Ie5o9S{{^Ue zhb`-N;DzODaKuRm1{n$3UFe_Kd3ppo9O&`qj`Jq{JoR_+)5Y>AVW1P7MSQ$^$}*x^ zh#rz`)R%k&?+1_Y14|e6_MY?x&;WWiIlSxDA8m3Tb#Z|A;YZzI!J?l#*UGA#hlNGF z?d~`Oji=_Is@9x^&(_+r_yQRRVi_z4np%6=N8_VSB5go5@RNLbo19L(%rcawk37#s z9d!moYoqC-$(`e2IYTLjw3nq1KQz5_eY6QK$6S+>>o1+3Ri?=x7q--aJ{Qb65tqE` z{b+0%hK3LKUa`o%kSBb1fgb(-BV;KKMHY~7ojgKBemwMtr?B5)Gcab-$Rtl_O?^EW zUH%&r#vhyqSX&=55yE^QMj4VDbC{KJ>}fo+A6t&%-OIaU>TT$48kY znL>t9vKi46Hus4S$(3|0bRf3HrdZK_^Qulv9@rmC7F`*ycTitz-sYlXpc%}yb+4^M zjgF*gW!M%7Tjx1!s=`c74=IPm!_pylSWc7Mh0Dv^)xL|8Y;$6qlR_QBkr`buPt<9hN zmfeNBp1c(py$h{vtqF*oBM6PxBpeEib>YMln1{U`AFiqV{+0*O*4BcBub*SsCOIoO zq^&fEQXT(HIu@QK>f*}RI!GM)aE^axj)gg$NRwqJr5_~*hnB8|6mkvpH_*SewaIbt zvB`~HZVhO3v~jIFr!73w+G|)>m-k@g%eAY6ZJJ&=ePkOts_J(8m*^BF$jDg&m*u@> zUn!h+PJM`n988Oj{Im4PIZ0kl=NeBr(3aDvtEZ+P=gt2#+iM56pQf9XMXSr%U*j*^ zX?^P2Mam^VHJew>5#E=+A3OI%T>7f_V}?5fn^x>Vf8PK{?DVQua8M5yjlns`amZ&y6joUDYl(FSvYGU?#D{l380ba=vQx zb2KGg%X#E@%X!c3mJ50#U0)nop=DtJ1Yje{GDk`7&60?XDhH+uXd_v}FTsz4Iq{q3baW8`%-x{#Udi z01nqoSQMXjcsy?V{xY<-w&3K~&xz$JLjnD?qkNxJEa#aIN@<95uEeKk7aSZQ|F6$#M2{_TeR?=i)r&BKcrG`FzNY^X|-ScfD2EYF;d02x_=Nb>|Q`1M&y{>*%AFV!DCLKy$ z`L)TNqfvKZNuFB!96#Akb0)h(*P^f4hVzgImuceo$#}~-Z^N8DPQ`{5+cD5LfCTk1 zj)!w08=!{^2CuMX{SLhFKOy^IJ(9y=*@g?50{vK!-xB7F%)hC~uWm=sEPF3{&Pw|tVb?ERqqNkNv zeKk6{=t7=Lo;lu@j8)N$Z2OPW$=P5q`fJ~J)+e{- z2E)5fX29jEGw*WiJ*Q_C23ovx>#^=(Inu$bw?SV-m*vE;&LXS=z1+er30=|78oVl? z*W}1efI1*&$vIf(P&JWczrpaZ^r^GJr0uF~rIl-aIPJQQWiSp|2dF}J8}1) zZ$-=a9<;OsK#q}n0msiju?lzm_#rI$*sB1_9>_s3P%eYHJZ?Ab&b+@SXO*6k zcTU$TduaT)t`;a$8}IGk)YOr&%E{Gr*mayoo%1Rl$IU$nFWv88eBt~5hVIs_*tljZ zhK(G88T(IxgF|DWfxCYCFc!Y{C^(iu#On?0JU!5mGLfP~^Slmo2Vi$UITWwE1wn@Nz)1sq!YDjwDv z$~m(-ytxdyIW50y?JXd#yXG}o8ivU4RZh*q1r4vY_W#G9##^O;1`>74t7ug5t0Sic zY&pYMwXIWU@vhS^r`PTV3cF+1IuT4AdFdEzbeFSP)m*6~t89DUvOBSU(>iSH+>9qz zFU9!jBk;mgYjEdJ9>zug_A1a;kY~5Xdawu|%G`+Rm$#QnCGnB*p_V%*I${~)<2~C8 zD;ja<;=M=Du0C|H2j=X55&&S{;R`Th+Md}tQ^%=mWp(E&P=CJXj=H?-1T4GDdoVVs zD`Q=`s<1RiBL*#lbs%+x9&G=?M3r?wx$3h@z8rWHKMmZf7J=432W(XnsEYSsWvlzW z$_{m8x141aEzUouUtPT<&A|jBT6^z3Hf`C6+wc1=K5@+_G51ybV%EXaV*A#%R-}vL z1%O8ybZ1l@TLI~&+OWUmSrQZN=~!069g{2T(HKa#?`~PM6RrJ2amo>A@$XgqtTx&t*1q#Y%2e0!Y4vr+K$}pKw?Q>#gSXc8V$~G;`m9JG;$A295)H)pY|?1yJ9(hclWQ+ z+R=i8j@b(>Ee?%_M{8>fTno!I98i7)uS3iX!j@C|&4>#vf*WB@!-0QBe-UU!fickE zKue25Z+AbQUb+(fz5O`(_|tIyYhGJ=>@KF6o(Ps$+`x7y@r zXmy;n1n{Z}Ch2LDLYv5%43=H1Y@gGEAG7Dq$LzWD@u|;#u0;EbU-@dR(-xIRi^?vz z=n^>R@c4rd#PY|MEmdt(XFPs)+aGZJDW{hB{PF(#arWZZ;;3Ve#aotKjCJeQ#X4#) zZSmXR-xkZM?q|RFB^JKobew$pEAiu>{!EpH(-;^S!1dQ(kE^e~8pq9Bhzl0K13&!I zZ}G(se+vf=I~Lpi+Q72^dKxR1ug9uq*JH&qYvCKd__3l7nFKvN5tLN;xKkC`x!_cs zD{pW)YDjH8`uhjq8x5@f>jtcNdJWb*zZuK^>uIcAz7xmHI2+&p{BQ8%ulydDp8MXC z^U%gIH>WiqlJnRCB&~hbe7EGNk~QaKa_?x>2KbBAPHmEBn7T2w6C)yaS?!`7jjJGUmDC5xtGu3S2i939J!b__ijNfyz*BzU$-E=dyZ{J=jzxtYw z;^QB^26K))5=)mY!>2y`dED^t*TFegYR?ZU=W>1Qy6f?sZ`_O_9UVA-$;Ei>YtAtj zrS~3p-+edw`}?tQVeyhEYBzrDL@Zu(9u_Y;58iuh-nt2Q{PA}HfQO#G56ho?3VZA~ z32nn%@uI76Ox=4ThL0W!-)N||qQg0$x4R#!o?REqI)=8Ry{!X(dvXnC?Y9?>pM4ep z;Fu$i#~#yWnptIT9cksVO%=cr4J}%(gDvvVvWFZEYmHg+ZFkn4)US>s&S7K@?{d7W zaHb9qP1aftBo}Su6we99Y19GCDsa^XSd(*i3{}NX($WTtpXcmUwQvTr;OZ{IoPP3n z;~QR&TYmT>y#11k@r`eP2XB7k8}Z1akHtPqA6SMDU3)D6;1kzgi=*ey!(nsg#r`vA z%)qaI{?l0Y_=68*Wqk96OR!yZ%3IfVoR>A8gK?mM9n_lGd>M# z8m&g75&x?Cm-@3_^V-;N{rU}l!HEm~LytTX+a7w<+$a;L z!Ow~Ju?tU$=jUH|QIihTmiP7E`#;=qr$2SknSSnqvjZUtOY*)oEH-F?&XN~06=U{o)k*#W8 z*TsN;#(Esg7+7F;N-w3+m3_Su$#Z%+-d5_yb&zt^ z)hAc4=||^UTZ@OLZ&e0jwX@DO8NAmY|Dx%ujc03XD;B@{)mZYjx8nnszpshUsux$| zs3VU60IXcK3P5o|{PGW6g+-^Ijw5EzHlrLV?^ka8I&S&F53ytC|8DK-Vyi6g`2Y0S zD+gS#Ff!Q1Otau(rXnAeGHeS70+j+&$UcY&qXZ(%xpA|RPBIcMmMH@f3Mi!w%)y2U zgE7O_k+!rTpk4?nT!3Z>O@v9f;Iwd_UEq82od5a#Ki*THqiQ|oFegg~EMxIl-F9C1DJbDw208ETk4n;!V?1N58b-_hIq--0=Q z_wHTVuwetOTer@9-QbBM*CEADs~;|x)5UqA`2gYOIifucb6;ut_(1%Ytq8AHld=3X zK9S-V%i&m2zFM|Rx=}oMz4J9Rq`r;tChHZ6VDFGN0F*dV;>EmNj;2$4w2SAoM^aC6 zah^B`NVirz$Sw(^l>7*fhd-v__ncoVD8BaeoY~a)bmymRO8@{1KuJVFR0Gx3K2bzR zL^OKTx9Rkmvvm5*S^CcC(L_YleWHiXfBX@xd0|!2FWY1JXtcJqQ_I#Z^v>Z!Mc5@j zp^fN~3DtD!^l7?v>lVGgv>3ph8CRLi1AYp*VAXWG~W*hUS0dJ6`*|IZJpF-ynX}D-bTNNm_kI zijC$!v`HkNy>*EEhc;@iTN+xNkRLSNvA!YMf?ADu)w?I=S?NQfae(BKh;Z_OorO`{h7A4 z?4WEmON~!A(CSqyDVxm_5tYzuwzluxN85MqqHH!xD_1np!XGUt=)QF664lk!(dEmR ziHK;_s8Q6>(Lq&JRYiWcuAX>k`76cFqAy3ERAc-aW3XyBt$k9j@ancc$1>49ADT}z zTEr{a!{@#D)7p+?As@K@oO{~lCh>cKc@vQv6AvvAl9MD%96y@3?3L`{wj)1S_&v>E zO8~?t#n&4T3nyCRBjyUa z>(>|Yu3fv9Hg4PqV%{|Ru9{V&}ZKTm{*{kVD__SP$Wm!3HHDn8~gvXOJ9=kn$ z9c&Irw1crDlgZ#e=Pn78?j>c(9H)!tlOLo{+VNwaSO%BH>0*r1M#k4T9?Msfo!k!` zm*fXYpN3z;?Xg3`AnD-#OlZ-(h7ZX|#_m0B^n-^UDq2te?Md=OM0D)m9W<+P9*wP@ zM6(*_(Z4$WQ<59`e4hUJr_EG9<0+al?MZrT{{bQ*YT5M$O_)4|cI|E@BBFtT0h-k~ zkGi@~6k+@RgAY>M-hD-Ly}i99w)OV*iuNEsq&e9pbW&XTk5q&Fvy>maiI&65b)q`u zxfAz@WM0c#%{GKHp5yXkdAx=#y8$Q&*Y^>frl0#jvP<%rG_T2!VwuK{5CTzf4DUBN z(%z@}rU9ob=bJ3vZ?7PJ%Z_rt#e!s@d+QrG5?JlAaT)!UXKf9=CzN@P%WbXZi!$3qKlgWf*$BvnC^5&T4YfYx)W2D2% zNrc~vi_dGaB$*m6t*#~A5??v>VDV|b_0X1c<$5%k(!HnG6#bXB!SRTNc5W|Cq9cHv zEkvgdgeBoaIs!PIcuvjn=XlqR*W;51U-Mw(JQ5akT8xKe5Awe@V&5ZM_#DT=eT9bQ zd%h;cEz$MqXP?oqVZ%!BJhyB){jh!-9XfpPn^hx6jx3V*tq~(i>^pSi2(4VvL_>xQ zp^4+i6@FJzpv&j!`i&d(=AJhC^^3nK@yoEGL+R76zFn4Jt*NP@_V#ufGiD4`RaH@I zYir>j5OVz}#+HwzeC0KOPL4dkI36jd5q(?-l3p~VI^p)Cyx=%J`KZ+>lEw3l*Sy8! ztph3dC0*P`bmczavXSjl3}d~Lular1e@u~IHKm#%C4huSRE>r^#e*jeE~`+jt2I1) zUL9KCz1Y&=@c6}JyQbr@$7|?JPdAM7?mcaE;NaWz_k(|>PcB}hRcl_PzP>&hF=7P0 zw&@l6UR70*jUwXY1tyliTNe^gvOGe zHvcR?CL>KProm?QM9uEBbzM%6DL0oqwo^zsw8v8EF-PM^vb>LT8m~rYJ#M1MT@8cw zy1-+vgxmW%B8`td@;$@z$nKRZttI^E6;^Wn;`;S4wt7;?=ksCyvx`D!S9i$ea-p-U zJ1kiA;}ZEbwe_LrB-PrY%B_?55m&!`4DCRFpWZV3aL`!YAd8Brl$H4eexs?!7XQEKaNKww}{LEDxPv z(0VziLxk76ZuwF>9awfqCq3(gg=jVVJSQWM4t~w$a^cm@TZ-t~_U;Qcwe_KH#>{Z| z=+O{D2#1dz4Ko|&hKI*b3^N<%hJXC?or3)2&!7DF%9Zf5=a+^@Cq5n;<}V0cCr%Xf z9PjK5jn6C$ckbK?`FuWX+p#l@n>0DJ?A%qLd3E!a(BI#m%04S6%ZUf_os_#07KBOS zlk`a#kPZ)CWIw|0(c#7F$#=~!R{f^&RazaAEDMVi-?a9X{0<~2PXN}tIf(|zk#;rd z9b&u|%ka=5UX50wx88k9zVhNiK0sGwKawfgEMc{5_1a+h!qVZ5RXO%~hUI5ZtiO&t z_SkCKZuvv1Y3`4B4e5~lhvZl>^V-8Pd3qDF(ThvNsmZZqaJ+nYYgw{At$kYFmdNHC zh&50HmDV{huPkq|YVs^R$*^>4wn{c?%{+|`?`C8r4xf*)YJ65KEt#B8qp@@#I&YpK z8zowAzDn3E|EJMsjkFC(!p7G;c+%F1q*KDL)f?wc>qD)nr{(qHm1KB_7CSFLkzH4o zem*Jytvb-@BKeG(TnrlVaByfp^E5TYqcs_;&|;fn8~B=3r16||B1_|gSQeLw{EuXD zY@AQR#r12OIpUQXhvow>9f|?B4arWhOR=F}gs<#V1omvT?4d&^F*9zJKub8R42kxNBGWWTQB zYo3k5N=z=>l8=f#xuSr13saJ-;fx0=3XWUSgBlgW7=QNq5p5!xETmT|aH()K9?r+@ zmNpO6__Vyx@Ousn(vXT+vIF^7YoMrp2itUb{>JG6$4 z>Q}SF)3Cig!|I>hKFw~FSDu_6^uGf^YZ@Pt69Y_hwJ@Q1ugq9R!CAt()?}pw_xKa> zX}GPXFWIK)jn_T+2W#_SVwlFZm`0+r);+dJ{8k)2xrS;7=}&`8(x>@f!si)Y9UlE& zxryBte=;muuWoCN(`fPb=uV>p^3knWJj^VN- z=UTLw?xCSqSF_WBgvNh$WL&ZJigBH@RLleLy~Kq-lW)BIwe`?KJh_plXqj0 ziZ5Q{c^~^t^MPa!@}U%CY4Es9`6M+I?cjoHA-3DXCF$_!k9Bx9Q>_tmy +Access statisticsMozillaExplorerOperaSafariKonquerorMozilla: 19113 (58.6%)Explorer: 10917 (33.5%)Opera: 1464(4.5%)Safari: 652(2.0%)Konqueror: 474(1.5%) diff --git a/include/ezcomponents/Graph/docs/img/tutorial_renderer_3d.svg.png b/include/ezcomponents/Graph/docs/img/tutorial_renderer_3d.svg.png new file mode 100644 index 0000000000000000000000000000000000000000..3ee3b958845c42fbb4e9e21c12cbe8b35b9f6266 GIT binary patch literal 20436 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/Graph/docs/img/tutorial_simple_pie.svg.png b/include/ezcomponents/Graph/docs/img/tutorial_simple_pie.svg.png new file mode 100644 index 0000000000000000000000000000000000000000..c1cce9b4253ca15c90b198f205b4a74d174ae532 GIT binary patch literal 20946 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 EKbN?mPXGV_ literal 0 HcmV?d00001 diff --git a/include/ezcomponents/Graph/docs/img/tutorial_user_palette.svg.png b/include/ezcomponents/Graph/docs/img/tutorial_user_palette.svg.png new file mode 100644 index 0000000000000000000000000000000000000000..49e33636c2d98f5aaae7499774f3d420437bebb6 GIT binary patch literal 17862 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 array( + 'Jan 2006' => 965, + 'Feb 2006' => 1000, + ... + ), + ... + ); + ?> + +The result is a simple, default line chart. + +.. image:: img/tutorial_line_chart.svg.png + :alt: Simple line chart + +Bar charts +---------- + +Bar charts are very similar to line charts. They accept the same datasets and +only define another default dataset display type and axis label renderer. + +.. include:: tutorial/tutorial_bar_chart.php + :literal: + +As you can see in line 6, we only change the chart constructor, and the +other default values are applied. + +.. image:: img/tutorial_bar_chart.svg.png + :alt: Simple bar chart + +Lots of bars +~~~~~~~~~~~~ + +By default, ezcGraph reduces the amount of steps shown on an axis to about 10 +steps. This may cause unexpected results when trying to draw a bar chart +with more than 10 bars in one dataset. You may override the behaviour by +manually setting the amount of steps on the x axis:: + + xAxis->labelCount = count( $chart->data['name'] ); + // Output graph ... + ?> + +This works because all datasets implement the Countable interface. If you want +to use it for more than one dataset, you could do the following:: + + xAxis->labelCount = max( + count( $chart->data['name 1'] ), + count( $chart->data['name 2'] ) + ); + // Output graph ... + ?> + +Combining bar and line charts +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The only difference between bar and line charts is the display type of the +dataset and the axis label renderer of the x-axis. You can use one of those +constructors and modify your chart to display one or more datasets in +either display type. The axis label renderer is described later in this +tutorial. + +.. include:: tutorial/tutorial_bar_line_chart.php + :literal: + +After creating the datasets we modify one of the datasets in line 14 to change +the default display type to ezcGraph::LINE. To more prominently display the +line, we set one graph option in line 16. Options are accessed like public +properties and in this case we set an option for the graph called "fillLines", +which indicates what transparency value is used to fill the space underneath +the line. + +.. image:: img/tutorial_bar_line_chart.svg.png + :alt: Combined bar and line chart + +More bar chart options +~~~~~~~~~~~~~~~~~~~~~~ + +There are some more options available for line and bar charts, which configure +the highlighting of datasets. + +.. include:: tutorial/tutorial_bar_options.php + :literal: + +In line 20, the size of the highlight boxes is specified and lines 22 to +24 change the font configuration for the highlight boxes. Highlighting +works in much the same way as for pie charts, but in line and bar charts it +makes sense to highlight a complete dataset instead of only one single data +point. This is because there is usually more than one dataset in +line and bar charts. + +.. image:: img/tutorial_bar_options.svg.png + :alt: Configured highlight in combined line and bar chart + +Stacked bar charts +~~~~~~~~~~~~~~~~~~ + +In stacked bar charts, the bars are not drawn next to each other, but +aggregated in one bar, and the overall bar consumes the space of the sum of all +single bars. + +.. include:: tutorial/tutorial_stacked_bar_chart.php + :literal: + +To use stacked bar charts, you only need to set the option $stackBars to "true". +In the 3D renderer this will cause all bars to be rendered with the symbol +ezcGraph::NO_SYMBOL. + +.. image:: img/tutorial_stacked_bar_chart.svg.png + :alt: Bar chart with stacked bars + +Radar charts +------------ + +Radar charts are very similar to line charts, but only with one axis, which +will be drawn multiple times, rotated around the center point of the chart. + +.. include:: tutorial/tutorial_radar_chart.php + :literal: + +This again is one of the simplest ways to create a radar chart. Nearly all +options described later are also available in radar charts. The basic +difference is that an ezcGraphRadarChart object is created in line 6. +Radar charts accept multiple datasets, like bar and line charts. In line 14 +the first element of the dataset is reassigned as the last element to close +the circle. By not reassigning this value, you can get a radar chart where +the tails do not join. + +.. image:: img/tutorial_radar_chart.svg.png + :alt: Simple radar chart + +Controlling radar axis +~~~~~~~~~~~~~~~~~~~~~~ + +Instead of having an x and a y axis, the radar chart has a main axis, which is +the equivalent to the y axis in the other charts, and a rotation axis, the +equivalent of the x axis. The steps on the rotation axis define the positions +of the rotated main axis. This way you may use all available datasets and +axes. + +.. include:: tutorial/tutorial_complex_radar_chart.php + :literal: + +The settings on the graph will be explained later in the tutorial in detail. +In line 11 the type of the rotation axis is set to a numeric axis, which is +explained in `Chart elements`_ -> `Axis`_. + +For line 15 to 23, a dataset is added with some random data. Using this +data as a base, a new dataset is built, which calculates a polynomial +interpolation function. This is described in more detail in the +section `Datasets`_ -> `Average polynomial dataset`_. Lastly, the default colors +and symbols from the palette are modified. + +.. image:: img/tutorial_complex_radar_chart.svg.png + :alt: Complex radar chart + +The resulting radar chart shows how minor steps on the rotation axis are drawn +as a grayed out axis and major steps as a regular axis. Note that all +types of datasets can be drawn using radar charts. + +Odometer charts +--------------- + +Odometer charts can display values on one bar with a gradient and markers, +providing a nice way for the viewer to detect where a value is in a defined +bounding. + +.. include:: tutorial/tutorial_odometer_chart.php + :literal: + +As you can see from the example, the odometer basically behaves like other +chart types. First we create an object of the class ezcGraphOdometerChart, then +a title and a dataset is assigned, as per usual. Similar to pie charts, an +odometer only accepts one dataset. A legend does not exist for odometers - and +you may of course assign an array dataset, containing only one element. + +.. image:: img/tutorial_odometer_chart.svg.png + :alt: Simple odometer + +The result is a bar, filled with the default gradient, with markers as +indicators for the values on the bar. The axis span is automatically calculated +for the provided values - you can modify them as usual, but take a look at the +next example for this. + +Custom odometer chart +~~~~~~~~~~~~~~~~~~~~~ + +When using only one value on an odometer chart, you may wish to manually +configure the span on the axis. You can do this as you normally would with +any other axis. + +.. include:: tutorial/tutorial_custom_odometer_chart.php + :literal: + +In this example we only assign one value, so we get one marker on the +odometer. The we start using the configuration options for odometers, defined in +the ezcGraphOdometerChartOptions class. + +The start and end color define the colors used for the background gradient. The +border options define the border, which is drawn around the chart gradient. +After this you can configure the width of the markers, and the space +used for the actual odometer. + +We then configure the minimum and maximum values for the axis and a label for +the axis. + +.. image:: img/tutorial_custom_odometer_chart.svg.png + :alt: Custom configured odometer + +Palettes +======== + +ezcGraph offers graph palettes to define the overall style properties of +chart elements. The style properties are similar to those from CSS: + +- color +- background color +- border color +- border width +- padding +- margin +- dataset symbols + +There are several predefined palettes in ezcGraph, but you can +easily modify them or create your own palettes. + +Using a predefined palette +-------------------------- + +You can assign each class extending ezcGraphPalette to the palette +property of your graph. You should do this before adding datasets, because the +datasets request colors from the palette. If you set the palette after +creating the datasets, the datasets will still use the colors from the +default palette. + +.. include:: tutorial/tutorial_user_palette.php + :literal: + +The generated output differs quite a lot from the output using the default +Tango palette. The colors for the background, datasets and fonts have been +changed. Additionally, the palette sets a color for the major and minor grid, and +defines a border width and color for the chart elements. The palette defaults +to a sans-serif font and increases the margin between the chart elements. + +.. image:: img/tutorial_user_palette.svg.png + :alt: Combined bar / line chart with non default palette + +You can find a complete list of the available palettes in the class tree. + +Modifying a palette +------------------- + +In the last example, we assigned a palette object to the palette property of +the graph. You can of course create and modify the object before assigning it. + +.. include:: tutorial/tutorial_modified_palette.php + :literal: + +The palette object is created in line 6 and we overwrite some of its +properties. An overview on all available properties can be found in the class +documentation for the abstract class ezcGraphPalette. In this example we just +set two colors for the automatic colorization of the datasets and three +symbols for datasets. + +Since we assign more than two datasets, the first assigned color will be reused +for the third dataset. You can see the usage of the symbols in the legend and +on the line chart. The line chart displays a symbol for each data point if the +symbol is set to something other than ezcGraph::NO_SYMBOL. + +.. image:: img/tutorial_modified_palette.svg.png + :alt: Combined bar / line chart with modified palette + +Creating a custom palette +------------------------- + +To style the graphs to fit a custom look, such as a corporate identity, the +easiest way is to create your own palette. +To create a custom palette you can either extend one of the predefined palettes and +overwrite their properties or extend the abstract palette class. + +.. include:: tutorial/tutorial_custom_palette_palette.php + :literal: + +Each undefined color will default to a transparent white. As you +can see in the example definition, you can define alpha values beside the +normal RGB values for the colors. After creating a custom palette, you can use +it like any predefined palette, as previously explained. + +.. include:: tutorial/tutorial_custom_palette.php + :literal: + +The example now uses the custom palette to format the output. You can include +palettes using your application's autoload mechanism or require them as +shown in the example above. + +.. image:: img/tutorial_custom_palette.svg.png + :alt: Combined bar / line chart with custom palette + +Chart elements +============== + +The chart elements all extend ezcGraphChartElement. Each of the elements can be +configured independently. A default chart consists of +the following elements: + +- title +- background +- legend +- xAxis +- yAxis + +The palette defines the default formatting of the elements. Not only can you set +foreground and background colors for all the elements, but you can also +define their position in the chart or prevent them from being rendered at +all. + +Font configuration +------------------ + +We try to fulfill two goals regarding font configuration. First, there should +be a single point to configure the fonts used for the text areas in the chart. +On the other hand, it should be possible to configure the fonts independently +for each chart element. + +The solution is that you can modify the global font configuration by +accessing $graph->options->font. This takes effect on all chart elements +unless you intentionally access the font configuration of an individual chart +element. The following section shows an example of this. + +The chart title +--------------- + +The chart title element will only be rendered if you manually assign a title. +It can be placed on top or at the bottom of the chart. + +.. include:: tutorial/tutorial_chart_title.php + :literal: + +The chart title is the simplest element. In line 9, we change the global font +configuration to use a serif font. In the SVG renderer, only the font name is +relevant, because it is up to the client to actually render the bitmap from the +defined vector definitions. + +In line 11, we access the font configuration of the title element and change it +back to use a sans-serif font. From now on, no change on the global font +configuration will affect the title's font configuration. In line 14, we set a +maximum font size, which now only affects the legend and the pie chart +captions. + +Aside from the font configuration, we set an option for all chart +elements in line 11 - the background color of the current element. This +results in a gray background for the title element only. + +.. image:: img/tutorial_chart_title.svg.png + :alt: Font and title configuration in pie chart + +The background element +---------------------- + +With all drivers except the Ming (Flash) driver, you can set background images +with the option to repeat them in the same way as in CSS definitions. + +.. include:: tutorial/tutorial_chart_background.php + :literal: + +In line 17, we set a background image, and define its position in line 18. You +can use every combination of bottom / center / top with left / middle / right +here, and it defaults to center | middle. In line 19, you set the type +of repetition of the background image. This can be ezcGraph::NO_REPEAT or a +combination of ezcGraph::HORIZONTAL and ezcGraph::VERTICAL. In this case, we +just want a logo to be placed at the bottom right corner of the image. + +With the SVG driver, the image is inlined using a data URL with the base64 +encoded content of the binary image file. Using this driver, you do not need to +worry about the locations of your referenced images. + +With the GD driver, super sampling is not applied to the images, as this would +make them blurry. + +.. image:: img/tutorial_chart_background.svg.png + :alt: Pie chart with logo in background + +Of course, you could also apply the following settings to the background +element: background color, borders, margins and padding. + +The legend +---------- + +The legend is shown by default and is automatically generated from the assigned +data. If you want to disable the legend, you can do this by setting +it to "false" (line 9). + +.. include:: tutorial/tutorial_chart_legend.php + :literal: + +.. image:: img/tutorial_chart_legend.svg.png + :alt: Pie chart without legend + +Legend configuration options +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Other than hiding the legend, you can also place it at the bottom, left or top +in the chart; you can assign a title for the legend and change the symbol +sizes; you can additionally set the legend size. + +.. include:: tutorial/tutorial_legend_options.php + :literal: + +To place the legend at another position on the graph, set the position +property of the legend, as shown in line 17. If the legend is placed at the top or +bottom, it will automatically use a landscape format. The space consumed by the +legend is configured by the landscapeSize setting for landscape-oriented legends +and the portraitSize setting otherwise. The assigned value is the percent +portion of space taken up by the legend, relative to the size of the chart. The +legend only displays a title if you manually set it, as shown in line 19. + +.. image:: img/tutorial_legend_options.svg.png + :alt: Legend configuration example + +Axis +---- + +The axis defines the unit scale in line and bar charts. There are always two +axes - the x-axis and the y-axis, whose ranges are automatically +received from the datasets and scaled to display appropriate values. + +There are different types of values to display for both the x-axis and the +y-axis. ezcGraph supports different axis types for different types of data. For +normal string keys, the standard labeled axis is usually the right choice. The +numeric axis is predestined to display numeric data, and the date time axis is +for data associated with dates or times. All of the axis types can be assigned +to either axis. + +Labeled axes +~~~~~~~~~~~~ + +The labeled axis is default for the x-axis in both bar and line charts. It +is intended to display string labels of datasets and uses the centered label +renderer by default. You saw it in all the earlier examples with bar +and line charts, but it can be used for both axes as well. + +.. include:: tutorial/tutorial_axis_labeled.php + :literal: + +You could argue whether such a chart is really useful - but it works. Instead of +using numeric values, colors are assigned when creating the dataset. The +labeled axis uses the values in the order they are assigned. Line 11 is +the first time we actually configure the axis label renderer. The axis label +renderer describes how the labels are placed on the axis - the labeled axis +uses the centered axis label renderer by default, which places the labels +centered next to the steps on the axis. The setting in line 11 forces the +renderer to show the zero value, even though it interferes with the axis. + +.. image:: img/tutorial_axis_labeled.svg.png + :alt: Two labeled axes + +Numeric axis +~~~~~~~~~~~~ + +The numeric axis is the default for the y-axis. It displays +numeric data and automatically determines appropriate scaling for the assigned +values. However, you can also configure all scaling parameters manually. + +.. include:: tutorial/tutorial_axis_numeric.php + :literal: + +In this example, we force both axes to be numeric axes in line 10. In lines +12 to 15, we manually set the scaling options for the x-axis. We do not set a +minorStep size here, so it will be automatically calculated from the other +values, as will the settings for the y-axis. Then, we create some random data +and create two datasets from it as usual. + +.. image:: img/tutorial_axis_numeric.svg.png + :alt: Two numeric axes with random data + +The example shows one advantage of a numeric axis over a labeled axis for numeric +data. The axes are moved away from the chart's border to display the negative +values below and left of the axis. + +Date time axis +~~~~~~~~~~~~~~ + +Previously in this tutorial, we used a labeled axis for date time data on the +x-axis in the Wikipedia examples. This works fine for evenly-distributed +time spans. For other data, you should use the date time axis. + +.. include:: tutorial/tutorial_axis_datetime.php + :literal: + +You can use timestamps or date time strings as dataset keys. The strings will +be converted using PHP's strtotime() function. + +.. image:: img/tutorial_axis_datetime.svg.png + :alt: Date axis example + +Axis label renderer +~~~~~~~~~~~~~~~~~~~ + +As mentioned earlier in this tutorial, the axis label renderer defines where a +label is drawn relative to the step on the axis. You already saw examples +for all available axis label renderers, but here is an overview: + +- ezcGraphAxisExactLabelRenderer + + This is the default renderer for the numeric axis. The labels are drawn + directly below the axis step. This may look strange sometimes, because it + is not always possible to draw all labels of one axis on one side + of the step; the last or first label would exceed the available + space for the axis, and be rendered on the other side. + +- ezcGraphAxisCenteredLabelRenderer + + This renderer is the default for the labeled axis in line charts and draws the + label centered next to the step. Therefore, this renderer omits the label for + the initial step on the axis (0, 0) by default. However, this can be forced + as shown in the example in `Axis`_ -> `Labeled axes`_. The label is omitted + because it would interfere with the axis or the labels of the other axis, and + thus be difficult to read. + +- ezcGraphAxisBoxedLabelRenderer + + This is the default renderer for the labeled axis in bar charts. The steps + on the axis and the grid are not drawn at the position of the label, but + between two labels. This helps to recognize which bars belong together. + Labels are rendered centered between two steps on the axis. + +Rotated labels on axis +~~~~~~~~~~~~~~~~~~~~~~ + +There is one more new axis label renderer since version 1.1 of ezcGraph - +ezcGraphAxisRotatedLabelRenderer, which enables you to render rotated labels on +an axis. + +.. include:: tutorial/tutorial_rotated_labels.php + :literal: + +In line 9, a custom renderer is defined for the labeled x axis. You can +assign custom axis label renderers on the property $axisLabelRenderer for +ezcGraphChartElementAxis objects. + +The renderer used in this example has custom properties like the rotation of +the labels, which is set in degrees, while the rotation direction depends on +the direction of the axis. + +It makes sense to define more vertical space below the axis for the +rotated labels as done in line 11 of the above example. + +.. image:: img/tutorial_rotated_labels.svg.png + :alt: Date axis example + +The results conatins rotated labels, which enables you to pack a lot more +labels on one axis. + +Additional axis & markers +------------------------- + +Aside from the x axis and the y axis, you can add additional axes and markers to one +chart. You can also assign these additional axes to datasets, so that some +datasets use different axes than others. + +Add markers to chart +~~~~~~~~~~~~~~~~~~~~ + +First, add some markers, which only get a label and reside at some +user defined position, to a chart. You may use them to display data boundings +on the y axis, or important values on the x axis. + +.. include:: tutorial/tutorial_line_chart_markers.php + :literal: + +You can see a standard line chart, like in the examples before, using the +Wikipedia datasets. In line 15 we add another axis, and configure this one in +the following lines. The position of an axis defines its origin. The +position ezcGraph::LEFT means that the axis starts at the left side of the +graph. You can also use ezcGraph::RIGHT to make the axis start on the right. + +The position of the axis may be defined by a float value, which defines the +fractional position in the chart, calculated from the top left position. After +this we also define a label for the axis. + +.. image:: img/tutorial_line_chart_markers.svg.png + :alt: Line chart with marker + +Additional axes +~~~~~~~~~~~~~~~ + +As previously noted, you can not only add additional axis to one chart, but you can +also assign datasets to use one of these new axes. This will cause the +axis to calculate its values depending on the assigned datasets and the data to +orientate at the new axis. + +The new axis may also be of a completely different type than the original chart +axis. + +.. include:: tutorial/tutorial_line_chart_additional_axis.php + :literal: + +In this chart we use a different axis, positioned at the very end of the chart, +for the Norwegian Wikipedia data. Due to the different scaling for the English +and Norwegian data, you can easily see that the development of articles is very +similar, on a completely different level. + +To use the axis with some dataset, you need to assign the newly created axis to +one of the existing axis properties and to the dataset. In this case we use the $yAxis +property. + +.. image:: img/tutorial_line_chart_additional_axis.svg.png + :alt: Line chart with additional axis + +Datasets +======== + +Datasets receive user data and provide an interface for +ezcGraph to access this data. + +Array data +---------- + +The array dataset was used for all examples until now, because it is the +simplest way to provide data for ezcGraph. + +Average polynomial dataset +-------------------------- + +The average polynomial dataset uses an existing dataset with numeric keys and +builds a polynomial that interpolates the data points in the given dataset using the +least squares algorithm. + +.. include:: tutorial/tutorial_dataset_average.php + :literal: + +Here we use two numeric axes, because we only display numeric data in this +example. First, we create a normal array dataset from some randomly generated +data in line 14. We assign this dataset to the chart to see how well the +polynomial fits the random data points. + +In line 20, we create a ezcGraphDataSetAveragePolynom dataset from the random +data with a maximum polynomial degree of 3 (which is also the default +value). You can directly access the polynomial when we add the dataset to the +graph. The string representation of the polynomial itself is also used as the +name of the dataset. + +.. image:: img/tutorial_dataset_average.svg.png + :alt: Average polynomial example + +For the computation of the polynomial, an equation has to be solved where the +size of the matrix is equal to the point count of the used dataset. Be +careful with datasets with large point counts. This could mean that +ezcGraph will consume a lot of memory and processing power. + +Numeric dataset +--------------- + +Numeric datasets are used to represent mathematical functions in your chart. +You can use callbacks to PHP functions, or your own functions or methods to +define the mathematical function used to create the dataset. + +.. include:: tutorial/tutorial_dataset_numeric.php + :literal: + +The numeric dataset constructor receives the start and end values for +the function's input and the function itself using PHP's `callback datatype`__. In +this example we create a function on runtime using create_function(), which +returns the name of the created function (which is a valid callback). The +code of the created function in line 16 returns sine values for the input in +degrees. + +__ http://php.net/manual/en/language.pseudo-types.php + +The resolution set in line 20 defines the number of steps used to interpolate +the function in your graph. You should not use a number bigger than the width +of your chart. + +.. image:: img/tutorial_dataset_numeric.svg.png + :alt: Example numeric dataset + +Renderer +======== + +The renderer transforms chart primitives into image primitives. For example, a +pie segment including labels, highlighting and so on will be transformed +into some text strings, circle sectors and symbols to link the text to the +corresponding circle sector. + +ezcGraph comes with the default 2D renderer used in all of the above examples +and a 3D renderer that renders the chart elements in a pseudo 3D isometric +manner. + +2D renderer +----------- + +All examples until now used the default 2D renderer. There are several +renderer-specific options that have not yet been shown. + +Bar chart rendering options +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +All the options specific to bar charts are available for all +current renderers. + +.. include:: tutorial/tutorial_bar_chart_options.php + :literal: + +As the 2D renderer is the default renderer, we do not need to specify it. In +lines 28 and 29, we configure the width used for the bars. The +option barMargin defines the distance between the sets of bars associated to +one value. The barPadding setting in line 29 defines the distance between bars in one +block. + +The option dataBorder in line 31 is available for all chart types in all +renderers and defines the transparency used to draw darkened borders around +bars or pie segments. In this case, we do not draw any borders. + +.. image:: img/tutorial_bar_chart_options.svg.png + :alt: Bar chart rendering options + +Pie chart rendering options +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. include:: tutorial/tutorial_pie_chart_options.php + :literal: + +One of the pie chart specific options is moveOut in line 21, which defines how +much space in the pie chart is used to move the pie chart segments out from the +center when highlighted. The pieChartOffset setting in line 23 defines the +initial angle for the pie chart segments, which enables you to rotate the pie chart. + +In lines 25 to 27, a gleam on the pie chart is defined, with a transparency +value in line 25 (which disables the gleam when set to 0), a color in line 26 +and the distance from the outer border of the pie chart in line 27. + +In line 29 and 30, a shadow with custom offset and color is added to the pie +chart. + +.. image:: img/tutorial_pie_chart_options.svg.png + :alt: Pie chart rendering options + +Pimp my chart +~~~~~~~~~~~~~ + +.. include:: tutorial/tutorial_pie_chart_pimped.php + :literal: + +Aside from the gleam added in the last example, you can define a +gleam for the legend symbols. In line 32, the transparency of the gleam is +defined, followed by the size of the gleam. The gleam works for all symbol +types except the circle, where a gleam is not appropriate. The size setting +defines the size of the gleam as a percentage of the symbol size. In the last step in +line 34, the gleam color is defined. + +.. image:: img/tutorial_pie_chart_pimped.svg.png + :alt: Pimped 2D pie chart + +3D renderer +----------- + +The three-dimensional renderer can render all charts that the 2D +renderer can do, and uses all the drivers that the 2D renderer uses. The only +difference is that it generates isometric three-dimensional views on the data +instead of simple two-dimensional views. + +.. include:: tutorial/tutorial_renderer_3d.php + :literal: + +This examples uses the same code as the first example, except for the renderer +in line 17. You can use the 3D renderer with all of the above examples by +adding this single line. + +.. image:: img/tutorial_renderer_3d.svg.png + :alt: Simple 3d pie chart + +3D pie charts +~~~~~~~~~~~~~ + +The options in the 2D renderer example still work, and we extend the example +with some 3D renderer-specific options. + +.. include:: tutorial/tutorial_pie_chart_3d.php + :literal: + +The pieChartGleamBorder option was removed, because it looks a bit strange on +3D pie charts, although it would still work. In lines 37 and 38, there are +two new options, which configure the 3D effect of the pie chart. The first one +defines the height of the pie and the second one defines the percent shrinkage +compared to the maximum possible vertical size of the pie chart. + +.. image:: img/tutorial_pie_chart_3d.svg.png + :alt: Pimped 3D pie chart + +3D bar charts +~~~~~~~~~~~~~ + +3D bar charts use the symbol of the dataset as the basic shape for the +rendered bar, so that you can render cylinders or cuboids in your charts. + +.. include:: tutorial/tutorial_bar_chart_3d.php + :literal: + +The symbols for these examples are set as described earlier in this tutorial. +Two single options are set to improve the displayed image. legendSymbolGleam is +activated with the default color, and barChartGleam is activated to get more +beautiful bars. You could optionally darken the tops and sides of the bars using the +options barDarkenSide and barDarkenTop. + +.. image:: img/tutorial_bar_chart_3d.svg.png + :alt: Pimped 3D bar chart + +3D line charts +~~~~~~~~~~~~~~ + +The line chart example with the 3D renderer is again quite simple. It reuses the +example with the statistical data and the approximated polygon. + +.. include:: tutorial/tutorial_line_chart_3d.php + :literal: + +Again, the only thing that has changed is the use of the 3D renderer and the +fillLines option (to show that it works for 3D charts as well). + +.. image:: img/tutorial_line_chart_3d.svg.png + :alt: 3D line chart example + +Drivers +======= + +The driver gets the image primitives from the renderer and creates the final +image. Different drivers can be used depending on +the available extensions and the desired output format. + +There are some driver-specific options described below. You can also learn +about them in the API documentation for each driver. + +SVG driver +---------- + +The default driver generates an SVG_ image, a standardized XML vector graphic +format, which most of the modern browsers can display natively, except for +Internet Explorer. Even with Internet Explorer, there are several +plugins available from Corel [1]_, or Adobe [2]_, which enable the browser to +render SVGs. There are several advantages in using the SVG driver. The XML +documents can easily be modified later, and compressed effectively. The driver +is very fast, and all shapes are displayed exactly and anti aliased. You can +define templates, using an existing SVG document, where the generated chart is +added to a dedicated group; you can then configure all rendering options of the SVG +document. The example below shows such a template created with Inkscape_ and a +simple pie chart rendered using this template. + +.. include:: tutorial/tutorial_driver_svg.php + :literal: + +.. image:: img/tutorial_driver_svg.svg.png + :alt: SVG driver example with template + +.. _SVG: http://www.w3.org/TR/SVG/ +.. _Inkscape: http://inkscape.org + +The only drawback of SVG is that it is impossible to determine or define the +exact width of text strings. As a result, the driver can only estimate the size of +text in the resulting image, which will sometimes fail slightly. + +.. [1] Abobe SVG plugin: http://www.adobe.com/svg/viewer/install/main.html +.. [2] Corel SVG plugin: http://www.corel.com/servlet/Satellite?pagename=CorelCom/Layout&c=Content_C1&cid=1152796555406&lc=en + +Embedding SVG in HTML +~~~~~~~~~~~~~~~~~~~~~ + +If you want to embed SVGs in HTML there are several ways to do so. With XHTML +you may inline the content of the SVG in your HTML, as both are just XML. You +need to keep correct namespacing in mind here. Opera and Firefox will support +this technique. + +Another way to reference SVGs in your HTML markup, is to use the object +element like following example shows. + +:: + + + You need a browser capeable of SVG to display this image. + + +You can optionally specify the width and height as attributes in the options +element. With this standards-conforming method, the drawback is that +Microsoft Internet Explorer does not support this. With browsers from the +Internet Explorer series, you can use the proprietary embed element. + +:: + + + +You cannot specify an alternative text here, and this will not work with +Opera and Firefox. If you need to support all browsers, you can use one of the +common switches to distinguish between browsers. + +:: + + + + + + +Another alternative for embedding SVGs in your HTML would be to use iframes. + +GD driver +--------- + +The GD driver is, for now, the choice for generating bitmap images. It supports +different font types, if available in your PHP installation, like True Type +Fonts (using the FreeType 2 library or native TTF support) and PostScript +Type 1 fonts. We use super sampling to enable basic anti aliasing in the GD +driver, where the image is rendered twice as big and resized back to the +requested size. This is used for all image primitives except text and images. + +There are some drawbacks in the GD library that we have not been able to +overcome: + +- Transparent pie segments look very strange with GD +- There is no native support for gradients in GD +- Font anti aliasing depends on the font extension. Use the FreeType 2 + library if available, which is the default behavior. + +There are some special configuration options for the GD driver. You can +specify the super sampling rate used, and use different output formats (if +available with your bundled GD extension) as shown in lines 13 to 15 in the +following example. + +.. include:: tutorial/tutorial_driver_gd.php + :literal: + +.. image:: img/tutorial_driver_gd.jpg + :alt: GD driver example jpeg + +Ming/Flash driver +----------------- + +ezcGraph can use ext/ming to generate Flash swf files. This driver only +supports Palm Format Fonts (.fdb) and can only handle a very small subset of +JPEGs as images for the chart background. On the other hand, Flash is a vector +graphic format, so the images are rather small and can be compressed +effectively. The font size estimation is exact and it support gradients and +all of the used shapes. Ming does not support the generation of swf files using +transparent backgrounds. + +.. include:: tutorial/tutorial_driver_flash.php + :literal: + +The Ming driver does not have a lot of available options. You need to use a +valid font file, as in line 10, and you can set the +compression rate used by the Ming driver to compress the resulting swf. The +result is a `beautiful Flash image`__. + +__ img/tutorial_driver_flash.swf + +Element references +================== + +Description +----------- + +Element references describe a mechanism to modify and reference certain +chart elements to add links, menus or other interactive features in your +application. The type of the references depend on the driver you use to render +charts. The GD driver will return points describing polygons, so that you can +generate image maps from the data, while the SVG driver will return the IDs of +XML elements. + +Element references are created in the renderer. This way it is also possible to +reference legend symbols and text, data labels and of course the actual data +elements. + +In ezcGraph version 1.1 and later, you can define URLs for datasets and data +points that will be used when linking the elements. You now can use the function +provided in ezcGraphTools to create the image maps and add links into SVG +images. + +SVG example +----------- + +.. include:: tutorial/tutorial_reference_svg.php + :literal: + +In ezcGraph version 1.1 and later, you can optionally set a custom cursor type used by the +browser to indicate that you can click on a surface. The cursor defaults to a +pointer normally used for links. You also need to assign +URLs to the datasets or data points, as in the lines 17 and 18, and then +call ezcGraphTools::linkSvgElements (line 23) to modify your SVG. The +result will be a clickable `SVG image`__. + +__ img/tutorial_reference_svg.svg + +GD example +---------- + +In the case of GD we want to generate an image map instead of modifying the +generated image. The driver returns polygons described by their edge +coordinates, which you can use to generate an image map. + +.. include:: tutorial/tutorial_reference_gd.php + :literal: + +In line 20 we associate a URL to the complete dataset and in line 21 another +URL for the Mozilla data point only. Those URLs will be used to create the +image map in line 31. In the second parameter on line 31 we can +provide a name for the image map, which should be used to associate the image +map to the image in line 37. The result is a `linked legend and linked +pie chart in your generated bitmap`__. + +__ img/tutorial_reference_gd.html + +SVG to bitmap conversion +------------------------ + +If you want to benefit from the more beautiful SVG output you can convert the +vector graphics to a bitmap format, like PNG or JPEG, on the server side. +There are several tools than can do this, but for each you need to be able +to execute commands using the exec() function family. + +- librsvg + Small memory footprint and advanced SVG support, including filters (which + are not used by ezcGraph, though). Example command to convert an image: + + :: + + rsvg input.svg output.png + +- ImageMagick + Installed on most servers, but has some issues with transparent + backgrounds in SVG documents. Example command with ImageMagick: + + :: + + convert -background none input.svg output.png + +- Inkscape + Not available on most servers, but perfect for modifying SVG documents on + Unix and Windows. Requires X to install, but can be run on CLI, too: + + :: + + inkscape input.svg -e output.png + +All three converters can also export to PDF or postscript, and resize the +document if desired. For further details, please read the documentation of the +respective tool. + +Direct output +============= + +By default, a graph is rendered to a file, as you normally want to cache +generated images. ezcGraph also provides a method for the direct output of +generated charts. Use this with caution. + +The ezcGraph::renderToOutput() method sends the correct Content-Type header +for the selected output driver and writes the chart's image data directly to +output. Do not output anything before using this method. + +.. include:: tutorial/tutorial_output.php + :literal: + +This example renders the first graph of this tutorial. + +More information +================ + +For more information, see the ezcGraph API documentation. + + +.. + Local Variables: + mode: rst + fill-column: 79 + End: + vim: et syn=rst tw=79 diff --git a/include/ezcomponents/Graph/docs/tutorial/ez.png b/include/ezcomponents/Graph/docs/tutorial/ez.png new file mode 100644 index 0000000000000000000000000000000000000000..42f479964f742963e09e82048c6231c3daad9d37 GIT binary patch literal 1291 zcmV+m1@!ufP)JNRCwC# zTHS5iFc7wbETBH+HR%RXN3ch52510zfda}13eXJDj37Ux@A3i->=B#=Qb;4HJolq} zz8pzOQ5xIv0SB3P5=Gt*??)cibv-yj|1ca5TMO3cVtAC?{=(@|1aAjz4l3h(M}h4* zoE$}Pgd_9^F&&}`u82pcYZu&ws36uu`z$@{y)amG-LEoV-3D-fm-nO&{aKuR)U2ST z9AB+}f{~_313BFTSQX5>s= z1^eDLfLym-k83|6eosw_Moo*?HX_VC2_n+iVD%B}v9@~bs{hBwUxVMz&+DtNW~%H< zfD?lYQaG*?#>>T+Qjd(ywGN?T{!FAJrNKm`p9SNkjF*7MpU;GFVyuhSTUtI_;}){# z3cg1%XG!yhXg(;vU+8#uzP@^tonc)TGsk@~_Bu6&vGhcq7@3EaU#{@1j0=%2Mu>bR zFo%8?j{64~TmHhq=lagEj;8!An}A*trekXlB`^og>fhRjm2a%r5#d(0c6oU@I6FIA zUwvubS~yI&^dl8{dW>-+QhG!dILpH4f1&`w{$D@H3&Wk{!kxf90`>l-I~&Pn+kZ{uSA83(ieW7T_T8gGcv}@g*=aFv{*=qLD zhRPVt(o`%8^Tle@UTrjDQI&uuHbwz>a8b?=Qvqr4yWh}MVs7t7iy-zFX&#s z_&x+9?ISsVX;ZTvSUpuV)qiNrU`oye`I3#_n|p3reP?pi6HXeOWyBolo~36?IM<8U zDA*Ln%CmFVKD0dq_Ve~2eIxLv2|Dlu&avhR(zGi>tD1D9d|j(Oh8H#w(r;*NfSku`(bDI{@0^mGL+&j~n8=}T(166}(D;Su~krTdN#elZ< zh$afBZ{|c%8o8PPouU*uQXTB}#SR)Z18%6{5IQuNvDm#tpe2$gY9=X*E|7|AC9b?C zN;6;u&8@F<###+QuL8lx}z^DR|iIj9j&Vp29g7H#BCYoo)Jo_G388K+S zTh`stI&zgqm^Xu$A1fEiDYdC1EX`wF>K?g)iaE=WL#xrx6^%TOga|~kT(GXvf+=|2 zUE|$8CYRK4c#K)$E^9+=pI4BPrW;LH8g0UA@hO|n%09;X3L)<%^G~@=*p8<-AS%yz zOaJWPqSSfiu?eQi9>Y4)jX9+nSYU(`=62V=GrY2n8QYXAbnmA9?TAF5zCHEwhu0me zg+_3Y;i2i@na+LiFW^DB;BZJ;n>5v0)PW9K5c~Wm#E$$OEYwNe3;j3l=JoB_yY>%= zo*+V~&#=F_FYId#g#Wew9g9p)T65^oBGVrM1^`k#1AyJj#DD+*002ovPDHLkV1gyi BYnlK6 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/Graph/docs/tutorial/template.svg b/include/ezcomponents/Graph/docs/tutorial/template.svg new file mode 100644 index 000000000..615689136 --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/template.svg @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + ezcGraph + ezcGraph + + + diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_autoload.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_autoload.php new file mode 100644 index 000000000..8b197deaa --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_autoload.php @@ -0,0 +1,20 @@ + diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_axis_datetime.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_axis_datetime.php new file mode 100644 index 000000000..a638d20b4 --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_axis_datetime.php @@ -0,0 +1,33 @@ +options->fillLines = 210; +$graph->title = 'Concurrent requests'; +$graph->legend = false; + +$graph->xAxis = new ezcGraphChartElementDateAxis(); + +// Add data +$graph->data['Machine 1'] = new ezcGraphArrayDataSet( array( + '8:00' => 3241, + '8:13' => 934, + '8:24' => 1201, + '8:27' => 1752, + '8:51' => 123, +) ); +$graph->data['Machine 2'] = new ezcGraphArrayDataSet( array( + '8:05' => 623, + '8:12' => 2103, + '8:33' => 543, + '8:43' => 2034, + '8:59' => 3410, +) ); + +$graph->data['Machine 1']->symbol = ezcGraph::BULLET; +$graph->data['Machine 2']->symbol = ezcGraph::BULLET; + +$graph->render( 400, 150, 'tutorial_axis_datetime.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_axis_labeled.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_axis_labeled.php new file mode 100644 index 000000000..10419d87e --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_axis_labeled.php @@ -0,0 +1,31 @@ +options->fillLines = 210; +$graph->options->font->maxFontSize = 10; +$graph->title = 'Error level colors'; +$graph->legend = false; + +$graph->yAxis = new ezcGraphChartElementLabeledAxis(); +$graph->yAxis->axisLabelRenderer->showZeroValue = true; + +$graph->yAxis->label = 'Color'; +$graph->xAxis->label = 'Error level'; + +// Add data +$graph->data['colors'] = new ezcGraphArrayDataSet( + array( + 'info' => 'blue', + 'notice' => 'green', + 'warning' => 'orange', + 'error' => 'red', + 'fatal' => 'red', + ) +); + +$graph->render( 400, 150, 'tutorial_axis_labeled.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_axis_numeric.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_axis_numeric.php new file mode 100644 index 000000000..6dd55a67e --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_axis_numeric.php @@ -0,0 +1,32 @@ +title = 'Some random data'; +$graph->legend = false; + +$graph->xAxis = new ezcGraphChartElementNumericAxis(); + +$graph->xAxis->min = -15; +$graph->xAxis->max = 15; +$graph->xAxis->majorStep = 5; + +$data = array( + array(), + array() +); +for ( $i = -10; $i <= 10; $i++ ) +{ + $data[0][$i] = mt_rand( -23, 59 ); + $data[1][$i] = mt_rand( -23, 59 ); +} + +// Add data +$graph->data['random blue'] = new ezcGraphArrayDataSet( $data[0] ); +$graph->data['random green'] = new ezcGraphArrayDataSet( $data[1] ); + +$graph->render( 400, 150, 'tutorial_axis_numeric.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_bar_chart.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_bar_chart.php new file mode 100644 index 000000000..1fb8451a1 --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_bar_chart.php @@ -0,0 +1,17 @@ +title = 'Wikipedia articles'; + +// Add data +foreach ( $wikidata as $language => $data ) +{ + $graph->data[$language] = new ezcGraphArrayDataSet( $data ); +} + +$graph->render( 400, 150, 'tutorial_bar_chart.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_bar_chart_3d.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_bar_chart_3d.php new file mode 100644 index 000000000..61a01462a --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_bar_chart_3d.php @@ -0,0 +1,26 @@ +palette = new ezcGraphPaletteEz(); +$graph->title = 'Wikipedia articles'; + +// Add data +foreach ( $wikidata as $language => $data ) +{ + $graph->data[$language] = new ezcGraphArrayDataSet( $data ); +} +$graph->data['English']->symbol = ezcGraph::NO_SYMBOL; +$graph->data['German']->symbol = ezcGraph::BULLET; +$graph->data['Norwegian']->symbol = ezcGraph::DIAMOND; + +$graph->renderer = new ezcGraphRenderer3d(); + +$graph->renderer->options->legendSymbolGleam = .5; +$graph->renderer->options->barChartGleam = .5; + +$graph->render( 400, 150, 'tutorial_bar_chart_3d.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_bar_chart_options.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_bar_chart_options.php new file mode 100644 index 000000000..cf035cf0d --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_bar_chart_options.php @@ -0,0 +1,35 @@ +title = 'Wikipedia articles'; + +// Add data +foreach ( $wikidata as $language => $data ) +{ + $graph->data[$language] = new ezcGraphArrayDataSet( $data ); +} +$graph->data['German']->displayType = ezcGraph::LINE; +$graph->data['German']->highlight = true; +$graph->data['German']->highlight['Mar 2006'] = false; + +$graph->options->fillLines = 210; + +$graph->options->highlightSize = 12; + +$graph->options->highlightFont->background = '#EEEEEC88'; +$graph->options->highlightFont->border = '#000000'; +$graph->options->highlightFont->borderWidth = 1; + +// $graph->renderer = new ezcGraphRenderer2d(); + +$graph->renderer->options->barMargin = .2; +$graph->renderer->options->barPadding = .2; + +$graph->renderer->options->dataBorder = 0; + +$graph->render( 400, 150, 'tutorial_bar_chart_options.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_bar_line_chart.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_bar_line_chart.php new file mode 100644 index 000000000..16451bbb4 --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_bar_line_chart.php @@ -0,0 +1,20 @@ +title = 'Wikipedia articles'; + +// Add data +foreach ( $wikidata as $language => $data ) +{ + $graph->data[$language] = new ezcGraphArrayDataSet( $data ); +} +$graph->data['German']->displayType = ezcGraph::LINE; + +$graph->options->fillLines = 210; + +$graph->render( 400, 150, 'tutorial_bar_line_chart.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_bar_options.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_bar_options.php new file mode 100644 index 000000000..4dd846a7a --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_bar_options.php @@ -0,0 +1,28 @@ +title = 'Wikipedia articles'; + +// Add data +foreach ( $wikidata as $language => $data ) +{ + $graph->data[$language] = new ezcGraphArrayDataSet( $data ); +} +$graph->data['German']->displayType = ezcGraph::LINE; +$graph->data['German']->highlight = true; +$graph->data['German']->highlight['Mar 2006'] = false; + +$graph->options->fillLines = 210; + +$graph->options->highlightSize = 12; + +$graph->options->highlightFont->background = '#EEEEEC88'; +$graph->options->highlightFont->border = '#000000'; +$graph->options->highlightFont->borderWidth = 1; + +$graph->render( 400, 150, 'tutorial_bar_options.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_chart_background.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_chart_background.php new file mode 100644 index 000000000..f68863f92 --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_chart_background.php @@ -0,0 +1,23 @@ +palette = new ezcGraphPaletteEzRed(); +$graph->title = 'Access statistics'; + +$graph->data['Access statistics'] = new ezcGraphArrayDataSet( array( + 'Mozilla' => 19113, + 'Explorer' => 10917, + 'Opera' => 1464, + 'Safari' => 652, + 'Konqueror' => 474, +) ); + +$graph->background->image = 'ez.png'; +$graph->background->position = ezcGraph::BOTTOM | ezcGraph::RIGHT; +$graph->background->repeat = ezcGraph::NO_REPEAT; + +$graph->render( 400, 150, 'tutorial_chart_background.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_chart_legend.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_chart_legend.php new file mode 100644 index 000000000..791b6b600 --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_chart_legend.php @@ -0,0 +1,21 @@ +palette = new ezcGraphPaletteEzGreen(); +$graph->title = 'Access statistics'; + +$graph->legend = false; + +$graph->data['Access statistics'] = new ezcGraphArrayDataSet( array( + 'Mozilla' => 19113, + 'Explorer' => 10917, + 'Opera' => 1464, + 'Safari' => 652, + 'Konqueror' => 474, +) ); + +$graph->render( 400, 150, 'tutorial_chart_legend.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_chart_title.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_chart_title.php new file mode 100644 index 000000000..a8cb9c22a --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_chart_title.php @@ -0,0 +1,26 @@ +palette = new ezcGraphPaletteEzBlue(); +$graph->title = 'Access statistics'; + +$graph->options->font->name = 'serif'; + +$graph->title->background = '#EEEEEC'; +$graph->title->font->name = 'sans-serif'; + +$graph->options->font->maxFontSize = 8; + +$graph->data['Access statistics'] = new ezcGraphArrayDataSet( array( + 'Mozilla' => 19113, + 'Explorer' => 10917, + 'Opera' => 1464, + 'Safari' => 652, + 'Konqueror' => 474, +) ); + +$graph->render( 400, 150, 'tutorial_chart_title.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_complex_radar_chart.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_complex_radar_chart.php new file mode 100644 index 000000000..e990cf946 --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_complex_radar_chart.php @@ -0,0 +1,32 @@ +palette = new ezcGraphPaletteEzBlue(); +$graph->options->fillLines = 220; +$graph->legend->position = ezcGraph::BOTTOM; + +$graph->rotationAxis = new ezcGraphChartElementNumericAxis(); +$graph->rotationAxis->majorStep = 2; +$graph->rotationAxis->minorStep = .5; + +mt_srand( 5 ); +$data = array(); +for ( $i = 0; $i <= 10; $i++ ) +{ + $data[$i] = mt_rand( -5, 5 ); +} +$data[$i - 1] = reset( $data ); + +$graph->data['random data'] = $dataset = new ezcGraphArrayDataSet( $data ); + +$average = new ezcGraphDataSetAveragePolynom( $dataset, 4 ); +$graph->data[(string) $average->getPolynom()] = $average; +$graph->data[(string) $average->getPolynom()]->symbol = ezcGraph::NO_SYMBOL; +$graph->data[(string) $average->getPolynom()]->color = '#9CAE86'; + +$graph->render( 500, 250, 'tutorial_complex_radar_chart.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_custom_odometer_chart.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_custom_odometer_chart.php new file mode 100644 index 000000000..cb0a6547b --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_custom_odometer_chart.php @@ -0,0 +1,36 @@ +title = 'Custom odometer'; + +$graph->data['data'] = new ezcGraphArrayDataSet( + array( 87 ) +); + +// Set the marker color +$graph->data['data']->color[0] = '#A0000055'; + +// Set colors for the background gradient +$graph->options->startColor = '#2E3436'; +$graph->options->endColor = '#EEEEEC'; + +// Define a border for the odometer +$graph->options->borderWidth = 2; +$graph->options->borderColor = '#BABDB6'; + +// Set marker width +$graph->options->markerWidth = 5; + +// Set space, which the odometer may consume +$graph->options->odometerHeight = .7; + +// Set axis span and label +$graph->axis->min = 0; +$graph->axis->max = 100; +$graph->axis->label = 'Coverage '; + +$graph->render( 400, 150, 'tutorial_custom_odometer_chart.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_custom_palette.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_custom_palette.php new file mode 100644 index 000000000..179abee89 --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_custom_palette.php @@ -0,0 +1,22 @@ +palette = new tutorialCustomPalette(); +$graph->title = 'Wikipedia articles'; + +// Add data +foreach ( $wikidata as $language => $data ) +{ + $graph->data[$language] = new ezcGraphArrayDataSet( $data ); +} +$graph->data['German']->displayType = ezcGraph::LINE; + +$graph->options->fillLines = 210; + +$graph->render( 400, 150, 'tutorial_custom_palette.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_custom_palette_palette.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_custom_palette_palette.php new file mode 100644 index 000000000..13c6b63e9 --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_custom_palette_palette.php @@ -0,0 +1,24 @@ + diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_dataset_average.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_dataset_average.php new file mode 100644 index 000000000..4d8134adb --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_dataset_average.php @@ -0,0 +1,25 @@ +title = 'Some random data'; +$graph->legend->position = ezcGraph::BOTTOM; + +$graph->xAxis = new ezcGraphChartElementNumericAxis(); + +$data = array(); +for ( $i = 0; $i <= 10; $i++ ) +{ + $data[$i] = mt_rand( -5, 5 ); +} + +// Add data +$graph->data['random data'] = $dataset = new ezcGraphArrayDataSet( $data ); + +$average = new ezcGraphDataSetAveragePolynom( $dataset, 3 ); +$graph->data[(string) $average->getPolynom()] = $average; + +$graph->render( 400, 150, 'tutorial_dataset_average.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_dataset_numeric.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_dataset_numeric.php new file mode 100644 index 000000000..1694cafc0 --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_dataset_numeric.php @@ -0,0 +1,24 @@ +title = 'Sinus'; +$graph->legend->position = ezcGraph::BOTTOM; + +$graph->xAxis = new ezcGraphChartElementNumericAxis(); + +$graph->data['sinus'] = new ezcGraphNumericDataSet( + -360, // Start value + 360, // End value + create_function( + '$x', + 'return sin( deg2rad( $x ) );' + ) +); + +$graph->data['sinus']->resolution = 120; + +$graph->render( 400, 150, 'tutorial_dataset_numeric.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_driver_cairo.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_driver_cairo.php new file mode 100644 index 000000000..37914fd34 --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_driver_cairo.php @@ -0,0 +1,36 @@ +title = 'Access statistics'; +$graph->options->label = '%2$d (%3$.1f%%)'; + +$graph->data['Access statistics'] = new ezcGraphArrayDataSet( array( + 'Mozilla' => 19113, + 'Explorer' => 10917, + 'Opera' => 1464, + 'Safari' => 652, + 'Konqueror' => 474, +) ); +$graph->data['Access statistics']->highlight['Explorer'] = true; +$graph->data['Access statistics']->symbol = ezcGraph::BULLET; + +$graph->renderer = new ezcGraphRenderer3d(); + +$graph->renderer->options->pieChartShadowSize = 5; +$graph->renderer->options->pieChartShadowColor = ezcGraphColor::create( '#000000' ); +$graph->renderer->options->pieChartGleam = .5; +$graph->renderer->options->dataBorder = false; +$graph->renderer->options->pieChartHeight = 8; +$graph->renderer->options->pieChartSymbolColor = '#888A8588'; +$graph->renderer->options->pieChartRotation = .8; +$graph->renderer->options->legendSymbolGleam = .5; +$graph->renderer->options->legendSymbolGleamSize = .9; +$graph->renderer->options->legendSymbolGleamColor = '#FFFFFF'; + +$graph->driver = new ezcGraphCairoDriver(); + +$graph->render( 400, 150, 'tutorial_driver_cairo.png' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_driver_flash.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_driver_flash.php new file mode 100644 index 000000000..067e80124 --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_driver_flash.php @@ -0,0 +1,31 @@ +title = 'Access statistics'; +$graph->legend = false; + +$graph->driver = new ezcGraphFlashDriver(); +$graph->options->font = 'tutorial_font.fdb'; + +$graph->driver->options->compression = 7; + +$graph->data['Access statistics'] = new ezcGraphArrayDataSet( array( + 'Mozilla' => 19113, + 'Explorer' => 10917, + 'Opera' => 1464, + 'Safari' => 652, + 'Konqueror' => 474, +) ); + +$graph->renderer = new ezcGraphRenderer3d(); +$graph->renderer->options->pieChartShadowSize = 10; +$graph->renderer->options->pieChartGleam = .5; +$graph->renderer->options->dataBorder = false; +$graph->renderer->options->pieChartHeight = 16; +$graph->renderer->options->legendSymbolGleam = .5; + +$graph->render( 400, 200, 'tutorial_driver_flash.swf' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_driver_gd.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_driver_gd.php new file mode 100644 index 000000000..5aae23e61 --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_driver_gd.php @@ -0,0 +1,33 @@ +palette = new ezcGraphPaletteEzGreen(); +$graph->title = 'Access statistics'; +$graph->legend = false; + +$graph->driver = new ezcGraphGdDriver(); +$graph->options->font = 'tutorial_font.ttf'; + +// Generate a Jpeg with lower quality. The default settings result in a image +// with better quality. +// +// The reduction of the supersampling to 1 will result in no anti aliasing of +// the image. JPEG is not the optimal format for grapics, PNG is far better for +// this kind of images. +$graph->driver->options->supersampling = 1; +$graph->driver->options->jpegQuality = 100; +$graph->driver->options->imageFormat = IMG_JPEG; + +$graph->data['Access statistics'] = new ezcGraphArrayDataSet( array( + 'Mozilla' => 19113, + 'Explorer' => 10917, + 'Opera' => 1464, + 'Safari' => 652, + 'Konqueror' => 474, +) ); + +$graph->render( 400, 200, 'tutorial_driver_gd.jpg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_driver_svg.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_driver_svg.php new file mode 100644 index 000000000..6e9b96b90 --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_driver_svg.php @@ -0,0 +1,31 @@ +background->color = '#FFFFFFFF'; +$graph->title = 'Access statistics'; +$graph->legend = false; + +$graph->data['Access statistics'] = new ezcGraphArrayDataSet( array( + 'Mozilla' => 19113, + 'Explorer' => 10917, + 'Opera' => 1464, + 'Safari' => 652, + 'Konqueror' => 474, +) ); + +$graph->renderer = new ezcGraphRenderer3d(); +$graph->renderer->options->pieChartShadowSize = 10; +$graph->renderer->options->pieChartGleam = .5; +$graph->renderer->options->dataBorder = false; +$graph->renderer->options->pieChartHeight = 16; +$graph->renderer->options->legendSymbolGleam = .5; + +$graph->driver->options->templateDocument = dirname( __FILE__ ) . '/template.svg'; +$graph->driver->options->graphOffset = new ezcGraphCoordinate( 25, 40 ); +$graph->driver->options->insertIntoGroup = 'ezcGraph'; + +$graph->render( 400, 200, 'tutorial_driver_svg.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_font.fdb b/include/ezcomponents/Graph/docs/tutorial/tutorial_font.fdb new file mode 100644 index 0000000000000000000000000000000000000000..5fefdcb5994eda6c6afdd47b0e043b86a78352e8 GIT binary patch literal 31365 zcmeFZcUV+Qwzyq;6SN76AR^ILp(TSTC}3!moFym8v}6<&!MOD(iU=Y}l8OlfAW1+3 zwIxTzL=q505D`&9K|~L~sycHg-Y_%wo^Ss6=IO`RqH67`RjaDjuGG!)_EfzBgf{u@ z+PN##$0LYt=M(BdxAq9$2?&zpBxOh)GM!Z77~t5)d6M%k=LjdAi^*lf<;Asw>ldzG zuAf}C+)ufGaNEy$G3UdaGjr$BWNC&pFWMnm8ja-n$|J=a%{#y=!>7;Z$yd!c$oGX$ zjDJ1<7XAqS6#lRLYvx^=_jBIf`SJ5x<`2&o7T6%*BCt;&Uf_yAxxjOQ0f8?9{tFrx zNC_Sk>=6_cN)~!5^g&2!q0U0fg{2E87Mcj(6y{m9VbR@1pB5>K=!=Akq=~eMyce-u z?7jHW;>Dt3qS~UDML&w}6}v0;LM%r7y7*ZMVM$#{dr6k0y%bC8fz*2`l_i&#++H%D zu0=PbQ}pxnS-SGlUzScRJ-=+u@{P;)EH7EEARQ##B`qX#QKnU9Rz`yn!iZsHGg=u_ z45JmdS1ge|Df?6QikztYX8BI}9N++)+KSa*o<= zwE;DURjsSWR`IP~x!Pg%%hjIh4eF{I=QVWJ6t3x9!&;la_WN2>%}mXHO&zUMS`%8f z+SS_1>&~x}U*EO<>w3-&N*lIpxUyl(Mh@m}rh!hUj=(0pO%a>=HhtS9uzAB~)6Hp{ zpKe~FyFvG|?p!?)J%*l^o`s&5-buXzy>`7Ry%qWv`n&ZH8k{xAH_$fRWjJFfZnWCS z(a6_muh9vk93vy+Vq+r{%H*2KBa^Qt+NQfr1%QCMT+V!tbe~zz02Zfk)J>)QmdeW? zXA~zDrhfWWsMkXQ&)(?pEn83C7tiys5k70IRC#jL_EXP3o=lkLtFmN|(#-e91J%i& z&Af#(cs4&sY3()&5o^|1xMo63JgOzJr!n@|yBBtBEKDskd)2&c)FDL7bdOT`bk5I{ zKL?Cr2T!w}?eM6ub?nX??Hp5Db81MOhYoW#exmgJ+=E&Fs$m|F^~4y7MYn`wm_1zdLVxyhmBSk}N4$O1Z|GKr10?lN|urYtgytuh4e zzkPXD?`|gHH2hd-1tpT+>=F#_sgh$+6Kp z`BRUQgO6Bpic$iRG#|Aj2bvvN8SHT`pZ6W5syTV}aqx9ucT-ls^7uNZhb4-d=QO|Y z)XB_ET?Z<9Jtwwvby6Z<%(9-Y$p>lG90rUa#W)^0O15d7rQBcvpwuae_q{C(Oo z$p%W$%#@+N(h?+vbGgV^KUAK#=H6?bgm15+ejG90n@W3nCT-q^%F$PbF7-k?>BAR3 z>Mt*$mvlQft@I9k=5_KFWj2rSi%>t;!I{He%;_j3FmUm0)8#p)YTM>6FeO}fTv&NO zw2$*9B_||*M!q31x5?VPQMb=L}Gu3WmNrrcP%wbL0 zr=6MdO@Gh5HT>;Ir)^WuR(*f;sQ3D+;MT7aV|jaSu5x-*2us=K`XGGEK~85M`y(U$ zdL;^LgKzO(W91zd>AxE$4AbWetdBgG6!d+NyO#U2*)Oc?Fit1wP~YY-n>#A&)B50_ z{Q2u6bI<;a3Q9qP&08=!OgQ3WZ9;*4^AVHnFve$54yzD!nq4R~1B`2cq5GyY>X|jg zumCHHGAxRK<6GcZuB}-TILag(^)3o+1WVP-H?5>ZieMKTkZy0bWD4m}u8%G5KLWA| zl&rVnX#LL9nW*XKe?3s6qEz?FR50*qh~t!oXoStJ*Joi}tU9w{vZ9&WVUJGRzNixa zAjv*y=lRWiFx<*)4nbe{RHzh{n3*uy)LuXGeLkeiW2`Ye?`}PWs2rYo$Gb{ zIXKpNK50wxW*KkweA-zyUrCnQOK>NJoG}OvQo7s6fAU;f&#|(2if8RrixZqtOoP10 zpjdGxEdX3%IFVinomolk+^#Y{{l2sewm=JO^J?Ij$npN

=lm1+Z||ywdPK#jt_d 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

Yed7a7PO2#v_?Io2YkvN+5yEN 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_font.pfb b/include/ezcomponents/Graph/docs/tutorial/tutorial_font.pfb new file mode 100644 index 0000000000000000000000000000000000000000..130fac05b0f59ec6159542f4968069521953c05a GIT binary patch literal 19280 zcmeIZRalCqQs_cXtTx?k*qh?(VL^Ew}~^?yf_Tyw%0bDjLx zKG_F5IZ0L9UDZ!_^$S=0K`{|QK*)#`l<9;_?2G_ncDBxRO!Q3Lgu=4Q%1n%eO!SNh zWMsmQ07GXBJ6jP$X8<=L6Bic~p^%FiAv3U@gPVngn}rntfs9bt&fde(!pz*6kW!fH zPcIHaAsc|Bg|VS6p{${^Ilu-uiLs$Ip|YK^1;E*Zo{&(;+L}=5&k!d`Z6`Fte~lVE6+iX=`dn$nh_?iHrTen_K~oPCza~N+2f{A&}C<&eqz4 z&;($Lz#wM_TnzwZ`Tvdezfk>iaxoWcYdJ%kKhyt}sQ+p=w6U=E_@5qjHuf&g07pVu zI}?DT?LWJ!1OAmWS%8U!i_JeKd2L2@OF9e4F+0DQ5qF`uY>#X8o|DXB(boViE|9@P}gbX48Yv;Ev7D5IUbHLwRtb`0Q zhBihfZ@aM(GH6)5nTef{LE){0GS5$JGw z>i`1D+W^eoEY1N0GW{#Oe}%yTgfV?P1PEhl{kjMT5XSUx9e^mNf9nCnFtKyC1~|Q4 zniI(KKVHk%**JlDG;=g`1-x+q^Jr)c)ZQBx5Zl<$@olV}Kx`vNz~2S}$!!dc|K1Hq z@Azk*|C1z6AiptCwbs^elE4X!!3^MNV`yt)WbO2(GcXjxHy~WVAne}SKzutVYeOgV z*D+i`ej(8}_Me=;wSnaF{~QBEcXF|}cLe6_%}5};i3I@Yw0QLb3H~9xf65NH{@+Ch z1o(&KfCz5{2VDG(+<=SzU2MRF{ZnedbiEbYAKks(Yaru4R0hn`Taf_~-%1Dw_*OuF zDe{d3|0wcp`=7M@m%f0M|BJl-OI?39^l#z<)`Nd&ix~*}cWE&LdH^(f#m;-teAlTyipZ15dDp)n1RXtho+c;)Ndrk@+ZHqiedrs{zFhKK;Zw<6AKU- zc&Aw#+WbdiEI?=n7dvMFQ1<_-g8x1zEI@Qy7aOBLwaV=Ej$!#L_rSB`_&Ns=-yYy- z46t>6^#Nlrv;lgZfG6tJ3k>70)&9N|D=-{;Lq~wEHNfe_SP=1hlKUdX4t*Go>_tMn0wfp172fc1;zqIw6J?6WCh0Z_oK-QjKmY* zX!p7nFbF%_*E@g>Nbl_S+Rg^#b~bkeyy@{r?RGA&8DsmScZ)Yy7aI`Q30S%QoqS*w zVsHZ9ZLh4rD#h@xlKY=NKvY|cw;(`LW4pHnfenc21hBFAyO$jZ{4W`p*txx~@TZ~y z99)1eoqw;u4&-)l0XY46ME$)hkpJHeuf2gW7`|>FJ1_*H*G3@z$5#u8F8pc%xkX+r zAoHuV{}eE>|Fm%c5yf9EAfCjl1!R(ZwSX{EuNII+`qcum$h=xW7TH$|$RhV@0a@h# zWBn;$3a=KBMe)@FvM9Y;Ko;d!3&^7KY5`ePUo9Yu+N%X*QGd07EE=yCkVW%9)}K10 z^=biGj2sP(tpLEH`{oG!sYL%i-G6TY0{+i{zn?BHAgi&3qp^#PsWtEg^lv3_0il7H ztD*7V4mlSP{;%o(J~uFk*UHKT48rJj9$*m0|FM`Dfl<7kJtp9rjp6mwFfjt@-@Hp0 zfy{5pI3tksP0?ip627Szj6k$EuM9>Y)9Y=)#0Z3Xl{ph5km~hHWCDIbFuWcMCg8iC z;q`PgF#)OUUqfI5QaQXafmE;OoQVlY^?E5WF#)MwPY4qekjmxFSRj?_8xu(7_G1$RKS<@-<~CZ>Jz}`A3h+Txr?otp`(k9wV}%!wm&7x*}~f7 z&3^nTQ~&iEVfs_8{;Se3{kdbD>q`q5;lFKD3*eUq0N@TVM(_ti z;sF84%tEsO)u+Xyxiz@yo+DOootRgE?I=1+W4p^k|2BLHXAMceU>O!-rEs%|@N}XO zo%%pYAP`>bE6Wq#eW%yw;elPbicW1h)~>yM%Uu<7KsSxrs0GH*bqmeQl1Zf&P3OpB{chx58wj`YoT!_0B2BjbT@94&q_Bw= zDyBybGpdhGAWO)L>a`%9s^4sbgt_(_;R)n-W|zbaQ;XB$un1CDck_ETXUxtbvPk%C z#ty0Y-CmI_oSK>p5P@+tg>lC2chcKRPu0F{4Jy#~i|W@;34ZM9yJE9R)bpTa~AR9v=*dK=ZV2%mCUnpR}?Wv`<>QrTT zx#>gF%!akVchgn}qXQ>A$bTJ_z!qx6Ca`Kg{CvXgAk7GA?Kv;G0ZCk4gL=Lr&SzFsAy$ zG5D=M$EwzQ^Q}wOeRyb%pB}a_KfYILH^#|8*N`W8>MA>~qz#RIk%is(gcq&#>|S=t z7}n-xyX1YZ^-}^d4fW2p?1`KBJu@2Bh^MQ=FK_?Wnt-E0YJlr0W$?|mjOD>ZY$=2r zP1_Jk9hV4+t#UQia6~fKdq{06`x4p#x?C);6eRER@aAfzeRY^ z-~EH4&$bv$;uJ#z)>*c^@cp-e=y%biu)Uq%gly}C742XF@U-0NXvm0;PGt3!c}3O; ztm2Pnfm;qBQ$Ec{L5%C`FHXoIklicN&2<*~)~2iH?(qe!vP*2?a_Iz|J)>WMICFZ2B*j3=o_80YwQ|>S>_F4_}zB>|0|1FOp@xl)o?;c!W=f3ZuAem-) zhlqf;a;Cnzn0uB?=3zKolxOd>%!1ndo{O-30{qzvgLX$*1T1iwU-($S!p!`r-kay7@IZTlyZ2=n}wZDvgC;e!V{k!=L3GGs0 z%4loa{J?v$C9T|$fKYmRG;ixe)~xYXRsR{{%dcZn7f#t)yv$PC>*TOA0oQ26fGdkE zu*K%*YL5gl!NR&@c{iKz8mZu7*T=A~Y^{xIWv%+6%xcZB<+T^0 z$Bfwz6Nzsj%FP#q30nA`U-z z9At5x_%a|V!v!s2ju zS8<0=qV0W09`zv&sQyxDy4&+c$hzp@Uh*0)QbxA36xQ?kko(e7?m z!YdOB`aX1mj)-wR2%ARM8j;Q^qt|X*A&*Eod|fZt8=+m8CVxrYwF^=UE1z#L&lI<_ zye_t9NSz#kH+0ovKE9)bwr|1h zSD!`V|G>+W--Xj!uCF18j8-2xx1<2^Y1Gu`qR3+AB(6>%-fOL$M#;;2A+1gy@}9rS zDaP#s9;v?fNL%yNk(x*N48m6hf2Bf+9J@F~_=ru&a49|4ZD!gmP8lDGL0X? zeWFcB0(?=|i^jEx#3c$WP%PvTBy3p=<2Jcl(MB1wrPhiTtSMES*FaJ%4?>d>t9!^t zyL#sv981}8Idi>cyZj@bkygmn)AGC$*%OIww?~}CE?ekWw^7NgcZcA@@;~G8>_53&y zR#m;5{kfvym}Y5SNqWqo*`SHG>mLifo65s|74LKJOE!;UH>%*v!Gj-9b5URTObVsZ zqbZ2Ien($#vQkg?#5<0oQj8O(X-(+?Z)tpvYORz0LwI?w9@_i!7b27Bg#sjqwxE0$ zv-(yhPq^0koq}0vGQ^$OJEC%t?(#hH-z^F_u5BEloA)@Y6F;+jlPCJOy4!#T5(J$;N|~hjh}4aD+N^` zWPaMRlgV0CWq{a$9JD$FiU)D9AHx4}6{R`8#{Y)^l6q7KQ5-L$3wq85(G^CKH`2@r z`vfe6&dxJ(B+N+(yioQ`nkTteR{y1zBv|2n!`US!s8XTEDfiWSJDA>z+AIKC7?DMY zT~EHEUk`q{()Gtu$H<(Nq8Nl89oN()VQOu`(@6T;)H;eaC zDkLIyS;h{u}6k0EA1 z80_zplVs)4zq9$7N5@Xx5fG2jeFg zCh6&__MmEv#b!=}0(&AUlg%Sd>bE{{(*oE06z;O^2ns0*FJNl6_BqdIqYbNZ2I#Ik{&^f{fBk(kGvp5ZwgN)`f z8*5hlY-Yye_Z2m7_$aBPx9HB>2C@x22VE`35K@3@fOpi zwb_R%q0?H{eK@HsjUb7_mZ5uHRMI~2dg9PS?-G?|NC>MkkuoQI;(s&{Q)jd`f_7ZK zPrksfSL#Vx$s_}>A0!H=LPl;~GH`6vWj0j1ek8-0&L&ETL^HeombsW4s12WiVg=<& ztL)>MA)NC5JI0q3(&^}d+AV%Jf%TE}2aF}-NoZ4EC4!dRj}#n4L_A5oew2M8O=X|7 zJ`Ql_6hSabDxk!?2(M1*t_1XsGQ$-i*7CU2aSSJKIFy*~rd1)c8(~?{;1P{h#$I@s;(h8`ShrBjLyq*R=(XS(OX=%J0pvue zt80+2BA&EZi?>2{YAJC{oxK=Jz`Js0EO1gk_W%(7;E)APOyec(q;eIDmY(Q1a@I(Fl`7+CDx-qT>F)GbzI*n-Dn znZcCbXF>NZo|*$p%t_`nH$B9zpRhdIK_6p&cJE+gic`$xBt$l%I!8W#&n==w<$i`X|5-Re<{tiJw1Dd? zcd6q)LMNgw6V80wFYt|z+oaz6BeJfPyrM1@Ej-mb(e;|hlNf_X9=i&ONG8*1ZG}=A zedQ2OVzMF#p5W?dEi2hOt6wdx4G%EyY!i&U}K>wN$HObpY$$Z zojVgri9+)T7-T!C6=H15M3-(xzHQkRd`UDZ&J)23YW_WVcb@Qlgt@5q3X&_8&ls-> z!zT!0e@X8$TE;lhSlQH0uor^MsYs40aT=>^^(+gVo(;!?e}eud(-6AQAwBk28v;!S zN4{ZHOUojov?->ijNr&2_wR~zZN(2aQ8g$(uG$`G$||(2T|WA#VZ>>R$Z=E&&M*>> zn(c3YgfXIbq{V+{rKC%J7spN_68rV~FnPtJgfR_u^!RjJS#x=)eHB)QG8eXMrfP?a zykIInE=ZH88Q$Ir#@hI|%um>D>W_DgmcLw&ni?M$V`-fqnrzhU;*B;MLsS7%AoVS< zC-#=KFoPdt44eh|U)FeIc}7_l`+EYONi;A@ArR3_@W~zeBrSZW6&aYJHYG$^0HhZ0 z85US!rW~xLVXl`Cw*7D)h5Lr$1Zh)5D*KfrskL&NZ~8jZT$7*JSnGwy8G;H2%ARmh z*8|YSY9P=D4cbw`2Y?TNJ(Q7my7S{tPUsSpy({^3?PLw%!<-RqGN4+Mr;(2|le{H1 z`sNXxHB%4f0*8GBBDvEsiQb9QZ5?1LeD)YA;5^J_4bIP% zF`{@CI{n~_KHdP5ap&1rWReT3i3A`iKV28l%#dVR^W>6PN>S8OtXogLb6V6>v~F(U zR3n4=9B^7)fWPw*ZIsLeSpJZ;M|BF@t4za`4IKa!bCL63M2LDTJBIQqR|S!=Bz}pU zL||J=RMA;Me$FjyhIY`gZFWgZHe8}mX9GW$EUU4yqEajy%UvCsFjk5~bLx)_!b|^x z18d01P6vfH9PTD%^-J_)k>i9&=n6@)O`O~Yb5*k)ydgf%S~s48i;cx>B_or65l5-#ryPz38Qbv@ zEf1)eX!Rt_K!QB0Ja7x+gUb1U@w<7&iQ;s^Q}iiLvoe%p7_(1HsB}x7sfb6|H8RhD z#Y?mR59i)~JgU;9Q?l6gJe6EhHM2#Ix9e9lEAC>pjZ@najOvUz9IcWixI+eL;V05n!?g4ZpiRu79p#xCL0H@-zypSX6b^ zG0DjxS&Dsy=w$Fas^Qr$R6r;u6Kv6f80KAAFr6C+K=k}ciym9^1)oj9J`{XD;=z|E zV0tkCANg?W7{*;YT>!l@2(nB3=d}17-V*-yT0~8BJGk-zh?2R?I>aGNpQS@le_e*T z%6Dv1l!;=iY70d^J|b@_-siHbC+??+NM`uof-wk=XycHBT3O(L<-pb#xh8&dA{~Qq zN-l+H(wc3_s;y*Z&s=NC{CGb!Z(9a3G$U>;4w8rd)(EkVQ+a9KVHRPFld4}=ZEbeq zsn4YdUvc#Ztx>~7B}FWb zZ^EqVdg@X}mKhtPL!YmCAIw^m{n-R_eAO#I%ayLQtX*75m3DEdJ#U2{&RX&tK1XZv z9JS{aFmtl1D7KX_>qWJ^WAQ^`Y=LfR18`846_)hdt_&JJL!yX}5%ju?LuMP~B_iFA zK6*I^iP&NM8sU=yho>w>1{AXv;6F@Xi6I3~$!UT|ba|%;8a9Xi@|_4jdFI5}5sTJL z>t9c02qSJaKF$sIeUv@Z`rOf?;~G@E@!iVZ3N1EN>x0>1Yj$L#m+ji+n0iBO#z5-x z9KzlC3Sl#}U_QOSXA9T4_6}NJg%3m#UDvth3mf{$sdaY|mDoXvLV|6o?$B1<<$&w$Yq|Fu(6zvyi^xna{ z<^6(wF@M%YqYE8EKd6D?P=Z_(@ODh`*ZVkIh+QvQ<%ebfh_}^L{v+f}VOOeoUkgdq4fz3o!WL6S<8q z66uL}Z9=EZ;qFSNC~DiE8LF&$N#e?VdAt)ELE>ON@0iL)Iy*Sa^LpDTyXmT=*6lHj zg<|rvM3NG`r(ee6Ybng6e6z%^8c}Lu(3>MmjO`6K>hAgX1hW0Ow}V8sxv??UTNw4F zot|oNi4i=d@a4MjX3E5HA#MFe!M{3VvFcHXkE3t(P}mlQ`0Ii(hJ%MrdPs)D;Tjjm zq|V5Y%aU~Mx*PoN_z}n!)t;RYueUDTqN}pN$d*@j3YvrPV9TWC#C^?JPe}?Nk7)t> zbT9is!cx5Vgt4+IX9DM|ceB71V^GapRNG6<{lUS=q>`-_p0Bz^D4N}zQx8@ zuqzQ)XkV&GGFrjvU}Xe`5U1fRc9}7f9M354Zx`L1h@%DE7~us!pKAm!_&QQ){*3o= zZ<6rA8Ng#=n=L`tZEAR;c~z1*uGWV=M*WD#knd$0psZ*T zpo|(El>Zxs@X=O)^BF`m)7T^ZD#U$Nr8az6`2_>om{6dmj+^mN9j#ecvm-SN8%j%l zhr;<-^C%wO1c&k0=>yYtEKNA?r$+|1YZOx@Dio;;Nf<5Gp{I(;TFkMSBJZ7v6XKl1 z?%ZshXWnDimy3_VOOKIi{m!W;-)Ow7c>SSzU~qrO?#ydT(uJY6@d9K*b`{v~qHFQL zo+k`;Ec5yrMxkzlYEQb@kP`-9iKP!!UwrE$Ls%Z#r0xzm9z_R0m%?s_sJ`2JY8BS%Dc<}A& zeF#$?KPWDOWOl@C`g_%#UN?7AZ2cWdUOd~pFcZK`fZrVD(I2ClSM347~0&;TpSsfo_UOkZjTWTmC?J8 zYb}iVw2enuxPc6L1X2Zh;HHTqpXL#w zCY=#V+|BGp+eU}l)B@jPmRQq6^t`#=pqJEbVO+ph4MtN;Twm8gHn29LA}hV;u3$Z05KvA-#`0OABHT>5A9)dz!7qzoZ0V9U$L7 zk=UAL6Mx9!F(l$!kv2*VFr*=dA!7GsjbSI5Qr$HF_A#}Gk|tNxF*YN3EnxTO*yB%G z0lP$Qf5;9~Z4ygp-5f}$@yACre036LJqOv*xs-1u{r#)^nNvB=o9L)nn7N9P!4FAg zYD{OVUB`9XB|)3KUv1seZoIrvu(?SQgdjAScSZ%T7NV(xEPvvis5hJY=NuFepknm$ z!|^8;W-h{5fHu&!yDyr4VhOI*$bR?*lKAde8Zt5a)qrU)xTJggBYpAO%kWz2 zvPj3xqD!IZBA6xOO!T#M?5Cdo0SV5HMqIlhrVMWuCsH2D)wLB9A)`X=-r)gPB}q0e z%Z)~P))7Z;RS}7gjYZ2t2|*(vU5TlS`b7&>4Ye7Usqd&6NtNI2XJFgfu`gfB3Rugu z^O)DEZuNSiE@8|J7+Gs)fKZ0nR8%#4pH4MAv-(L}*e~}CbhF{i7fJZ&AWu$v^$t;& zXjnOy^9@MX&`?&uCv>c`N(xDjY@8|?TSTX%5}9d+B?^7rfX4!;^uQ1DEm*S2)U4Fr zFsx@td!UCY*hKJu@sD9lye2Sv@kRBkyVHL7s+l0#Dstz^Y_IObu^-#mNf%k7Y=FyA zyPr0PAd?LSIyJ7SQ_O9lt}DL=*mpYnt~T>|W z4KSjeYR-cTjlN#v3*KxrIe@k&hEVXmbJ<5Y8w92FrInGau|t+pQ}ykk(Runw`zb@> z*Hn7OCT_-kGVdsSWz-BqQv32z2dPrvkSuY?Ho9E=%kq9+#yqSk@s2^lAzb8%Qk{iz zSmX^RB|>1%_;zV`r)3*M)H3OvHmHU?rLsCI3itJZEL2_2mPjHCItIjMd4uQK(a;*q zr5>X{A)^j=v@FW(C-J>lkW5@bPDUItL^dz0K~Ew0F%Bn<_{E#LeREH&`0OA7p=HWr zJCWuwI(RjLLDGkt(um+txP8?Dm{1Q~T%YiB6-3Qm{!JmHkJH8X{k7)Mf)~w8b#~H8} z-|30yR9M0#UXDN?9FT@Zgw}KV@!U7sjzq2uG-f{oGz2I68fm5^hblxJ@g=!Zn?&AM z%RQ7n<+ccYo`LTEc&(pWl1aOT=Yzt}KMo~}?5G|RK(taAQ|1L3t?Eww({~@;y#E({ z$c(C(MFmWF8x|LVQe<=%psH%q7!QLUCGbN*trJhsb)a}~89E46T==C74+Q(tfe+90 zywqU?e1x(?=Evg4<)0KI)w22@g(BKivfc%;H=n<3yI|HYEu2ah_z)PJZsgd_P@sPy zZa3%{+#ShWav;tX+dYcsU;qiCnuvji%@@r(E+ZLME4qb!KukxUXALeJCHSb)36plT zfq{}VHFz3!lPbVuTCLll_`5xX6Rq~T7!DCNRckr{<*X$(SzN!LMAW!V!D?=Df9gK# zdju)G5myDa@a-3oP5l!Ztm#WL?@0xk)bdZ{kh7curPh{TE%`Cf0__K0%vJj6iku))){QKgn?eQm5F)JFd1h<2IG^l{hA9Uo56B^?d6mUXxe*CeMc*EOz2vr!57qx(* z{dW|yPqrjI4SOh{-aoz)+D%q?rKkW9eBCJb;qK~)-LW6%rq$)LE#Hm$`9kEaW8c5* z^o*AXkvFkQi=q_3ifxXvVo=d*>tTpXo%q$!hsc}~5moANDvq1W`THe}np>$~M#vZN z9Zb3hv98)xU9&v(rR_SrXCce^gyL~%Cc?QFj*QocyV!N(3D=lzPqqS%k;$BEg+Y8; zodzF^JrI2{?9KtBju$cWPQy1SC}ZNeJROBt_)~<z&@z zCQcD9&*@AGy{8ts`c0K=l8cIMb%az^tHVqCV%zQ^C0KETAB|H3Z9SVb*BmBQ-%psL z%_@!5om)PC#IG2Pu8G~L6`#6t6Ds?Jns26Dxp@u4w7;t1uU8DG!ESz|GmYKm&0~XQ zcu0_FMgF92Y(xkjeN6_XA{sX4-Q)9~y}?kZwphVpZa<`!+?+BEP=Odj0=k3yu3e>Q zi0!P6DXu}|om%QXk!%%e5? zu|Eu#2+Dp~V&8IeFFtj7sI5VhYkeO0ibB1p(F5);`-0V^2#bfIft2f=)RJ-|(W#<+ zcw#s#GSxt~*n@_?ba_Hh?Ju?0*sd~8!*wj;w9svkmgGuV7-odnN(Onx`lz}6u|YJ` z4;4j3CIcFB+>c7NyDles;!l%|nYc_DI|$Se&Tv(V8&!$b8Lc05+Q4c0euI3JxB}kZ zW-Wr|nfT*$ta1Ttf!+28OH+_#Ep&0cm?QGrYn)8GtEr+Y^$5*+chn4dP>oKE?b(pp z*GXcuvO=D+5*dR%ZvLUQr+Q|SSbL|T(uW6_BO{kF)m&c8jvP;UjTOjZ!W9~2J9IW^ zQZWLtsKa~WCe1h=%5Z)d4_V6S>qfaxFVAut6E?> zK8**&(_!zeO)&b@@#}wT=_G7Ud%uR37!in@`W*Yo3eNL9{^z<>(ec%mMlVejXV~{C zJ+|gtjv_Q~E%{qB`(Ir+_W3Uq0!6NaHGbbl^AqgR4@8&6L>CDxIjadLkipzvwzv zIUw!hRPNz?V$O}P+3?O5b<%TnA@Nj)m#>@KxcTUGU^-2|U55YLj7w>%YEmQ*P-~YW z{AFT3Vjv}T;3a7zYRwU>kh2mmwhEhg+X@zS?E_Nf*Tjr?*YY`d26A#1rd#1Vd_|dF zyh%J6uj>e^`p>&P>0{Irnc%Wcn&3w7tf zzKZgGaC|FkJ&P ziurO>>?lgGn^?pUh@IG1uqZT>d_w^%VB6M137a*COhBNpnP*%@}B^3v5BsB>MhX=*vq-o7~~xG*$$m ziS1*fl(;Qbq;^dQL-PBM^;t|IqD#1k7M~WwX1frBiqdU)=gU_$pS-#9f}n8eSb{3N z7!GFwcC(aKe{>qIuU3N%p;ZjA*SFI!f}Mc!aO6J2`$paT3acv#LBi|qZz_Ze_n35V z3{vg+(aNN(d!Ya^yBa(oX{mKk*hu}sz;ieiN1cn59I!Jy${vjw0EVhq!|S)=zpd7x6q}nw|l`r7~QQC3mGCopqAuk+Nh=(}Te6TJ0B& z!$>=kR>(@l$a1G`YrApUUK4E>rsVo^g1zu{B{ofqRfvjs8ri7~iX>l&5!Q;9`;Vk( z?+J?Id<90|3xLS(8Z1>=wl{lPS!Q2k$eTkWzzG|^A0ylrmpd$yfOXMFUV zyaD*QqrHy=ZY5jwpVG6@1lsz(ZBuT9PF2N^;0bJIq7q=}-Ai7$AzmtghrskplPhD$ zLEn7YMU*n+qlIZE>i(vO_-JNlx6coN#F}9E7ENC${!8R@Ss4{%x`0DJ>2>ZPn?lBb zL*EybhTDar9k9V<225>)M*Siga7O#qCZ=D;xDs9?9ULAWN;N3*p2UL;GI~0X^hs2lHcQU$EljD7)COnB57k^s zCO!pb8S46`U)oj^Ua)YBD6Xcqt6b$h4pp>*kwPkpI|_c^T#TUu{*F*SE7duH*ajl4PC^A8I)Gib$xY zRkuQ~^d%pI>0t;(RH5eX9P?;26)!%)00I-A?uL)y&C{u?LVm276*l)?MwPynwwsJ9 zELlFaRia%!5uB`-e)apG$@%vR<=;;)pw;j@H!!uSbUeYhjv-gi&&b`UlvS?Vn6WsT z#6xlAOLZ?4h@_S`E{ktee1PBnVwL9>Xc756T=4;wQ!mqJ)QSxCr61?SQ9ab1%rNPi zVF-hyjPzG{JRwQSn z=AD#XxRHgU2TW!$mJ;?6-4R|se;>_T3Qf-_I9I=-PIpljH}HHX)Lm^vGDufPqMx68kM0G zUqC@)2XC6&i+F#=1=*q$xZsE7ga_%2T%brP+h3^a+z1$s6=?rP(b4+t^Oj68t5ni{ z-v@cW+3LZ>(AFeIUdM>#4Agw?L@E*@426Af4UeshB3Q(FmjV;r>~g90dd4gqyI5o{ z%hJ5`qlytv!o*vIynuD|5HElXNww zR=Oo*v8Y&`vDc)@@+RGnntZ^wIyZI7F^N&_pdB`4(U@rRGV$h%3$5*;EWBiJ%luf+ zu3dqtt-9zElb;uIPF>glHJ)f2GC}9(>Nq1OfrU!Rwcsa$+tX>6CL}d+(7=Nt-Dpzy z%s%KX=UD~X%jEa`k`$KG+fMcE+0iF<@sS+{VHyTw5;LIdr?1KKcLO$~p}iqUZ}fOj zfUuBAG&-+=Yi_EP6QH5f58KnJKf8u8p3e z-r2S2V9dKJ?~!!}rdes%6L#-^p*1Dp|e_O))Llk+(u*y%&- z?`e-Cpg&~O$|%$*QJm50M&3qgXv$ckTMVkgmHj>w^@*r@*CRk~oxzPk>)s$}zSTK%L74|$+r^rffcu^%=Pr5jT?Z2X zj$$iE1+zNP)gUV;BgSAI7-9y@xb3ke(ei(K&8O$2%poV_>Sb*@lyMs zD|ohu{3s`vWqVWAQ~$~6EVSEU{~+vYKvucw5DDREn5}glj%vW#QPmQSE5uxohS%@A zevfS{QA1dVL0O@0C$?x7=P;Dg^6YOm9GxOFlqT_IP`2Z=OLn+MLoc!olp7k@%0$!Y z<%XmT>v${-y8yDd zl7$BcvzR=DCk+B*jWOiH6a8H2#&gM!I3cqqRA())jEJ_|dPMzn^MT;Xtu#k3Mb zd;tR6W=*hvdKS%4&Raz*m3Ws^@2xh zMY+J@DOd9z1r{B~;cQx}(jcsZZfdRUe24xXbN5+)2;=gU00VP9Zt49{=p6o>D4o&y zk(ckq#lSDg^)SX4u??o!{z-xvYlipnJ`Ozw$t8zQsD4GQp99JEnXm|7=IcHt2}m>E z#5osq*eA=9RUDxG3_TtEn1-bG*@@ED|J#*jD?x(bkMB&}>kbaudfto$P=yJKc>JIn zRA}OibIrAR-K)aZ_y`0@=9YAa3M6T5PO+)>>W3?7JWr=++T4~=;tLJc$qy3&E68A& zB)ybfxqe>T-Ny%d!KBgf1Z=@S+cpbYjaz@0cB>nM^6Me;AoM+zQ)RT};;I;Kvvhtc zE!bzIA*ag+)v9M0MDT?!v4UY&PekT{T^yU43gDc}jAo-S#I{^@!4Z5utNFPPCF+2B z)%yUh!HRHVHqJfRj@LCGQ3@MtRF&QX#xvaAKLO(VMV_ROv1fL9354K7#%OF?Llce? zsfNyy3b`iFW$+iNls3#K+SKxhChBl}XGTvtts{gvfJ7|j`N1{vikz06Q8K>7abL0& zJ8b1W!knlRw2&{c77rF$!9@PDm2k#ae%uel6YVMh!_Xs3J!|i(wU1K2;g29CPAG*8 zF-x{=upS)lDJ)}npl>W;zRZw1U&2oH!0{bp1F&>CjD!3vPv_|H*t+xK#cdm{0& zTy=>7O2!=Pi_bC-n>*hrW5!$`VS0C%JP40GY}jVI5BsD^-kk`(m^mi=7U3=VLUVBV z)v8=m0CZv_`~abH3Y^I{yRP6(66@Id4RvyodUr6tv=PH3c76%X( zH%aaaq5I{No+&|B|E}zs1-)r3hO{$2cf;kwwJj|vR+r0kVu`}9$q;;|&=63Z!>O%? z-LxN))zkF})u9FcTl{87cfykxNfevNJye3QaW+MB&tLQ|k8?cbZ01$=cLXIq;v)AW z&&o<-1o$SXYDIF+;+<@$Te9LOKcgt~2H7cDGY5f19Kiwn-ep4Ume#6T53pww_K8nF zn8xMB*u9qs6W7T};rG__)yM{q>cMIyn7eY`)Z|=)Z~Nr;qaV}DluXaLYHxsMLS*!D z=2)yC^LN=irV=%1@=?2oF~Q5x7gV{_N3ZS_jJ)$E?Zd}~>Gy$z&c4Gb>~;;Dw05PD z=vqp_YX^Ir>W!!jGlJ+Vzfiywdf3rbz_zd4s!Oi$TvU$J`TOwnH}TNV>zZg{$WucQ zEIDGyT?G}en6Z%Isb>66)*fNqtynOB(9(Dp5f0Sc%H1zrd;{Ujy1ZzPJ`WETB>M7X zIwTnb`Hp!2{+m3j)Meo$e)hG=_i(lN7QcMFkgioDBv!8DEcb=h$IqU%B2Sf+xoCDq zycEO2=~9v4Mcd?F&!`N+-Z7OQJJfpk4GD=5LW#z+x34B6EwxXKJv`HMiF?>8X~`il zVUH`$1hC{D{D+|^J0~ez-BI~f$#41gYZDPY&X-)xSj@~t_SL%ViRN@^rZqHECIFq{ zqYkPS13`G>zQ_}Emb%+RpW(n9mB4AdyBMrZ&-j#^nKATEeN}#f`{J_}GKf{gu!?6b zgw{1n1i(FIl;yy#OmyZWe!sZY*uBRn7>l$`AabV8lFsU6Aw>#i6#ka@@C&{Cn)09z zbMF0bShd(Y*|vIqJqY#$H4}jI_po7+g-W^doVe@o17}~;C?eBUE$HH5Irf{1B{Zbv zWUTiI#=enKyji84q_eGvUm;{4L2P8^f&y|wW?FZkZXmH& zw*F)t&Lk+!!Yoaf*kC$*C_bIX2atZZg}mg?qj+37&912I{}Pji1O&6CjrHVpia?czY%UoXUPct%&I?&ELyx9!A>G*BlMOAkf4qHmW_<3x?Uv$ z7iUk%H4SUJP9Bk*XELL1nU3rCV`QSK{>qXa$YL#-Ml*r%P4|Q6S6!ylkcV(YpISSf zs&7IXtJ3UDRV2v@Dqj$U*H`L>^nZOq&%cy0i=7z)wDcx0I23ebkmdW5uWRcJs>IZ5 zIy`H*EX8dG%ofQX)P0Lg(OJnQGr7?DT8x9Y5Le}u5rLR$N7>wIk{o`60U44hj%0t7 zD1|QnA|KFQ-X%~PEzX)|`?cuQd1LqJkkeE1Bw_;WJ^iwrt{_vzC6lt7A2DzUyuPtAvVtxouc7zC_F8bo{`R-ZtMfuVd=^QR*}#aX1agl7lT`G77_Oc#q&(kcO!)Jja$h3=vKRS8+dP zX6^u7;j@BwCtCb~>3ig?OyqQ2H&Q~~;7!q%JY70zVn=TEpQL^E6JYSFtXfM3dL$(( zyQtwdy+3CldB8848n(y66N%~@D~BGBLO>g|9(-l%e%(hRw!$am|s?Q!NkObmtG$e@6 zNmH}dA!%8(jABIxKK6~U4U?F{->*mAxBft)KCh$lk*|Uxr3a5Z=Nab5Kg*&IRmhC) zlhm<7@}k(-dH|fqK^(GzxW>sMIF4YcaAd}lxZjHXl5fKXJ3l6;XTOPS>8n>-u8PsA)^5j??Yx zSN?;#ZA8+}D;Z+*JHN@A%{F-E3CTfY@Bu0Ja)@>DRAX}VF+XWApU?P`F|0s!^cvZM zC>H5s_>lFrPZ?V9w&iVL{!iVNaO-ok#AfLZnh3;FImfks(poZ2}wK+oI~GtA}{|vz+tdmy|)m^5S>)8%yv|m1m+# zI~;4#jBz3jX5Z6uPH=59`BwY}r{u!zv=2fz+eW?D1S8mGmM}qaKiv1~ns{dx#^HWm ztQl(m6t@Q{N|IrB?R_IMIWfFshT)MfG$*PTDE~RBzPh@2$9FeSu>S=jBsPZalx`N{ zqo1cN)5U#%KQ%^S-_7(~;Yp=Ks})GnxN|CnR`J7ZVvsNw+n%K}B*_6oF;h?3GCY1V z$nN(#kctaVe^4|q5D?)1qy0bngYbVe8aVj>P4It34vehs{Eh9r}nKp-J8K#=9KBqTyY3}ICy%e^5t+YMO=2_mRv zQCUO~k)ohdwA4yOv?3DDW6|UEkZK<-*@I-64Wlw|M~r%=g0Nt z&dfP;&byuWyxWX~5<=|ohbPjk+1a@-%>QeUkaur|t8>ez&aCX-R8tS|L;jc(k?;&`<7I?z#;5#xDp-{{bPJx%xo!@}ob`o(kiiC&XP`AFK{MpRrSf{(k5`x*je_h59hG zkA?Hp`sR-1qh9O!8zG1P008GS2HRTRne(g!^L%A#zJ~bMW-@U#tdLhY%9~X=}K>FBF8$CLk>ia^~9=g zi5#0qjA2dW*kW*!Ho^$y4KRO);gQHOB}0w&$T3HZ#>J6iHt0G(=vW{z#!#e>NOFt? zkz*aHGG2)s>&XybcjVYaa)vw^Ikq^`jdxBBw|2LMmehC1Lu)hT+?<>|xu#p566$F0 zXbV<1XUQckwIk)pO-*tI_G*_ag6+Y!Wx>G6YklOo!M197cCal}ckLQpQm>4t2sc-^ zR0NxX)$Kuf)W}ge|Iv&V5reSIZr3)q!Ahbz7qxuKPCR7Nf;j9&Bq4 zwYP`DEi&}454HsX!zFFiEgiu?mR#2s4C0No_0?@lf?0A$SgvmAmRo~u?Qlc5rlUI4 z5^7lj^V9;VuxCeoP_7HN04=I(Ys1a0&>cH;)Whgaq1s>zAUZU;2zw-F!e9Zpy1hMI z8>)u+s%{G=XR45Z=(dFeowY%Am_P`a z5~}I!2&ypP4A*YRl0z-EO`QRRq$|`>AMWe`V46dbiEsv$&FzR_XFDK@=w!*wK^5!P z&YGrBdwrHXFh>^7nH_GE+k?P;=p6!3Bj|r?YQzzS1)9Nx5z?s>b=8NPzY8m}p{}#7 z1ttWFz>R^h+#b%7+dFF-g0&rZMWb<3Q@9HestvaULP)Uoamdh0K&HATyez2Vph>R^ z!Zkr?33mV^fI$ct@a@#$!L?C!)>aBAWYXG zE_Zad2J5O}qLERsu5WLy?#3CK!+}s;2!*Y>sRP6h4q({oKtRP_r87?6THOXvcQ#eG zsptoS?V%+tD#<~`w${T@n<}N%wJ=CK-VueUUH;Zgn$!g}qE$D^-#b9$o+umxqXBp= zP2F$h)2^K+E<%dd`>j~dcU)>?s zSGNQ8gDuzSuMP>*4aj&v?raG}Kpp^A)h)^D#`14C+a7Mh)vdA)*G9Dr+*<+zwnx@6 zwA40MFA2)9YJps;z+%V$T(qLBRi^^Q1)4e7RHxCdxKJ*dRaPm_o>f#iZ*oPUTryiO zub4HrWLn`gIeGGII8V-!=ap0z&ze&yLywBdWt9u$Sw-^XvIX*tlCo)8a^d{)io)5m zE@sJ<6_ckGmQJpik%bV>sw^(7kku|D0ZJG{E}V-u z&n})kbEZ6{q;hs;Md9R9>1DG@kw$aMrcJIanN=oFDFjp|Pnn4q0XCq*)R~h@ zO0(o?lS?O0M|7f-V7CZ51LVLPrWckKR!p9mCC@G|oLYhhK*y4b!l?i)^aR=iCEzNI zG<85)Ld2f+lQ7%@0~5j7p^|1e+>uF>T@IaAf~$uWo|L;I3=EQ2}$+d@5&Eg5D|vHCU!ILo);Zwt1!!j2VM7HsMs36r(q zzJ~CEcCHJzHAhfab!2VFxTx9CAumBn!M@i4qb?a)-_g-JE<3xct7~LU)bbh$s*p@2 zVbV&v!Bh;9C8VBo5Sa`mwImaMbHU8aA$f3A13hFi1^RT5cKEiDAQ-RBBnz&VkQV4a z5{@R5Ciuvt;@Vj4>RAx(3Bo(1%vF0-L;u<8Q3wp*@AixK8t5|uW(xx( z)c{2W+}Q-*YIQ!DjDopF0S5o)aI_HPe~cye{VoQBF%1EnGC(V<6s-o@1XWDhNF!Ve z0|ova&2bL=ma8;t2D-PyCj|Glz`fe|^=ex%!owxN2c%U8Tn(uFt5dldyf$MkNI^AR zTLL|hza20dLfN9qK&v`hdt`<%jM@QhA!x<#61Arc@}Nmo6pIcR6KAMX??V~F5o^_c z%^-i;=+P0dw+4F?{MN#qEpP|kKa?bsqHAL$t5S;h2GsEo_b~Ji!FU>eGPK~8PM|A} zg0OZ#yGEZnI6`?rXokXd4aR{PP!^F39i$8HLz%}J2WWy7t}ALR}nBV7h~-3p`EsAIRoT-g47c;I!7>e&EK8=N6`w6(8|9fEV5S(D)?RR0?5 zC?7RwH96BTl!3|!r6zR)7$ZzD8HX}+3ViH#IZdWPM z06l7or0P+=*l3ia;t1P%OG$2BDxK1@)r$LK! zMao8bKOoQA+CzE6^{&yn6Gp+a0j%&|)Ur!}1_M&Q1o|OH^^t3MM^u+0h8iT;U!(4~ zX@o8R8m9q{YZwej8e%E~JpU;K*U$59dJJG1rGLA+CXnYi17a|k%eWd)w`wwp)RtA6 zw*cKxzeMRQLoe+L_SB?OTLqeCM!Mh^cab0*X%rev`7Tw?0_sf3-?O_W!<`zBqtuPw zA%pIYS`W!!7YtsP+FmmgW*ofNpj_daMhrA~Q4)~O(RH^BT0?`di_RG&%T;b8R@l20 zKH5%(s~>k9q%dlm0s2Paj$Zlh&Y*DxwY{vaV1x-_#C;7V=X&`cfKtQm`}8>Sr4#N( zc^*vV@1yL1-GVe8;N$g_M9lsb2G`3S>e?oierT}`th(sFftHcB_RtnV2=R`=`>}RU zE!a!dAT>C~HKh|9*cg3U-;4LDvAgo&nN3-Fm z2#)4~g;}AtmB2L_Y`Y3*nG1IIG`Knqt|UVbY{B+qb!E^*&V*l_6Z_#EQ{l=SILG7ZaBWIt zzB0HAalrni@U4tMS_#(&X1yLN99f$WAuENm3K+jQ0`p`TyF?ui;m7%l)N#wyyYN1w z96~x7zUA<@0%k3N5$3>Mc!pQ!z;8M9n+TOI2Wg9RoUP7K2v1h18WoT~Wh!TH20m*X(Z-WiDhyzOW6e`JF~ARv0|+6?1X5t)ze{@(RSa#{RXZgWzieL{cFGn!oJb{`TM-@66lZ73hX!7 z5{_CUnl-8UO1M92@S}x9)27W!To%RtKkXG02W(BNzuHUHIK`)!XAJyrBe+F+b6^|(WYss+xg0SX)y zTSKG=&Z9mI`s^AG1HAfoJc#1*@92+~VmnBX=3|9a3Zs2F5+Fj%5K_%wi_%x4K%Lr# zwnP+4q~n0}p{+emy?3x(igpuP?3zqzkpaAh^DKcmG4|B~(2OJ5@aa-NBf*}~_V0n1 z*GP4yW=!fD0ep@eCU3y!H*hqQG?1la9oYlNpOO{o^;dX3e&EU(0sH=j9HyDjkHZhm zhG95z493ZWwol=XIym10(_;H&_LlnD$=>3+2*=9VPFAkov4vMz>uT+SutE)LmK!h_++S`X>f&$;J|S! zVEzccB6fTwd&$I(n%I#SUBZ!E_M(d&&SgJS*b54KUSZEE?4ZJ)?VT<> zdztl4X9pDa%u4oCg*|O$KiO{AcB}AM z8r!qnDC|jNyJxURCHBZjwrhQYuuEY-+$jk^jAuI~_V5m?@NgR20sVGZ*$zMd5Zw5X zi#@cO-)?2w{rrPzY}*fVgl!7j`hZi|n#La3Vi6v2vIh=Rzu&-bx!)*kv9K+NDe;%^ z_Z!*$C-}|bmBQwuY}1`4VUwM0^79+vXyZ7x;l88728G>s?;_#8qwK!b{Jr<23HL5y z_xkyJ0Iqw|*!p#LVSNHyfB5PN|5bjSovneX*96!Pa@gG-cGq@xr-`i&1ccQJTh$~9 zt76$5E3LvExooAC-M+#m-0oy6Y^-NH>$bDyM%J}V7P>C8Wt~HWWism=!aCrljs(`O zur`G)ZM6tX71nBDt$sedlC?BX6j~Zt^F-FvXcn3z*0h>$G_yuO-vCoKTxOyAqe4hw z^-C5B^+#F#YJN#wny_RMTjJ;I(pV5W1uwHefYrKLjl!xGR<(GfP^GZNBiU^VTcogC zXRupVvV{s;FpbSu*gS>JJ<8@NY<7TExY*6PtbCSDC|}8D*;v_R{}eXU#BK_(l4QM5 zvYi#@vgu3`raM`YgB5Z{p)i(Bo9Yy%HL|HwBw?zPO_^*GrbukE-ylpjF~5QNk&d(Z zN!!^(euOZwlua1#5+=-G<8L$y<6UgLpTE(_#uYe(af?{NSi4Z*U}NoUjD?L>SpE$z zAzxuPOg3HBRe%|S14(R7N%IrX1yTT;+ zk)|*kz;D~mtk7mvm<0x~#4wAWH!I8pCno>cMrMRQ#+A$vV0xWh(7Tw<&O{+s5LYq* z?h|qu4}bJ`=E)~NvhvrW7UQ# zbB)7FC5s3JSdv3JdHQ7EN$CQNcJ5-|$(*zsM(5>v+%7RCIo+AW+$s6gJF{R+S=pF^ znLOpDt*9ScRyKA_S*h@&zBl^%5YAI7~xSuM6YlRMo1*{{G;OyLM`z+ZM9sSiRk!P3+J{c zCJc%5c>ypgaON1NU9wut2E9(?8L=20#u!ePF1~rv?k#}-Mv?6CCv$U8;~(jQ_RXP5 zEQzrsXC6y(!y$ZA06+NVC#hfFp?p?J-X0wZ_ryS zl#{f!o~=<1vUN%|-K|vbR1Q9@)X+!q`!FrrNp}Md&nUm)o58veArLo;)cFfUiz}T^ zvW*;(WwSa-Fe^z;(*@(=ec4%6xyeR(q|eE81|k`)OqBJRS!qKUF^X0%mn&U7dH$p~ z_w>2*(go=+UO)!fgovHbJq=9DeeZSY#0k5@Tac4BdUXB`=^0EE-7b%p+VeafuRT3I z|Ax_H?0I%PNl8!7fCFHy4!Dq>&K+FZwX7|$q%G8{)HLxswtsfy!;^vF(FM)sdzXFv z+84hGRJ}dT*s^%;@bhqGqo4Ypym!y5W@=V0>PKZNmpj%Pl<`x4 zx@F&g*_6LhE0+iLe@m~P)ny7_f#i8f3dsN)u*RR4&N5OnQdwGhTB*4qMr;^K8d4n% zG3g0aLsLUHq`7Sw24*uSxy^9~^YA!k9%Z^gx_BOhUApkz1-qjF{!=M%5h#F{qzgH) zcyyBR7yK?rrpbtYUM|vN@Nq^|q=6pJJeuMhbWY!xUmKh|r?!?oJFhk{cWzDXoJWrw zePqv(qscq^7Ve09^rfS_cfWW<*t+k*txr9uwj{{`NPa)G#%m2OdK^LoULoIB{n4lQd;6dwyM!#V`jQMY~+Z9oLr+he*}>e zs5?Doj4@ZXC5*7;rb`JiyfxQh8H>_#8tDQbl!^i*m-aVu0t@59xvwuM(Br)exzGd@ zEr5R-5v_lLwWE_FKS)yba6xh!Riz5ZDkNoyVv0;qtW@CwU7<==ib{Ad9X)zXN`8_% zMHF@3Jiem;$h>)GCv@RnMNxkJ@DKBHK7DQKbL~s5t6P?=p4Pi8^XFW!?D@KVpG<#Z%lx@i|Hn0-2Pbq-*?lxQSy38WmoA*py|n)iqtP*IyToA6lH-R2BowG}hF>VomyxhjWUApwQoom5}qFO#{7?-bxqII~!`6l?-K<@`#cFqb6}P*~cJ9c2eRWE?G=QgN}zC%4pUz!EUyO z9D31eHVOuv-6k+ljYQ&228+%iq4N6>zMv36J;3xA;rwJSa5#qwf-cRO;uJE{(#8lZ zkEOAXm2SFjrn1+v-lFWCN!KaeGwH2xLT}~Yec{DrXOz3?$}`J;cDU;dU8&rC2JwYI z!UqBm>pRJBBRbY*pn{$!X3i*@arVCPCqdj!kB4920_a;*|M^LF*epi%zq6m~+x*w` zTORmD;n6i|Kl%GY7-1oOpIgYagASIS=LkCEQ`O4L^^bK+W zpm%{mi<=@;SOeV1sEg-w#thm8Ux{vi(VY*mCs(I%2UVFH=C^YUW~3Y~yei+{QM9^SFzVf_A0`5$Wk+eIoVUlq}EI-6F~ za-~;!TKTEcTT6G)78<5IlzL^0@_^@{+3ku3KQ;RAvwuz)C(GLff(7}C>r z0-^;g$^<+BI{`R)KKJ5DJE#p6H6D}%k9v1Tud#Ce%Ro*)3~C~#t0%_V$BbRzH^@Y$ z*@kQ*zXNOPAecF?)%TdPTj}C{c$g9z-1tBk2O_HdJ}4#si=Wa{Q(u zW09%IT;wWp3$WT!>=S8TE)Q0PsG~{w07E{VNMZ8;eMZIB#xwO_QmgWIj9FR7g**Eu z(AT!Fe&pWGyZEKlSTO#NuYRDsioE+)%eV#4?p`t z@8aA82ku|D?mDT)<#7(16isD5XX-X}5w{w;Mx@Lu=1&VK$SVb4V9q@#E^ZBkj-ijXyp9 zd~QTsKvuMU`e3$!(nT-G2H7H8nI;-Ddd-!$%;>e?A6w-uAWaTcQXIq)kraQ7iTdbR zT0(h|^Ke6rqq(uh>0GfpFc0-hdC`w88JnjvJV=wg2|Ej-(+w?k(SI&M#FEd}? zXNuTB)0)}EK4YWu0rKk^;8!=S=0x&Se;O0xm-~XE)L{#{f)JePA~ohJIo{406Npzd zB-o8MG&a#H0TT?dR9C0UBjua}^y`dXLnR9PHAG|;5m*WlM4*QQdN@@q;Ua(ljnOre zZeupyCfG!q&Zf7;+I+S++Ynp4Ex~LfHkwEhA+nZDMZ_75L1mi;Ps&v_y;9;V}Z59nej42&R z0=g=ytw3tgWP>G_W-uEpb{?ExQPSDUj&A17$I}0kYo8Cs((`OPAz794hzXNhV4U&B~a9mH?{P7I5H^k*A zC8YvoUAh_yULYg9k%*iD*QDlCTs$8Y<7?(7avB8Hpz_xM)}E%)RQ}?1m9=m^!rDV# z8pF6n2GDb0BiWPqyZaA6$c^YP>tyc>;mccuQHSZRu$Lh1H>$MvLb!IKKRGpq1>J^V zf-N{Klu(tE8e?_{8D?Pw5#!vVn2}`4K`<{yRY!Egc<%z*GO9FaW-%Ldtm%-H?aRBcInKSOOMeVd!BuE&tuO% z%a*O*v19!`J9eD%zP0<;XV3n6_gmh$1M3gH^Uk652T+dgjNlRra7f(B59=`N##h$({E9WOdOB1+OZzy$uON;rj1WAY6diyI@0n z%(`KPcuArkU2Au>%}^ENK+ie`Y@qXKPoBe_=sJVKKFGLuw{+~-(wPMXGfT%7%$!*; zwp2AT#+H_HCnML9hG-d`g_-ma1Wxu#Xd5}I&Ai({Y=VQirPFkNv-m8Q4or}uu^qXKq z8aOx2r@{wU{>ob~D+0&*lr_q_{q$G+=&umsGqg_lfISMbtRwM$E7wNEHeN5#7@m0b z5D!pEqlGU(SK|jV2sqGXg+03G(jL^x*Fgh@2}cB;>O>C50BFXazXpvnpCUNw5WJQ3 z?N_q*DcSpJH$ZaV)wAq#buA^6@qXC@Y>IIwnG=F;TgXtA0%l*F&*7%T>qw$zE=5)B zniHi;AG%c1+miCyb&(N<8!?y-q7Ig^>UpaQm)4hRp_0;%8je@~p3;v#Uh(X658TnV z#a$h>9);TMk?*~5dX3QJ7JdY9=!Z zho&-1VUJ-(kFCegZcptQZn!C{n9-?#z88!T2_!_@ZZriWSa00A=)muOcVN-h8+Yx0Y1-5V<(=mi_Rjs~ z9|DV;>F}T4`G>0fCgs8tKU1DtdFPt7t5?wluf9jCyJnUtN0iU#=JxJ&>wDTZU8*R* zeCpIU_-qL&c$%q1G(>aEG{vCK+gc9{34) zZm>onV3p^lJGoTlLVxkyoa-shy|w?7eJlGntlZ1RbFW{CZx9+UKiJSfiTq^k*dK!Une#_SQH_*l>qKGU{kdLaIP4);Qjp0SN8j5A9Wyu4Biz zPyYDn?uU=PrhK8i->_@{kAK*3$NGC#Uf$jykj57euX)rF^YgvG|23@h_N!-wy|6;# z$yk4!uZ1val`Y_EF^5=Hg573IkIx`pt064`pgcX;zIgpY&LJr=oXCM8kHVRb!YPp? zkW9N~Er9cmqATp3qMW+$z~$=JX8Hgv>7lOOOVd6+^*>*K{Xb9sHizE#tM>!dtu+1+ zIN(3=Pgb6K=^(gEKT{4XKi&N(NDfl%!I=BhXVv-8S&=9Tr0>v73@S z03Q-jji_jj()rvRzahsv%e&gU+so5MX?ZfbYe`WOYG?HF5ikhGD8E!bJfae=g5E_B zDCH1Xpfl-c_!MhYQ^v9WBkDt{T1}f6)O}kcWec+QaSW1#e7tej`nZ(1MYp{(0*xaPZpK(28P8yB? z<}&JSRxt_~(hdOw#fxE0blNWDg4?D-mh*k^4keKrO*CEJ7MP=#Ri<-h1>p0NEG znRJYWEkaGK+s-JgWG8W%Q;j|`RqwE-dW?1n2pOXX4iAZP7^n%6V)zee33}g~`}KJE z1C|K5wocB-{oUSdvEwJ*!rW(gxZq7!` zsaCsD52nz`KCrl8&jY~*bd}f9?FV~Y4NtgLd)!Uj5qtb#jt5veqt^<~nC5aq3(y~W zL@arxS&*aiBji!@B2Txm`SZJO`+{3~?DY?)Z&h~wxwd-y?}UQJ#>>b5@nLe5gRuZ_ z3?1s9CI##gc+O_X?*(j<%>|y1B!LIycDqX5l7UgH5&3HtYCLvWyToWQF^42Nyke?b z57C!YE-6-};P`X7Ct>&2G92e~bHN7ksv$i!2p-vIAP}x?G_c9E`f!tZTxakYQVki> zXhV^q*gem%Kw99gmwKcgx5a2Qnv7=AB3eb8D2etMqub)Px@{i2$Ki3hUBirNrZjW9 zCEc1~8!C-6j<$@pVhjZ$DQ3U9$l|vYS^d^2Hox8P@H_o3zi+m2zG=RBj%ALu+%{jD zZx5M5=Ab2Lt+UnGs~lC%Dp$8@m8sjj%Dl|7%(~3hEp^+cf-^fHi&Paw18#zl$iRgT zvcTQ_IQ{CW{#D#t`;{N{kB`XW8(cm}jc8Rsw%$?85XRSKs?W>V_v;2)$UDo+wGQAL#l~S zg$*Ra-1Fy7pF4M6Iwze&{$jKfmaP{!d|`mWXiR7kw@4Jlrm}avL8o`v9I?6>N1|h> zBioVb%yf-)OmY-B3tT0-V#h4UP0pKK^L6tbiyaG{3tb^yy(8=hIYX{4-6}_-2(eUA z&zyRfN9WSJoawq$eY!K+^z1_?%i%-00l@_stQqsK5*(3 zUBy=Y7iT`z-8bzNYNac6d^RljZvIbK9>EGA*lWai)z6Sgmft~I%wkIn#B!6EHO^pl zq$T0*G7!prVR3Rec~3HIDc1*eRU-y0Y>0rsw&LP+R?3S1e);m>zrK9=>m66YglTTA z>Dx&Q>HRHmP)2X2H_;jNX61nLyz+u_pb<@(Agj+sYA?m$AD1|f*i@_VY&{IIci`PWm;th zruYWD4pa=FKOiCxDPJcjP?nya65Z87pjD&&nn};zEeZ}j^MbPH%c-q3AOEI*FKF7o z|L!k8?eC!(58Z$NL&_QMQ|B!eN?`;2;NF}252@Sne;?oZZ2IQy+to<-(-7VH6r?_r zX85N-d@eOfGMP;YiCnxana!qBlUYvUJ#-ar*BPEw?trhw5z43Sc`G8x7KCgEg6d1Gv(dLj}W9&7mez z$nUDL{bTLI(c=e?E`8y(_YP3&#rjJdmfD|v{?Q-Ze(J?HeyaRQ`OAu{#gO0G|HQ_1 zO&w!yoc!vKkNtYYaOKrUH{Q9Tv1k042`}$H^I*&^5eFcdr^T5q887FXr`o+P$E*)dP=mb){_aWCkWkR z57l~t9?^ikDcfFU-)!GwKW-Nm;ijsFJyElwmRNUODOn+mT%nX4Z{RO}Nvl8*ub5TK zy$ZA`)NO*MYVoI;#aJgXtnt9oVI*whYCKgwFe_ob*rZekO%?1!)mE^D_NiJQ0`h1X zX&In`oI{CmRdMJgUXu!d)u&?PBfe;C_Wrm%aU7(CRIM*zQYAKeLXtqI(8S|h@$sXd zetPscy>v{uth^4NzY7hGjeUK}AOHAAn!vy=?)yUd2?R2R(Ai+M!W*0ftcCI(Le5srsOXI%Bof1BzD92`LTL+DA{lIg$#yNqpqYDvBMfRd zL9_e3xv&&;5W`;NPu5dC$1|SS8)9e-7h@P=8DbsE4YLfhT6EMyGbp5778y7dRoI^K zm)6l2>EWm73tRgC{B-|?2RT`2xU!b-fh}%3;s{b?Bt(xsr;Bd)-@*d0&M}e#tDJ)> zG>g?jC9Bl}`AKlziOU+WSfOUsB$-XT0Dy2tNf7u_s|j#)+6+tx+s(QfcsUe?RLmx$ zUMsz_IYhAGA;O6E&&BcA*|$-oWn(P#h^Nc7;>-;q@wcsc|L>sQ&LmiU z97K^#K5H76X-c(D;>MfutuswU*7@A6rb=tGDPXm3!Tr+W4G}0L5JL8U2Iz{Ew(RqEOst-E%wxrAPsUsR?jaH>hyJnCB`MDI&%PQ z=XzU%)L^f7b#m=&nb4{4G%PcAn!3y#mTuea((U$c*IZC7Nhz3FP`L`mGaRERi?Mr^ z{mTBmO7}J{=?EP|D<7u|X~EOD^rlSSDxjMTq)phRk;k6$-+~>c z8UW*q1mXyownPHo$m5Rnad8p^|1@5^RbGQH14$h#$oIA2ncE8G57cQhGkw@@tnqoE zLLnT(;$q!u7|o!=AR6!R@(Nl!AlbLY1LqGW#t+s>(Hz?l zRWS{L1hST(@n1C%(W-OD5RcX4&Ll&1Y1VZ2XluT^&|2i4Yn|h6AR%3?HQ??hJvtA( zuZgp|iQ!Y_>R0 zH(Ni~G}k=aa*OR2*F5(E&w@C3@I)1nfEWZTJZK7ncr@CYq$Yc#E9j~6R>cHkgT7!~ zRs3?&LwmR$)+4Uab?cX#mYcgRE39{bxU2$!@jF-9S2$KUSGv00ou1{f%YB`3Z6HFb z)0H2UornlUE^_;nt*4xdE zJ>zua^kWQTjgw3T=1JxP%OuMr>m=JGsmM@bnrm2Ky2X5pC1k2Mht2htu%*hgOt(zs z)^f{cPbMyE*fpbTT2t7#b>4kk$=kpUe};C_&Zp?Xjmo6s4O}euInaDB2Mf7BtN%3m zQSi<}VG_{Y0&$ZRg9Jq?oTNACOHBrzTP=cPOh7X;9XQ6!CYT8pD`CD0$%@PI!q*Uj zI~fgWN4-uP+FL#|<@B7$L4pSu2b+TlvR)Qqn`JWs)Oq<@hSRO)#B>Tu4c;@>lLosGHJZeJbBBLix^8JqFkrb6^Q682BgPA4GKe!17n? zcrd-+OMj(YpbjNlbTxc)P_-GZtH~h@br)oGu_EkW)Z{opWA0Ilax+zJpq3J`@= zh%l?yP6ZVrPEQ;>RJ1~fA1I>%19eSmh?EN}*#OH0(RJzf4Pu!J%^CKTnt6bC8~Q=K z0Sp}!Xz5^c!`m;unG0blm>d3MFL8+vD=|v!P7VSW{lCEyD-J4vDIrQcPn2ee?Ax9v zYoV@|%YGAX1~O0xmqEQRG?v3dGnDM-&vWf!0D3Na9?G658>oCDS~-GMwa|D~5%Po| z$W&wSOD(#H7A(x@m9TWd{?Beuw^kScriFnb<`eEbP+P=zDo=|6Wj$Sveq9}S2lw&Q zKsbhyJN(&kNv2qcO4FX$t@_Q*q)jOs6E>%Ba8{XntX!->l13z3vV1m@VG?}Fo?)4) zGXPO8ut%ffcuu+S^=A?k^nm|oN4LkHDh&${TR!x}FurH#33`G%!A|lgg_Gh*_esx5 z?}?Zbu_t_x8eT;6HS-$GIwvfkqK(ZblNe>0`E8X%AaUdaPCY4URaUDc{Lux$S%g$w@|E8$z~N zJ&}F>oa*oZ){ui`sJwA2+*JO3;Vjec^)$xD|`u6S~^ z@(>Me-LP@XmW>;>HVFQP{^r19<(HQ)E2kC*_BGJX6Q}<8;YWY?<#Ci9cRl(129hGB ztV-!kQS&bm#$yswbG!1BuFGHYdA-UGB;z-iUIQ{dL+cK2-LPrPmQ6s$hJAs>bj;<; zboAl?m)UUTjnMI5{^6q!|9C1Q>2raGE{Fn@`4c$3yNBo>7B-t>Hj^JZHkhl1=nZZk z7*#&oFf~Sh8i)x?`CK2=IY9E|0?M*Oj`zo}if8YTcj!CZJMMSlz>|eAibq-WH9_ChX3f}s9fts~AkxH$nOVMebT?e2J0%fv%QPcyfERz<2PHz|R_ z&OkL!Hy+SJClI$cC|rx=pV`uCI(ycVN}8#>f4=|e-rn99pPRaNiV!=aZ0VMJ8vCAU zXkZnMYYx5;6RXOKQox@Dswcw3rgi?jEGUn1N<(CpNqXWlw>kBX>dc$@lx?w~WB5nn zca1QN&?RKaLu?r&Ki#Jr;~6$WD>YGd3~=N8dEke1;rF0o)YS*79{FM*Bc+k6M)r;b z5u$cA1rVt$89hN2{-`*iA2q1LCZEsi`!aN5ewAbG%EuoXkSbcQ?1)Mgd#Uf1Prpe| z|G2*DXD2rg2-vVg||Lav*7X4l-*H?2g1k)m%^?qKDy?oENeaS0(l)VrDDCy9AYY36L|> zco$8+smjqE;h2UboK)`XrS*AFH1+P=tMI!Q_pDyKM^!g-n_7PPUjOT04w9d5K5|g; z!JY_pEbymFI18qN8|s<8%;4y8?E;ar5++)*%o!kS_8iCsVzLM|4HTQgrvD~Lmv@kK zc~l6&_KrX}xXJ}XUaCYT{bFkN$f;AZv#0*~nf^cZ0+hnik<+G)%$_pk%1~8`pgQ12 zrGOq(;YlDNe{zE4H8X?P6SvuE0HAg`A4!ZE;Q`n@qiq=gUk+plA;N$L5(-Nn*8jl@ zcpG;oprl+Sx5|SknW(}E^?DIF54C&SV>q(tI(Sj7Unf!dZz155bF!z70PXYhpA_Fc zaj|Yr#Vzx$!LRf*URk>LXj0M#RSQ?#iR&5O=FEQ%(h*Bn`R99g8}y#tZjV84+b!9^ z*t70781zmT=WtJitdnh`)ds#>smG=VuiemN;(NrUF)nc7drZ3=gbK_6`DC+Ew0m?8 zJ0V$KU51dwav&TG%O7KrU~ywrx#q5czlKX@AW5NlWUzHzbI#!k)(9W8VbIwBJDuKO zGkEk~kKSkVdD8WnwoDJWM4kd~v2Ct?o^6SKiEW9e-rJ>L@7Zp9K_9~#bVi*?Fbj~R zB9NxiJ54T~$6;_9o#22wEe@*$39C3)40vBd4MUAXP3howjgW@fhdGA3vfP=T?6}cp zOk5R6`OX6Oq_`r(G;qhKSqq&D4D%sfHP1HJKG!kVS#PK_*IAZWgSI77wY}O=;|#j$ zJXLYa4a<$oO+C_b`*O!JXOH_n=Y6hw-1m4k$8EQ5mtHg+F&;4;_Eds)%cPq0T{GEL zd89h1M!l)OZy)T@^u)vTlNaDgqHPcNU)-U*x@8|Om_8GI1iYpX!K7%Q&#zOkE&{m9 zRRC9^iqP*6d-O|r(!;@)m!V@>LXJ^eCXqz~OT;v2i5OMUGlJozE#iUnD&6}`|Ci4K z9GF}6tClLPO5JUsMRUlH{gY*%)543x3Dd<(Ygk54=B~7)7?(-V^^9a2QalC{>oiU< zCuhleSg+zF?}XS4cb0R~(5zu{Mru}i&L{v26%MSEh|-Bj3IwbnpM`~dC@T=k^_wQ; zF3t_--k;l>i?!Gh{WD4heH1)76>-&_*~V;Bwl_QG9pgKucf9Y!oX9mSf+}s;zrUl7 zaP42yO%X-lR=e_P`9ErTa_>Hc+fx-@apxXIANl1}4fbf@_I+%AXV*KwQk7QP6Zfi0 ztAWefy-qt~m7$j#T31AMG0-a>a#JI97MG7_5pBHd|GzedCH0>xV-2P6V1KtGo@x5pSW5 ztjy&P!|Y~wHf)YRixPW0v+&z|mL6MjLXT|R=Gx$^lJBzZN=?inI-fT`$(j`}kqk>t z>NQgt^Lx=P8)Cf?d->3+wB9rf_G(s>X543>=Zta?wVt(ojP8xv$cL}9o^gqA#i59i z{Cp!Aeo^CDiGwH^cs2k(S{@#Nf3|;kiq7d}MBZj3JuU%^eBU-{gRzR;<=U0XXL+4s zhMNOZHQr|#hT!A=rrN6i0{X~CizeScw=R17|Mbj1Gb^qLjg9ove_~K*Qp|n>7{rhV zAz*B93Y6G->_qTvfK9=^3nH@MgGyNreTF&9nuGNRu&iP0I|&*GigT3L!Ss`$x&q5` z$3n;-;@R+oGnRR~C6DBlVzPaH;-`Mj&-}b!nCA9-{9b>I8>Z&4vrJ_U3f``*`&f0| z$3nzkTlbKERc+j;lt($}VZUh*%4V$J@^1fIxO7MF?-^0cXDVOMDtoCHWV-8R=_}VYJ@v}qD`OSE=uJ_ z*ht~`C#U+L&O~)cuTM@zo}4=~Ys| z_i@j0@9~)9u~yh|#zZSrZb;YiNopadRxXbZLu&aXtnqAb;5XiT`(2A4UUSci_g=0% zQrp0<@9gMWxbA_6)_nfPl9M-H>RPsFLDAe%BeH%__rSiaVP7oisHm8F^RN-w8^aI% zG)uKKpqe&ASPD9$-XHHZ63MdJ1up>U5xHHisu-PQr&$IegOO~|9#G_aPK$Pc;c!0p zq@<|N;DDmHppy`zMi631Of)0s7IcE%t#j+sb?N%-*j2HcV|T|I7dgQ_fJa!-T~Pg9 z%@0b?|LF0@U!)6_eK!;pPvP#!|KRAU(+SD#?| zPU>h?TrZ}MB0CsllwelKEJY<*^K)=1r>k{D8Xj=Sy-VjmqwLIkyz$v5_tC|w`OIhZ zO>KCoA$;n6uAs61!B_8p={b59BB=1B7QYIxu#&_60;7S`?}n6%Znvm|q>FB%UI$b1 z0w+$yn3s;2^$=|DF|u96YEd7P#$1w#8^|RAN1$}*UqwmvMl{!oMF@Xq=w#h&U9E1J zPN&!F4RP?iyW8M4rjcR%FkzTsm~ohOEXk3I$#lzf>pU{w3U6DsF5{O8UE*@RYCKtn zfT$*2AIGGZmF{l(<$gMx4&O~TcPZV#zsCMF?gL1pO+(Hl!E@oq0B09H>A%Ia+v#!| zcN>f@_?c)jLc0O6#k|^X%&YBI^J>nCE~nXImh7BkqQzn^bs8zt+bts4w>F;aGC_fh zL&A(xB*kVEtOFS*P|HY`=vw~%+=G^Xx|VUO!f3MpD%b$jWAr&wX_j#)JYzh;Sm2yS zZ!(rR=NWHv2586_a&`bqdYtzfJt8C&^qd8@JORSSBAB;OgXMCnTGYv$k%wiVQeH0^ z97dNZ#_VxAUFl>f%`~JNQ%u9axJ`o+opIzwI*FUaCh?PmN#Z03HQxwX>>JHvEn^+y zp!%nX6w*R{p#dwlO3cNUVyW0(>?np}o|{QIE$7NvIbSZ6i{-j~a{&8=iB;jyW1v0K-p_a}BkPHL&C zGg8&nC3V@m939Rs*S&^&j3+$Hf&T^yYZ+2fbRbXVr0jhveYKO`xlB3vFeFvK*{ZzO zML&5OV!N;sUgds+vVdi$o;5wG7t8YZ z=U)rTcav10BFqqOb*rJ(?yRF^s zHRL|4%c!QK3>MJ_6+J#N&PRQmk6|jxXK~wNV`F{pxS>##k;P>(tlt}I$*`u|(xr5J zW^AS}Bd&m(#1*hf@Oq;XI^9}in;y52F5nih1(0-FV3}u~W1H)l8#~uGH?Dy;a1CsU zt{zep^{Q)B7q^_;PH*RKXSa*pmM&|DtwZXtces|jmw7s4J0X#@mfWM;VA^25$8wK# zoo$_Kt$S_kTHo5ZTR;XPA`nR_nY2RpNS=wS{CG2cc%yQb&b&`?ulxLqdzGe*G);N= zZu-G0?jD*49#WSw20WyR%B%2q8$AZb80tod1EFplLYaR7-OW*(HEsy!BfD)jtI5b2 zc3Ytm8gvAl>L(iXkOdJ$PB#%mqf{Ty*?ffaxMA_LC%ByQI>;Ml z3Yj9PP*Vn!Sf)$!A^SH+C>Q34<>GAJT;p6*Jqc$fdSkWUzO8a$MH#WB?oL!rHn^-V@%+#Mh z%ifOa;4784-y+%Gn0Dg?Tyqr=GdvG8wvYyYGALfiBu$KFl6u5lh8{JOG(s?r(3u4- zk%W)Yz|M&Vqw?K6lDeBlD@UyAo(b-KWY0Vl;_3|Cx6()z+|K_0ZD4i%b=;K3xvcIm zO_|&G@GHu@03RjFLEa1Aaw^nJ=Ri8vBqkYrlG`N6N%4ku6KSXJcIVP0D8prGLaK*2 z;n^0@BywzqO-NH8)`HLm{)1qS_Q-rTCY+$y408?YMfE2~aI5<`xS84mxA-_$9$XXM z5XiyjA#i)=y%WFranq&=6E-#d_?wB-HqH&)^@EzZ8$S(g`-pPeJ3<}XDfiLV`uQ7` zPaa*Lki7O0<&%x`0SmnnPxr$cz!<@I8SrE}zRLh2VURY0r|9A3Df=H6<1ax8-*p(@ z;?FjFVr_}MKF)25wFxpG*B(pSQ*7<_rTh?329ga1OM_;gJJFqC;s+2`3(5dHV3LMz z6k9E=T96|^96uj$#P>a*Z;eQ6I9@|KC54ir4RdPlzN>c5hN4N|JlV8q;>1l&PkuA$ z(|Ma{;v;L56V^XU6F1GP-};fFsMssYN83=U&d`tGIWf@W@RXzMcEvh$qKT&tTdWDP zZBN9So^T9tyWlM^B*qFV_~Lo>RR+iv314ubt~-q@6rO`jNzTZC`bl7gE*~Gz@_Id9 ztm6?r2pn2e^^DQv*}C}FpDqYIcN?C#wp8ER%QCjjubjg3hJupP9rJF6BmKCWu3pui z8`9kh?=49s_)iDVgPx_Gghg7K!Ed&LU-1urwK-sS*sed%Ai_GFuZ8 z6D(3`h0QF+Y^cjfNn}zu$(EWZ#|_O$x0{7w?zChJi?ccs zL=q>9ZrL^r_0F5p>9^4c1=C~@$FM^9v)A8y8`B5T`c~CufwGurWsG_l)k*k{l!LZd zED{=r4-w0PEXulUQ##baB|DOwvP*W$o@`%sT=tNW@goy56Njc{q`PgL`be_Z7Bk$M zZPlUIrbSs)gFN!k64tVz?}1On4SIfwbuF0WpEu7xX@Qc$B`aUSlT7r>;u(9|+8!$_ zrsuCc&?GLLv|!%kN%QCTaq5#zypq;4yX~>Z+R9g@T;U?mI9tW#Umtfp88_kfX#_rN>)3RDQRmcXEvsn@j(zUTexT9O9cv+25)F@suu zJGcd&&KrQ>!)S}riMc#zDT=`M5xi;>se`c1RiQ4v2K8-&S`g}J%TzMB1)+|%ynkH_ zLLF_{6luX2|4wzD_oDM$g+8#R{)*9m5$B1vOx0Q-!b!Mw*WL4eqy+-d+$s_0iQcm* z(gO29Mg*yIb7Y?1lC9V9X;4RlJq!LJf9eOdAOz8tsn@k2rqP!7uWLaFqAi=QYe5L2 zEx(Pls2-xGI9CcXMTmUHkr73F_6?Q~5!2#L<-XdDRq;zI|!%hBW!$*#MaqYT8hlRRO z>CCz%GiEg2J8I;JwkbdO*`al7kKlYemG{9pnF&uLCquR{H zI5${~RVhw0F&N`U#3t(!+(zb;QeeBpcYi^qT7r~1po_sacwZI-F<)24f0m=Y%g76l zy{fOlQXgj>{Dv%egAvzxC;X!yq`b5v@Zr^~9|mrHs=UG39$47nW*^%=d++_vZ2#E# zQzyRa%1N`n`YRo7r$*&#{m2aEs}*;f`$FbbO|ZA!0}>igpFW%E9~z^B|CuGc=A&It z5_oujf}`EM+5_I5j>7-t#%OcfOH4Yu*O{nVB9Uh?aZ`qO2SJ2Mec6|!R^{YSc#)TC zZD2$MW87Mt8v@^IZZGt0R4SOU)n3Lyz=Qsa~_|;pIRLJ;a=rTWB)qH`p!BU*Cop^h(?lkdM*ofC|JT}^z*kXZeZ$q;-S6$Y-|Qh9fsl}p z5JE_Ru*xp7Zw3g9VP7I5VG&eZhCyI(6crVbK}8af0d$PRqG*g8A~5J9sJM(89mjDT zUIlXV{mi(C2o#tGlXBojO%@>MWX2Vv-7qRcE`*>;>sghi5_0S?Rqs zlLBRy0@a_C>nipu?KAy@N^=LLxE$6&De;-gpwcdKZ_?R-M>%ZTkwBKW#%P?5>=%Lb zxGI=4^A-TNg+>m2I=A%&BK7jqsLi8DlyWi)af1nphIjU9#t?&zw7hSTG^b6sl69|7 zk}JneueuQDcxC0R#lr@^RWo7R&`I*#IhD&k57^&db<4aF*T24V*cRpKjw1{2eAC-@ zO7Y;k%zCMMpnO52b>dRV$vYS+Sx5N-Eee=BJjXo=Qfz5Yn(NRT`#$_GucJ8 z2NR?X$;t+gYfXr01jtdUO(*o~+D-R8yuUJHcbigYUItq!3O` zc?u`Zf+LeIn$v$CehoKC1pv26Ri&)2H76z~)G@aZc3$2Eg&PVjV1FK%Uc+8d4QN4g zu9l~D!cbcPfiaA8-9C@s9|#1o%bFX=3v_bly9;7zb`g>M@^%hWH4%JkS!Q%O1Hy?& zJ(b;-bxZH84nO$Z7bi}C>{Ifk1YN2FQcEnexABu=7QUXFBwxg{u%YfrEAu# zyEI|8+I8>C@1C4{W9Ol{MbmaIe&kq2+SfB?Evp>0WMG$GYerP>K=+m6A%Xfrdm9t( zbWsW)y$_X*g8WDcc!rUTX&4EZJPxN-JnfGQI-icwpX!uge%hb(RL0Kkf9kYzpwm_4 zPW5}tk{WWPCR^3e@PHVW7&|;(9hN$zXmFqSAsq(y8G8L_FfH&W80~{wfk|Pe$D6E# z?8x$|35HDWCbIefy3r2N)h6w-qBD_msfc;D50)Px%+1kLeqs5ckWoKj(&$h{5o3Sw zX;|~q-Uz1Jt*!i(+g6T5Ou&^FvP%3n4>@#4T8~bXMulG)IZ}Fj_3cy6-0^Aojgu$e zSpMl9cYaoWZA^TI!G*%JQQxRzl1He~RiA>mqALAx*dhWqD+ zPxS38Z|k#g-pGma?DFy(zqsS}Ps__EPcFal(>vCFc4K+@P4n@Iiw|!JUz#^>KCUHg z%fpfh*FtG&l{k>nAORmsu` zx1hL>G5Bl<(+u}Jkf(xPLCATM59%3FV8WTQ0W@|4@Ofc~F4)^ZeTiO+FfZ_ZYTpjAYtCDXWs-(5? zz3O+$2+Y6~as2`E1oywthip;&H7tUEp)pBL+}72HcP}x`4Btc8ZP1F8A`^`XAz;_$ zHNpFf9#E`s0b{s7Jw@(Mp@wOTYFc_pztZsjbnPz46{$$nBpLf7VCmQ=iEbxE_fMKv zNA9m?KWY*$y$sql?7WO?se4|(-Ua!+`$-3K`}NK*=-tnh(l4)|ckhC{e$iii=mU|d zeW;!Tt1c}|abl*T$X@tt5iZ+ex5e*;k%k45b_-lR=^_LxOYG!g<74hx<~b zkQp-*I;G4a=*JeNd_d~2D{H0P@PJq3<(Dsp!z*jUr=^3hG~KN{CiR^80UW-BkJ1lx za?WAGz6G?ZU}yDc*=R8xvO8sZM36Tf0zA4gG=5Fu>ew|Q^8%5Q>Bu=DMvwFB-Zpxwn(jyndQ4I}PqL0-H;=%OnitWKHA0Y=Y>aJCXNtjgPrPV@EsIoG08qYu6A<34i^-xZtG2%P>r#o?K+66vTn)Q&JJyTHmgt*+qCzqP9>{tl5>8X zGQaJtxGCAm*=bq+kh@J%nvtZv+tk7B3YlDK8QGAqocfkshms94x2Vyhq0Hg_?g$B8 zXyOKhfm0rwoUAgcL%sg8 z;=;u?sfA@Pt^Ci$l+@*8$A%Y#Ut0g&jDy4K#*T)Ejy~(ZpR#YbdS=`hvT9v=^oA+p z$CKUVl2=FEJvaRGw(wKokz>ZZ-tYJCj!D||w4a_;!?ch8z}*V^K7?oaF;(?;Acgb&*x( z*WhJSSS80|xRZsaO$RK-Fkb|##R7-?Jba65TtZMtOM^64PA4_XRxUT2jZ--l;o`aay4ny~eyiN%r)YYK}h^Y_6qgEvBTjo5A|xXwyJnb8>I?^nOkvG1zZ)WQdN>BV*QE9aWOtME$B^@Rgw{V zbUQpw1=9wmBzl};ph+f~DNIgqQYXNF;v4kCQ#7p849gSj7N5p6?YH*>Ac3>6>G>AT z+r>M}Jj+{|sM-CtK+qoVNOUH;Vmv{g+wTr|gWixgrmLkG_Cj4e#lCL-Zh_*M{`SF+ zq0XVM!TMnLAP*ca1bPR1hx*41j2&kg;~DQ8?;jr+A9E9IgKl!%gbkaS`b_stp4q-i z{{nwyU_oGZ%a7&pF(;-Ut?DxS=?4ukQg$>`5dYox7O;x?tBt7?Zj4W+un{{ zdUqSYE88Km6OFxke|FH3>CGcQjI3-1#YCFDfjB?^_Pa3fk7nQn3vOcOvCo|XcFkie zG!NRa=0TelkBj?mOToidyY%p?8C4^_vRD5Z@6~tSJfXNelN5w@O69C#g>A}SmDsR{ zE5!%q%uz30*|Z1US2lmC9EG30M97M}l*Nk76l=UGGhotF;`P9DS&npA26)qBAme@O zES$#j&eG?&bYpVL^o3bd)W2ACS_&Vqg0D%1-Asa5Y-NB;dF3Bid9#T)po>B^}l3V@V{9yy_ z-TO8TQ`%pySC;flw+|S0|0RpE<#MHVG`#t<)TGNtGMZAP*o?o2liMq~%1czn!thd4 zCd%l8Po`9M(e-DSX}{MdqlkX<80%O~8lyPJ*vBfm7~}C{zM6lGtb_Bzq&9XL13hox zkwH;(=6OXQUHjqi;ilb3nz|fm+I{%2c689sg9Z&U9W)^2PSVGpK({_%C z2~RH7u!8FD@@BhTnYL_GwgsBlZdSy`jOlaID=~b0&}0L$`^#9)I(Os?l~@1_5AhN^)vc*Ps!75w(v!H@7!Xz%zSB7uP!~?rs)Hk{&;kLI3-*$vRBuh zi3#43;PflykU}0r6S3;ZhNVHNNOlKZTHB;#=>?@j`{Wl~FST#`f?^5281sVf1xsE0 zteo~Cdz&o z|4Xyx&X_uBLDP@&i%tF2SHf#Y4KK*Mec|HOIit$^_j@!k@!{}>`-cy^Vf57S*I0Qd zq8zm*sUOWj;^7G-6c;02aMYPz@Xo?a)EcXd4_L?RGHqtj-lDNy!mQ&gB&Ws-o<$v@ zXoH}oG_YIg{Omb%XI0LdJ8RFWQ+xKDI@$D-ytiq%lJof1t=qOg{K&Q;XZAjK=FD@? z{jGxhI>VF(y#sz3usUuBn`&7&=BLaGiKRX@1`ai>nxre5)vE_}ztyE=>MnnLhN0j_ zo3@zzV)`4!Fh~`yCLoLgBh4@dhAv(>T7xl)2krrRC`h^D7Z9=qk|d~8q~S}N_U`{n z_`8oj3V-*)pPTkAk%pc4v1nGUVOZ#hoo9pC@$n;WiSXCuCYD~k&>zaPvS{tMAgj@hnZU})8>tQ zW96%7{`tNnZ(M!zootr2{%FylBTHcWqh9{%iN|3Ow7J7~N2-s@lgJckvmUis>pyYa z!JRNyyY;SV(_pSPcEY&v;lG9d94RG8X_+=*#eSHy+-n&Q&3XkqaqFDyV*#+(Tk5$b1~o0heOL3Md$wl-K@ zATrpkK4{iOC4$iv2JbBtk)sS632B8vyN__nMk@?uK--0bHgC~gIqeqEufDWLS@_GZ z%eVE}FyxQjdq6k2d|TPNAOPg+|uc$?j_%RHe^}BeS==R1=`7lU3T}}H}q%~ z)RhbJcftiW`4IgAK16>&pH793!lal0c@a%<1d?XxQ>?SdhiE_w!F?z^iLwV#T2UC5 za^xl&ijS|l-^r7ryC5i~kGN7gI4-m|J<;F_MFom&C_<}HsFicG4~@oN`A6^{x_|Sk zMSloP(dI=0uUvdI>OeI7LezmMMS4L&Q@D)qhEe8rS*I$q96H8l@UVS-Yd&HF4Wfd-66$kvL zn&9!9H53p%#>dMJ_+j04=`p3e>8SK5-s|3cMvFDAM6b;%izTHRlV%r(7cY2lG6IfU8mv2zI7OPfRjrW=QI!zg9KX_6{Fi87sw0!nAVA&o3%fIm0WOO7Qix z@No4UI9-O=R5pxs!Q2@l!znpjZXq)Kum?*?O(A7KcWP?N&=g;s$0f|Eo+>>qHfcr> z+6M5(9(*)iZ<~>pnu3Xq%incox2H@7D%aT=H@M3)^_|cdV>vo0D&2BQiSRV|X8#Chf&&Z!+CO{r{FM(dRn^_C^q?$y5wfJ6CF~dIG@|0Cg#RHskVDEw~Oj{(%0q56eLYg3kINc z64OBs6}OV?e0vIV5EA?w$`)j4Zw#)HzDxZVEoEq4U}q+i$JeV=FMR)1Eo0h&8z=45 zEjB|hW5%CZNrUw=##J0(C5>M`k*9B-Fsi3XQ7y#-hislOqPMC*c|$s}dHhJy-Y{9C^W)Y0}fc=XMh~Az#FV^!x!vO%zKxr6^O0{g+J_bk(oA& zgg(E@=QrtmM)f{3BnfH`l3EZh58qfPm+qEJcBs8B9p0gxzG%cWS`UqzH00|P-O3VR z0&bDa0`4PV#$=UUikKj4HuD6lgF=sBS&2d`+TLa%ox+VtGq0?jz!h_+LRGxlTBlO zc@=fE+%>{4qrWX$J#(;=jw0YNOD59lX?arK>WOANiD-zB?nr**9gQ?Zfa9g`hqDB< zWr5HSI%jQ?;?^Xrj#(4*`r&TST_F}Etq!iTT4V^>69XO*AJSuex+j@tUoK|`*(}pW zDgM!76+Ow=>iLesRUC_YWNnj{mqtc6o-}wMf;de};a|w;Ns`z~il{EC3!e?Y0sk&( z>fuWT2u(9w+9TbrzC`|7zg@NrqQt}G$q-&`-wHQ`|2$jzy;K3OqxZD--x{4`-GMol z9dq^q>;~t${Eo~VQ@mf~R6G0+dBlbo$0K>B4O!{GPl}n+IX<(%8K?LIIdO`^8kdrV zJwvV*&7`P8y#05vFt& z0iiaflf?<;f>=+V5p)?)iS=aQdzN*F@yFN%>G&%oOSo z1@PEGIeIKkwSsd*y}VWjMc6@}*mXvn0~YL}k`%BFxgy?(5o(8`i*d}IO~d-XEUmg% zDjPzX-mP}%x%>9+H9t%o-t$?`obZ8q${AcwL_$K2mRXV7QO$@XeuSjsN{!@<))k(`7mjNhyJ+5)|iA? zIO&gZ2xxUjA{80??yz%fJu_<#AHFtI*c+V%?xiMJj&pQomoH);9~eTXr`?J{4wkZJG3>I zk3%L>tY%#L@X|>&2b_v^ow3`LNxofhn8kghhlVHYV}~`?N{uJbS=<3mC4~`BLVg=9 zq6k>}!KD>06pmLk1p$j%_QpQHvf06V92niwIkH8}S=YJCgSBgpMe)VZ^^IX`W zcMn*Vcr_;pLM^+^?^E-JV|TE13V ziOSj&*XpQS6+9X#95qqaJ-k?ka zRYWZJNXnOLf`^BQ7&ZEf&EANRNzE-+s+T`>pIlFp)TV#2iT>WkFUB4mubHGVqwjlY zI;@~zyc+TNFy+{EAW zF6$0xgjsgDA#sH+pFL<%?9k@3nGpiR;}8RUE=XV%XV85rgh}G(k&SlD8PR!;A4`{Wj~C)XK@+T^1Gtyr}(s1`hKmo{?c0O{)ImXf0(#4G2Bn8!w+VGnXCyYVe!^m zYEXt?j^KSB>&#ZM)5t?ptEJ_kXgmzLKEfeU>j{Wva{7M}=WW8|u~)@;lj#e}6#jxo z&exGdsX+J=CKl3Xth zw(_OeL>MAgl=beZlyxubuJq{HW2oc0^w}b5_H{9{yJvZ4cM?5|OjCMwpEWeSN1l?C zSq3dRM>klK=niX+qg&?`N8irzjzRXJm@*xMy5ei!o#v31JPI=_ghL?Gq@W2R#k#y= zu4imQx8CuG4vH~jf|Rqh24?H)wEq?c)AC~^>gD5Or%xY?D40LpK5iOcD9??nptzV* zN6Wt!7*laaqhL;m#>JG+?fl~(p4zz?u`*K-H50KiH$Ocon(FFUnJshg*0XYRWbVBP z9IfCgjc&7{(H+skZ~cyX)jOoo-L7R6G_=5f`888SKO9fw7dRgnx#EDnR`Ua_>pd1v zPG9xJ9C9sz!)7|49|S*unaEEqDnHqNLJuWvqOHg`{{3Pe)G+n zNmU1-1uvtX2em|Hkf{i=`PWH(!|Wn^6PRJy53An8vE~F_f`BM6F=(D>!R!#LGmI3x zkb#m5mTELDG5+V3^|A_w&0%*qpbO}7Ai%4`f;YjJ>`x9P2a`jw@ojhzbwVu&x<>4F4ZD-qngs$KI#RICkm1W1UMx`&c(aUH zPD{psYffWN7lsZ-m#FOca&cUWFDp-*BF~)Iwk)GKlp5%ery7506N+N=>xbOEIU%Je zx@QwL5fvZ=~H2j{GEDUffW;v6O+nZ`eAF}Fl>D$3hzV{G{U0QCm()B zMjZ7JzV}e!YgN5a6fzgJ{_4Zl@?_oxjtl^b_wlN#$LXvdSJrFn*j{Dhv>&UsZR49g z$Bo53vNTHzFOiRe*ZHtA(P4t@JZus^t5B>8bPrCwg*X$uosK0NR_iHORI#J_Fqv}i zvYx9JW{vCE{`$1y-r3n@3p?E~-r=~z<0;HZ7>6Z@EPg~^-_2ThX2`%CCTOi-ovXpf z#t040TP#uSIEtBQI4QJnpSK`wWI|b>q|stT+Pmw=#j0AGI&c)RJ3s$8R#A7d9 z+RdEm8}&QsR=8_Zxo%<%M!@!12M5FrWjXMa3~9N^?DNqP1_@pFyNw6UXHoAM@%itAjvt9DQwja z_ETi>V!Eospk2y#!lR=Cw-9-V4T>o^G-%u~vgAUcKxCOgrP(*!XQ*hf2f1rQe?}Y_ zMT+aeT2R_e-cNqly&hh&HkTg903-L9GG@Je+w7(-u(X6l4g03&vAYWm>KN56;t-FV z7;Tk(Y#{{v(i8CsmA`k1HS_sALU!N>ABH(f_D;eCBtTOyR=K& z!mE5lE`|#&Rf5z1>rC)oia~>?I#|Q*_Sw0@Ula%zkW#mWelpOPggc|nk~;* zDJRWoi9{u{UD<3|P9AcTmUvHn|IO$*T`9En8-~3T-vh zMs#HJ4`Ch<)fy0cgQ1L&QkZi?yP7{edf&!Ja_2r@hfTmQU|b&edD`I4!GZbVLm5&= z_eUptm!6m;_0CYXS*?Hj#DjIPC6jHw4GT zmG^yMSc|lU=2%f_i%Qa#76}bme}S5Cko_4XG?6woB5+U}w>2;DiUqN52jYpv+ZMz^ z{1fX_6ZAARau7kq;ye_FgTkJXYfvl@J~#Z3pplPpBo0~?AQne5^_y#AaRkx=h=a!Q zI08`Ax;h@m!Y`#_3d!;F#|X(G?R(;(El*tfkRvU9_}P({KR?U+N$jBs?Mfb+;Ngfo zG^udQ1RqW0pb6?(i^xHf|M&kZ2Te4U%GXHrO-{r}cKllR zU;IP)Bzh$xe9Mc$u46<<1u}W|L25rn$VvI+c8nqMqObO_dK9B}F7|4`$!H@8K2+?8 z+Js$7uwBxFv~Xy1T0_!DjK!o?hSU8_34(V?dpO)lI$jkn2p24t-U@eKEWItgtqu=& z3KuM-zZc@~A+nPmsSsc+!l?YxmsdeaW z2$w(#EGgu8Pb$KSs|YKO?OTtzun10a0(*Bid_S{B-a1OIo?X7C$uo+^tqI6!KUS{s zkmh%B9QFFVa35hm>hpPr%CT^VZ}$n;D_+N|Zt+U&%kCpuWrEF)FuisWoMdt89wCvk z%3G(%q>kpo=$@!OIe2r2Un4mRb8{5ucUD%{dd|!}HaI-Ay7%a5Ls0(d@_LqDW{DAH z+1`*Y+A7xMmlJ)jgkIL$ztZ+){Yc_#N@XOVwn&>~ikpNO;YK)Zlo=g|O{a}gbFr}# zL8Zq3YeH(%WZ;Um8SH1GK@Ul9Xyw4WN`Cjp*^`$p+w_t##Ei<>)b0HS>@oxZp_Az_y^Xy~{RH%^A`Sf2r9y=Z*dj6Jb6Xp2k%y;U5U z;w7aJzwj@wu4|eeNzwDyQiy*=Qox!y@{J#U;~N;?v{%gYz?-r-1&jN3D9(!UY4Jv zx)YTY_$aK7_oUqK%)H+ms1CLG3{DSbC&JOCk{Ksu$B4pocn*fn)3-b+fvt++KR)Vw znUr`*B8{yotLWf{7p}b>e$|CAG-L~D3I&CQ|K>_K{G!w!QFox60jVhEU>ei=7TViCM~&G@374NQ~J6KU96sp90cP zx!}ckBrVMi9|`Ta`{oDZq;+q9DCJ3(NW}vDOseBJ^F=r?SJ{ZFDhN30*|$C zY~|no`P5@XSq*AfDbl{=b=;i)X4ONBMZ=-buh{a?LnAiMwQD=9{@lOj2CcPF?^-jS zKKY&cuo+LEPWgTMX-T9xsOPKUi%YZ%;h#Wt2Q`;6Nc$Ron9OAt|NA-t|Q``NB8OxiHbem&2A{PNCF61ETkG{ z__xP;J-U9pRz6bJ9tP{|At_Fc(;_07UlGW}#rto>lAFx5*cZOhaK9pt@wYVjwOK_) zF`2DJF@@~8J5&01p1-{(voi@_MyK~E>J-ZMw9lO?-&EdbfYu|y=_>9hO~1vP90#k> z+*yk`0>B0JJ9$y0HQ~aA_v%`=rULiE3OsozCMx-_w^~HXa;?XHcw&;I7oT4ezDTW! zbxvf3i`-1uU1=?w<6T?yZC>GWCf6=v%X~yyx{BgR$tnsY<*M+~8p-M$7a;}=I zIexozNOb0XOpq!9bT3xA4LEs=_p5UvN^=dE{Nq{ zR*u*zy|M*XSGs)?wtEFO*GrGlz7y<5cnC%|v%)7v-8)M5HhnwdUf`wy>Pki0Pmr|@D|159 zW){DYwUt8H6cHscT^pjUYo%@mchJqc#c6dqO*dXGOKT|i&Y3i6j1~N317qYadSm!EPT5kV7`T2eNYhPbsW<0_} zzXFFJV<4`iIGj+oG;ZQo;WV721>hk#pb37aZFYy#rMo>|pFa=`#l*(NCnP2%w@FD& zOV4PV*{*$7hwPk=xp|%P3py8eDe79>t)#SjkDg_{diUwuum5!e1`ZlLWazN#hu<(_ zKQA>h#~v zy#K-fe0cWUM<0J8RJjN0+fB5AkEl4YN;E?m4H3$uPEv1aq%;+-#a2mwkn81h$}`H5 zHf`JFwdvMocS>riDK#mzL+XIk85wU}k})3?_`){HBspNXmnZd-Mo8s&cO~9^O@5!> z_2J!OepgP_`Q0gaSHe2?Gt2@1gY$iy+nO;SYwpur+3crwxP0OAheCYvz$a@z8S^og zlR|v7=p*cy{LeqN!`yhZWAP&;q-O%YE%~@;{4L3mzlGFB;$0l6cjV4)@uav@tQCJ1 z4~Q?tUC@14Cmt2gVC5~u@1XH<2YkT%OZNC39(1qB>pKjiPPewI0emzM)55? zdLS&6m?P$ixnjQ9CKfctJcNZbR#=7Hh;e z;veEg(S#YBaWq3Q=x^d@)crH@xi|x9(*KAL#aZ#Ocwc-Z_K817(j64f3v3pP{o;Ul z6~DKOm&M(YXU~c)k*lZ0!?=0~+IDoj#1LIm{K>cyf1p`DANPwts&Au~IAjF0rBf-A zLQ1V@FzpwQX(3T-epoCrCu4;%=N5 zajwI;6=zSJwK(s^xjXW^25C>@97NxUp6Vd6&LZ%Bee;jnd9lcpEUHYi#Ukwt&h_|v zI{v;W79pO)BBii-l!j|EK1bn{5w;9Nz8;$ZV>Lx)UZ;L zH{e_j-yI)_5?q&sYO=V_evz}q_feuv*Q{QijFA^1J2O%P+`Eh2|#mgt7)Qw5C>eL!Pu5z`jR&UL6n zc|f03FVlW09ukAiI49toZaykDN6zWgUziqA#^`s6wur8yzw|uPe-CM)=ATfOhDh5| znIVwo@*l;w5nzg+t;2kWkLC{GyuWft4%`H3V~kc|9RTOHXqGD>!CdfngYYCRrt(2( zP{fE>HkeOP=ROV>zva2X9* z1zZ%1@nV9Q2np?tkR(hNQv?Qej0w{*9?S&iuLPf;4NgB7yna6T{6cVg;`29y(-WV+ z6+FHgTz&=k{3>yqAP#>!MjslR?hI1H+a;bAyD?(bVl3J#p5rlrMgbZTUJ!r5 zXi^7G|5wOj4vQnuC3_j;-7$<2uVI9H9pl^^;?2mYcAQ5v8plp!%sGP*=7Y#+a}Hz8 z#~6Fgi%)qR`a=92Eenp0RkwbhY1-#S64) zT{;&Q6YP@5uoJ_4h6N0}Ff3x&m0>XxU@EAE{*6L=oP`?mNAmshF8PciE7vQxDi0~O z$~(%x)O>X}G*b;at@Np210fJM5XG5Js z%R_&Q$%)w%Yl@u}`y3qaiulg)Zzbd=%ujeHF*osvq(MnLlFi9$+N@9cW9oIO52jv3 zK&r)Qhtl3mUzffm{ZHxp(hsMDSQV14i>&r_->byE=RhY>he`lO3|dERYlv1&UdwUjp>@vbzs*wyZ);sizD#h&#&PxbsiWh2Xumz^#9x>wI$kM}y*>z}>T zd*9i+vG=7ujy{QfvicPD>D%XqKIMJp^trXq+CG2iEA*Za zaGmeEQP-_u+Q3xMhaGOE2yDq}9t7S~)cibPaq}F&Zp|A3OZZM{b26^$7&Zc?BjrZG z;^v0|yEWGUmNFdJd=}SZ8II>W6PkD6&LqA*5I%|P=NZ1pcj_1(;q*rtHu9Zs05gzh zTjp~Fv-monVJT8(fCth2n;33lxQF3hhIO3gUA{iS@I8i&eE$MpUt-t<*jDJMXqfoW3lCo>;;r@~iD7#4FkJU-UII7(SZXguFs$JF zv-tjOhI1IsWjK%Fe1;1-{UU~o8CEe|#;}^wc3EhFcEE$gWA<#gmHs5I*N3@Zrj{|>wJb? zQTL9Z1cIe}X8^+y497K}#QjOlD*-F`-RXS)CWe*#) z6vNXD8~Oe>{Dn(=-2|A6-Z37qD=?pnKH>!I2F&LIGb;fnp;Wo>ctB4Ngad%jGklTn z*KwMY{PYyV(+nH={x?X|39Yjd(8G{uuM^W=KDSyvT6Qq><~(S@eB^!>umrFGbUPK$ zjjt7eZt0rdE#P+x(58KH-IY`J1#K6AdI^pIHVVWT)T;n(M`# z7Xdp18xI2#HaY_vbbSClyfbD6Z81A4Li$4B=Xt8>(WmH}jSQ*nx}a3g15&BFpj33-h3|jH@Mpjx zwA4vJH)Lr=Xeqj;mMY?wDnd(b#B~vJECQdI3fQ0F0EQzNjzK>y5)=5X3Qj+Z@6Tp9 zhv8g?^BB%&xPak8hKm?3W?02=8N+IZ%NedJt z-5CJR)(uwgX8}jxo881{^ww@-9DipL`cXGvjMC5I^s^bxVK|rJJcjcbF66H*Vz`)L z6~krxo$g~8LnYSBVaf21j8CGLoLJS_zv~`Zrt~~0W(z2dVbo# z@EhDI0S2B2OlQ~@bu3{zDM5|s{&c=Wlu#n5T}nWKbibA%wMB`bwkW}u>3#!4!g&d7 zJP8ucOT;CHO@O7q{7-;x%&AI&dAd$)RsfS2rlVh!3Mxq{_w-WWe;BR_|E0h`U5{f} z!6~VPrNBJBMLoS#P){!v)YD4^_4HCfJ-t*c}dGFGS_!11_t0(t-^@bv_~p2+DZ0mI*8_38nv;8|-0 z&sr;Z)>;9cUxWKJYpvi}YlWa$YXvyx4nUf+S0@8RrlX==q=4m(K{ymt#(pYd4p3*gq*EjKaU5TfC zvA(8SSK=vM6F;ovcPp76Rx&@VWPVu5{IC+#cob=fA69|_k7E5z7_MfxoZ$+FD;d%p zzb)3>RFX|xl1;cz*Hn^CT#_d^WesBw90mOaJOeeYVeHi~_G%b=HH^I)#$F9$uZFQ# z!`Q1~?A0*#Y8ZPpjJ+DhUJYZfmUF4)TxvO&TF#}GbE)NAYB`r$&ZU-fspVX1IhR__ zrIvH4kxms-xHmUG#|_1(ku-NW_W!}Z<6_1()j*)P)3ANOPCn+sTsfBV5R2$nD` zWmv&!Hi9-oBYVI%GwaAm5Q3rZRhCG9KMIG~sI_4F1pogirL%gDnc|{%biaO>Mb<8X3m{-(+S|}y) ziaO>Mb<8X3m{-&>uc%{QQOCTZj(J5L?0SYFJ@JY<*m@HrUQs8ASJVmO6?KAmMV%mC zQ74F3)CuAhb%JOi-2hj>LD^NLqN70*Lr zQ;hk;tDp+HrdD_rv_aS7k@8j01Hn4J(+F74v{cWuRL`_j&$Lv}v{cWuRL`_j&$Lv} zv{cWuRL`_j&$Lv}v{cWuRL`_j&$Lv}wDdYtO9SWCz=HoL2+q)xdc*a9$0ZR|Dtu2IuuA!*`j6-^KM{NUf;PzRNWHF4OP{etLqR zp5Uh^_~{9L`W`=hkDtEBPv7IG@A1=~}>&ME%RDgMqW{>~}>&ME%RDdu3O_&cZgJE!!{{m?U5>Nh$(|^V3zvA>?p)Pcvc<)yz6~PLIH4JMR)-kMS*uaq1 z>|gUY8<|TqGM8v%F44$bqLH~oBfdWs5=-I|jm#w)nM*V>muO@z(a2n)5&2R|;u4L_ zB^sGaG%}ZHWG>OjT%wV=L?d&FM&=TY%q1F`OEfZmuO@z(a2n)k-0=8bBRXg5{=9y8ktKpGM8v%F7XX>%Ws%lev9iG$Yp7C`xbX< zAfYA9{{vWh7_wPvsSEt{0%QIHWBUSH`7G`eK7ZykKXdE+%xQk+*8G`U^Ji|&OPuBs zKW*acCccJb4YK~xkni_{q+iB2%5W`IyH?Ko^LTEa7lu~6?WOR&;d^bQy?NDvw|@mZqdfjQ^Z$#&$_t^`L($uoBUzF z^sspz;v&+%gK^-uw@5r7uY(PnNUMS-y%;lN@zjwJJM(5IQen@!xl40%xJ!Q55qWvE zmC6TptR*)bAqYi*0~r%McBoLoRdASE4n;xWL(OWY1DXY@YBrIUF#a$hfFGa=|1O$_ zl4}~uk5?6|3BDRsO*O&KDIO?Dh{Iy0zoG|c!hcXsNX4hsYSlE0m0~Sga0l9N8ZyK^ zln(9#OeQNbHruQkZlPe%b&yS}ij<0?IVcmeiUU7*Ux{YLMIbd}GXOq=I;hA9s?G33 zfPZ+I3Xen8G_;@-*62{9u$XLCpyk)`VWT|o-%7cWXD5^w<+kHq6d%Y7YbNML=__ zR*)DzLls0u@bXD_aSPQoQsNbXxEE#tvOq7e+ksP)jXufWj${B_njDk^ih_q$iv!4o zDm_kkI{}(C6qvdLKF|1YF!`XjARH#zLq$TojL$?+Oh23n|4q3N72^{Y7+``1>`00% z(1C$j`Wwi_pXjD$2heJBI!s8Wsvs7Nj816a!wmv7@WHPmC`Zd-L4^q)R7jKqG>43= zbQcZFZD=G#ZxX`ku`oUmZO4HQWVT<658%@5wAxTitKE*~vLXhl6@Q=|ohTjfVW$q; z8XsIm1PH|gWCt?B>kc#tAB=^oGcn$`Kzj>Rk4-H)@I~MQEoTRQHT+4$=mb9Oy3>qg zXk?Qa(PXJa)WjaBv~gWEe%(%NByw0m8aA_PM-K;0qYfG}vV$w)u8r|wB-G3p6I?#R zhY2L$WPAXq$Rc_$E-fyg1I=c4fPSnl2N}~^tqz-xA`rGwA8H-EM*YQwYtT3NGgk`E zatN7d5(6I$2_L8*4$6qA7@x4ZTrSW6zEACk4h+Kz{Otq*;7!KxwG)aa@fL)EhVjm0F1eO~}X&t_%iR4CPtl{n#pd{olct*1mdt0KEN?iV5l0}fNoHW1zNB;zzfj>QC~1W zC*HOrA_?6`LOQO_gx)8mI4IVF2Ha>pWP#Tm+(&eD8~o|Sn>w1s>Cr7nhJpbf3i>J{ zf}_*;nJnnLcp3OWH;Nu80(zSUgd!hk5SmQL$U%1<=<=wd!NI{yptRu**dqAQUB877 zE1Y)2v>J5+KI|y39hJlBMj0abpe}@GnrhQ@J4#KX51JDt06wU_xQdJq0#t5;Ptadc ze7N22EBHX$fvE8}u+I2EdN;@nE))@tm+)b++8G}peZ;G#OdJt>AhTBZuxse*7R?EI zvm5w8Mozj*_(1<@jSmlkX@hN8Tz0pP4rF!FC~b5>f=pXhgqk6wyIi0nyBoyja@s-H z9+Uu7hH9fj*bz(^*s+`320kz@f>Nv)4A22!r|v?hYdMI48Tg<~z!dDHGwJbo&?me| ziY#CO1){cCTy8LL{OJOHc|fKvpT~-1n&z_D912(zQi6$u7$5Xqe%*y`6g^M`)EhWO zBigA;nt=}&-36iBsLV!6^jaajF?K=YgKqb@2_HHal}gD6)0WNagnB3HH@JT`zp&1;DGoWfPKG3PWUN8ED z7u2llb}%$Vys}z!4={}mtE1a_L87|fYeg~?%xd5R?}LfNpv9c%xfTSU)q#>$_`rAs z)^EZmL0-BJd;sw-2YQRk=0ZGZAchadhcAxsVL_MhdVmibycVLUEr$t_0Ngg83rh1Y z*leM>oPLk)Bz(ZPuL}bLd@K;B#XrV}!{lXrpmW;MpOBpc1f{z?sN$95YJ7l6qUjt? zpATHo?bDGZdZ^8XPHwfjyBz z9!`@3bO3x%Kc_Bf0pfMwgX{t9z(<6$fxAEI)ALxK# zvfB&nJK;3P>DHYtk1ODE!dThjL4DAF94+_&Ho+7eb`KDM!O=t5^t!2c;Xp#>@e!m` zF2v>V38&xhN1yP!(R?1VX9v;*R4h4u{|Aa=Al(8NHmIv5{;1gF4wi7w&y0UvfRjXbUK z0bJSxKnEJw1AMq$K}0R}pv}n%v`Ys*ydZV-9AtpL=`{O5HRzTW<}ZW~bO5*R^>_&p zk%Ka!WavpafHmNgqHqV$CjuU1>2h*zq^^nht+UdH_9dheB<~YCyXN8gxK8R|F9lAi? z;4)@->O%}OpV!Cr2jXyCix0d24h2mi;3G)r08_QQy@U^M!0E8!Pr^sg<#u~xgLWiC z!R!tllN~EMBJhz!oy<*q057BcTj2w$`mmERd!5Ahh(%d}c(2O}mWd$&WsYz*aCIR< z$uPt*TkSqQNceF0XjaR(jvyT0c7zD!h|A`;T0MG<->3ULZk#c0ouh48W^g zW}+Hmhq}{`K?#!uAKv!(ePBX#FhvkPi0e^L!dw7c4xi9NA&e5f5OVbSaL0{KZnyh_ zV5|7k2a*iw9*-|Bu=ql(QJ`@tAMw?oJ zc&|<@(+MP5%qRdIn5zj9)5ayhHtc>q6aa&D_^AuF#s_H283T0qydGZwbmWc=_}zZA zx!)7(aeIId{}p`T+i*q3_^|2VFW|uz-A~vI`2Ade10S5pwfJzy#KeF{#2`n%Ux)h! zA7%-5f5_#u`E`6n*JFSWe|(Gs$w2fN?^Fz7;Jsj~ZGdxbdn>>0r^Qg@z;!%BK93g@^&slwfdLyzhHqPlYA}JbdBATm&RUVs=l6vIU_x{- z76>06{*!XS;Nihw?umJ<9J{9uB#efI7 zLevFY;{&wiibpiZpx+ma0r`3pVuD`$;SKo{z$7sT4q*@kK7eq1+ii^_d|-I+=ph3i zA-wI635K}-L_7xHyMhmw3-cpz?D+V2@Q8Sda~Se?T|O{9;3pPyNieVwNHQK_C4#jG}+y9o^wKnC8Y#bM;|T8R#wAU^1^!`~hpI)Ue4 zLO=)Ru0kZV^$palette = new ezcGraphPaletteEz(); +$graph->title = 'Access statistics'; + +$graph->data['Access statistics'] = new ezcGraphArrayDataSet( array( + 'Mozilla' => 19113, + 'Explorer' => 10917, + 'Opera' => 1464, + 'Safari' => 652, + 'Konqueror' => 474, +) ); + +$graph->legend->position = ezcGraph::BOTTOM; +$graph->legend->landscapeSize = .3; +$graph->legend->title = 'Legend'; + +$graph->render( 400, 150, 'tutorial_legend_options.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_line_chart.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_line_chart.php new file mode 100644 index 000000000..068e60476 --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_line_chart.php @@ -0,0 +1,17 @@ +title = 'Wikipedia articles'; + +// Add data +foreach ( $wikidata as $language => $data ) +{ + $graph->data[$language] = new ezcGraphArrayDataSet( $data ); +} + +$graph->render( 400, 150, 'tutorial_line_chart.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_line_chart_3d.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_line_chart_3d.php new file mode 100644 index 000000000..bac6e2d36 --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_line_chart_3d.php @@ -0,0 +1,28 @@ +title = 'Some random data'; +$graph->legend->position = ezcGraph::BOTTOM; +$graph->options->fillLines = 210; + +$graph->xAxis = new ezcGraphChartElementNumericAxis(); + +$data = array(); +for ( $i = 0; $i <= 10; $i++ ) +{ + $data[$i] = mt_rand( -5, 5 ); +} + +// Add data +$graph->data['random data'] = $dataset = new ezcGraphArrayDataSet( $data ); + +$average = new ezcGraphDataSetAveragePolynom( $dataset, 3 ); +$graph->data[(string) $average->getPolynom()] = $average; + +$graph->renderer = new ezcGraphRenderer3d(); + +$graph->render( 400, 150, 'tutorial_line_chart_3d.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_line_chart_additional_axis.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_line_chart_additional_axis.php new file mode 100644 index 000000000..d06723ada --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_line_chart_additional_axis.php @@ -0,0 +1,33 @@ +title = 'Wikipedia articles'; + +// Add data +foreach ( $wikidata as $language => $data ) +{ + $graph->data[$language] = new ezcGraphArrayDataSet( $data ); +} + +$graph->yAxis->min = 0; + +// Use a different axis for the norwegian dataset +$graph->additionalAxis['norwegian'] = $nAxis = new ezcGraphChartElementNumericAxis(); +$nAxis->position = ezcGraph::BOTTOM; +$nAxis->chartPosition = 1; +$nAxis->min = 0; + +$graph->data['Norwegian']->yAxis = $nAxis; + +// Still use the marker +$graph->additionalAxis['border'] = $marker = new ezcGraphChartElementNumericAxis(); + +$marker->position = ezcGraph::LEFT; +$marker->chartPosition = 1 / 3; + +$graph->render( 400, 150, 'tutorial_line_chart_additional_axis.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_line_chart_markers.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_line_chart_markers.php new file mode 100644 index 000000000..a11637f8f --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_line_chart_markers.php @@ -0,0 +1,23 @@ +title = 'Wikipedia articles'; + +// Add data +foreach ( $wikidata as $language => $data ) +{ + $graph->data[$language] = new ezcGraphArrayDataSet( $data ); +} + +$graph->additionalAxis['border'] = $marker = new ezcGraphChartElementNumericAxis( ); + +$marker->position = ezcGraph::LEFT; +$marker->chartPosition = 1 / 3; +$marker->label = 'One million!'; + +$graph->render( 400, 150, 'tutorial_line_chart_markers.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_modified_palette.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_modified_palette.php new file mode 100644 index 000000000..99a8ea73e --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_modified_palette.php @@ -0,0 +1,22 @@ +palette = new tutorialCustomPalette(); +$graph->title = 'Wikipedia articles'; + +// Add data +foreach ( $wikidata as $language => $data ) +{ + $graph->data[$language] = new ezcGraphArrayDataSet( $data ); +} +$graph->data['German']->displayType = ezcGraph::LINE; + +$graph->options->fillLines = 210; + +$graph->render( 400, 150, 'tutorial_modified_palette.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_odometer_chart.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_odometer_chart.php new file mode 100644 index 000000000..c127811ad --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_odometer_chart.php @@ -0,0 +1,16 @@ +title = 'Sample odometer'; + +$graph->options->font->maxFontSize = 12; + +$graph->data['data'] = new ezcGraphArrayDataSet( + array( 1, 3, 9 ) +); + +$graph->render( 400, 150, 'tutorial_odometer_chart.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_output.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_output.php new file mode 100644 index 000000000..738c0e431 --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_output.php @@ -0,0 +1,19 @@ +title = 'Access statistics'; + +$graph->data['Access statistics'] = new ezcGraphArrayDataSet( array( + 'Mozilla' => 19113, + 'Explorer' => 10917, + 'Opera' => 1464, + 'Safari' => 652, + 'Konqueror' => 474, +) ); +$graph->data['Access statistics']->highlight['Opera'] = true; + +$graph->renderToOutput( 400, 150 ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_pie_chart_3d.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_pie_chart_3d.php new file mode 100644 index 000000000..b5cdcaa42 --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_pie_chart_3d.php @@ -0,0 +1,42 @@ +palette = new ezcGraphPaletteEzRed(); +$graph->title = 'Access statistics'; +$graph->options->label = '%2$d (%3$.1f%%)'; + +$graph->data['Access statistics'] = new ezcGraphArrayDataSet( array( + 'Mozilla' => 19113, + 'Explorer' => 10917, + 'Opera' => 1464, + 'Safari' => 652, + 'Konqueror' => 474, +) ); +$graph->data['Access statistics']->highlight['Explorer'] = true; + +$graph->renderer = new ezcGraphRenderer3d(); + +$graph->renderer->options->moveOut = .2; + +$graph->renderer->options->pieChartOffset = 63; + +$graph->renderer->options->pieChartGleam = .3; +$graph->renderer->options->pieChartGleamColor = '#FFFFFF'; + +$graph->renderer->options->pieChartShadowSize = 5; +$graph->renderer->options->pieChartShadowColor = '#000000'; + +$graph->renderer->options->legendSymbolGleam = .5; +$graph->renderer->options->legendSymbolGleamSize = .9; +$graph->renderer->options->legendSymbolGleamColor = '#FFFFFF'; + +$graph->renderer->options->pieChartSymbolColor = '#55575388'; + +$graph->renderer->options->pieChartHeight = 5; +$graph->renderer->options->pieChartRotation = .8; + +$graph->render( 400, 150, 'tutorial_pie_chart_3d.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_pie_chart_options.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_pie_chart_options.php new file mode 100644 index 000000000..7cf942ff0 --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_pie_chart_options.php @@ -0,0 +1,34 @@ +palette = new ezcGraphPaletteEzRed(); +$graph->title = 'Access statistics'; +$graph->legend = false; + +$graph->data['Access statistics'] = new ezcGraphArrayDataSet( array( + 'Mozilla' => 19113, + 'Explorer' => 10917, + 'Opera' => 1464, + 'Safari' => 652, + 'Konqueror' => 474, +) ); +$graph->data['Access statistics']->highlight['Explorer'] = true; + +// $graph->renderer = new ezcGraphRenderer2d(); + +$graph->renderer->options->moveOut = .2; + +$graph->renderer->options->pieChartOffset = 63; + +$graph->renderer->options->pieChartGleam = .3; +$graph->renderer->options->pieChartGleamColor = '#FFFFFF'; +$graph->renderer->options->pieChartGleamBorder = 2; + +$graph->renderer->options->pieChartShadowSize = 5; +$graph->renderer->options->pieChartShadowColor = '#BABDB6'; + +$graph->render( 400, 150, 'tutorial_pie_chart_options.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_pie_chart_pimped.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_pie_chart_pimped.php new file mode 100644 index 000000000..204e1aa57 --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_pie_chart_pimped.php @@ -0,0 +1,40 @@ +palette = new ezcGraphPaletteBlack(); +$graph->title = 'Access statistics'; +$graph->options->label = '%2$d (%3$.1f%%)'; + +$graph->data['Access statistics'] = new ezcGraphArrayDataSet( array( + 'Mozilla' => 19113, + 'Explorer' => 10917, + 'Opera' => 1464, + 'Safari' => 652, + 'Konqueror' => 474, +) ); +$graph->data['Access statistics']->highlight['Explorer'] = true; + +// $graph->renderer = new ezcGraphRenderer2d(); + +$graph->renderer->options->moveOut = .2; + +$graph->renderer->options->pieChartOffset = 63; + +$graph->renderer->options->pieChartGleam = .3; +$graph->renderer->options->pieChartGleamColor = '#FFFFFF'; +$graph->renderer->options->pieChartGleamBorder = 2; + +$graph->renderer->options->pieChartShadowSize = 3; +$graph->renderer->options->pieChartShadowColor = '#000000'; + +$graph->renderer->options->legendSymbolGleam = .5; +$graph->renderer->options->legendSymbolGleamSize = .9; +$graph->renderer->options->legendSymbolGleamColor = '#FFFFFF'; + +$graph->renderer->options->pieChartSymbolColor = '#BABDB688'; + +$graph->render( 400, 150, 'tutorial_pie_chart_pimped.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_pie_options.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_pie_options.php new file mode 100644 index 000000000..be8911f03 --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_pie_options.php @@ -0,0 +1,25 @@ +title = 'Elections 2005 Germany'; + +$graph->data['2005'] = new ezcGraphArrayDataSet( array( + 'CDU' => 35.2, + 'SPD' => 34.2, + 'FDP' => 9.8, + 'Die Gruenen' => 8.1, + 'PDS' => 8.7, + 'NDP' => 1.6, + 'REP' => 0.6, +) ); + +$graph->options->label = '%3$.1f%%'; +$graph->options->sum = 100; +$graph->options->percentThreshold = 0.02; +$graph->options->summarizeCaption = 'Others'; + +$graph->render( 400, 150, 'tutorial_pie_options.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_radar_chart.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_radar_chart.php new file mode 100644 index 000000000..d10a1d705 --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_radar_chart.php @@ -0,0 +1,19 @@ +title = 'Wikipedia articles'; +$graph->options->fillLines = 220; + +// Add data +foreach ( $wikidata as $language => $data ) +{ + $graph->data[$language] = new ezcGraphArrayDataSet( $data ); + $graph->data[$language][] = reset( $data ); +} + +$graph->render( 400, 150, 'tutorial_radar_chart.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_reference_gd.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_reference_gd.php new file mode 100644 index 000000000..46389f83e --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_reference_gd.php @@ -0,0 +1,41 @@ +palette = new ezcGraphPaletteEzGreen(); +$graph->title = 'Access statistics'; + +$graph->driver = new ezcGraphGdDriver(); +$graph->options->font = 'tutorial_font.ttf'; + +$graph->data['Access statistics'] = new ezcGraphArrayDataSet( array( + 'Mozilla' => 19113, + 'Explorer' => 10917, + 'Opera' => 1464, + 'Safari' => 652, + 'Konqueror' => 474, +) ); + +$graph->data['Access statistics']->url = 'http://example.org/'; +$graph->data['Access statistics']->url['Mozilla'] = 'http://example.org/mozilla'; + +$graph->render( 400, 200, 'tutorial_reference_gd.png' ); + +?> + + Image map example + + + + + + diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_reference_svg.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_reference_svg.php new file mode 100644 index 000000000..61f18c1c8 --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_reference_svg.php @@ -0,0 +1,25 @@ +palette = new ezcGraphPaletteEz(); +$graph->title = 'Access statistics'; + +$graph->data['Access statistics'] = new ezcGraphArrayDataSet( array( + 'Mozilla' => 19113, + 'Explorer' => 10917, + 'Opera' => 1464, + 'Safari' => 652, + 'Konqueror' => 474, +) ); + +$graph->data['Access statistics']->url = 'http://example.org/'; +$graph->data['Access statistics']->url['Mozilla'] = 'http://example.org/mozilla'; + +$graph->render( 400, 200, 'tutorial_reference_svg.svg' ); + +$graph->driver->options->linkCursor = 'crosshair'; +ezcGraphTools::linkSvgElements( $graph ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_renderer_3d.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_renderer_3d.php new file mode 100644 index 000000000..0d2d178fe --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_renderer_3d.php @@ -0,0 +1,21 @@ +title = 'Access statistics'; + +$graph->data['Access statistics'] = new ezcGraphArrayDataSet( array( + 'Mozilla' => 19113, + 'Explorer' => 10917, + 'Opera' => 1464, + 'Safari' => 652, + 'Konqueror' => 474, +) ); +$graph->data['Access statistics']->highlight['Opera'] = true; + +$graph->renderer = new ezcGraphRenderer3d(); + +$graph->render( 400, 150, 'tutorial_renderer_3d.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_rotated_labels.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_rotated_labels.php new file mode 100644 index 000000000..98aba886b --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_rotated_labels.php @@ -0,0 +1,24 @@ +title = 'Wikipedia articles'; + +$graph->xAxis->axisLabelRenderer = new ezcGraphAxisRotatedLabelRenderer(); +$graph->xAxis->axisLabelRenderer->angle = 45; +$graph->xAxis->axisSpace = .2; + +// Add data +foreach ( $wikidata as $language => $data ) +{ + $graph->data[$language] = new ezcGraphArrayDataSet( $data ); +} +$graph->data['German']->displayType = ezcGraph::LINE; + +$graph->options->fillLines = 210; + +$graph->render( 400, 150, 'tutorial_rotated_labels.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_simple_pie.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_simple_pie.php new file mode 100644 index 000000000..db2ca5ed7 --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_simple_pie.php @@ -0,0 +1,19 @@ +title = 'Access statistics'; + +$graph->data['Access statistics'] = new ezcGraphArrayDataSet( array( + 'Mozilla' => 19113, + 'Explorer' => 10917, + 'Opera' => 1464, + 'Safari' => 652, + 'Konqueror' => 474, +) ); +$graph->data['Access statistics']->highlight['Opera'] = true; + +$graph->render( 400, 150, 'tutorial_simple_pie.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_stacked_bar_chart.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_stacked_bar_chart.php new file mode 100644 index 000000000..96f9c6830 --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_stacked_bar_chart.php @@ -0,0 +1,22 @@ +title = 'Wikipedia articles'; + +// Stack bars +$graph->options->stackBars = true; + +// Add data +foreach ( $wikidata as $language => $data ) +{ + $graph->data[$language] = new ezcGraphArrayDataSet( $data ); +} + +$graph->yAxis->label = 'Thousand articles'; + +$graph->render( 400, 150, 'tutorial_stacked_bar_chart.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_user_palette.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_user_palette.php new file mode 100644 index 000000000..507acc3c6 --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_user_palette.php @@ -0,0 +1,21 @@ +palette = new ezcGraphPaletteBlack(); +$graph->title = 'Wikipedia articles'; + +// Add data +foreach ( $wikidata as $language => $data ) +{ + $graph->data[$language] = new ezcGraphArrayDataSet( $data ); +} +$graph->data['German']->displayType = ezcGraph::LINE; + +$graph->options->fillLines = 210; + +$graph->render( 400, 150, 'tutorial_user_palette.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/tutorial/tutorial_wikipedia_data.php b/include/ezcomponents/Graph/docs/tutorial/tutorial_wikipedia_data.php new file mode 100644 index 000000000..f4397bd2a --- /dev/null +++ b/include/ezcomponents/Graph/docs/tutorial/tutorial_wikipedia_data.php @@ -0,0 +1,30 @@ + array( + 'Jan 2006' => 965, + 'Feb 2006' => 1000, + 'Mar 2006' => 1100, + 'Apr 2006' => 1100, + 'May 2006' => 1200, + 'Jun 2006' => 1300, + ), + 'German' => array( + 'Jan 2006' => 357, + 'Feb 2006' => 371, + 'Mar 2006' => 387, + 'Apr 2006' => 402, + 'May 2006' => 429, + 'Jun 2006' => 435, + ), + 'Norwegian' => array( + 'Jan 2006' => 49, + 'Feb 2006' => 52, + 'Mar 2006' => 56, + 'Apr 2006' => 59, + 'May 2006' => 63, + 'Jun 2006' => 67, + ), +); + +?> diff --git a/include/ezcomponents/Graph/src/axis/container.php b/include/ezcomponents/Graph/src/axis/container.php new file mode 100644 index 000000000..e2d097ff3 --- /dev/null +++ b/include/ezcomponents/Graph/src/axis/container.php @@ -0,0 +1,221 @@ +chart = $chart; + } + + /** + * Returns if the given offset exists. + * + * This method is part of the ArrayAccess interface to allow access to the + * data of this object as if it was an array. + * + * @param string $key Identifier of dataset. + * @return bool True when the offset exists, otherwise false. + */ + public function offsetExists( $key ) + { + return isset( $this->data[$key] ); + } + + /** + * Returns the element with the given offset. + * + * This method is part of the ArrayAccess interface to allow access to the + * data of this object as if it was an array. + * + * @param string $key Identifier of dataset. + * @return ezcGraphChartElementAxis + * + * @throws ezcBasePropertyNotFoundException + * If no dataset with identifier exists + */ + public function offsetGet( $key ) + { + if ( !isset( $this->data[$key] ) ) + { + throw new ezcBasePropertyNotFoundException( $key ); + } + + return $this->data[$key]; + } + + /** + * Set the element with the given offset. + * + * This method is part of the ArrayAccess interface to allow access to the + * data of this object as if it was an array. + * + * @param string $key + * @param ezcGraphChartElementAxis $value + * @return void + * + * @throws ezcBaseValueException + * If supplied value is not an ezcGraphChartElementAxis + */ + public function offsetSet( $key, $value ) + { + if ( !$value instanceof ezcGraphChartElementAxis ) + { + throw new ezcBaseValueException( $key, $value, 'ezcGraphChartElementAxis' ); + } + + if ( $key === null ) + { + $key = count( $this->data ); + } + + // Add axis and configure it with current font and palette + $this->data[$key] = $value; + $value->font = $this->chart->options->font; + $value->setFromPalette( $this->chart->palette ); + + return $value; + } + + /** + * Unset the element with the given offset. + * + * This method is part of the ArrayAccess interface to allow access to the + * data of this object as if it was an array. + * + * @param string $key + * @return void + */ + public function offsetUnset( $key ) + { + if ( !isset( $this->data[$key] ) ) + { + throw new ezcBasePropertyNotFoundException( $key ); + } + + unset( $this->data[$key] ); + } + + /** + * Returns the currently selected dataset. + * + * This method is part of the Iterator interface to allow access to the + * datasets of this row by iterating over it like an array (e.g. using + * foreach). + * + * @return ezcGraphChartElementAxis The currently selected dataset. + */ + public function current() + { + return current( $this->data ); + } + + /** + * Returns the next dataset and selects it or false on the last dataset. + * + * This method is part of the Iterator interface to allow access to the + * datasets of this row by iterating over it like an array (e.g. using + * foreach). + * + * @return mixed ezcGraphChartElementAxis if the next dataset exists, or false. + */ + public function next() + { + return next( $this->data ); + } + + /** + * Returns the key of the currently selected dataset. + * + * This method is part of the Iterator interface to allow access to the + * datasets of this row by iterating over it like an array (e.g. using + * foreach). + * + * @return int The key of the currently selected dataset. + */ + public function key() + { + return key( $this->data ); + } + + /** + * Returns if the current dataset is valid. + * + * This method is part of the Iterator interface to allow access to the + * datasets of this row by iterating over it like an array (e.g. using + * foreach). + * + * @return bool If the current dataset is valid + */ + public function valid() + { + return ( current( $this->data ) !== false ); + } + + /** + * Selects the very first dataset and returns it. + * This method is part of the Iterator interface to allow access to the + * datasets of this row by iterating over it like an array (e.g. using + * foreach). + * + * @return ezcGraphChartElementAxis The very first dataset. + */ + public function rewind() + { + return reset( $this->data ); + } + + /** + * Returns the number of datasets in the row. + * + * This method is part of the Countable interface to allow the usage of + * PHP's count() function to check how many datasets exist. + * + * @return int Number of datasets. + */ + public function count() + { + return count( $this->data ); + } +} + +?> diff --git a/include/ezcomponents/Graph/src/axis/date.php b/include/ezcomponents/Graph/src/axis/date.php new file mode 100644 index 000000000..d64d48256 --- /dev/null +++ b/include/ezcomponents/Graph/src/axis/date.php @@ -0,0 +1,585 @@ + 'H:i.s', + // Ten seconds + 10 => 'H:i.s', + // Thirty seconds + 30 => 'H:i.s', + // Minute + 60 => 'H:i', + // Ten minutes + 600 => 'H:i', + // Half an hour + 1800 => 'H:i', + // Hour + 3600 => 'H:i', + // Four hours + 14400 => 'H:i', + // Six hours + 21600 => 'H:i', + // Half a day + 43200 => 'd.m a', + // Day + 86400 => 'd.m', + // Week + 604800 => 'W', + // Month + self::MONTH => 'M y', + // Year + self::YEAR => 'Y', + // Decade + self::DECADE => 'Y', + ); + + /** + * Constant used for calculation of automatic definition of major scaling + * steps + */ + const MAJOR_COUNT = 10; + + /** + * Constructor + * + * @param array $options Default option array + * @return void + * @ignore + */ + public function __construct( array $options = array() ) + { + $this->properties['startDate'] = false; + $this->properties['endDate'] = false; + $this->properties['interval'] = false; + $this->properties['dateFormat'] = false; + + parent::__construct( $options ); + } + + /** + * __set + * + * @param mixed $propertyName + * @param mixed $propertyValue + * @throws ezcBaseValueException + * If a submitted parameter was out of range or type. + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @return void + * @ignore + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case 'startDate': + $this->properties['startDate'] = (int) $propertyValue; + break; + case 'endDate': + $this->properties['endDate'] = (int) $propertyValue; + break; + case 'interval': + $this->properties['interval'] = (int) $propertyValue; + $this->properties['initialized'] = true; + break; + case 'dateFormat': + $this->properties['dateFormat'] = (string) $propertyValue; + break; + default: + parent::__set( $propertyName, $propertyValue ); + break; + } + } + + /** + * Ensure proper timestamp + * + * Takes a mixed value from datasets, like timestamps, or strings + * describing some time and converts it to a timestamp. + * + * @param mixed $value + * @return int + */ + protected static function ensureTimestamp( $value ) + { + if ( is_numeric( $value ) ) + { + $timestamp = (int) $value; + } + elseif ( ( $timestamp = strtotime( $value ) ) === false ) + { + throw new ezcGraphErrorParsingDateException( $value ); + } + + return $timestamp; + } + + /** + * Add data for this axis + * + * @param array $values Value which will be displayed on this axis + * @return void + */ + public function addData( array $values ) + { + foreach ( $values as $nr => $value ) + { + $value = self::ensureTimestamp( $value ); + + if ( $this->minValue === false || + $value < $this->minValue ) + { + $this->minValue = $value; + } + + if ( $this->maxValue === false || + $value > $this->maxValue ) + { + $this->maxValue = $value; + } + } + + $this->properties['initialized'] = true; + } + + /** + * Calculate nice time interval + * + * Use the best fitting time interval defined in class property array + * predefinedIntervals. + * + * @param int $min Start time + * @param int $max End time + * @return void + */ + protected function calculateInterval( $min, $max ) + { + $diff = $max - $min; + + foreach ( $this->predefinedIntervals as $interval => $format ) + { + if ( ( $diff / $interval ) <= self::MAJOR_COUNT ) + { + break; + } + } + + if ( ( $this->properties['startDate'] !== false ) && + ( $this->properties['endDate'] !== false ) ) + { + // Use interval between defined borders + if ( ( $diff % $interval ) > 0 ) + { + // Stil use predefined date format from old interval if not set + if ( $this->properties['dateFormat'] === false ) + { + $this->properties['dateFormat'] = $this->predefinedIntervals[$interval]; + } + + $count = ceil( $diff / $interval ); + $interval = round( $diff / $count, 0 ); + } + } + + $this->properties['interval'] = $interval; + } + + /** + * Calculate lower nice date + * + * Calculates a date which is earlier or equal to the given date, and is + * divisible by the given interval. + * + * @param int $min Date + * @param int $interval Interval + * @return int Earlier date + */ + protected function calculateLowerNiceDate( $min, $interval ) + { + switch ( $interval ) + { + case self::MONTH: + // Special handling for months - not covered by the default + // algorithm + return mktime( + 1, + 0, + 0, + (int) date( 'm', $min ), + 1, + (int) date( 'Y', $min ) + ); + default: + $dateSteps = array( 60, 60, 24, 7, 52 ); + + $date = array( + (int) date( 's', $min ), + (int) date( 'i', $min ), + (int) date( 'H', $min ), + (int) date( 'd', $min ), + (int) date( 'm', $min ), + (int) date( 'Y', $min ), + ); + + $element = 0; + while ( ( $step = array_shift( $dateSteps ) ) && + ( $interval > $step ) ) + { + $interval /= $step; + $date[$element++] = (int) ( $element > 2 ); + } + + $date[$element] -= $date[$element] % $interval; + + return mktime( + $date[2], + $date[1], + $date[0], + $date[4], + $date[3], + $date[5] + ); + } + } + + /** + * Calculate start date + * + * Use calculateLowerNiceDate to get a date earlier or equal date then the + * minimum date to use it as the start date for the axis depending on the + * selected interval. + * + * @param mixed $min Minimum date + * @param mixed $max Maximum date + * @return void + */ + public function calculateMinimum( $min, $max ) + { + if ( $this->properties['endDate'] === false ) + { + $this->properties['startDate'] = $this->calculateLowerNiceDate( $min, $this->interval ); + } + else + { + $this->properties['startDate'] = $this->properties['endDate']; + + while ( $this->properties['startDate'] > $min ) + { + switch ( $this->interval ) + { + case self::MONTH: + $this->properties['startDate'] = strtotime( '-1 month', $this->properties['startDate'] ); + break; + case self::YEAR: + $this->properties['startDate'] = strtotime( '-1 year', $this->properties['startDate'] ); + break; + case self::DECADE: + $this->properties['startDate'] = strtotime( '-10 years', $this->properties['startDate'] ); + break; + default: + $this->properties['startDate'] -= $this->interval; + } + } + } + } + + /** + * Calculate end date + * + * Use calculateLowerNiceDate to get a date later or equal date then the + * maximum date to use it as the end date for the axis depending on the + * selected interval. + * + * @param mixed $min Minimum date + * @param mixed $max Maximum date + * @return void + */ + public function calculateMaximum( $min, $max ) + { + $this->properties['endDate'] = $this->properties['startDate']; + + while ( $this->properties['endDate'] < $max ) + { + switch ( $this->interval ) + { + case self::MONTH: + $this->properties['endDate'] = strtotime( '+1 month', $this->properties['endDate'] ); + break; + case self::YEAR: + $this->properties['endDate'] = strtotime( '+1 year', $this->properties['endDate'] ); + break; + case self::DECADE: + $this->properties['endDate'] = strtotime( '+10 years', $this->properties['endDate'] ); + break; + default: + $this->properties['endDate'] += $this->interval; + } + } + } + + /** + * Calculate axis bounding values on base of the assigned values + * + * @return void + */ + public function calculateAxisBoundings() + { + // Prevent division by zero, when min == max + if ( $this->minValue == $this->maxValue ) + { + if ( $this->minValue == 0 ) + { + $this->maxValue = 1; + } + else + { + $this->minValue -= ( $this->minValue * .1 ); + $this->maxValue += ( $this->maxValue * .1 ); + } + } + + // Use custom minimum and maximum if available + if ( $this->properties['startDate'] !== false ) + { + $this->minValue = $this->properties['startDate']; + } + + if ( $this->properties['endDate'] !== false ) + { + $this->maxValue = $this->properties['endDate']; + } + + // Calculate "nice" values for scaling parameters + if ( $this->properties['interval'] === false ) + { + $this->calculateInterval( $this->minValue, $this->maxValue ); + } + + if ( $this->properties['dateFormat'] === false && isset( $this->predefinedIntervals[$this->interval] ) ) + { + $this->properties['dateFormat'] = $this->predefinedIntervals[$this->interval]; + } + + if ( $this->properties['startDate'] === false ) + { + $this->calculateMinimum( $this->minValue, $this->maxValue ); + } + + if ( $this->properties['endDate'] === false ) + { + $this->calculateMaximum( $this->minValue, $this->maxValue ); + } + } + + /** + * Get coordinate for a dedicated value on the chart + * + * @param float $value Value to determine position for + * @return float Position on chart + */ + public function getCoordinate( $value ) + { + // Force typecast, because ( false < -100 ) results in (bool) true + $intValue = ( $value === false ? false : self::ensureTimestamp( $value ) ); + + if ( ( $value === false ) && + ( ( $intValue < $this->startDate ) || ( $intValue > $this->endDate ) ) ) + { + switch ( $this->position ) + { + case ezcGraph::LEFT: + case ezcGraph::TOP: + return 0.; + case ezcGraph::RIGHT: + case ezcGraph::BOTTOM: + return 1.; + } + } + else + { + switch ( $this->position ) + { + case ezcGraph::LEFT: + case ezcGraph::TOP: + return ( $intValue - $this->startDate ) / ( $this->endDate - $this->startDate ); + case ezcGraph::RIGHT: + case ezcGraph::BOTTOM: + return 1 - ( $intValue - $this->startDate ) / ( $this->endDate - $this->startDate ); + } + } + } + + /** + * Return count of minor steps + * + * @return integer Count of minor steps + */ + public function getMinorStepCount() + { + return false; + } + + /** + * Return count of major steps + * + * @return integer Count of major steps + */ + public function getMajorStepCount() + { + return (int) ceil( ( $this->properties['endDate'] - $this->startDate ) / $this->interval ); + } + + /** + * Get label for a dedicated step on the axis + * + * @param integer $step Number of step + * @return string label + */ + public function getLabel( $step ) + { + return $this->getLabelFromTimestamp( $this->startDate + ( $step * $this->interval ), $step ); + } + + /** + * Get label for timestamp + * + * @param int $time + * @param int $step + * @return string + */ + protected function getLabelFromTimestamp( $time, $step ) + { + if ( $this->properties['labelCallback'] !== null ) + { + return call_user_func_array( + $this->properties['labelCallback'], + array( + date( $this->properties['dateFormat'], $time ), + $step, + ) + ); + } + else + { + return date( $this->properties['dateFormat'], $time ); + } + } + + /** + * Return array of steps on this axis + * + * @return array( ezcGraphAxisStep ) + */ + public function getSteps() + { + $steps = array(); + + $start = $this->properties['startDate']; + $end = $this->properties['endDate']; + $distance = $end - $start; + + $step = 0; + for ( $time = $start; $time <= $end; ) + { + $steps[] = new ezcGraphAxisStep( + ( $time - $start ) / $distance, + $this->interval / $distance, + $this->getLabelFromTimestamp( $time, $step++ ), + array(), + $step === 1, + $time >= $end + ); + + switch ( $this->interval ) + { + case self::MONTH: + $time = strtotime( '+1 month', $time ); + break; + case self::YEAR: + $time = strtotime( '+1 year', $time ); + break; + case self::DECADE: + $time = strtotime( '+10 years', $time ); + break; + default: + $time += $this->interval; + break; + } + } + + return $steps; + } + + /** + * Is zero step + * + * Returns true if the given step is the one on the initial axis position + * + * @param int $step Number of step + * @return bool Status If given step is initial axis position + */ + public function isZeroStep( $step ) + { + return ( $step == 0 ); + } +} + +?> diff --git a/include/ezcomponents/Graph/src/axis/labeled.php b/include/ezcomponents/Graph/src/axis/labeled.php new file mode 100644 index 000000000..434a0e894 --- /dev/null +++ b/include/ezcomponents/Graph/src/axis/labeled.php @@ -0,0 +1,448 @@ +properties['labelCount'] = null; + + $this->axisLabelRenderer = new ezcGraphAxisCenteredLabelRenderer(); + + parent::__construct( $options ); + } + + /** + * __set + * + * @param mixed $propertyName + * @param mixed $propertyValue + * @throws ezcBaseValueException + * If a submitted parameter was out of range or type. + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @return void + * @ignore + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case 'labelCount': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue <= 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int > 1' ); + } + + $this->properties['labelCount'] = (int) $propertyValue; + break; + default: + parent::__set( $propertyName, $propertyValue ); + break; + } + } + + /** + * Increase the keys of all elements in the array up from the start key, to + * insert an additional element at the correct position. + * + * @param array $array Array + * @param int $startKey Key to increase keys from + * @return array Updated array + */ + protected function increaseKeys( array $array, $startKey ) + { + foreach ( $array as $key => $value ) + { + if ( $key === $startKey ) + { + // Recursive check, if next key should be increased, too + if ( isset ( $array[$key + 1] ) ) + { + $array = $this->increaseKeys( $array, $key + 1 ); + } + + // Increase key + $array[$key + 1] = $array[$key]; + unset( $array[$key] ); + } + } + + return $array; + } + + /** + * Add data for this axis + * + * @param array $values Value which will be displayed on this axis + * @return void + */ + public function addData( array $values ) + { + $position = 0; + foreach ( $values as $label ) + { + $label = (string) $label; + + if ( !in_array( $label, $this->labels, true ) ) + { + if ( isset( $this->labels[$position] ) ) + { + $this->labels = $this->increaseKeys( $this->labels, $position ); + $this->labels[$position++] = $label; + } + else + { + $this->labels[$position++] = $label; + } + } + else + { + $position = array_search( $label, $this->labels, true ) + 1; + } + } + ksort( $this->labels ); + + $this->properties['initialized'] = true; + } + + /** + * Calculate axis bounding values on base of the assigned values + * + * @abstract + * @access public + * @return void + */ + public function calculateAxisBoundings() + { + $this->steps = array(); + + // Apply label format callback function + if ( $this->properties['labelCallback'] !== null ) + { + foreach ( $this->labels as $nr => $label ) + { + $this->labels[$nr] = call_user_func_array( + $this->properties['labelCallback'], + array( + $label, + $nr + ) + ); + } + } + + $labelCount = count( $this->labels ) - 1; + + if ( $labelCount === 0 ) + { + // Create single only step + $this->steps = array( + new ezcGraphAxisStep( + 0, + 1, + reset( $this->labels ), + array(), + true, + true + ), + ); + + return true; + } + + if ( $this->properties['labelCount'] === null ) + { + if ( $labelCount <= self::MAX_LABEL_COUNT ) + { + $stepSize = 1 / $labelCount; + + foreach ( $this->labels as $nr => $label ) + { + $this->steps[] = new ezcGraphAxisStep( + $stepSize * $nr, + $stepSize, + $label, + array(), + $nr === 0, + $nr === $labelCount + ); + } + + // @TODO: This line is deprecated and only build for + // deprecated getLabel() + $this->displayedLabels = $this->labels; + + return true; + } + + for ( $div = self::MAX_LABEL_COUNT; $div > 1; --$div ) + { + if ( ( $labelCount % $div ) === 0 ) + { + // @TODO: This part is deprecated and only build for + // deprecated getLabel() + $step = $labelCount / $div; + + foreach ( $this->labels as $nr => $label ) + { + if ( ( $nr % $step ) === 0 ) + { + $this->displayedLabels[] = $label; + } + } + // End of deprecated part + + break; + } + } + } + else + { + $div = false; + } + + // Build up step array + if ( $div > 2 ) + { + $step = $labelCount / $div; + $stepSize = 1 / $div; + $minorStepSize = $stepSize / $step; + + foreach ( $this->labels as $nr => $label ) + { + if ( ( $nr % $step ) === 0 ) + { + $mainstep = new ezcGraphAxisStep( + $stepSize * ( $nr / $step ), + $stepSize, + $label, + array(), + $nr === 0, + $nr === $labelCount + ); + + $this->steps[] = $mainstep; + } + else + { + $mainstep->childs[] = new ezcGraphAxisStep( + $mainstep->position + $minorStepSize * ( $nr % $step ), + $minorStepSize + ); + } + } + } + else + { + if ( $this->properties['labelCount'] === null ) + { + $floatStep = $labelCount / ( self::MAX_LABEL_COUNT - 1 ); + } + else + { + $floatStep = $labelCount / min( $labelCount, $this->properties['labelCount'] - 1 ); + } + + $position = 0; + $minorStepSize = 1 / $labelCount; + + foreach ( $this->labels as $nr => $label ) + { + if ( $nr >= $position ) + { + $position += $floatStep; + + // Add as major step + $mainstep = new ezcGraphAxisStep( + $minorStepSize * $nr, + ceil( $position - $nr ) * $minorStepSize, + $label, + array(), + $nr === 0, + $nr === $labelCount + ); + + // @TODO: This line is deprecated and only build for + // deprecated getLabel() + $this->displayedLabels[] = $label; + + $this->steps[] = $mainstep; + } + else + { + $mainstep->childs[] = new ezcGraphAxisStep( + $minorStepSize * $nr, + $minorStepSize + ); + } + } + } + } + + /** + * Return array of steps on this axis + * + * @return array( ezcGraphAxisStep ) + */ + public function getSteps() + { + return $this->steps; + } + + /** + * Get coordinate for a dedicated value on the chart + * + * @param string $value Value to determine position for + * @return float Position on chart + */ + public function getCoordinate( $value ) + { + if ( $value === false || + $value === null || + ( $key = array_search( $value, $this->labels ) ) === false ) + { + switch ( $this->position ) + { + case ezcGraph::LEFT: + case ezcGraph::TOP: + return 0.; + case ezcGraph::RIGHT: + case ezcGraph::BOTTOM: + return 1.; + } + } + else + { + switch ( $this->position ) + { + case ezcGraph::LEFT: + case ezcGraph::TOP: + if ( count( $this->labels ) > 1 ) + { + return (float) $key / ( count ( $this->labels ) - 1 ); + } + else + { + return 0; + } + case ezcGraph::BOTTOM: + case ezcGraph::RIGHT: + if ( count( $this->labels ) > 1 ) + { + return (float) 1 - $key / ( count ( $this->labels ) - 1 ); + } + else + { + return 1; + } + } + } + } + + /** + * Return count of minor steps + * + * @return integer Count of minor steps + */ + public function getMinorStepCount() + { + return 0; + } + + /** + * Return count of major steps + * + * @return integer Count of major steps + */ + public function getMajorStepCount() + { + return max( count( $this->displayedLabels ) - 1, 1 ); + } + + /** + * Get label for a dedicated step on the axis + * + * @param integer $step Number of step + * @return string label + */ + public function getLabel( $step ) + { + if ( isset( $this->displayedLabels[$step] ) ) + { + return $this->displayedLabels[$step]; + } + else + { + return false; + } + } + + /** + * Is zero step + * + * Returns true if the given step is the one on the initial axis position + * + * @param int $step Number of step + * @return bool Status If given step is initial axis position + */ + public function isZeroStep( $step ) + { + return !$step; + } +} + +?> diff --git a/include/ezcomponents/Graph/src/axis/logarithmic.php b/include/ezcomponents/Graph/src/axis/logarithmic.php new file mode 100644 index 000000000..8c2a55add --- /dev/null +++ b/include/ezcomponents/Graph/src/axis/logarithmic.php @@ -0,0 +1,303 @@ +properties['min'] = null; + $this->properties['max'] = null; + $this->properties['base'] = 10; + $this->properties['logarithmicalFormatString'] = '%1$d^%2$d'; + $this->properties['minValue'] = null; + $this->properties['maxValue'] = null; + + parent::__construct( $options ); + } + + /** + * __set + * + * @param mixed $propertyName + * @param mixed $propertyValue + * @throws ezcBaseValueException + * If a submitted parameter was out of range or type. + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @return void + * @ignore + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case 'min': + case 'max': + if ( !is_numeric( $propertyValue ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'float' ); + } + + $this->properties[$propertyName] = (float) $propertyValue; + $this->properties['initialized'] = true; + break; + case 'base': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue <= 0 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'float > 0' ); + } + + $this->properties[$propertyName] = (float) $propertyValue; + break; + case 'logarithmicalFormatString': + $this->properties['logarithmicalFormatString'] = (string) $propertyValue; + break; + default: + parent::__set( $propertyName, $propertyValue ); + break; + } + } + + /** + * Add data for this axis + * + * @param array $values Value which will be displayed on this axis + * @return void + */ + public function addData( array $values ) + { + foreach ( $values as $value ) + { + if ( $this->properties['minValue'] === null || + $value < $this->properties['minValue'] ) + { + $this->properties['minValue'] = $value; + } + + if ( $this->properties['maxValue'] === null || + $value > $this->properties['maxValue'] ) + { + $this->properties['maxValue'] = $value; + } + } + + $this->properties['initialized'] = true; + } + + /** + * Calculate axis bounding values on base of the assigned values + * + * @abstract + * @access public + * @return void + */ + public function calculateAxisBoundings() + { + // Prevent division by zero, when min == max + if ( $this->properties['minValue'] == $this->properties['maxValue'] ) + { + if ( $this->properties['minValue'] == 0 ) + { + $this->properties['maxValue'] = 1; + } + else + { + $this->properties['minValue'] -= ( $this->properties['minValue'] * .1 ); + $this->properties['maxValue'] += ( $this->properties['maxValue'] * .1 ); + } + } + + if ( $this->properties['minValue'] <= 0 ) + { + throw new ezcGraphOutOfLogithmicalBoundingsException( $this->properties['minValue'] ); + } + + // Use custom minimum and maximum if available + if ( $this->properties['min'] !== null ) + { + $this->properties['minValue'] = pow( $this->properties['base'], $this->properties['min'] ); + } + + if ( $this->properties['max'] !== null ) + { + $this->properties['maxValue'] = pow( $this->properties['base'], $this->properties['max'] ); + } + + // Calculate "nice" values for scaling parameters + if ( $this->properties['min'] === null ) + { + $this->properties['min'] = floor( log( $this->properties['minValue'], $this->properties['base'] ) ); + } + + if ( $this->properties['max'] === null ) + { + $this->properties['max'] = ceil( log( $this->properties['maxValue'], $this->properties['base'] ) ); + } + + $this->properties['minorStep'] = 1; + if ( ( $modifier = ( ( $this->properties['max'] - $this->properties['min'] ) / self::MAX_STEPS ) ) > 1 ) + { + $this->properties['majorStep'] = $modifier = ceil( $modifier ); + $this->properties['min'] = floor( $this->properties['min'] / $modifier ) * $modifier; + $this->properties['max'] = floor( $this->properties['max'] / $modifier ) * $modifier; + } + else + { + $this->properties['majorStep'] = 1; + } + } + + /** + * Get coordinate for a dedicated value on the chart + * + * @param float $value Value to determine position for + * @return float Position on chart + */ + public function getCoordinate( $value ) + { + // Force typecast, because ( false < -100 ) results in (bool) true + $floatValue = (float) $value; + + if ( $value === false ) + { + switch ( $this->position ) + { + case ezcGraph::LEFT: + case ezcGraph::TOP: + return 0.; + case ezcGraph::RIGHT: + case ezcGraph::BOTTOM: + return 1.; + } + } + else + { + $position = ( log( $value, $this->properties['base'] ) - $this->properties['min'] ) / ( $this->properties['max'] - $this->properties['min'] ); + + switch ( $this->position ) + { + case ezcGraph::LEFT: + case ezcGraph::TOP: + return $position; + case ezcGraph::RIGHT: + case ezcGraph::BOTTOM: + return 1 - $position; + } + } + } + + /** + * Return count of minor steps + * + * @return integer Count of minor steps + */ + public function getMinorStepCount() + { + return (int) ( ( $this->properties['max'] - $this->properties['min'] ) / $this->properties['minorStep'] ); + } + + /** + * Return count of major steps + * + * @return integer Count of major steps + */ + public function getMajorStepCount() + { + return (int) ( ( $this->properties['max'] - $this->properties['min'] ) / $this->properties['majorStep'] ); + } + + /** + * Get label for a dedicated step on the axis + * + * @param integer $step Number of step + * @return string label + */ + public function getLabel( $step ) + { + if ( $this->properties['labelCallback'] !== null ) + { + return call_user_func_array( + $this->properties['labelCallback'], + array( + sprintf( + $this->properties['logarithmicalFormatString'], + $this->properties['base'], + $this->properties['min'] + ( $step * $this->properties['majorStep'] ) + ), + $step, + ) + ); + } + else + { + return sprintf( + $this->properties['logarithmicalFormatString'], + $this->properties['base'], + $this->properties['min'] + ( $step * $this->properties['majorStep'] ) + ); + } + } + + /** + * Is zero step + * + * Returns true if the given step is the one on the initial axis position + * + * @param int $step Number of step + * @return bool Status If given step is initial axis position + */ + public function isZeroStep( $step ) + { + return ( $step == 0 ); + } +} + +?> diff --git a/include/ezcomponents/Graph/src/axis/numeric.php b/include/ezcomponents/Graph/src/axis/numeric.php new file mode 100644 index 000000000..9047e9901 --- /dev/null +++ b/include/ezcomponents/Graph/src/axis/numeric.php @@ -0,0 +1,422 @@ +properties['min'] = null; + $this->properties['max'] = null; + $this->properties['minValue'] = null; + $this->properties['maxValue'] = null; + + parent::__construct( $options ); + } + + /** + * __set + * + * @param mixed $propertyName + * @param mixed $propertyValue + * @throws ezcBaseValueException + * If a submitted parameter was out of range or type. + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @return void + * @ignore + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case 'min': + if ( !is_numeric( $propertyValue ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'float' ); + } + + $this->properties['min'] = (float) $propertyValue; + $this->properties['initialized'] = true; + break; + case 'max': + if ( !is_numeric( $propertyValue ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'float' ); + } + + $this->properties['max'] = (float) $propertyValue; + $this->properties['initialized'] = true; + break; + default: + parent::__set( $propertyName, $propertyValue ); + break; + } + } + + /** + * Returns a "nice" number for a given floating point number. + * + * Nice numbers are steps on a scale which are easily recognized by humans + * like 0.5, 25, 1000 etc. + * + * @param float $float Number to be altered + * @return float Nice number + */ + protected function getNiceNumber( $float ) + { + // Get absolute value and save sign + $abs = abs( $float ); + $sign = $float / $abs; + + // Normalize number to a range between 1 and 10 + $log = (int) round( log10( $abs ), 0 ); + $abs /= pow( 10, $log ); + + + // find next nice number + if ( $abs > 5 ) + { + $abs = 10.; + } + elseif ( $abs > 2.5 ) + { + $abs = 5.; + } + elseif ( $abs > 1 ) + { + $abs = 2.5; + } + else + { + $abs = 1; + } + + // unnormalize number to original values + return $abs * pow( 10, $log ) * $sign; + } + + /** + * Calculate minimum value for displayed axe basing on real minimum and + * major step size + * + * @param float $min Real data minimum + * @param float $max Real data maximum + * @return void + */ + protected function calculateMinimum( $min, $max ) + { + if ( $this->properties['max'] === null ) + { + $this->properties['min'] = floor( $min / $this->properties['majorStep'] ) * $this->properties['majorStep']; + } + else + { + $calculatedMin = $this->properties['max']; + + do { + $calculatedMin -= $this->properties['majorStep']; + } while ( $calculatedMin > $min ); + + $this->properties['min'] = $calculatedMin; + } + } + + /** + * Calculate maximum value for displayed axe basing on real maximum and + * major step size + * + * @param float $min Real data minimum + * @param float $max Real data maximum + * @return void + */ + protected function calculateMaximum( $min, $max ) + { + $calculatedMax = $this->properties['min']; + + do { + $calculatedMax += $this->properties['majorStep']; + } while ( $calculatedMax < $max ); + + $this->properties['max'] = $calculatedMax; + } + + /** + * Calculate size of minor steps based on the size of the major step size + * + * @param float $min Real data minimum + * @param float $max Real data maximum + * @return void + */ + protected function calculateMinorStep( $min, $max ) + { + $stepSize = $this->properties['majorStep'] / self::MIN_MINOR_COUNT; + $this->properties['minorStep'] = $this->getNiceNumber( $stepSize ); + } + + /** + * Calculate size of major step based on the span to be displayed and the + * defined MIN_MAJOR_COUNT constant. + * + * @param float $min Real data minimum + * @param float $max Real data maximum + * @return void + */ + protected function calculateMajorStep( $min, $max ) + { + $span = $max - $min; + $stepSize = $span / self::MIN_MAJOR_COUNT; + $this->properties['majorStep'] = $this->getNiceNumber( $stepSize ); + } + + /** + * Add data for this axis + * + * @param array $values Value which will be displayed on this axis + * @return void + */ + public function addData( array $values ) + { + foreach ( $values as $value ) + { + if ( $this->properties['minValue'] === null || + $value < $this->properties['minValue'] ) + { + $this->properties['minValue'] = $value; + } + + if ( $this->properties['maxValue'] === null || + $value > $this->properties['maxValue'] ) + { + $this->properties['maxValue'] = $value; + } + } + + $this->properties['initialized'] = true; + } + + /** + * Calculate axis bounding values on base of the assigned values + * + * @abstract + * @access public + * @return void + */ + public function calculateAxisBoundings() + { + // Prevent division by zero, when min == max + if ( $this->properties['minValue'] == $this->properties['maxValue'] ) + { + if ( $this->properties['minValue'] == 0 ) + { + $this->properties['maxValue'] = 1; + } + else + { + if ( $this->properties['majorStep'] !== null ) + { + $this->properties['minValue'] -= $this->properties['majorStep']; + $this->properties['maxValue'] += $this->properties['majorStep']; + } + else + { + $this->properties['minValue'] -= ( $this->properties['minValue'] * .1 ); + $this->properties['maxValue'] += ( $this->properties['maxValue'] * .1 ); + } + } + } + + // Use custom minimum and maximum if available + if ( $this->properties['min'] !== null ) + { + $this->properties['minValue'] = $this->properties['min']; + } + + if ( $this->properties['max'] !== null ) + { + $this->properties['maxValue'] = $this->properties['max']; + } + + // If min and max values are forced, we may not be able to find a + // "nice" number for the steps. Try to find such a nice step size, or + // fall back to a step size, which is just the span divided by 5. + if ( ( $this->properties['min'] !== null ) && + ( $this->properties['max'] !== null ) ) + { + $diff = $this->properties['max'] - $this->properties['min']; + $this->calculateMajorStep( $this->properties['minValue'], $this->properties['maxValue'] ); + $stepInvariance = $diff / $this->properties['majorStep']; + if ( ( $stepInvariance - floor( $stepInvariance ) ) > .0000001 ) + { + // For too big step invariances calculate the step size just + // from the given difference between min and max value. + $this->properties['majorStep'] = ( $this->properties['max'] - $this->properties['min'] ) / self::MIN_MAJOR_COUNT; + $this->properties['minorStep'] = $this->properties['majorStep'] / self::MIN_MAJOR_COUNT; + } + } + + // Calculate "nice" values for scaling parameters + if ( $this->properties['majorStep'] === null ) + { + $this->calculateMajorStep( $this->properties['minValue'], $this->properties['maxValue'] ); + } + + if ( $this->properties['minorStep'] === null ) + { + $this->calculateMinorStep( $this->properties['minValue'], $this->properties['maxValue'] ); + } + + if ( $this->properties['min'] === null ) + { + $this->calculateMinimum( $this->properties['minValue'], $this->properties['maxValue'] ); + } + + if ( $this->properties['max'] === null ) + { + $this->calculateMaximum( $this->properties['minValue'], $this->properties['maxValue'] ); + } + } + + /** + * Get coordinate for a dedicated value on the chart + * + * @param float $value Value to determine position for + * @return float Position on chart + */ + public function getCoordinate( $value ) + { + // Force typecast, because ( false < -100 ) results in (bool) true + $floatValue = (float) $value; + + if ( ( $value === false ) && + ( ( $floatValue < $this->properties['min'] ) || ( $floatValue > $this->properties['max'] ) ) ) + { + switch ( $this->position ) + { + case ezcGraph::LEFT: + case ezcGraph::TOP: + return 0.; + case ezcGraph::RIGHT: + case ezcGraph::BOTTOM: + return 1.; + } + } + else + { + switch ( $this->position ) + { + case ezcGraph::LEFT: + case ezcGraph::TOP: + return ( $value - $this->properties['min'] ) / ( $this->properties['max'] - $this->properties['min'] ); + case ezcGraph::RIGHT: + case ezcGraph::BOTTOM: + return 1 - ( $value - $this->properties['min'] ) / ( $this->properties['max'] - $this->properties['min'] ); + } + } + } + + /** + * Return count of minor steps + * + * @return integer Count of minor steps + */ + public function getMinorStepCount() + { + return (int) ( ( $this->properties['max'] - $this->properties['min'] ) / $this->properties['minorStep'] ); + } + + /** + * Return count of major steps + * + * @return integer Count of major steps + */ + public function getMajorStepCount() + { + return (int) ( ( $this->properties['max'] - $this->properties['min'] ) / $this->properties['majorStep'] ); + } + + /** + * Get label for a dedicated step on the axis + * + * @param integer $step Number of step + * @return string label + */ + public function getLabel( $step ) + { + if ( $this->properties['labelCallback'] !== null ) + { + return call_user_func_array( + $this->properties['labelCallback'], + array( + $this->properties['min'] + ( $step * $this->properties['majorStep'] ), + $step, + ) + ); + } + else + { + return $this->properties['min'] + ( $step * $this->properties['majorStep'] ); + } + } + + /** + * Is zero step + * + * Returns true if the given step is the one on the initial axis position + * + * @param int $step Number of step + * @return bool Status If given step is initial axis position + */ + public function isZeroStep( $step ) + { + return ( $this->getLabel( $step ) == 0 ); + } +} + +?> diff --git a/include/ezcomponents/Graph/src/charts/bar.php b/include/ezcomponents/Graph/src/charts/bar.php new file mode 100644 index 000000000..6352bd545 --- /dev/null +++ b/include/ezcomponents/Graph/src/charts/bar.php @@ -0,0 +1,94 @@ + + * // Create a new line chart + * $chart = new ezcGraphBarChart(); + * + * // Add data to line chart + * $chart->data['sample dataset'] = new ezcGraphArrayDataSet( + * array( + * '100' => 1.2, + * '200' => 43.2, + * '300' => -34.14, + * '350' => 65, + * '400' => 123, + * ) + * ); + * + * // Render chart with default 2d renderer and default SVG driver + * $chart->render( 500, 200, 'bar_chart.svg' ); + * + * + * Each chart consists of several chart elements which represents logical + * parts of the chart and can be formatted independently. The bar chart + * consists of: + * - title ( {@link ezcGraphChartElementText} ) + * - legend ( {@link ezcGraphChartElementLegend} ) + * - background ( {@link ezcGraphChartElementBackground} ) + * - xAxis ( {@link ezcGraphChartElementLabeledAxis} ) + * - yAxis ( {@link ezcGraphChartElementNumericAxis} ) + * + * The type of the axis may be changed and all elements can be configured by + * accessing them as properties of the chart: + * + * + * $chart->legend->position = ezcGraph::RIGHT; + * + * + * The chart itself also offers several options to configure the appearance. As + * bar charts extend line charts the the extended configure options are + * available in {@link ezcGraphLineChartOptions} extending the + * {@link ezcGraphChartOptions}. + * + * @property ezcGraphLineChartOptions $options + * Chart options class + * + * @version 1.3 + * @package Graph + * @mainclass + */ +class ezcGraphBarChart extends ezcGraphLineChart +{ + + /** + * Constructor + * + * @param array $options Default option array + * @return void + * @ignore + */ + public function __construct( array $options = array() ) + { + parent::__construct(); + + $this->elements['xAxis']->axisLabelRenderer = new ezcGraphAxisBoxedLabelRenderer(); + } + + /** + * Returns the default display type of the current chart type. + * + * @return int Display type + */ + public function getDefaultDisplayType() + { + return ezcGraph::BAR; + } +} +?> diff --git a/include/ezcomponents/Graph/src/charts/line.php b/include/ezcomponents/Graph/src/charts/line.php new file mode 100644 index 000000000..bf1681aaf --- /dev/null +++ b/include/ezcomponents/Graph/src/charts/line.php @@ -0,0 +1,652 @@ + + * // Create a new line chart + * $chart = new ezcGraphLineChart(); + * + * // Add data to line chart + * $chart->data['sample dataset'] = new ezcGraphArrayDataSet( + * array( + * '100' => 1.2, + * '200' => 43.2, + * '300' => -34.14, + * '350' => 65, + * '400' => 123, + * ) + * ); + * + * // Render chart with default 2d renderer and default SVG driver + * $chart->render( 500, 200, 'line_chart.svg' ); + * + * + * Each chart consists of several chart elements which represents logical + * parts of the chart and can be formatted independently. The line chart + * consists of: + * - title ( {@link ezcGraphChartElementText} ) + * - legend ( {@link ezcGraphChartElementLegend} ) + * - background ( {@link ezcGraphChartElementBackground} ) + * - xAxis ( {@link ezcGraphChartElementLabeledAxis} ) + * - yAxis ( {@link ezcGraphChartElementNumericAxis} ) + * + * The type of the axis may be changed and all elements can be configured by + * accessing them as properties of the chart: + * + * + * $chart->legend->position = ezcGraph::RIGHT; + * + * + * The chart itself also offers several options to configure the appearance. + * The extended configure options are available in + * {@link ezcGraphLineChartOptions} extending the {@link ezcGraphChartOptions}. + * + * @property ezcGraphLineChartOptions $options + * Chart options class + * + * @version 1.3 + * @package Graph + * @mainclass + */ +class ezcGraphLineChart extends ezcGraphChart +{ + /** + * Array with additional axis for the chart + * + * @var ezcGraphAxisContainer + */ + protected $additionalAxis; + + /** + * Constructor + * + * @param array $options Default option array + * @return void + * @ignore + */ + public function __construct( array $options = array() ) + { + $this->additionalAxis = new ezcGraphAxisContainer( $this ); + + $this->options = new ezcGraphLineChartOptions( $options ); + $this->options->highlightFont = $this->options->font; + + parent::__construct(); + + $this->addElement( 'xAxis', new ezcGraphChartElementLabeledAxis() ); + $this->elements['xAxis']->position = ezcGraph::LEFT; + + $this->addElement( 'yAxis', new ezcGraphChartElementNumericAxis() ); + $this->elements['yAxis']->position = ezcGraph::BOTTOM; + } + + /** + * __get + * + * @param mixed $propertyName + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @return mixed + * @ignore + */ + public function __get( $propertyName ) + { + switch ( $propertyName ) + { + case 'additionalAxis': + return $this->additionalAxis; + } + + return parent::__get( $propertyName ); + } + + /** + * Options write access + * + * @throws ezcBasePropertyNotFoundException + * If Option could not be found + * @throws ezcBaseValueException + * If value is out of range + * @param mixed $propertyName Option name + * @param mixed $propertyValue Option value; + * @return mixed + * @ignore + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) { + case 'xAxis': + if ( $propertyValue instanceof ezcGraphChartElementAxis ) + { + $this->addElement( 'xAxis', $propertyValue ); + $this->elements['xAxis']->position = ezcGraph::LEFT; + } + else + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'ezcGraphChartElementAxis' ); + } + break; + case 'yAxis': + if ( $propertyValue instanceof ezcGraphChartElementAxis ) + { + $this->addElement( 'yAxis', $propertyValue ); + $this->elements['yAxis']->position = ezcGraph::BOTTOM; + } + else + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'ezcGraphChartElementAxis' ); + } + break; + default: + parent::__set( $propertyName, $propertyValue ); + } + } + + /** + * Set colors and border for this element + * + * @param ezcGraphPalette $palette Palette + * @return void + */ + public function setFromPalette( ezcGraphPalette $palette ) + { + foreach ( $this->additionalAxis as $element ) + { + $element->setFromPalette( $palette ); + } + + parent::setFromPalette( $palette ); + } + + /** + * Render the assigned data + * + * Will renderer all charts data in the remaining boundings after drawing + * all other chart elements. The data will be rendered depending on the + * settings in the dataset. + * + * @param ezcGraphRenderer $renderer Renderer + * @param ezcGraphBoundings $boundings Remaining boundings + * @return void + */ + protected function renderData( ezcGraphRenderer $renderer, ezcGraphBoundings $boundings ) + { + // Apply axis space + $xAxisSpace = ( $boundings->x1 - $boundings->x0 ) * $this->yAxis->axisSpace; + $yAxisSpace = ( $boundings->y1 - $boundings->y0 ) * $this->xAxis->axisSpace; + + $boundings->x0 += $xAxisSpace; + $boundings->x1 -= $xAxisSpace; + + $boundings->y0 += $yAxisSpace; + $boundings->y1 -= $yAxisSpace; + + $yAxisNullPosition = $this->elements['yAxis']->getCoordinate( false ); + + // Initialize counters + $nr = array(); + $count = array(); + + foreach ( $this->data as $data ) + { + if ( !isset( $nr[$data->displayType->default] ) ) + { + $nr[$data->displayType->default] = 0; + $count[$data->displayType->default] = 0; + } + + $nr[$data->displayType->default]++; + $count[$data->displayType->default]++; + } + + $checkedRegularSteps = false; + + // Display data + foreach ( $this->data as $datasetName => $data ) + { + --$nr[$data->displayType->default]; + + // Check which axis should be used + $xAxis = ( $data->xAxis->default ? $data->xAxis->default: $this->elements['xAxis'] ); + $yAxis = ( $data->yAxis->default ? $data->yAxis->default: $this->elements['yAxis'] ); + + // Determine fill color for dataset + if ( $this->options->fillLines !== false ) + { + $fillColor = clone $data->color->default; + $fillColor->alpha = (int) round( ( 255 - $fillColor->alpha ) * ( $this->options->fillLines / 255 ) ); + } + else + { + $fillColor = null; + } + + // Ensure regular steps on axis when used with bar charts and + // precalculate some values use to render bar charts + // + // Called only once and only when bars should be rendered + if ( ( $checkedRegularSteps === false ) && + ( $data->displayType->default === ezcGraph::BAR ) ) + { + $steps = $xAxis->getSteps(); + + $stepWidth = null; + foreach ( $steps as $step ) + { + if ( $stepWidth === null ) + { + $stepWidth = $step->width; + } + elseif ( $step->width !== $stepWidth ) + { + throw new ezcGraphUnregularStepsException(); + } + } + + $step = reset( $steps ); + if ( count( $step->childs ) ) + { + // Keep this for BC reasons + $barCount = ( $xAxis->getMajorStepCount() + 1 ) * ( $xAxis->getMinorStepCount() - 1 ); + $stepWidth = 1 / $barCount; + } + + $checkedRegularSteps = true; + $width = $xAxis->axisLabelRenderer->modifyChartDataPosition( + $yAxis->axisLabelRenderer->modifyChartDataPosition( + new ezcGraphCoordinate( + ( $boundings->x1 - $boundings->x0 ) * $stepWidth, + 0 + ) + ) + )->x; + } + + // Draw lines for dataset + $lastPoint = false; + foreach ( $data as $key => $value ) + { + // Calculate point in chart + $point = $xAxis->axisLabelRenderer->modifyChartDataPosition( + $yAxis->axisLabelRenderer->modifyChartDataPosition( + new ezcGraphCoordinate( + $xAxis->getCoordinate( $key ), + $yAxis->getCoordinate( $value ) + ) + ) + ); + + // Render depending on display type of dataset + switch ( true ) + { + case $data->displayType->default === ezcGraph::LINE: + $renderer->drawDataLine( + $boundings, + new ezcGraphContext( $datasetName, $key, $data->url[$key] ), + $data->color->default, + ( $lastPoint === false ? $point : $lastPoint ), + $point, + $nr[$data->displayType->default], + $count[$data->displayType->default], + $data->symbol[$key], + $data->color[$key], + $fillColor, + $yAxisNullPosition, + ( $data->lineThickness->default ? $data->lineThickness->default : $this->options->lineThickness ) + ); + break; + case ( $data->displayType->default === ezcGraph::BAR ) && + $this->options->stackBars : + // Check if a bar has already been stacked + if ( !isset( $stackedValue[(int) ( $point->x * 10000 )][(int) $value > 0] ) ) + { + $start = new ezcGraphCoordinate( + $point->x, + $yAxisNullPosition + ); + + $stackedValue[(int) ( $point->x * 10000 )][(int) $value > 0] = $value; + } + else + { + $start = $xAxis->axisLabelRenderer->modifyChartDataPosition( + $yAxis->axisLabelRenderer->modifyChartDataPosition( + new ezcGraphCoordinate( + $xAxis->getCoordinate( $key ), + $yAxis->getCoordinate( $stackedValue[(int) ( $point->x * 10000 )][(int) $value > 0] ) + ) + ) + ); + + $point = $xAxis->axisLabelRenderer->modifyChartDataPosition( + $yAxis->axisLabelRenderer->modifyChartDataPosition( + new ezcGraphCoordinate( + $xAxis->getCoordinate( $key ), + $yAxis->getCoordinate( $stackedValue[(int) ( $point->x * 10000 )][(int) $value > 0] += $value ) + ) + ) + ); + } + + // Force one symbol for each stacked bar + if ( !isset( $stackedSymbol[(int) ( $point->x * 10000 )] ) ) + { + $stackedSymbol[(int) ( $point->x * 10000 )] = $data->symbol[$key]; + } + + // Store stacked value for next iteration + $stacked[(int) ( $point->x * 10000 )][$point->y / abs( $point->y )] = $point; + + $renderer->drawStackedBar( + $boundings, + new ezcGraphContext( $datasetName, $key, $data->url[$key] ), + $data->color->default, + $start, + $point, + $width, + $stackedSymbol[(int) ( $point->x * 10000 )], + $yAxisNullPosition + ); + break; + case $data->displayType->default === ezcGraph::BAR: + $renderer->drawBar( + $boundings, + new ezcGraphContext( $datasetName, $key, $data->url[$key] ), + $data->color[$key], + $point, + $width, + $nr[$data->displayType->default], + $count[$data->displayType->default], + $data->symbol[$key], + $yAxisNullPosition + ); + break; + default: + throw new ezcGraphInvalidDisplayTypeException( $data->displayType->default ); + break; + } + + // Render highlight string if requested + if ( $data->highlight[$key] ) + { + $renderer->drawDataHighlightText( + $boundings, + new ezcGraphContext( $datasetName, $key, $data->url[$key] ), + $point, + $yAxisNullPosition, + $nr[$data->displayType->default], + $count[$data->displayType->default], + $this->options->highlightFont, + ( $data->highlightValue[$key] ? $data->highlightValue[$key] : $value ), + $this->options->highlightSize + $this->options->highlightFont->padding * 2, + ( $this->options->highlightLines ? $data->color[$key] : null ) + ); + } + + // Store last point, used to connect lines in line chart. + $lastPoint = $point; + } + } + } + + /** + * Returns the default display type of the current chart type. + * + * @return int Display type + */ + public function getDefaultDisplayType() + { + return ezcGraph::LINE; + } + + /** + * Check if renderer supports features requested by some special chart + * options. + * + * @throws ezcBaseValueException + * If some feature is not supported + * + * @return void + */ + protected function checkRenderer() + { + // When stacked bars are enabled, check if renderer supports them + if ( $this->options->stackBars ) + { + if ( !$this->renderer instanceof ezcGraphStackedBarsRenderer ) + { + throw new ezcBaseValueException( 'renderer', $this->renderer, 'ezcGraphStackedBarsRenderer' ); + } + } + } + + /** + * Aggregate and calculate value boundings on axis. + * + * @return void + */ + protected function setAxisValues() + { + // Virtual data set build for agrregated values sums for bar charts + $virtualBarSumDataSet = array( array(), array() ); + + // Calculate axis scaling and labeling + foreach ( $this->data as $dataset ) + { + $nr = 0; + $labels = array(); + $values = array(); + foreach ( $dataset as $label => $value ) + { + $labels[] = $label; + $values[] = $value; + + // Build sum of all bars + if ( $this->options->stackBars && + ( $dataset->displayType->default === ezcGraph::BAR ) ) + { + if ( !isset( $virtualBarSumDataSet[(int) $value >= 0][$nr] ) ) + { + $virtualBarSumDataSet[(int) $value >= 0][$nr++] = $value; + } + else + { + $virtualBarSumDataSet[(int) $value >= 0][$nr++] += $value; + } + } + } + + // Check if data has been associated with another custom axis, use + // default axis otherwise. + if ( $dataset->xAxis->default ) + { + $dataset->xAxis->default->addData( $labels ); + } + else + { + $this->elements['xAxis']->addData( $labels ); + } + + if ( $dataset->yAxis->default ) + { + $dataset->yAxis->default->addData( $values ); + } + else + { + $this->elements['yAxis']->addData( $values ); + } + } + + // Also use stacked bar values as base for y axis value span + // calculation + if ( $this->options->stackBars ) + { + $this->elements['yAxis']->addData( $virtualBarSumDataSet[0] ); + $this->elements['yAxis']->addData( $virtualBarSumDataSet[1] ); + } + + // There should always be something assigned to the main x and y axis. + if ( !$this->elements['xAxis']->initialized || + !$this->elements['yAxis']->initialized ) + { + throw new ezcGraphNoDataException(); + } + + // Calculate boundings from assigned data + $this->elements['xAxis']->calculateAxisBoundings(); + $this->elements['yAxis']->calculateAxisBoundings(); + } + + /** + * Renders the basic elements of this chart type + * + * @param int $width + * @param int $height + * @return void + */ + protected function renderElements( $width, $height ) + { + if ( !count( $this->data ) ) + { + throw new ezcGraphNoDataException(); + } + + // Check if renderer supports requested features + $this->checkRenderer(); + + // Set values form datasets on axis to calculate correct spans + $this->setAxisValues(); + + // Generate legend + $this->elements['legend']->generateFromDataSets( $this->data ); + + // Get boundings from parameters + $this->options->width = $width; + $this->options->height = $height; + + // Set image properties in driver + $this->driver->options->width = $width; + $this->driver->options->height = $height; + + // Render subelements + $boundings = new ezcGraphBoundings(); + $boundings->x1 = $this->options->width; + $boundings->y1 = $this->options->height; + + $boundings = $this->elements['xAxis']->axisLabelRenderer->modifyChartBoundings( + $this->elements['yAxis']->axisLabelRenderer->modifyChartBoundings( + $boundings, new ezcGraphCoordinate( 1, 0 ) + ), new ezcGraphCoordinate( -1, 0 ) + ); + + // Render subelements + foreach ( $this->elements as $name => $element ) + { + // Skip element, if it should not get rendered + if ( $this->renderElement[$name] === false ) + { + continue; + } + + // Special settings for special elements + switch ( $name ) + { + case 'xAxis': + // get Position of 0 on the Y-axis for orientation of the x-axis + $element->nullPosition = $this->elements['yAxis']->getCoordinate( false ); + break; + case 'yAxis': + // get Position of 0 on the X-axis for orientation of the y-axis + $element->nullPosition = $this->elements['xAxis']->getCoordinate( false ); + break; + } + + $this->driver->options->font = $element->font; + $boundings = $element->render( $this->renderer, $boundings ); + } + + // Render additional axis + foreach ( $this->additionalAxis as $element ) + { + if ( $element->initialized ) + { + // Calculate all required step sizes if values has been + // assigned to axis. + $element->calculateAxisBoundings(); + } + else + { + // Do not render any axis labels, if no values were assigned + // and no step sizes were defined. + $element->axisLabelRenderer = new ezcGraphAxisNoLabelRenderer(); + } + + $this->driver->options->font = $element->font; + $element->nullPosition = $element->chartPosition; + $boundings = $element->render( $this->renderer, $boundings ); + } + + // Render graph + $this->renderData( $this->renderer, $boundings ); + } + + /** + * Render the line chart + * + * Renders the chart into a file or stream. The width and height are + * needed to specify the dimensions of the resulting image. For direct + * output use 'php://stdout' as output file. + * + * @param int $width Image width + * @param int $height Image height + * @param string $file Output file + * @apichange + * @return void + */ + public function render( $width, $height, $file = null ) + { + $this->renderElements( $width, $height ); + + if ( !empty( $file ) ) + { + $this->renderer->render( $file ); + } + + $this->renderedFile = $file; + } + + /** + * Renders this chart to direct output + * + * Does the same as ezcGraphChart::render(), but renders directly to + * output and not into a file. + * + * @param int $width + * @param int $height + * @apichange + * @return void + */ + public function renderToOutput( $width, $height ) + { + // @TODO: merge this function with render an deprecate ommit of third + // argument in render() when API break is possible + $this->renderElements( $width, $height ); + $this->renderer->render( null ); + } +} +?> diff --git a/include/ezcomponents/Graph/src/charts/odometer.php b/include/ezcomponents/Graph/src/charts/odometer.php new file mode 100644 index 000000000..6b221716b --- /dev/null +++ b/include/ezcomponents/Graph/src/charts/odometer.php @@ -0,0 +1,296 @@ + + * $graph = new ezcGraphOdometerChart(); + * $graph->title = 'Custom odometer'; + * + * $graph->data['data'] = new ezcGraphArrayDataSet( + * array( 87 ) + * ); + * + * // Set the marker color + * $graph->data['data']->color[0] = '#A0000055'; + * + * // Set colors for the background gradient + * $graph->options->startColor = '#2E3436'; + * $graph->options->endColor = '#EEEEEC'; + * + * // Define a border for the odometer + * $graph->options->borderWidth = 2; + * $graph->options->borderColor = '#BABDB6'; + * + * // Set marker width + * $graph->options->markerWidth = 5; + * + * // Set space, which the odometer may consume + * $graph->options->odometerHeight = .7; + * + * // Set axis span and label + * $graph->axis->min = 0; + * $graph->axis->max = 100; + * $graph->axis->label = 'Coverage '; + * + * $graph->render( 400, 150, 'custom_odometer_chart.svg' ); + * + * + * Each chart consists of several chart elements which represents logical parts + * of the chart and can be formatted independently. The odometer chart consists + * of: + * - title ( {@link ezcGraphChartElementText} ) + * - background ( {@link ezcGraphChartElementBackground} ) + * + * All elements can be configured by accessing them as properties of the chart: + * + * + * $chart->title->position = ezcGraph::BOTTOM; + * + * + * The chart itself also offers several options to configure the appearance. + * The extended configure options are available in + * {@link ezcGraphOdometerChartOptions} extending the {@link + * ezcGraphChartOptions}. + * + * @property ezcGraphOdometerChartOptions $options + * Chart options class + * + * @version 1.3 + * @package Graph + * @mainclass + */ +class ezcGraphOdometerChart extends ezcGraphChart +{ + + /** + * Constructor + * + * @param array $options Default option array + * @return void + * @ignore + */ + public function __construct( array $options = array() ) + { + $this->options = new ezcGraphOdometerChartOptions( $options ); + + parent::__construct( $options ); + + $this->data = new ezcGraphChartSingleDataContainer( $this ); + + $this->addElement( 'axis', new ezcGraphChartElementNumericAxis()); + $this->elements['axis']->axisLabelRenderer = new ezcGraphAxisCenteredLabelRenderer(); + $this->elements['axis']->axisLabelRenderer->showZeroValue = true; + $this->elements['axis']->position = ezcGraph::LEFT; + $this->elements['axis']->axisSpace = .05; + } + + /** + * Property write access + * + * @throws ezcBasePropertyNotFoundException + * If Option could not be found + * @throws ezcBaseValueException + * If value is out of range + * @param string $propertyName Option name + * @param mixed $propertyValue Option value; + * @return void + * @ignore + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) { + case 'axis': + if ( $propertyValue instanceof ezcGraphChartElementAxis ) + { + $this->addElement( 'axis', $propertyValue ); + $this->elements['axis']->axisLabelRenderer = new ezcGraphAxisCenteredLabelRenderer(); + $this->elements['axis']->axisLabelRenderer->showZeroValue = true; + $this->elements['axis']->position = ezcGraph::LEFT; + $this->elements['axis']->axisSpace = .05; + } + else + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'ezcGraphChartElementAxis' ); + } + break; + case 'renderer': + if ( $propertyValue instanceof ezcGraphOdometerRenderer ) + { + parent::__set( $propertyName, $propertyValue ); + } + else + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'ezcGraphOdometerRenderer' ); + } + break; + default: + parent::__set( $propertyName, $propertyValue ); + } + } + + /** + * Render the assigned data + * + * Will renderer all charts data in the remaining boundings after drawing + * all other chart elements. The data will be rendered depending on the + * settings in the dataset. + * + * @param ezcGraphRenderer $renderer Renderer + * @param ezcGraphBoundings $boundings Remaining boundings + * @return void + */ + protected function renderData( ezcGraphRenderer $renderer, ezcGraphBoundings $boundings ) + { + // Draw the odometer data + $dataset = $this->data->rewind(); + + foreach ( $dataset as $key => $value ) + { + $renderer->drawOdometerMarker( + $boundings, + $this->elements['axis']->axisLabelRenderer->modifyChartDataPosition( + new ezcGraphCoordinate( + $this->elements['axis']->getCoordinate( $value ), + 0 + ) + ), + $dataset->symbol[$key], + $dataset->color[$key], + $this->options->markerWidth + ); + } + } + + /** + * Returns the default display type of the current chart type. + * + * @return int Display type + */ + public function getDefaultDisplayType() + { + return ezcGraph::ODOMETER; + } + + /** + * Renders the basic elements of this chart type + * + * @param int $width + * @param int $height + * @return void + */ + protected function renderElements( $width, $height ) + { + if ( !count( $this->data ) ) + { + throw new ezcGraphNoDataException(); + } + + // Set image properties in driver + $this->driver->options->width = $width; + $this->driver->options->height = $height; + + // no legend + $this->renderElement['legend'] = false; + + // Get boundings from parameters + $this->options->width = $width; + $this->options->height = $height; + + $boundings = new ezcGraphBoundings(); + $boundings->x1 = $this->options->width; + $boundings->y1 = $this->options->height; + + // Get values out the single used dataset to calculate axis boundings + $values = array(); + foreach ( $this->data->rewind() as $value ) + { + $values[] = $value; + } + + // Set values for Axis + $this->elements['axis']->addData( $values ); + $this->elements['axis']->nullPosition = 0.5 + $this->options->odometerHeight / 2; + $this->elements['axis']->calculateAxisBoundings(); + + // Render subelements exept axis, which will be drawn together with the + // odometer bar + foreach ( $this->elements as $name => $element ) + { + // Skip element, if it should not get rendered + if ( $this->renderElement[$name] === false || + $name === 'axis' ) + { + continue; + } + + $this->driver->options->font = $element->font; + $boundings = $element->render( $this->renderer, $boundings ); + } + + // Draw basic odometer + $this->driver->options->font = $this->elements['axis']->font; + $boundings = $this->renderer->drawOdometer( + $boundings, + $this->elements['axis'], + $this->options + ); + + // Render graph + $this->renderData( $this->renderer, $boundings ); + } + + /** + * Render the pie chart + * + * Renders the chart into a file or stream. The width and height are + * needed to specify the dimensions of the resulting image. For direct + * output use 'php://stdout' as output file. + * + * @param int $width Image width + * @param int $height Image height + * @param string $file Output file + * @apichange + * @return void + */ + public function render( $width, $height, $file = null ) + { + $this->renderElements( $width, $height ); + + if ( !empty( $file ) ) + { + $this->renderer->render( $file ); + } + + $this->renderedFile = $file; + } + + /** + * Renders this chart to direct output + * + * Does the same as ezcGraphChart::render(), but renders directly to + * output and not into a file. + * + * @param int $width + * @param int $height + * @apichange + * @return void + */ + public function renderToOutput( $width, $height ) + { + // @TODO: merge this function with render an deprecate ommit of third + // argument in render() when API break is possible + $this->renderElements( $width, $height ); + $this->renderer->render( null ); + } +} + +?> diff --git a/include/ezcomponents/Graph/src/charts/pie.php b/include/ezcomponents/Graph/src/charts/pie.php new file mode 100644 index 000000000..885ade125 --- /dev/null +++ b/include/ezcomponents/Graph/src/charts/pie.php @@ -0,0 +1,308 @@ + + * // Create a new pie chart + * $chart = new ezcGraphPieChart(); + * + * // Add data to line chart + * $chart->data['sample dataset'] = new ezcGraphArrayDataSet( + * array( + * 'one' => 1.2, + * 'two' => 43.2, + * 'three' => -34.14, + * 'four' => 65, + * 'five' => 123, + * ) + * ); + * + * // Render chart with default 2d renderer and default SVG driver + * $chart->render( 500, 200, 'pie_chart.svg' ); + * + * + * Each chart consists of several chart elements which represents logical + * parts of the chart and can be formatted independently. The pie chart + * consists of: + * - title ( {@link ezcGraphChartElementText} ) + * - legend ( {@link ezcGraphChartElementLegend} ) + * - background ( {@link ezcGraphChartElementBackground} ) + * + * All elements can be configured by accessing them as properties of the chart: + * + * + * $chart->legend->position = ezcGraph::RIGHT; + * + * + * The chart itself also offers several options to configure the appearance. + * The extended configure options are available in + * {@link ezcGraphPieChartOptions} extending the {@link ezcGraphChartOptions}. + * + * @property ezcGraphPieChartOptions $options + * Chart options class + * + * @version 1.3 + * @package Graph + * @mainclass + */ +class ezcGraphPieChart extends ezcGraphChart +{ + + /** + * Constructor + * + * @param array $options Default option array + * @return void + * @ignore + */ + public function __construct( array $options = array() ) + { + $this->options = new ezcGraphPieChartOptions( $options ); + + parent::__construct( $options ); + + $this->data = new ezcGraphChartSingleDataContainer( $this ); + } + + /** + * Render the assigned data + * + * Will renderer all charts data in the remaining boundings after drawing + * all other chart elements. The data will be rendered depending on the + * settings in the dataset. + * + * @param ezcGraphRenderer $renderer Renderer + * @param ezcGraphBoundings $boundings Remaining boundings + * @return void + */ + protected function renderData( ezcGraphRenderer $renderer, ezcGraphBoundings $boundings ) + { + // Only draw the first (and only) dataset + $dataset = $this->data->rewind(); + $datasetName = $this->data->key(); + + $this->driver->options->font = $this->options->font; + + // Calculate sum of all values to be able to calculate percentage + $sum = 0; + foreach ( $dataset as $name => $value ) + { + if ( $value < 0 ) + { + throw new ezcGraphInvalidDataException( "Values >= 0 required, '$name' => '$value'." ); + } + + $sum += $value; + } + if ( $this->options->sum !== false ) + { + $sum = max( $sum, $this->options->sum ); + } + + if ( $sum <= 0 ) + { + throw new ezcGraphInvalidDataException( "Pie charts require a value sum > 0, your value: '$sum'." ); + } + + $angle = 0; + foreach ( $dataset as $label => $value ) + { + // Skip rendering values which equals 0 + if ( $value <= 0 ) + { + continue; + } + + switch ( $dataset->displayType->default ) + { + case ezcGraph::PIE: + $displayLabel = ( $this->options->labelCallback !== null + ? call_user_func( $this->options->labelCallback, $label, $value, $value / $sum ) + : sprintf( $this->options->label, $label, $value, $value / $sum * 100 ) ); + + $renderer->drawPieSegment( + $boundings, + new ezcGraphContext( $datasetName, $label, $dataset->url[$label] ), + $dataset->color[$label], + $angle, + $angle += $value / $sum * 360, + $displayLabel, + $dataset->highlight[$label] + ); + break; + default: + throw new ezcGraphInvalidDisplayTypeException( $dataset->displayType->default ); + break; + } + } + } + + /** + * Returns the default display type of the current chart type. + * + * @return int Display type + */ + public function getDefaultDisplayType() + { + return ezcGraph::PIE; + } + + /** + * Apply tresh hold + * + * Iterates over the dataset and applies the configured tresh hold to + * the datasets data. + * + * @return void + */ + protected function applyThreshold() + { + if ( $this->options->percentThreshold || $this->options->absoluteThreshold ) + { + $dataset = $this->data->rewind(); + + $sum = 0; + foreach ( $dataset as $value ) + { + $sum += $value; + } + if ( $this->options->sum !== false ) + { + $sum = max( $sum, $this->options->sum ); + } + + $unset = array(); + foreach ( $dataset as $label => $value ) + { + if ( $label === $this->options->summarizeCaption ) + { + continue; + } + + if ( ( $value <= $this->options->absoluteThreshold ) || + ( ( $value / $sum ) <= $this->options->percentThreshold ) ) + { + if ( !isset( $dataset[$this->options->summarizeCaption] ) ) + { + $dataset[$this->options->summarizeCaption] = $value; + } + else + { + $dataset[$this->options->summarizeCaption] += $value; + } + + $unset[] = $label; + } + } + + foreach ( $unset as $label ) + { + unset( $dataset[$label] ); + } + } + } + + /** + * Renders the basic elements of this chart type + * + * @param int $width + * @param int $height + * @return void + */ + protected function renderElements( $width, $height ) + { + if ( !count( $this->data ) ) + { + throw new ezcGraphNoDataException(); + } + + // Set image properties in driver + $this->driver->options->width = $width; + $this->driver->options->height = $height; + + // Apply tresh hold + $this->applyThreshold(); + + // Generate legend + $this->elements['legend']->generateFromDataSet( $this->data->rewind() ); + + // Get boundings from parameters + $this->options->width = $width; + $this->options->height = $height; + + $boundings = new ezcGraphBoundings(); + $boundings->x1 = $this->options->width; + $boundings->y1 = $this->options->height; + + // Render subelements + foreach ( $this->elements as $name => $element ) + { + // Skip element, if it should not get rendered + if ( $this->renderElement[$name] === false ) + { + continue; + } + + $this->driver->options->font = $element->font; + $boundings = $element->render( $this->renderer, $boundings ); + } + + // Render graph + $this->renderData( $this->renderer, $boundings ); + } + + /** + * Render the pie chart + * + * Renders the chart into a file or stream. The width and height are + * needed to specify the dimensions of the resulting image. For direct + * output use 'php://stdout' as output file. + * + * @param int $width Image width + * @param int $height Image height + * @param string $file Output file + * @apichange + * @return void + */ + public function render( $width, $height, $file = null ) + { + $this->renderElements( $width, $height ); + + if ( !empty( $file ) ) + { + $this->renderer->render( $file ); + } + + $this->renderedFile = $file; + } + + /** + * Renders this chart to direct output + * + * Does the same as ezcGraphChart::render(), but renders directly to + * output and not into a file. + * + * @param int $width + * @param int $height + * @apichange + * @return void + */ + public function renderToOutput( $width, $height ) + { + // @TODO: merge this function with render an deprecate ommit of third + // argument in render() when API break is possible + $this->renderElements( $width, $height ); + $this->renderer->render( null ); + } +} + +?> diff --git a/include/ezcomponents/Graph/src/charts/radar.php b/include/ezcomponents/Graph/src/charts/radar.php new file mode 100644 index 000000000..c63ed6868 --- /dev/null +++ b/include/ezcomponents/Graph/src/charts/radar.php @@ -0,0 +1,457 @@ + + * // Create a new radar chart + * $chart = new ezcGraphRadarChart(); + * + * // Add data to line chart + * $chart->data['sample dataset'] = new ezcGraphArrayDataSet( + * array( + * '100' => 1.2, + * '200' => 43.2, + * '300' => -34.14, + * '350' => 65, + * '400' => 123, + * ) + * ); + * + * // Render chart with default 2d renderer and default SVG driver + * $chart->render( 500, 200, 'radar_chart.svg' ); + * + * + * Each chart consists of several chart elements which represents logical + * parts of the chart and can be formatted independently. The line chart + * consists of: + * - title ( {@link ezcGraphChartElementText} ) + * - legend ( {@link ezcGraphChartElementLegend} ) + * - background ( {@link ezcGraphChartElementBackground} ) + * - axis ( {@link ezcGraphChartElementNumericAxis} ) + * - ratation axis ( {@link ezcGraphChartElementLabeledAxis} ) + * + * The type of the axis may be changed and all elements can be configured by + * accessing them as properties of the chart: + * + * The chart itself also offers several options to configure the appearance. + * The extended configure options are available in + * {@link ezcGraphRadarChartOptions} extending the + * {@link ezcGraphChartOptions}. + * + * + * $chart->legend->position = ezcGraph::RIGHT; + * + * + * @property ezcGraphRadarChartOptions $options + * Chart options class + * + * @version 1.3 + * @package Graph + * @mainclass + */ +class ezcGraphRadarChart extends ezcGraphChart +{ + /** + * Store major grid color for child axis. + * + * @var ezcGraphColor + */ + protected $childAxisColor; + + /** + * Constructor + * + * @param array $options Default option array + * @return void + * @ignore + */ + public function __construct( array $options = array() ) + { + $this->options = new ezcGraphRadarChartOptions( $options ); + $this->options->highlightFont = $this->options->font; + + parent::__construct(); + + $this->elements['rotationAxis'] = new ezcGraphChartElementLabeledAxis(); + + $this->addElement( 'axis', new ezcGraphChartElementNumericAxis() ); + $this->elements['axis']->position = ezcGraph::BOTTOM; + $this->elements['axis']->axisLabelRenderer = new ezcGraphAxisRadarLabelRenderer(); + $this->elements['axis']->axisLabelRenderer->outerStep = true; + + $this->addElement( 'rotationAxis', new ezcGraphChartElementLabeledAxis() ); + + // Do not render axis with default method, because we need an axis for + // each label in dataset + $this->renderElement['axis'] = false; + $this->renderElement['rotationAxis'] = false; + } + + /** + * Set colors and border fro this element + * + * @param ezcGraphPalette $palette Palette + * @return void + */ + public function setFromPalette( ezcGraphPalette $palette ) + { + $this->childAxisColor = $palette->majorGridColor; + + parent::setFromPalette( $palette ); + } + + /** + * Property write access + * + * @throws ezcBasePropertyNotFoundException + * If Option could not be found + * @throws ezcBaseValueException + * If value is out of range + * @param string $propertyName Option name + * @param mixed $propertyValue Option value; + * @return void + * @ignore + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) { + case 'axis': + if ( $propertyValue instanceof ezcGraphChartElementAxis ) + { + $this->addElement( 'axis', $propertyValue ); + $this->elements['axis']->position = ezcGraph::BOTTOM; + $this->elements['axis']->axisLabelRenderer = new ezcGraphAxisRadarLabelRenderer(); + $this->renderElement['axis'] = false; + } + else + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'ezcGraphChartElementAxis' ); + } + break; + case 'rotationAxis': + if ( $propertyValue instanceof ezcGraphChartElementAxis ) + { + $this->addElement( 'rotationAxis', $propertyValue ); + $this->renderElement['rotationAxis'] = false; + } + else + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'ezcGraphChartElementAxis' ); + } + break; + case 'renderer': + if ( $propertyValue instanceof ezcGraphRadarRenderer ) + { + parent::__set( $propertyName, $propertyValue ); + } + else + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'ezcGraphRadarRenderer' ); + } + break; + default: + parent::__set( $propertyName, $propertyValue ); + } + } + + /** + * Draws a single rotated axis + * + * Sets the axis label position depending on the axis rotation. + * + * @param ezcGraphChartElementAxis $axis + * @param ezcGraphBoundings $boundings + * @param ezcGraphCoordinate $center + * @param float $position + * @param float $lastPosition + * @return void + */ + protected function drawRotatedAxis( ezcGraphChartElementAxis $axis, ezcGraphBoundings $boundings, ezcGraphCoordinate $center, $position, $lastPosition = null ) + { + // Set axis position depending on angle for better axis label + // positioning + $angle = $position * 2 * M_PI; + switch ( (int) ( ( $position + .125 ) * 4 ) ) + { + case 0: + case 4: + $axis->position = ezcGraph::BOTTOM; + break; + case 1: + $axis->position = ezcGraph::LEFT; + break; + case 2: + $axis->position = ezcGraph::TOP; + break; + case 3: + $axis->position = ezcGraph::RIGHT; + break; + } + + // Set last step to correctly draw grid + if ( $axis->axisLabelRenderer instanceof ezcGraphAxisRadarLabelRenderer ) + { + $axis->axisLabelRenderer->lastStep = $lastPosition; + } + + // Do not draw axis label for last step + if ( abs( $position - 1 ) <= .001 ) + { + $axis->label = null; + } + + $this->renderer->drawAxis( + $boundings, + clone $center, + $dest = new ezcGraphCoordinate( + $center->x + sin( $angle ) * ( $boundings->width / 2 ), + $center->y - cos( $angle ) * ( $boundings->height / 2 ) + ), + clone $axis, + clone $axis->axisLabelRenderer + ); + } + + /** + * Render the assigned data + * + * Will renderer all charts data in the remaining boundings after drawing + * all other chart elements. The data will be rendered depending on the + * settings in the dataset. + * + * @param ezcGraphRenderer $renderer Renderer + * @param ezcGraphBoundings $boundings Remaining boundings + * @return void + */ + protected function renderData( ezcGraphRenderer $renderer, ezcGraphBoundings $boundings ) + { + // Apply axis space + $xAxisSpace = ( $boundings->x1 - $boundings->x0 ) * $this->axis->axisSpace; + $yAxisSpace = ( $boundings->y1 - $boundings->y0 ) * $this->axis->axisSpace; + + $center = new ezcGraphCoordinate( + ( $boundings->width / 2 ), + ( $boundings->height / 2 ) + ); + + // We do not differentiate between display types in radar charts. + $nr = $count = count( $this->data ); + + // Draw axis at major steps of virtual axis + $steps = $this->elements['rotationAxis']->getSteps(); + $lastStepPosition = null; + $axisColor = $this->elements['axis']->border; + foreach ( $steps as $step ) + { + $this->elements['axis']->label = $step->label; + $this->drawRotatedAxis( $this->elements['axis'], $boundings, $center, $step->position, $lastStepPosition ); + $lastStepPosition = $step->position; + + if ( count( $step->childs ) ) + { + foreach ( $step->childs as $childStep ) + { + $this->elements['axis']->label = null; + $this->elements['axis']->border = $this->childAxisColor; + + $this->drawRotatedAxis( $this->elements['axis'], $boundings, $center, $childStep->position, $lastStepPosition ); + $lastStepPosition = $childStep->position; + } + } + + $this->elements['axis']->border = $axisColor; + } + + // Display data + $this->elements['axis']->position = ezcGraph::TOP; + foreach ( $this->data as $datasetName => $data ) + { + --$nr; + // Determine fill color for dataset + if ( $this->options->fillLines !== false ) + { + $fillColor = clone $data->color->default; + $fillColor->alpha = (int) round( ( 255 - $fillColor->alpha ) * ( $this->options->fillLines / 255 ) ); + } + else + { + $fillColor = null; + } + + // Draw lines for dataset + $lastPoint = false; + foreach ( $data as $key => $value ) + { + $point = new ezcGraphCoordinate( + $this->elements['rotationAxis']->getCoordinate( $key ), + $this->elements['axis']->getCoordinate( $value ) + ); + + /* Transformation required for 3d like renderers ... + * which axis should transform here? + $point = $this->elements['xAxis']->axisLabelRenderer->modifyChartDataPosition( + $this->elements['yAxis']->axisLabelRenderer->modifyChartDataPosition( + new ezcGraphCoordinate( + $this->elements['xAxis']->getCoordinate( $key ), + $this->elements['yAxis']->getCoordinate( $value ) + ) + ) + ); + // */ + + $renderer->drawRadarDataLine( + $boundings, + new ezcGraphContext( $datasetName, $key, $data->url[$key] ), + $data->color->default, + clone $center, + ( $lastPoint === false ? $point : $lastPoint ), + $point, + $nr, + $count, + $data->symbol[$key], + $data->color[$key], + $fillColor, + $this->options->lineThickness + ); + + $lastPoint = $point; + } + } + } + + /** + * Returns the default display type of the current chart type. + * + * @return int Display type + */ + public function getDefaultDisplayType() + { + return ezcGraph::LINE; + } + + /** + * Renders the basic elements of this chart type + * + * @param int $width + * @param int $height + * @return void + */ + protected function renderElements( $width, $height ) + { + if ( !count( $this->data ) ) + { + throw new ezcGraphNoDataException(); + } + + // Set image properties in driver + $this->driver->options->width = $width; + $this->driver->options->height = $height; + + // Calculate axis scaling and labeling + foreach ( $this->data as $dataset ) + { + $labels = array(); + $values = array(); + foreach ( $dataset as $label => $value ) + { + $labels[] = $label; + $values[] = $value; + } + + $this->elements['axis']->addData( $values ); + $this->elements['rotationAxis']->addData( $labels ); + } + + $this->elements['axis']->calculateAxisBoundings(); + $this->elements['rotationAxis']->calculateAxisBoundings(); + + // Generate legend + $this->elements['legend']->generateFromDataSets( $this->data ); + + // Get boundings from parameters + $this->options->width = $width; + $this->options->height = $height; + + // Render subelements + $boundings = new ezcGraphBoundings(); + $boundings->x1 = $this->options->width; + $boundings->y1 = $this->options->height; + + // Render subelements + foreach ( $this->elements as $name => $element ) + { + // Skip element, if it should not get rendered + if ( $this->renderElement[$name] === false ) + { + continue; + } + + $this->driver->options->font = $element->font; + $boundings = $element->render( $this->renderer, $boundings ); + } + + // Render graph + $this->renderData( $this->renderer, $boundings ); + } + + /** + * Render the line chart + * + * Renders the chart into a file or stream. The width and height are + * needed to specify the dimensions of the resulting image. For direct + * output use 'php://stdout' as output file. + * + * @param int $width Image width + * @param int $height Image height + * @param string $file Output file + * @apichange + * @return void + */ + public function render( $width, $height, $file = null ) + { + $this->renderElements( $width, $height ); + + if ( !empty( $file ) ) + { + $this->renderer->render( $file ); + } + + $this->renderedFile = $file; + } + + /** + * Renders this chart to direct output + * + * Does the same as ezcGraphChart::render(), but renders directly to + * output and not into a file. + * + * @param int $width + * @param int $height + * @apichange + * @return void + */ + public function renderToOutput( $width, $height ) + { + // @TODO: merge this function with render an deprecate ommit of third + // argument in render() when API break is possible + $this->renderElements( $width, $height ); + $this->renderer->render( null ); + } +} +?> diff --git a/include/ezcomponents/Graph/src/colors/color.php b/include/ezcomponents/Graph/src/colors/color.php new file mode 100644 index 000000000..8ad4c9a7e --- /dev/null +++ b/include/ezcomponents/Graph/src/colors/color.php @@ -0,0 +1,269 @@ +properties['red'] = 0; + $this->properties['green'] = 0; + $this->properties['blue'] = 0; + $this->properties['alpha'] = 0; + + parent::__construct( $options ); + } + + /** + * __set + * + * @param mixed $propertyName + * @param mixed $propertyValue + * @throws ezcBaseValueException + * If a submitted parameter was out of range or type. + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @return void + * @ignore + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case 'red': + case 'green': + case 'blue': + case 'alpha': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) || + ( $propertyValue > 255 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, '0 <= int <= 255' ); + } + + $this->properties[$propertyName] = (int) $propertyValue; + break; + default: + throw new ezcBasePropertyNotFoundException( $propertyName ); + break; + } + } + + /** + * Creates an ezcGraphColor object from a hexadecimal color representation + * + * @param mixed $string Hexadecimal color representation + * @return ezcGraphColor + */ + static public function fromHex( $string ) + { + // Remove trailing # + if ( $string[0] === '#' ) + { + $string = substr( $string, 1 ); + } + + // Iterate over chunks and convert to integer + $color = new ezcGraphColor(); + $keys = array( 'red', 'green', 'blue', 'alpha' ); + foreach ( str_split( $string, 2) as $nr => $hexValue ) + { + if ( isset( $keys[$nr] ) ) + { + $key = $keys[$nr]; + $color->$key = hexdec( $hexValue ) % 256; + } + } + + // Set missing values to zero + for ( ++$nr; $nr < count( $keys ); ++$nr ) + { + $key = $keys[$nr]; + $color->$key = 0; + } + + return $color; + } + + /** + * Creates an ezcGraphColor object from an array of integers + * + * @param array $array Array of integer color values + * @return ezcGraphColor + */ + static public function fromIntegerArray( array $array ) + { + // Iterate over array elements + $color = new ezcGraphColor(); + $keys = array( 'red', 'green', 'blue', 'alpha' ); + $nr = 0; + foreach ( $array as $colorValue ) + { + if ( isset( $keys[$nr] ) ) + { + $key = $keys[$nr++]; + $color->$key = ( (int) $colorValue ) % 256; + } + } + + // Set missing values to zero + for ( $nr; $nr < count( $keys ); ++$nr ) + { + $key = $keys[$nr]; + $color->$key = 0; + } + + return $color; + } + + /** + * Creates an ezcGraphColor object from an array of floats + * + * @param array $array Array of float color values + * @return ezcGraphColor + */ + static public function fromFloatArray( array $array ) + { + // Iterate over array elements + $color = new ezcGraphColor(); + $keys = array( 'red', 'green', 'blue', 'alpha' ); + $nr = 0; + foreach ( $array as $colorValue ) + { + if ( isset( $keys[$nr] ) ) + { + $key = $keys[$nr++]; + $color->$key = ( (float) $colorValue * 255 ) % 256; + } + } + + // Set missing values to zero + for ( $nr; $nr < count( $keys ); ++$nr ) + { + $key = $keys[$nr]; + $color->$key = 0; + } + + return $color; + } + + /** + * Tries to detect type of color color definition and returns an + * ezcGraphColor object + * + * @param mixed $color Some kind of color definition + * @return ezcGraphColor + */ + static public function create( $color ) + { + if ( $color instanceof ezcGraphColor ) + { + return $color; + } + elseif ( is_string( $color ) ) + { + return ezcGraphColor::fromHex( $color ); + } + elseif ( is_array( $color ) ) + { + $testElement = reset( $color ); + if ( is_int( $testElement ) ) + { + return ezcGraphColor::fromIntegerArray( $color ); + } + else + { + return ezcGraphColor::fromFloatArray( $color ); + } + } + else + { + throw new ezcGraphUnknownColorDefinitionException( $color ); + } + } + + /** + * Returns a copy of the current color made more transparent by the given + * factor + * + * @param mixed $value Percent to make color mor transparent + * @return ezcGraphColor New color + */ + public function transparent( $value ) + { + $color = clone $this; + + $color->alpha = 255 - (int) round( ( 255 - $this->alpha ) * ( 1 - $value ) ); + + return $color; + } + + /** + * Inverts and returns a copy of the current color + * + * @return ezcGraphColor New Color + */ + public function invert() + { + $color = new ezcGraphColor(); + + $color->red = 255 - $this->red; + $color->green = 255 - $this->green; + $color->blue = 255 - $this->blue; + $color->alpha = $this->alpha; + + return $color; + } + + /** + * Returns a copy of the current color darkened by the given factor + * + * @param float $value Percent to darken the color + * @return ezcGraphColor New color + */ + public function darken( $value ) + { + $color = clone $this; + + $value = 1 - $value; + $color->red = min( 255, max( 0, (int) round( $this->red * $value ) ) ); + $color->green = min( 255, max( 0, (int) round( $this->green * $value ) ) ); + $color->blue = min( 255, max( 0, (int) round( $this->blue * $value ) ) ); + + return $color; + } +} + +?> diff --git a/include/ezcomponents/Graph/src/colors/linear_gradient.php b/include/ezcomponents/Graph/src/colors/linear_gradient.php new file mode 100644 index 000000000..f6fc07f06 --- /dev/null +++ b/include/ezcomponents/Graph/src/colors/linear_gradient.php @@ -0,0 +1,147 @@ +properties['startColor'] = $startColor; + $this->properties['endColor'] = $endColor; + $this->properties['startPoint'] = $startPoint; + $this->properties['endPoint'] = $endPoint; + } + + /** + * __set + * + * @param mixed $propertyName + * @param mixed $propertyValue + * @throws ezcBaseValueException + * If a submitted parameter was out of range or type. + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @return void + * @ignore + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case 'startPoint': + if ( !$propertyValue instanceof ezcGraphCoordinate ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'ezcGraphCoordinate' ); + } + else + { + $this->properties['startPoint'] = $propertyValue; + } + break; + case 'endPoint': + if ( !$propertyValue instanceof ezcGraphCoordinate ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'ezcGraphCoordinate' ); + } + else + { + $this->properties['endPoint'] = $propertyValue; + } + break; + case 'startColor': + $this->properties['startColor'] = ezcGraphColor::create( $propertyValue ); + break; + case 'endColor': + $this->properties['endColor'] = ezcGraphColor::create( $propertyValue ); + break; + } + } + + /** + * __get + * + * @param mixed $propertyName + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @return mixed + * @ignore + */ + public function __get( $propertyName ) + { + switch ( $propertyName ) + { + case 'red': + case 'green': + case 'blue': + case 'alpha': + // Fallback to native color + return $this->properties['startColor']->$propertyName; + default: + if ( isset( $this->properties[$propertyName] ) ) + { + return $this->properties[$propertyName]; + } + else + { + throw new ezcBasePropertyNotFoundException( $propertyName ); + } + } + } + + /** + * Returns a unique string representation for the gradient. + * + * @access public + * @return void + */ + public function __toString() + { + return sprintf( 'LinearGradient_%d_%d_%d_%d_%02x%02x%02x%02x_%02x%02x%02x%02x', + $this->properties['startPoint']->x, + $this->properties['startPoint']->y, + $this->properties['endPoint']->x, + $this->properties['endPoint']->y, + $this->properties['startColor']->red, + $this->properties['startColor']->green, + $this->properties['startColor']->blue, + $this->properties['startColor']->alpha, + $this->properties['endColor']->red, + $this->properties['endColor']->green, + $this->properties['endColor']->blue, + $this->properties['endColor']->alpha + ); + } +} +?> diff --git a/include/ezcomponents/Graph/src/colors/radial_gradient.php b/include/ezcomponents/Graph/src/colors/radial_gradient.php new file mode 100644 index 000000000..ef0a911a7 --- /dev/null +++ b/include/ezcomponents/Graph/src/colors/radial_gradient.php @@ -0,0 +1,173 @@ +properties['center'] = $center; + $this->properties['width'] = (float) $width; + $this->properties['height'] = (float) $height; + $this->properties['offset'] = 0; + $this->properties['startColor'] = $startColor; + $this->properties['endColor'] = $endColor; + } + + /** + * __set + * + * @param mixed $propertyName + * @param mixed $propertyValue + * @throws ezcBaseValueException + * If a submitted parameter was out of range or type. + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @return void + * @ignore + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case 'center': + if ( !$propertyValue instanceof ezcGraphCoordinate ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'ezcGraphCoordinate' ); + } + else + { + $this->properties['center'] = $propertyValue; + } + break; + case 'width': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue <= 0 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'float > 0' ); + } + + $this->properties['width'] = (float) $propertyValue; + break; + case 'height': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue <= 0 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'float > 0' ); + } + + $this->properties['height'] = (float) $propertyValue; + break; + case 'offset': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) || + ( $propertyValue > 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, '0 <= float <= 1' ); + } + + $this->properties['offset'] = $propertyValue; + break; + case 'startColor': + $this->properties['startColor'] = ezcGraphColor::create( $propertyValue ); + break; + case 'endColor': + $this->properties['endColor'] = ezcGraphColor::create( $propertyValue ); + break; + } + } + + /** + * __get + * + * @param mixed $propertyName + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @return mixed + * @ignore + */ + public function __get( $propertyName ) + { + switch ( $propertyName ) + { + case 'red': + case 'green': + case 'blue': + case 'alpha': + // Fallback to native color + return $this->properties['startColor']->$propertyName; + default: + if ( isset( $this->properties[$propertyName] ) ) + { + return $this->properties[$propertyName]; + } + else + { + throw new ezcBasePropertyNotFoundException( $propertyName ); + } + } + } + + /** + * Returns a unique string representation for the gradient. + * + * @access public + * @return void + */ + public function __toString() + { + return sprintf( 'RadialGradient_%d_%d_%d_%d_%.2f_%02x%02x%02x%02x_%02x%02x%02x%02x', + $this->properties['center']->x, + $this->properties['center']->y, + $this->properties['width'], + $this->properties['height'], + $this->properties['offset'], + $this->properties['startColor']->red, + $this->properties['startColor']->green, + $this->properties['startColor']->blue, + $this->properties['startColor']->alpha, + $this->properties['endColor']->red, + $this->properties['endColor']->green, + $this->properties['endColor']->blue, + $this->properties['endColor']->alpha + ); + } +} +?> diff --git a/include/ezcomponents/Graph/src/data_container/base.php b/include/ezcomponents/Graph/src/data_container/base.php new file mode 100644 index 000000000..57feae6ff --- /dev/null +++ b/include/ezcomponents/Graph/src/data_container/base.php @@ -0,0 +1,225 @@ +chart = $chart; + } + + /** + * Adds a dataset to the charts data + * + * @param string $name Name of dataset + * @param ezcGraphDataSet $dataSet + * @param mixed $values Values to create dataset with + * @throws ezcGraphTooManyDataSetExceptions + * If too many datasets are created + * @return ezcGraphDataSet + */ + protected function addDataSet( $name, ezcGraphDataSet $dataSet ) + { + $this->data[$name] = $dataSet; + + $this->data[$name]->label = $name; + $this->data[$name]->palette = $this->chart->palette; + $this->data[$name]->displayType = $this->chart->getDefaultDisplayType(); + } + + /** + * Returns if the given offset exists. + * + * This method is part of the ArrayAccess interface to allow access to the + * data of this object as if it was an array. + * + * @param string $key Identifier of dataset. + * @return bool True when the offset exists, otherwise false. + */ + public function offsetExists( $key ) + { + return isset( $this->data[$key] ); + } + + /** + * Returns the element with the given offset. + * + * This method is part of the ArrayAccess interface to allow access to the + * data of this object as if it was an array. + * + * @param string $key Identifier of dataset. + * @return ezcGraphDataSet + * + * @throws ezcGraphNoSuchDataSetException + * If no dataset with identifier exists + */ + public function offsetGet( $key ) + { + if ( !isset( $this->data[$key] ) ) + { + throw new ezcGraphNoSuchDataSetException( $key ); + } + + return $this->data[$key]; + } + + /** + * Set the element with the given offset. + * + * This method is part of the ArrayAccess interface to allow access to the + * data of this object as if it was an array. + * + * @param string $key + * @param ezcGraphDataSet $value + * @return void + * + * @throws ezcBaseValueException + * If supplied value is not an ezcGraphDataSet + */ + public function offsetSet( $key, $value ) + { + if ( !$value instanceof ezcGraphDataSet ) + { + throw new ezcBaseValueException( $key, $value, 'ezcGraphDataSet' ); + } + + return $this->addDataSet( $key, $value ); + } + + /** + * Unset the element with the given offset. + * + * This method is part of the ArrayAccess interface to allow access to the + * data of this object as if it was an array. + * + * @param string $key + * @return void + */ + public function offsetUnset( $key ) + { + if ( !isset( $this->data[$key] ) ) + { + throw new ezcGraphNoSuchDataSetException( $key ); + } + + unset( $this->data[$key] ); + } + + /** + * Returns the currently selected dataset. + * + * This method is part of the Iterator interface to allow access to the + * datasets of this row by iterating over it like an array (e.g. using + * foreach). + * + * @return ezcGraphDataSet The currently selected dataset. + */ + public function current() + { + return current( $this->data ); + } + + /** + * Returns the next dataset and selects it or false on the last dataset. + * + * This method is part of the Iterator interface to allow access to the + * datasets of this row by iterating over it like an array (e.g. using + * foreach). + * + * @return mixed ezcGraphDataSet if the next dataset exists, or false. + */ + public function next() + { + return next( $this->data ); + } + + /** + * Returns the key of the currently selected dataset. + * + * This method is part of the Iterator interface to allow access to the + * datasets of this row by iterating over it like an array (e.g. using + * foreach). + * + * @return int The key of the currently selected dataset. + */ + public function key() + { + return key( $this->data ); + } + + /** + * Returns if the current dataset is valid. + * + * This method is part of the Iterator interface to allow access to the + * datasets of this row by iterating over it like an array (e.g. using + * foreach). + * + * @return bool If the current dataset is valid + */ + public function valid() + { + return ( current( $this->data ) !== false ); + } + + /** + * Selects the very first dataset and returns it. + * This method is part of the Iterator interface to allow access to the + * datasets of this row by iterating over it like an array (e.g. using + * foreach). + * + * @return ezcGraphDataSet The very first dataset. + */ + public function rewind() + { + return reset( $this->data ); + } + + /** + * Returns the number of datasets in the row. + * + * This method is part of the Countable interface to allow the usage of + * PHP's count() function to check how many datasets exist. + * + * @return int Number of datasets. + */ + public function count() + { + return count( $this->data ); + } +} +?> diff --git a/include/ezcomponents/Graph/src/data_container/single.php b/include/ezcomponents/Graph/src/data_container/single.php new file mode 100644 index 000000000..02dff2c16 --- /dev/null +++ b/include/ezcomponents/Graph/src/data_container/single.php @@ -0,0 +1,51 @@ +data ) >= 1 && + !isset( $this->data[$name] ) ) + { + throw new ezcGraphTooManyDataSetsExceptions( $name ); + } + else + { + parent::addDataSet( $name, $dataSet ); + + // Resette palette color counter + $this->chart->palette->resetColorCounter(); + + // Colorize each data element + foreach ( $this->data[$name] as $label => $value ) + { + $this->data[$name]->color[$label] = $this->chart->palette->dataSetColor; + } + } + } +} +?> diff --git a/include/ezcomponents/Graph/src/datasets/array.php b/include/ezcomponents/Graph/src/datasets/array.php new file mode 100644 index 000000000..531763c66 --- /dev/null +++ b/include/ezcomponents/Graph/src/datasets/array.php @@ -0,0 +1,71 @@ +createFromArray( $data ); + parent::__construct(); + } + + /** + * setData + * + * Can handle data provided through an array or iterator. + * + * @param array|Iterator $data + * @access public + * @return void + */ + protected function createFromArray( $data = array() ) + { + if ( !is_array( $data ) && + !( $data instanceof Traversable ) ) + { + throw new ezcGraphInvalidArrayDataSourceException( $data ); + } + + $this->data = array(); + foreach ( $data as $key => $value ) + { + $this->data[$key] = $value; + } + + if ( !count( $this->data ) ) + { + throw new ezcGraphInvalidDataException( 'Data sets should contain some values.' ); + } + } + + /** + * Returns the number of elements in this dataset + * + * @return int + */ + public function count() + { + return count( $this->data ); + } +} + +?> diff --git a/include/ezcomponents/Graph/src/datasets/average.php b/include/ezcomponents/Graph/src/datasets/average.php new file mode 100644 index 000000000..d9f63a969 --- /dev/null +++ b/include/ezcomponents/Graph/src/datasets/average.php @@ -0,0 +1,359 @@ +mixed) + */ + protected $properties; + + /** + * Constructor + * + * @param ezcGraphDataSet $dataset Dataset to interpolate + * @param int $order Maximum order of interpolating polynom + * @return void + * @ignore + */ + public function __construct( ezcGraphDataSet $dataset, $order = 3 ) + { + parent::__construct(); + + $this->properties['resolution'] = 100; + $this->properties['polynomOrder'] = (int) $order; + + $this->source = $dataset; + } + + /** + * Options write access + * + * @throws ezcBasePropertyNotFoundException + * If Option could not be found + * @throws ezcBaseValueException + * If value is out of range + * @param mixed $propertyName Option name + * @param mixed $propertyValue Option value; + * @return mixed + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) { + case 'polynomOrder': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int > 0' ); + } + + $this->properties['polynomOrder'] = (int) $propertyValue; + $this->polynom = false; + break; + case 'resolution': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int > 1' ); + } + + $this->properties['resolution'] = (int) $propertyValue; + break; + default: + parent::__set( $propertyName, $propertyValue ); + break; + } + } + + /** + * Property get access. + * Simply returns a given option. + * + * @param string $propertyName The name of the option to get. + * @return mixed The option value. + * + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + */ + public function __get( $propertyName ) + { + if ( array_key_exists( $propertyName, $this->properties ) ) + { + return $this->properties[$propertyName]; + } + return parent::__get( $propertyName ); + } + + /** + * Build the polynom based on the given points. + * + * @return void + */ + protected function buildPolynom() + { + $points = array(); + + foreach ( $this->source as $key => $value ) + { + if ( !is_numeric( $key ) ) + { + throw new ezcGraphDatasetAverageInvalidKeysException(); + } + + if ( ( $this->min === false ) || ( $this->min > $key ) ) + { + $this->min = (float) $key; + } + + if ( ( $this->max === false ) || ( $this->max < $key ) ) + { + $this->max = (float) $key; + } + + $points[] = new ezcGraphCoordinate( (float) $key, (float) $value ); + } + + // Build transposed and normal Matrix out of coordiantes + $a = new ezcGraphMatrix( count( $points ), $this->polynomOrder + 1 ); + $b = new ezcGraphMatrix( count( $points ), 1 ); + + for ( $i = 0; $i <= $this->properties['polynomOrder']; ++$i ) + { + foreach ( $points as $nr => $point ) + { + $a->set( $nr, $i, pow( $point->x, $i ) ); + $b->set( $nr, 0, $point->y ); + } + } + + $at = clone $a; + $at->transpose(); + + $left = $at->multiply( $a ); + $right = $at->multiply( $b ); + + $this->polynom = $left->solveNonlinearEquatation( $right ); + } + + /** + * Returns a polynom of the defined order witch matches the datapoints + * using the least squares algorithm. + * + * @return ezcGraphPolynom Polynom + */ + public function getPolynom() + { + if ( $this->polynom === false ) + { + $this->buildPolynom(); + } + + return $this->polynom; + } + + /** + * Get the x coordinate for the current position + * + * @param int $position Position + * @return float x coordinate + */ + protected function getKey() + { + $polynom = $this->getPolynom(); + return $this->min + + ( $this->max - $this->min ) / $this->resolution * $this->position; + } + + /** + * Returns true if the given datapoint exists + * Allows isset() using ArrayAccess. + * + * @param string $key The key of the datapoint to get. + * @return bool Wether the key exists. + */ + public function offsetExists( $key ) + { + $polynom = $this->getPolynom(); + return ( ( $key >= $this->min ) && ( $key <= $this->max ) ); + } + + /** + * Returns the value for the given datapoint + * Get an datapoint value by ArrayAccess. + * + * @param string $key The key of the datapoint to get. + * @return float The datapoint value. + */ + public function offsetGet( $key ) + { + $polynom = $this->getPolynom(); + return $polynom->evaluate( $key ); + } + + /** + * Throws a ezcBasePropertyPermissionException because single datapoints + * cannot be set in average datasets. + * + * @param string $key The kex of a datapoint to set. + * @param float $value The value for the datapoint. + * @throws ezcBasePropertyPermissionException + * Always, because access is readonly. + * @return void + */ + public function offsetSet( $key, $value ) + { + throw new ezcBasePropertyPermissionException( $key, ezcBasePropertyPermissionException::READ ); + } + + /** + * Returns the currently selected datapoint. + * + * This method is part of the Iterator interface to allow access to the + * datapoints of this row by iterating over it like an array (e.g. using + * foreach). + * + * @return string The currently selected datapoint. + */ + final public function current() + { + $polynom = $this->getPolynom(); + return $polynom->evaluate( $this->getKey() ); + } + + /** + * Returns the next datapoint and selects it or false on the last datapoint. + * + * This method is part of the Iterator interface to allow access to the + * datapoints of this row by iterating over it like an array (e.g. using + * foreach). + * + * @return float datapoint if it exists, or false. + */ + final public function next() + { + if ( ++$this->position >= $this->resolution ) + { + return false; + } + else + { + return $this->current(); + } + } + + /** + * Returns the key of the currently selected datapoint. + * + * This method is part of the Iterator interface to allow access to the + * datapoints of this row by iterating over it like an array (e.g. using + * foreach). + * + * @return string The key of the currently selected datapoint. + */ + final public function key() + { + return (string) $this->getKey(); + } + + /** + * Returns if the current datapoint is valid. + * + * This method is part of the Iterator interface to allow access to the + * datapoints of this row by iterating over it like an array (e.g. using + * foreach). + * + * @return bool If the current datapoint is valid + */ + final public function valid() + { + $polynom = $this->getPolynom(); + + if ( $this->min >= $this->max ) + { + return false; + } + + return ( ( $this->getKey() >= $this->min ) && ( $this->getKey() <= $this->max ) ); + } + + /** + * Selects the very first datapoint and returns it. + * This method is part of the Iterator interface to allow access to the + * datapoints of this row by iterating over it like an array (e.g. using + * foreach). + * + * @return float The very first datapoint. + */ + final public function rewind() + { + $this->position = 0; + } + + /** + * Returns the number of elements in this dataset + * + * @return int + */ + public function count() + { + return $this->resolution; + } +} +?> diff --git a/include/ezcomponents/Graph/src/datasets/base.php b/include/ezcomponents/Graph/src/datasets/base.php new file mode 100644 index 000000000..916640b42 --- /dev/null +++ b/include/ezcomponents/Graph/src/datasets/base.php @@ -0,0 +1,295 @@ +properties['label'] = new ezcGraphDataSetStringProperty( $this ); + $this->properties['color'] = new ezcGraphDataSetColorProperty( $this ); + $this->properties['symbol'] = new ezcGraphDataSetIntProperty( $this ); + $this->properties['lineThickness'] = new ezcGraphDataSetIntProperty( $this ); + $this->properties['highlight'] = new ezcGraphDataSetBooleanProperty( $this ); + $this->properties['highlightValue'] = new ezcGraphDataSetStringProperty( $this ); + $this->properties['displayType'] = new ezcGraphDataSetIntProperty( $this ); + $this->properties['url'] = new ezcGraphDataSetStringProperty( $this ); + + $this->properties['xAxis'] = new ezcGraphDataSetAxisProperty( $this ); + $this->properties['yAxis'] = new ezcGraphDataSetAxisProperty( $this ); + + $this->properties['highlight']->default = false; + } + + /** + * Options write access + * + * @throws ezcBasePropertyNotFoundException + * If Option could not be found + * @throws ezcBaseValueException + * If value is out of range + * @param mixed $propertyName Option name + * @param mixed $propertyValue Option value; + * @return void + * @ignore + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case 'hilight': + $propertyName = 'highlight'; + case 'label': + case 'url': + case 'color': + case 'symbol': + case 'lineThickness': + case 'highlight': + case 'highlightValue': + case 'displayType': + case 'xAxis': + case 'yAxis': + $this->properties[$propertyName]->default = $propertyValue; + break; + + case 'palette': + $this->palette = $propertyValue; + $this->color->default = $this->palette->dataSetColor; + $this->symbol->default = $this->palette->dataSetSymbol; + break; + + default: + throw new ezcBasePropertyNotFoundException( $propertyName ); + break; + } + } + + /** + * Property get access. + * Simply returns a given option. + * + * @param string $propertyName The name of the option to get. + * @return mixed The option value. + * + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + */ + public function __get( $propertyName ) + { + if ( array_key_exists( $propertyName, $this->properties ) ) + { + return $this->properties[$propertyName]; + } + else + { + throw new ezcBasePropertyNotFoundException( $propertyName ); + } + } + + /** + * Returns true if the given datapoint exists + * Allows isset() using ArrayAccess. + * + * @param string $key The key of the datapoint to get. + * @return bool Wether the key exists. + */ + public function offsetExists( $key ) + { + return isset( $this->data[$key] ); + } + + /** + * Returns the value for the given datapoint + * Get an datapoint value by ArrayAccess. + * + * @param string $key The key of the datapoint to get. + * @return float The datapoint value. + */ + public function offsetGet( $key ) + { + return $this->data[$key]; + } + + /** + * Sets the value for a datapoint. + * Sets an datapoint using ArrayAccess. + * + * @param string $key The kex of a datapoint to set. + * @param float $value The value for the datapoint. + * @return void + */ + public function offsetSet( $key, $value ) + { + $this->data[$key] = (float) $value; + } + + /** + * Unset an option. + * Unsets an option using ArrayAccess. + * + * @param string $key The options to unset. + * @return void + * + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @throws ezcBaseValueException + * If a the value for a property is out of range. + */ + public function offsetUnset( $key ) + { + unset( $this->data[$key] ); + } + + /** + * Returns the currently selected datapoint. + * + * This method is part of the Iterator interface to allow access to the + * datapoints of this row by iterating over it like an array (e.g. using + * foreach). + * + * @return string The currently selected datapoint. + */ + public function current() + { + $keys = array_keys( $this->data ); + if ( !isset( $this->current ) ) + { + $this->current = 0; + } + + return $this->data[$keys[$this->current]]; + } + + /** + * Returns the next datapoint and selects it or false on the last datapoint. + * + * This method is part of the Iterator interface to allow access to the + * datapoints of this row by iterating over it like an array (e.g. using + * foreach). + * + * @return float datapoint if it exists, or false. + */ + public function next() + { + $keys = array_keys( $this->data ); + if ( ++$this->current >= count( $keys ) ) + { + return false; + } + else + { + return $this->data[$keys[$this->current]]; + } + } + + /** + * Returns the key of the currently selected datapoint. + * + * This method is part of the Iterator interface to allow access to the + * datapoints of this row by iterating over it like an array (e.g. using + * foreach). + * + * @return string The key of the currently selected datapoint. + */ + public function key() + { + $keys = array_keys( $this->data ); + return $keys[$this->current]; + } + + /** + * Returns if the current datapoint is valid. + * + * This method is part of the Iterator interface to allow access to the + * datapoints of this row by iterating over it like an array (e.g. using + * foreach). + * + * @return bool If the current datapoint is valid + */ + public function valid() + { + $keys = array_keys( $this->data ); + return isset( $keys[$this->current] ); + } + + /** + * Selects the very first datapoint and returns it. + * This method is part of the Iterator interface to allow access to the + * datapoints of this row by iterating over it like an array (e.g. using + * foreach). + * + * @return float The very first datapoint. + */ + public function rewind() + { + $this->current = 0; + } +} + +?> diff --git a/include/ezcomponents/Graph/src/datasets/numeric.php b/include/ezcomponents/Graph/src/datasets/numeric.php new file mode 100644 index 000000000..0bdebbed9 --- /dev/null +++ b/include/ezcomponents/Graph/src/datasets/numeric.php @@ -0,0 +1,287 @@ +mixed) + */ + protected $properties; + + /** + * Constructor + * + * @param float $start Start value for x axis values of function + * @param float $end End value for x axis values of function + * @param callback $callback Callback function + * @return void + * @ignore + */ + public function __construct( $start = null, $end = null, $callback = null ) + { + parent::__construct(); + + $this->properties['start'] = null; + $this->properties['end'] = null; + $this->properties['callback'] = null; + + if ( $start !== null ) + { + $this->start = $start; + } + + if ( $end !== null ) + { + $this->end = $end; + } + + if ( $callback !== null ) + { + $this->callback = $callback; + } + + $this->properties['resolution'] = 100; + } + + /** + * Options write access + * + * @throws ezcBasePropertyNotFoundException + * If Option could not be found + * @throws ezcBaseValueException + * If value is out of range + * @param mixed $propertyName Option name + * @param mixed $propertyValue Option value; + * @return mixed + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) { + case 'resolution': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int > 1' ); + } + + $this->properties['resolution'] = (int) $propertyValue; + break; + case 'start': + case 'end': + if ( !is_numeric( $propertyValue ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'float' ); + } + + $this->properties[$propertyName] = (float) $propertyValue; + break; + case 'callback': + if ( !is_callable( $propertyValue ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'callback' ); + } + + $this->properties[$propertyName] = $propertyValue; + break; + default: + parent::__set( $propertyName, $propertyValue ); + break; + } + } + + /** + * Property get access. + * Simply returns a given option. + * + * @param string $propertyName The name of the option to get. + * @return mixed The option value. + * + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + */ + public function __get( $propertyName ) + { + if ( array_key_exists( $propertyName, $this->properties ) ) + { + return $this->properties[$propertyName]; + } + return parent::__get( $propertyName ); + } + + /** + * Get the x coordinate for the current position + * + * @param int $position Position + * @return float x coordinate + */ + protected function getKey() + { + return $this->start + + ( $this->end - $this->start ) / $this->resolution * $this->position; + } + + /** + * Returns true if the given datapoint exists + * Allows isset() using ArrayAccess. + * + * @param string $key The key of the datapoint to get. + * @return bool Wether the key exists. + */ + public function offsetExists( $key ) + { + return ( ( $key >= $this->start ) && ( $key <= $this->end ) ); + } + + /** + * Returns the value for the given datapoint + * Get an datapoint value by ArrayAccess. + * + * @param string $key The key of the datapoint to get. + * @return float The datapoint value. + */ + public function offsetGet( $key ) + { + return call_user_func( $this->callback, $key ); + } + + /** + * Throws a ezcBasePropertyPermissionException because single datapoints + * cannot be set in average datasets. + * + * @param string $key The kex of a datapoint to set. + * @param float $value The value for the datapoint. + * @throws ezcBasePropertyPermissionException + * Always, because access is readonly. + * @return void + */ + public function offsetSet( $key, $value ) + { + throw new ezcBasePropertyPermissionException( $key, ezcBasePropertyPermissionException::READ ); + } + + /** + * Returns the currently selected datapoint. + * + * This method is part of the Iterator interface to allow access to the + * datapoints of this row by iterating over it like an array (e.g. using + * foreach). + * + * @return string The currently selected datapoint. + */ + final public function current() + { + return call_user_func( $this->callback, $this->getKey() ); + } + + /** + * Returns the next datapoint and selects it or false on the last datapoint. + * + * This method is part of the Iterator interface to allow access to the + * datapoints of this row by iterating over it like an array (e.g. using + * foreach). + * + * @return float datapoint if it exists, or false. + */ + final public function next() + { + if ( $this->start === $this->end ) + { + throw new ezcGraphDatasetAverageInvalidKeysException(); + } + + if ( ++$this->position >= $this->resolution ) + { + return false; + } + else + { + return $this->current(); + } + } + + /** + * Returns the key of the currently selected datapoint. + * + * This method is part of the Iterator interface to allow access to the + * datapoints of this row by iterating over it like an array (e.g. using + * foreach). + * + * @return string The key of the currently selected datapoint. + */ + final public function key() + { + return (string) $this->getKey(); + } + + /** + * Returns if the current datapoint is valid. + * + * This method is part of the Iterator interface to allow access to the + * datapoints of this row by iterating over it like an array (e.g. using + * foreach). + * + * @return bool If the current datapoint is valid + */ + final public function valid() + { + return ( ( $this->getKey() >= $this->start ) && ( $this->getKey() <= $this->end ) ); + } + + /** + * Selects the very first datapoint and returns it. + * This method is part of the Iterator interface to allow access to the + * datapoints of this row by iterating over it like an array (e.g. using + * foreach). + * + * @return float The very first datapoint. + */ + final public function rewind() + { + $this->position = 0; + } + + /** + * Returns the number of elements in this dataset + * + * @return int + */ + public function count() + { + return $this->resolution + 1; + } +} +?> diff --git a/include/ezcomponents/Graph/src/datasets/property/axis.php b/include/ezcomponents/Graph/src/datasets/property/axis.php new file mode 100644 index 000000000..c0b18333d --- /dev/null +++ b/include/ezcomponents/Graph/src/datasets/property/axis.php @@ -0,0 +1,56 @@ + diff --git a/include/ezcomponents/Graph/src/datasets/property/boolean.php b/include/ezcomponents/Graph/src/datasets/property/boolean.php new file mode 100644 index 000000000..bf2bc1153 --- /dev/null +++ b/include/ezcomponents/Graph/src/datasets/property/boolean.php @@ -0,0 +1,31 @@ + diff --git a/include/ezcomponents/Graph/src/datasets/property/color.php b/include/ezcomponents/Graph/src/datasets/property/color.php new file mode 100644 index 000000000..2d84592a0 --- /dev/null +++ b/include/ezcomponents/Graph/src/datasets/property/color.php @@ -0,0 +1,31 @@ + diff --git a/include/ezcomponents/Graph/src/datasets/property/integer.php b/include/ezcomponents/Graph/src/datasets/property/integer.php new file mode 100644 index 000000000..cd9517df8 --- /dev/null +++ b/include/ezcomponents/Graph/src/datasets/property/integer.php @@ -0,0 +1,31 @@ + diff --git a/include/ezcomponents/Graph/src/datasets/property/string.php b/include/ezcomponents/Graph/src/datasets/property/string.php new file mode 100644 index 000000000..f4f98c4ba --- /dev/null +++ b/include/ezcomponents/Graph/src/datasets/property/string.php @@ -0,0 +1,31 @@ + diff --git a/include/ezcomponents/Graph/src/driver/cairo.php b/include/ezcomponents/Graph/src/driver/cairo.php new file mode 100644 index 000000000..8110aa3ca --- /dev/null +++ b/include/ezcomponents/Graph/src/driver/cairo.php @@ -0,0 +1,1010 @@ + + * $graph = new ezcGraphPieChart(); + * $graph->background->color = '#FFFFFFFF'; + * $graph->title = 'Access statistics'; + * $graph->legend = false; + * + * $graph->data['Access statistics'] = new ezcGraphArrayDataSet( array( + * 'Mozilla' => 19113, + * 'Explorer' => 10917, + * 'Opera' => 1464, + * 'Safari' => 652, + * 'Konqueror' => 474, + * ) ); + * + * $graph->renderer = new ezcGraphRenderer3d(); + * $graph->renderer->options->pieChartShadowSize = 10; + * $graph->renderer->options->pieChartGleam = .5; + * $graph->renderer->options->dataBorder = false; + * $graph->renderer->options->pieChartHeight = 16; + * $graph->renderer->options->legendSymbolGleam = .5; + * + * // Use cairo driver + * $graph->driver = new ezcGraphCairoDriver(); + * + * $graph->render( 400, 200, 'tutorial_driver_cairo.png' ); + * + * + * @version 1.3 + * @package Graph + * @mainclass + */ +class ezcGraphCairoDriver extends ezcGraphDriver +{ + /** + * Surface for cairo + * + * @var resource + */ + protected $surface; + + /** + * Current cairo context. + * + * @var resource + */ + protected $context; + + /** + * List of strings to draw + * array ( array( + * 'text' => array( 'strings' ), + * 'options' => ezcGraphFontOptions, + * ) + * + * @var array + */ + protected $strings = array(); + + /** + * Constructor + * + * @param array $options Default option array + * @return void + * @ignore + */ + public function __construct( array $options = array() ) + { + ezcBase::checkDependency( 'Graph', ezcBase::DEP_PHP_EXTENSION, 'cairo_wrapper' ); + $this->options = new ezcGraphCairoDriverOptions( $options ); + } + + /** + * Initilize cairo surface + * + * Initilize cairo surface from values provided in the options object, if + * is has not been already initlized. + * + * @return void + */ + protected function initiliazeSurface() + { + // Immediatly exit, if surface already exists + if ( $this->surface !== null ) + { + return; + } + + $this->surface = cairo_image_surface_create( + CAIRO_FORMAT_ARGB32, + $this->options->width, + $this->options->height + ); + + $this->context = cairo_create( $this->surface ); + cairo_set_line_width( $this->context, 1 ); + } + + /** + * Get SVG style definition + * + * Returns a string with SVG style definitions created from color, + * fillstatus and line thickness. + * + * @param ezcGraphColor $color Color + * @param mixed $filled Filled + * @param float $thickness Line thickness. + * @return string Formatstring + */ + protected function getStyle( ezcGraphColor $color, $filled = true, $thickness = 1. ) + { + switch ( true ) + { + case $color instanceof ezcGraphLinearGradient: + $pattern = cairo_pattern_create_linear( + $color->startPoint->x, $color->startPoint->y, + $color->endPoint->x, $color->endPoint->y + ); + + cairo_pattern_add_color_stop_rgba ( + $pattern, + 0, + $color->startColor->red / 255, + $color->startColor->green / 255, + $color->startColor->blue / 255, + 1 - $color->startColor->alpha / 255 + ); + + cairo_pattern_add_color_stop_rgba ( + $pattern, + 1, + $color->endColor->red / 255, + $color->endColor->green / 255, + $color->endColor->blue / 255, + 1 - $color->endColor->alpha / 255 + ); + + cairo_set_source( $this->context, $pattern ); + cairo_fill( $this->context ); + break; + + case $color instanceof ezcGraphRadialGradient: + $pattern = cairo_pattern_create_radial( + 0, 0, 0, + 0, 0, 1 + ); + + cairo_pattern_add_color_stop_rgba ( + $pattern, + 0, + $color->startColor->red / 255, + $color->startColor->green / 255, + $color->startColor->blue / 255, + 1 - $color->startColor->alpha / 255 + ); + + cairo_pattern_add_color_stop_rgba ( + $pattern, + 1, + $color->endColor->red / 255, + $color->endColor->green / 255, + $color->endColor->blue / 255, + 1 - $color->endColor->alpha / 255 + ); + + // Scale pattern, and move it to the correct position + $matrix = cairo_matrix_multiply( + $move = cairo_matrix_create_translate( -$color->center->x, -$color->center->y ), + $scale = cairo_matrix_create_scale( 1 / $color->width, 1 / $color->height ) + ); + cairo_pattern_set_matrix( $pattern, $matrix ); + + cairo_set_source( $this->context, $pattern ); + cairo_fill( $this->context ); + break; + default: + cairo_set_source_rgba( + $this->context, + $color->red / 255, + $color->green / 255, + $color->blue / 255, + 1 - $color->alpha / 255 + ); + break; + } + + // Set line width + cairo_set_line_width( $this->context, $thickness ); + + // Set requested fill state for context + if ( $filled ) + { + cairo_fill_preserve( $this->context ); + } + } + + /** + * Draws a single polygon. + * + * @param array $points Point array + * @param ezcGraphColor $color Polygon color + * @param mixed $filled Filled + * @param float $thickness Line thickness + * @return void + */ + public function drawPolygon( array $points, ezcGraphColor $color, $filled = true, $thickness = 1. ) + { + $this->initiliazeSurface(); + + $path = cairo_new_path( $this->context ); + + $lastPoint = end( $points ); + cairo_move_to( $this->context, $lastPoint->x, $lastPoint->y ); + + foreach ( $points as $point ) + { + cairo_line_to( $this->context, $point->x, $point->y ); + } + + cairo_close_path( $this->context ); + + $this->getStyle( $color, $filled, $thickness ); + cairo_stroke( $this->context ); + + return $points; + } + + /** + * Draws a line + * + * @param ezcGraphCoordinate $start Start point + * @param ezcGraphCoordinate $end End point + * @param ezcGraphColor $color Line color + * @param float $thickness Line thickness + * @return void + */ + public function drawLine( ezcGraphCoordinate $start, ezcGraphCoordinate $end, ezcGraphColor $color, $thickness = 1. ) + { + $this->initiliazeSurface(); + + $path = cairo_new_path( $this->context ); + + cairo_move_to( $this->context, $start->x, $start->y ); + cairo_line_to( $this->context, $end->x, $end->y ); + + $this->getStyle( $color, false, $thickness ); + cairo_stroke( $this->context ); + + return array( $start, $end ); + } + + /** + * Returns boundings of text depending on the available font extension + * + * @param float $size Textsize + * @param ezcGraphFontOptions $font Font + * @param string $text Text + * @return ezcGraphBoundings Boundings of text + */ + protected function getTextBoundings( $size, ezcGraphFontOptions $font, $text ) + { + cairo_select_font_face( $this->context, $font->name, CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL ); + cairo_set_font_size( $this->context, $size ); + $extents = cairo_text_extents( $this->context, $text ); + + return new ezcGraphBoundings( + 0, + 0, + $extents['width'], + $extents['height'] + ); + } + + /** + * Writes text in a box of desired size + * + * @param string $string Text + * @param ezcGraphCoordinate $position Top left position + * @param float $width Width of text box + * @param float $height Height of text box + * @param int $align Alignement of text + * @param ezcGraphRotation $rotation + * @return void + */ + public function drawTextBox( $string, ezcGraphCoordinate $position, $width, $height, $align, ezcGraphRotation $rotation = null ) + { + $this->initiliazeSurface(); + + $padding = $this->options->font->padding + ( $this->options->font->border !== false ? $this->options->font->borderWidth : 0 ); + + $width -= $padding * 2; + $height -= $padding * 2; + $textPosition = new ezcGraphCoordinate( + $position->x + $padding, + $position->y + $padding + ); + + // Try to get a font size for the text to fit into the box + $maxSize = min( $height, $this->options->font->maxFontSize ); + $result = false; + for ( $size = $maxSize; $size >= $this->options->font->minFontSize; ) + { + $result = $this->testFitStringInTextBox( $string, $position, $width, $height, $size ); + if ( is_array( $result ) ) + { + break; + } + $size = ( ( $newsize = $size * ( $result ) ) >= $size ? $size - 1 : floor( $newsize ) ); + } + + if ( !is_array( $result ) ) + { + if ( ( $height >= $this->options->font->minFontSize ) && + ( $this->options->autoShortenString ) ) + { + $result = $this->tryFitShortenedString( $string, $position, $width, $height, $size = $this->options->font->minFontSize ); + } + else + { + throw new ezcGraphFontRenderingException( $string, $this->options->font->minFontSize, $width, $height ); + } + } + + $this->options->font->minimalUsedFont = $size; + $this->strings[] = array( + 'text' => $result, + 'position' => $textPosition, + 'width' => $width, + 'height' => $height, + 'align' => $align, + 'font' => $this->options->font, + 'rotation' => $rotation, + ); + + return array( + clone $position, + new ezcGraphCoordinate( $position->x + $width, $position->y ), + new ezcGraphCoordinate( $position->x + $width, $position->y + $height ), + new ezcGraphCoordinate( $position->x, $position->y + $height ), + ); + } + + /** + * Render text depending of font type and available font extensions + * + * @param string $id + * @param string $text + * @param string $font + * @param ezcGraphColor $color + * @param ezcGraphCoordinate $position + * @param float $size + * @param float $rotation + * @return void + */ + protected function renderText( $text, $font, ezcGraphColor $color, ezcGraphCoordinate $position, $size, $rotation = null ) + { + cairo_select_font_face( $this->context, $font, CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL ); + cairo_set_font_size( $this->context, $size ); + + // Store current state of context + cairo_save( $this->context ); + cairo_move_to( $this->context, 0, 0 ); + + if ( $rotation !== null ) + { + // Move to the center + cairo_translate( $this->context, + $rotation->getCenter()->x, + $rotation->getCenter()->y + ); + // Rotate around text center + cairo_rotate( $this->context, + deg2rad( $rotation->getRotation() ) + ); + // Center the text + cairo_translate( $this->context, + $position->x - $rotation->getCenter()->x, + $position->y - $rotation->getCenter()->y - $size * .15 + ); + } else { + cairo_translate( $this->context, + $position->x, + $position->y - $size * .15 + ); + } + + cairo_new_path( $this->context ); + $this->getStyle( $color, true ); + cairo_show_text( $this->context, $text ); + cairo_stroke( $this->context ); + + // Restore state of context + cairo_restore( $this->context ); + } + + /** + * Draw all collected texts + * + * The texts are collected and their maximum possible font size is + * calculated. This function finally draws the texts on the image, this + * delayed drawing has two reasons: + * + * 1) This way the text strings are always on top of the image, what + * results in better readable texts + * 2) The maximum possible font size can be calculated for a set of texts + * with the same font configuration. Strings belonging to one chart + * element normally have the same font configuration, so that all texts + * belonging to one element will have the same font size. + * + * @access protected + * @return void + */ + protected function drawAllTexts() + { + $this->initiliazeSurface(); + + foreach ( $this->strings as $text ) + { + $size = $text['font']->minimalUsedFont; + + $completeHeight = count( $text['text'] ) * $size + ( count( $text['text'] ) - 1 ) * $this->options->lineSpacing; + + // Calculate y offset for vertical alignement + switch ( true ) + { + case ( $text['align'] & ezcGraph::BOTTOM ): + $yOffset = $text['height'] - $completeHeight; + break; + case ( $text['align'] & ezcGraph::MIDDLE ): + $yOffset = ( $text['height'] - $completeHeight ) / 2; + break; + case ( $text['align'] & ezcGraph::TOP ): + default: + $yOffset = 0; + break; + } + + $padding = $text['font']->padding + $text['font']->borderWidth / 2; + if ( $this->options->font->minimizeBorder === true ) + { + // Calculate maximum width of text rows + $width = false; + foreach ( $text['text'] as $line ) + { + $string = implode( ' ', $line ); + $boundings = $this->getTextBoundings( $size, $text['font'], $string ); + if ( ( $width === false) || ( $boundings->width > $width ) ) + { + $width = $boundings->width; + } + } + + switch ( true ) + { + case ( $text['align'] & ezcGraph::CENTER ): + $xOffset = ( $text['width'] - $width ) / 2; + break; + case ( $text['align'] & ezcGraph::RIGHT ): + $xOffset = $text['width'] - $width; + break; + case ( $text['align'] & ezcGraph::LEFT ): + default: + $xOffset = 0; + break; + } + + $borderPolygonArray = array( + new ezcGraphCoordinate( + $text['position']->x - $padding + $xOffset, + $text['position']->y - $padding + $yOffset + ), + new ezcGraphCoordinate( + $text['position']->x + $padding * 2 + $xOffset + $width, + $text['position']->y - $padding + $yOffset + ), + new ezcGraphCoordinate( + $text['position']->x + $padding * 2 + $xOffset + $width, + $text['position']->y + $padding * 2 + $yOffset + $completeHeight + ), + new ezcGraphCoordinate( + $text['position']->x - $padding + $xOffset, + $text['position']->y + $padding * 2 + $yOffset + $completeHeight + ), + ); + } + else + { + $borderPolygonArray = array( + new ezcGraphCoordinate( + $text['position']->x - $padding, + $text['position']->y - $padding + ), + new ezcGraphCoordinate( + $text['position']->x + $padding * 2 + $text['width'], + $text['position']->y - $padding + ), + new ezcGraphCoordinate( + $text['position']->x + $padding * 2 + $text['width'], + $text['position']->y + $padding * 2 + $text['height'] + ), + new ezcGraphCoordinate( + $text['position']->x - $padding, + $text['position']->y + $padding * 2 + $text['height'] + ), + ); + } + + if ( $text['rotation'] !== null ) + { + foreach ( $borderPolygonArray as $nr => $point ) + { + $borderPolygonArray[$nr] = $text['rotation']->transformCoordinate( $point ); + } + } + + if ( $text['font']->background !== false ) + { + $this->drawPolygon( + $borderPolygonArray, + $text['font']->background, + true + ); + } + + if ( $text['font']->border !== false ) + { + $this->drawPolygon( + $borderPolygonArray, + $text['font']->border, + false, + $text['font']->borderWidth + ); + } + + // Render text with evaluated font size + $completeString = ''; + foreach ( $text['text'] as $line ) + { + $string = implode( ' ', $line ); + $completeString .= $string; + $boundings = $this->getTextBoundings( $size, $text['font'], $string ); + $text['position']->y += $size; + + switch ( true ) + { + case ( $text['align'] & ezcGraph::LEFT ): + $position = new ezcGraphCoordinate( + $text['position']->x, + $text['position']->y + $yOffset + ); + break; + case ( $text['align'] & ezcGraph::RIGHT ): + $position = new ezcGraphCoordinate( + $text['position']->x + ( $text['width'] - $boundings->width ), + $text['position']->y + $yOffset + ); + break; + case ( $text['align'] & ezcGraph::CENTER ): + $position = new ezcGraphCoordinate( + $text['position']->x + ( ( $text['width'] - $boundings->width ) / 2 ), + $text['position']->y + $yOffset + ); + break; + } + + // Optionally draw text shadow + if ( $text['font']->textShadow === true ) + { + $this->renderText( + $string, + $text['font']->name, + $text['font']->textShadowColor, + new ezcGraphCoordinate( + $position->x + $text['font']->textShadowOffset, + $position->y + $text['font']->textShadowOffset + ), + $size, + $text['rotation'] + ); + } + + // Finally draw text + $this->renderText( + $string, + $text['font']->name, + $text['font']->color, + $position, + $size, + $text['rotation'] + ); + + $text['position']->y += $size * $this->options->lineSpacing; + } + } + } + + /** + * Draws a sector of cirlce + * + * @param ezcGraphCoordinate $center Center of circle + * @param mixed $width Width + * @param mixed $height Height + * @param mixed $startAngle Start angle of circle sector + * @param mixed $endAngle End angle of circle sector + * @param ezcGraphColor $color Color + * @param mixed $filled Filled; + * @return void + */ + public function drawCircleSector( ezcGraphCoordinate $center, $width, $height, $startAngle, $endAngle, ezcGraphColor $color, $filled = true ) + { + $this->initiliazeSurface(); + + // Normalize angles + if ( $startAngle > $endAngle ) + { + $tmp = $startAngle; + $startAngle = $endAngle; + $endAngle = $tmp; + } + + cairo_save( $this->context ); + + // Draw circular arc path + $path = cairo_new_path( $this->context ); + cairo_translate( $this->context, + $center->x, + $center->y + ); + cairo_scale( $this->context, + 1, $height / $width + ); + + cairo_move_to( $this->context, 0, 0 ); + cairo_arc( $this->context, + 0., 0., + $width / 2, + deg2rad( $startAngle ), + deg2rad( $endAngle ) + ); + cairo_line_to( $this->context, 0, 0 ); + + cairo_restore( $this->context ); + $this->getStyle( $color, $filled ); + cairo_stroke( $this->context ); + + // Create polygon array to return + $polygonArray = array( $center ); + for ( $angle = $startAngle; $angle < $endAngle; $angle += $this->options->imageMapResolution ) + { + $polygonArray[] = new ezcGraphCoordinate( + $center->x + + ( ( cos( deg2rad( $angle ) ) * $width ) / 2 ), + $center->y + + ( ( sin( deg2rad( $angle ) ) * $height ) / 2 ) + ); + } + $polygonArray[] = new ezcGraphCoordinate( + $center->x + + ( ( cos( deg2rad( $endAngle ) ) * $width ) / 2 ), + $center->y + + ( ( sin( deg2rad( $endAngle ) ) * $height ) / 2 ) + ); + + return $polygonArray; + } + + /** + * Draws a circular arc consisting of several minor steps on the bounding + * lines. + * + * @param ezcGraphCoordinate $center + * @param mixed $width + * @param mixed $height + * @param mixed $size + * @param mixed $startAngle + * @param mixed $endAngle + * @param ezcGraphColor $color + * @param bool $filled + * @return string Element id + */ + protected function simulateCircularArc( ezcGraphCoordinate $center, $width, $height, $size, $startAngle, $endAngle, ezcGraphColor $color, $filled ) + { + for ( + $tmpAngle = min( ceil ( $startAngle / 180 ) * 180, $endAngle ); + $tmpAngle <= $endAngle; + $tmpAngle = min( ceil ( $startAngle / 180 + 1 ) * 180, $endAngle ) ) + { + $path = cairo_new_path( $this->context ); + cairo_move_to( $this->context, + $center->x + cos( deg2rad( $startAngle ) ) * $width / 2, + $center->y + sin( deg2rad( $startAngle ) ) * $height / 2 + ); + + // @TODO: Use cairo_curve_to() + for( + $angle = $startAngle; + $angle <= $tmpAngle; + $angle = min( $angle + $this->options->circleResolution, $tmpAngle ) ) + { + cairo_line_to( $this->context, + $center->x + cos( deg2rad( $angle ) ) * $width / 2, + $center->y + sin( deg2rad( $angle ) ) * $height / 2 + $size + ); + + if ( $angle === $tmpAngle ) + { + break; + } + } + + for( + $angle = $tmpAngle; + $angle >= $startAngle; + $angle = max( $angle - $this->options->circleResolution, $startAngle ) ) + { + cairo_line_to( $this->context, + $center->x + cos( deg2rad( $angle ) ) * $width / 2, + $center->y + sin( deg2rad( $angle ) ) * $height / 2 + ); + + if ( $angle === $startAngle ) + { + break; + } + } + + cairo_close_path( $this->context ); + $this->getStyle( $color, $filled ); + cairo_stroke( $this->context ); + + $startAngle = $tmpAngle; + if ( $tmpAngle === $endAngle ) + { + break; + } + } + } + + /** + * Draws a circular arc + * + * @param ezcGraphCoordinate $center Center of ellipse + * @param integer $width Width of ellipse + * @param integer $height Height of ellipse + * @param integer $size Height of border + * @param float $startAngle Starting angle of circle sector + * @param float $endAngle Ending angle of circle sector + * @param ezcGraphColor $color Color of Border + * @param bool $filled + * @return void + */ + public function drawCircularArc( ezcGraphCoordinate $center, $width, $height, $size, $startAngle, $endAngle, ezcGraphColor $color, $filled = true ) + { + $this->initiliazeSurface(); + + // Normalize angles + if ( $startAngle > $endAngle ) + { + $tmp = $startAngle; + $startAngle = $endAngle; + $endAngle = $tmp; + } + + $this->simulateCircularArc( $center, $width, $height, $size, $startAngle, $endAngle, $color, $filled ); + + if ( ( $this->options->shadeCircularArc !== false ) && + $filled ) + { + $gradient = new ezcGraphLinearGradient( + new ezcGraphCoordinate( + $center->x - $width, + $center->y + ), + new ezcGraphCoordinate( + $center->x + $width, + $center->y + ), + ezcGraphColor::fromHex( '#FFFFFF' )->transparent( $this->options->shadeCircularArc * 1.5 ), + ezcGraphColor::fromHex( '#000000' )->transparent( $this->options->shadeCircularArc * 1.5 ) + ); + + $this->simulateCircularArc( $center, $width, $height, $size, $startAngle, $endAngle, $gradient, $filled ); + } + + // Create polygon array to return + $polygonArray = array(); + for ( $angle = $startAngle; $angle < $endAngle; $angle += $this->options->imageMapResolution ) + { + $polygonArray[] = new ezcGraphCoordinate( + $center->x + + ( ( cos( deg2rad( $angle ) ) * $width ) / 2 ), + $center->y + + ( ( sin( deg2rad( $angle ) ) * $height ) / 2 ) + ); + } + $polygonArray[] = new ezcGraphCoordinate( + $center->x + + ( ( cos( deg2rad( $endAngle ) ) * $width ) / 2 ), + $center->y + + ( ( sin( deg2rad( $endAngle ) ) * $height ) / 2 ) + ); + + for ( $angle = $endAngle; $angle > $startAngle; $angle -= $this->options->imageMapResolution ) + { + $polygonArray[] = new ezcGraphCoordinate( + $center->x + + ( ( cos( deg2rad( $angle ) ) * $width ) / 2 ) + $size, + $center->y + + ( ( sin( deg2rad( $angle ) ) * $height ) / 2 ) + ); + } + $polygonArray[] = new ezcGraphCoordinate( + $center->x + + ( ( cos( deg2rad( $startAngle ) ) * $width ) / 2 ) + $size, + $center->y + + ( ( sin( deg2rad( $startAngle ) ) * $height ) / 2 ) + ); + + return $polygonArray; + } + + /** + * Draw circle + * + * @param ezcGraphCoordinate $center Center of ellipse + * @param mixed $width Width of ellipse + * @param mixed $height height of ellipse + * @param ezcGraphColor $color Color + * @param mixed $filled Filled + * @return void + */ + public function drawCircle( ezcGraphCoordinate $center, $width, $height, ezcGraphColor $color, $filled = true ) + { + $this->initiliazeSurface(); + + cairo_save( $this->context ); + + // Draw circular arc path + $path = cairo_new_path( $this->context ); + cairo_translate( $this->context, + $center->x, + $center->y + ); + cairo_scale( $this->context, + 1, $height / $width + ); + + cairo_arc( $this->context, + 0., 0., + $width / 2, + 0, 2 * M_PI + ); + + cairo_restore( $this->context ); + $this->getStyle( $color, $filled ); + cairo_stroke( $this->context ); + + // Create polygon array to return + $polygonArray = array(); + for ( $angle = 0; $angle < ( 2 * M_PI ); $angle += deg2rad( $this->options->imageMapResolution ) ) + { + $polygonArray[] = new ezcGraphCoordinate( + $center->x + + ( ( cos( $angle ) * $width ) / 2 ), + $center->y + + ( ( sin( $angle ) * $height ) / 2 ) + ); + } + + return $polygonArray; + } + + /** + * Draw an image + * + * The image will be inlined in the SVG document using data URL scheme. For + * this the mime type and base64 encoded file content will be merged to + * URL. + * + * @param mixed $file Image file + * @param ezcGraphCoordinate $position Top left position + * @param mixed $width Width of image in destination image + * @param mixed $height Height of image in destination image + * @return void + */ + public function drawImage( $file, ezcGraphCoordinate $position, $width, $height ) + { + $this->initiliazeSurface(); + + // Ensure given bitmap is a PNG image + $data = getimagesize( $file ); + if ( $data[2] !== IMAGETYPE_PNG ) + { + throw new Exception( 'Cairo only has support for PNGs.' ); + } + + // Create new surface from given bitmap + $imageSurface = cairo_image_surface_create_from_png( $file ); + + // Create pattern from source image to be able to transform it + $pattern = cairo_pattern_create_for_surface( $imageSurface ); + + // Scale pattern to defined dimensions and move it to its destination position + $matrix = cairo_matrix_multiply( + $move = cairo_matrix_create_translate( -$position->x, -$position->y ), + $scale = cairo_matrix_create_scale( $data[0] / $width, $data[1] / $height ) + ); + cairo_pattern_set_matrix( $pattern, $matrix ); + + // Merge surfaces + cairo_set_source( $this->context, $pattern ); + cairo_rectangle( $this->context, $position->x, $position->y, $width, $height ); + cairo_fill( $this->context ); + } + + /** + * Return mime type for current image format + * + * @return string + */ + public function getMimeType() + { + return 'image/png'; + } + + /** + * Render image directly to output + * + * The method renders the image directly to the standard output. You + * normally do not want to use this function, because it makes it harder + * to proper cache the generated graphs. + * + * @return void + */ + public function renderToOutput() + { + $this->drawAllTexts(); + + header( 'Content-Type: ' . $this->getMimeType() ); + + // Write to tmp file, echo and remove tmp file again. + $fileName = tempnam( '/tmp', 'ezc' ); + + // cairo_surface_write_to_png( $this->surface, $file ); + cairo_surface_write_to_png( $this->surface, $fileName ); + $contents = file_get_contents( $fileName ); + unlink( $fileName ); + + // Directly echo contents + echo $contents; + } + + /** + * Finally save image + * + * @param string $file Destination filename + * @return void + */ + public function render( $file ) + { + $this->drawAllTexts(); + cairo_surface_write_to_png( $this->surface, $file ); + } + + /** + * Get resource of rendered result + * + * Return the resource of the rendered result. You should not use this + * method before you called either renderToOutput() or render(), as the + * image may not be completely rendered until then. + * + * This method returns an array, containing the surface and the context in + * a structure like: + * + * array( + * 'surface' => resource, + * 'context' => resource, + * ) + * + * + * @return array + */ + public function getResource() + { + return array( + 'surface' => $this->surface, + 'context' => $this->context, + ); + } +} + +?> diff --git a/include/ezcomponents/Graph/src/driver/flash.php b/include/ezcomponents/Graph/src/driver/flash.php new file mode 100644 index 000000000..1ba5702e6 --- /dev/null +++ b/include/ezcomponents/Graph/src/driver/flash.php @@ -0,0 +1,972 @@ + + * $graph = new ezcGraphPieChart(); + * $graph->title = 'Access statistics'; + * $graph->legend = false; + * + * $graph->driver = new ezcGraphFlashDriver(); + * $graph->options->font = 'tutorial_font.fdb'; + * + * $graph->driver->options->compression = 7; + * + * $graph->data['Access statistics'] = new ezcGraphArrayDataSet( array( + * 'Mozilla' => 19113, + * 'Explorer' => 10917, + * 'Opera' => 1464, + * 'Safari' => 652, + * 'Konqueror' => 474, + * ) ); + * + * $graph->render( 400, 200, 'tutorial_driver_flash.swf' ); + * + * + * + * @version 1.3 + * @package Graph + * @mainclass + */ +class ezcGraphFlashDriver extends ezcGraphDriver +{ + /** + * Flash movie + * + * @var SWFMovie + */ + protected $movie; + + /** + * Unique element id + * + * @var int + */ + protected $id = 1; + + /** + * Array with strings to draw later + * + * @var array + */ + protected $strings = array(); + + /** + * Constructor + * + * @param array $options Default option array + * @return void + * @ignore + */ + public function __construct( array $options = array() ) + { + ezcBase::checkDependency( 'Graph', ezcBase::DEP_PHP_EXTENSION, 'ming' ); + $this->options = new ezcGraphFlashDriverOptions( $options ); + } + + /** + * Returns unique movie object as a parent canvas for all swf objects. + * + * @return SWFMovie + */ + public function getDocument() + { + if ( $this->movie === null ) + { + ming_setscale( 1.0 ); + $this->movie = new SWFMovie(); + $this->movie->setDimension( $this->modifyCoordinate( $this->options->width ), $this->modifyCoordinate( $this->options->height ) ); + $this->movie->setRate( 1 ); + $this->movie->setBackground( 255, 255, 255 ); + } + + return $this->movie; + } + + /** + * Set the fill and line properties for a SWWFShape according to the + * given parameters. + * + * @param SWFShape $shape + * @param ezcGraphColor $color + * @param mixed $thickness + * @param mixed $filled + * @return void + */ + protected function setShapeColor( SWFShape $shape, ezcGraphColor $color, $thickness, $filled ) + { + if ( $filled ) + { + switch ( true ) + { + case ( $color instanceof ezcGraphLinearGradient ): + $gradient = new SWFGradient(); + $gradient->addEntry( + 0, + $color->startColor->red, + $color->startColor->green, + $color->startColor->blue, + 255 - $color->startColor->alpha + ); + $gradient->addEntry( + 1, + $color->endColor->red, + $color->endColor->green, + $color->endColor->blue, + 255 - $color->endColor->alpha + ); + + $fill = $shape->addFill( $gradient, SWFFILL_LINEAR_GRADIENT ); + + // Calculate desired length of gradient + $length = sqrt( + pow( $color->endPoint->x - $color->startPoint->x, 2 ) + + pow( $color->endPoint->y - $color->startPoint->y, 2 ) + ); + + $fill->scaleTo( $this->modifyCoordinate( $length ) / 32768 , $this->modifyCoordinate( $length ) / 32768 ); + $fill->rotateTo( + rad2deg( asin( + ( $color->endPoint->x - $color->startPoint->x ) / $length + ) + 180 ) + ); + $fill->moveTo( + $this->modifyCoordinate( + ( $color->startPoint->x + $color->endPoint->x ) / 2 + ), + $this->modifyCoordinate( + ( $color->startPoint->y + $color->endPoint->y ) / 2 + ) + ); + + $shape->setLeftFill( $fill ); + break; + case ( $color instanceof ezcGraphRadialGradient ): + $gradient = new SWFGradient(); + $gradient->addEntry( + 0, + $color->startColor->red, + $color->startColor->green, + $color->startColor->blue, + 255 - $color->startColor->alpha + ); + $gradient->addEntry( + 1, + $color->endColor->red, + $color->endColor->green, + $color->endColor->blue, + 255 - $color->endColor->alpha + ); + + $fill = $shape->addFill( $gradient, SWFFILL_RADIAL_GRADIENT ); + + $fill->scaleTo( $this->modifyCoordinate( $color->width ) / 32768, $this->modifyCoordinate( $color->height ) / 32768 ); + $fill->moveTo( $this->modifyCoordinate( $color->center->x ), $this->modifyCoordinate( $color->center->y ) ); + + $shape->setLeftFill( $fill ); + break; + default: + $fill = $shape->addFill( $color->red, $color->green, $color->blue, 255 - $color->alpha ); + $shape->setLeftFill( $fill ); + break; + } + } + else + { + $shape->setLine( $this->modifyCoordinate( $thickness ), $color->red, $color->green, $color->blue, 255 - $color->alpha ); + } + } + + /** + * Modifies a coordinate value, as flash usally uses twips instead of + * pixels for a higher solution, as it only accepts integer values. + * + * @param float $pointValue + * @return float + */ + protected function modifyCoordinate( $pointValue ) + { + return $pointValue * 10; + } + + /** + * Demodifies a coordinate value, as flash usally uses twips instead of + * pixels for a higher solution, as it only accepts integer values. + * + * @param float $pointValue + * @return float + */ + protected function deModifyCoordinate( $pointValue ) + { + return $pointValue / 10; + } + + /** + * Draws a single polygon. + * + * @param array $points Point array + * @param ezcGraphColor $color Polygon color + * @param mixed $filled Filled + * @param float $thickness Line thickness + * @return void + */ + public function drawPolygon( array $points, ezcGraphColor $color, $filled = true, $thickness = 1. ) + { + $movie = $this->getDocument(); + + if ( !$filled ) + { + // The middle of the border is on the outline of a polygon in ming, + // fix that: + try + { + $points = $this->reducePolygonSize( $points, $thickness / 2 ); + } + catch ( ezcGraphReducementFailedException $e ) + { + return false; + } + } + + $shape = new SWFShape(); + + $this->setShapeColor( $shape, $color, $thickness, $filled ); + + $lastPoint = end( $points ); + $shape->movePenTo( $this->modifyCoordinate( $lastPoint->x ), $this->modifyCoordinate( $lastPoint->y ) ); + + foreach ( $points as $point ) + { + $shape->drawLineTo( $this->modifyCoordinate( $point->x ), $this->modifyCoordinate( $point->y ) ); + } + + $object = $movie->add( $shape ); + $object->setName( $id = 'ezcGraphPolygon_' . $this->id++ ); + + return $id; + } + + /** + * Draws a line + * + * @param ezcGraphCoordinate $start Start point + * @param ezcGraphCoordinate $end End point + * @param ezcGraphColor $color Line color + * @param float $thickness Line thickness + * @return void + */ + public function drawLine( ezcGraphCoordinate $start, ezcGraphCoordinate $end, ezcGraphColor $color, $thickness = 1. ) + { + $movie = $this->getDocument(); + + $shape = new SWFShape(); + + $this->setShapeColor( $shape, $color, $thickness, false ); + + $shape->movePenTo( $this->modifyCoordinate( $start->x ), $this->modifyCoordinate( $start->y ) ); + $shape->drawLineTo( $this->modifyCoordinate( $end->x ), $this->modifyCoordinate( $end->y ) ); + + $object = $movie->add( $shape ); + $object->setName( $id = 'ezcGraphLine_' . $this->id++ ); + + return $id; + } + + /** + * Returns boundings of text depending on the available font extension + * + * @param float $size Textsize + * @param ezcGraphFontOptions $font Font + * @param string $text Text + * @return ezcGraphBoundings Boundings of text + */ + protected function getTextBoundings( $size, ezcGraphFontOptions $font, $text ) + { + $t = new SWFText(); + $t->setFont( new SWFFont( $font->path ) ); + $t->setHeight( $size ); + + $boundings = new ezcGraphBoundings( 0, 0, $t->getWidth( $text ), $size ); + + return $boundings; + } + + /** + * Writes text in a box of desired size + * + * @param string $string Text + * @param ezcGraphCoordinate $position Top left position + * @param float $width Width of text box + * @param float $height Height of text box + * @param int $align Alignement of text + * @param ezcGraphRotation $rotation + * @return void + */ + public function drawTextBox( $string, ezcGraphCoordinate $position, $width, $height, $align, ezcGraphRotation $rotation = null ) + { + $padding = $this->options->font->padding + ( $this->options->font->border !== false ? $this->options->font->borderWidth : 0 ); + + $width = $this->modifyCoordinate( $width - $padding * 2 ); + $height = $this->modifyCoordinate( $height - $padding * 2 ); + $position = new ezcGraphCoordinate( + $this->modifyCoordinate( $position->x + $padding ), + $this->modifyCoordinate( $position->y + $padding ) + ); + + // Try to get a font size for the text to fit into the box + $maxSize = $this->modifyCoordinate( min( $height, $this->options->font->maxFontSize ) ); + $minSize = $this->modifyCoordinate( $this->options->font->minFontSize ); + $result = false; + for ( $size = $maxSize; $size >= $minSize; ) + { + $result = $this->testFitStringInTextBox( $string, $position, $width, $height, $size ); + if ( is_array( $result ) ) + { + break; + } + $size = $this->deModifyCoordinate( $size ); + $size = $this->modifyCoordinate( floor( ( $newsize = $size * ( $result ) ) >= $size ? $size - 1 : $newsize ) ); + } + + if ( !is_array( $result ) ) + { + if ( ( $height >= $this->options->font->minFontSize ) && + ( $this->options->autoShortenString ) ) + { + $result = $this->tryFitShortenedString( $string, $position, $width, $height, $size = $this->modifyCoordinate( $this->options->font->minFontSize ) ); + } + else + { + throw new ezcGraphFontRenderingException( $string, $this->options->font->minFontSize, $width, $height ); + } + } + + + $this->options->font->minimalUsedFont = $this->deModifyCoordinate( $size ); + + $this->strings[] = array( + 'text' => $result, + 'id' => $id = 'ezcGraphTextBox_' . $this->id++, + 'position' => $position, + 'width' => $width, + 'height' => $height, + 'align' => $align, + 'font' => $this->options->font, + 'rotation' => $rotation, + ); + + return $id; + } + + /** + * Render text depending of font type and available font extensions + * + * @param string $id + * @param string $text + * @param string $chars + * @param int $type + * @param string $path + * @param ezcGraphColor $color + * @param ezcGraphCoordinate $position + * @param float $size + * @param float $rotation + * @return void + */ + protected function renderText( $id, $text, $chars, $type, $path, ezcGraphColor $color, ezcGraphCoordinate $position, $size, $rotation = null ) + { + $movie = $this->getDocument(); + + $tb = new SWFTextField( SWFTEXTFIELD_NOEDIT ); + $tb->setFont( new SWFFont( $path ) ); + $tb->setHeight( $size ); + $tb->setColor( $color->red, $color->green, $color->blue, 255 - $color->alpha ); + $tb->addString( $text ); + $tb->addChars( $chars ); + + $object = $movie->add( $tb ); + $object->rotate( + ( $rotation !== null ? -$rotation->getRotation() : 0 ) + ); + $object->moveTo( + $position->x + + ( $rotation === null ? 0 : $this->modifyCoordinate( $rotation->get( 0, 2 ) ) ), + $position->y - + $size * ( 1 + $this->options->lineSpacing ) + + ( $rotation === null ? 0 : $this->modifyCoordinate( $rotation->get( 1, 2 ) ) ) + ); + $object->setName( $id ); + } + + /** + * Draw all collected texts + * + * The texts are collected and their maximum possible font size is + * calculated. This function finally draws the texts on the image, this + * delayed drawing has two reasons: + * + * 1) This way the text strings are always on top of the image, what + * results in better readable texts + * 2) The maximum possible font size can be calculated for a set of texts + * with the same font configuration. Strings belonging to one chart + * element normally have the same font configuration, so that all texts + * belonging to one element will have the same font size. + * + * @access protected + * @return void + */ + protected function drawAllTexts() + { + // Iterate over all strings to collect used chars per font + $chars = array(); + foreach ( $this->strings as $text ) + { + $completeString = ''; + foreach ( $text['text'] as $line ) + { + $completeString .= implode( ' ', $line ); + } + + // Collect chars for each font + if ( !isset( $chars[$text['font']->path] ) ) + { + $chars[$text['font']->path] = $completeString; + } + else + { + $chars[$text['font']->path] .= $completeString; + } + } + + foreach ( $this->strings as $text ) + { + $size = $this->modifyCoordinate( $text['font']->minimalUsedFont ); + + $completeHeight = count( $text['text'] ) * $size + ( count( $text['text'] ) - 1 ) * $this->options->lineSpacing; + + // Calculate y offset for vertical alignement + switch ( true ) + { + case ( $text['align'] & ezcGraph::BOTTOM ): + $yOffset = $text['height'] - $completeHeight; + break; + case ( $text['align'] & ezcGraph::MIDDLE ): + $yOffset = ( $text['height'] - $completeHeight ) / 2; + break; + case ( $text['align'] & ezcGraph::TOP ): + default: + $yOffset = 0; + break; + } + + $padding = $text['font']->padding + $text['font']->borderWidth / 2; + if ( $this->options->font->minimizeBorder === true ) + { + // Calculate maximum width of text rows + $width = false; + foreach ( $text['text'] as $line ) + { + $string = implode( ' ', $line ); + $boundings = $this->getTextBoundings( $size, $text['font'], $string ); + if ( ( $width === false) || ( $boundings->width > $width ) ) + { + $width = $boundings->width; + } + } + + switch ( true ) + { + case ( $text['align'] & ezcGraph::LEFT ): + $xOffset = 0; + break; + case ( $text['align'] & ezcGraph::CENTER ): + $xOffset = ( $text['width'] - $width ) / 2; + break; + case ( $text['align'] & ezcGraph::RIGHT ): + $xOffset = $text['width'] - $width; + break; + } + + $borderPolygonArray = array( + new ezcGraphCoordinate( + $this->deModifyCoordinate( $text['position']->x - $padding + $xOffset ), + $this->deModifyCoordinate( $text['position']->y - $padding + $yOffset ) + ), + new ezcGraphCoordinate( + $this->deModifyCoordinate( $text['position']->x + $padding * 2 + $xOffset + $width ), + $this->deModifyCoordinate( $text['position']->y - $padding + $yOffset ) + ), + new ezcGraphCoordinate( + $this->deModifyCoordinate( $text['position']->x + $padding * 2 + $xOffset + $width ), + $this->deModifyCoordinate( $text['position']->y + $padding * 2 + $yOffset + $completeHeight ) + ), + new ezcGraphCoordinate( + $this->deModifyCoordinate( $text['position']->x - $padding + $xOffset ), + $this->deModifyCoordinate( $text['position']->y + $padding * 2 + $yOffset + $completeHeight ) + ), + ); + } + else + { + $borderPolygonArray = array( + new ezcGraphCoordinate( + $this->deModifyCoordinate( $text['position']->x - $padding ), + $this->deModifyCoordinate( $text['position']->y - $padding ) + ), + new ezcGraphCoordinate( + $this->deModifyCoordinate( $text['position']->x + $padding * 2 + $text['width'] ), + $this->deModifyCoordinate( $text['position']->y - $padding ) + ), + new ezcGraphCoordinate( + $this->deModifyCoordinate( $text['position']->x + $padding * 2 + $text['width'] ), + $this->deModifyCoordinate( $text['position']->y + $padding * 2 + $text['height'] ) + ), + new ezcGraphCoordinate( + $this->deModifyCoordinate( $text['position']->x - $padding ), + $this->deModifyCoordinate( $text['position']->y + $padding * 2 + $text['height'] ) + ), + ); + } + + if ( $text['rotation'] !== null ) + { + foreach ( $borderPolygonArray as $nr => $point ) + { + $borderPolygonArray[$nr] = $text['rotation']->transformCoordinate( $point ); + } + } + + if ( $text['font']->background !== false ) + { + $this->drawPolygon( + $borderPolygonArray, + $text['font']->background, + true + ); + } + + if ( $text['font']->border !== false ) + { + $this->drawPolygon( + $borderPolygonArray, + $text['font']->border, + false, + $text['font']->borderWidth + ); + } + + // Render text with evaluated font size + $completeString = ''; + foreach ( $text['text'] as $line ) + { + $string = implode( ' ', $line ); + $completeString .= $string; + $boundings = $this->getTextBoundings( $size, $text['font'], $string ); + $text['position']->y += $size; + + switch ( true ) + { + case ( $text['align'] & ezcGraph::LEFT ): + $position = new ezcGraphCoordinate( + $text['position']->x, + $text['position']->y + $yOffset + ); + break; + case ( $text['align'] & ezcGraph::RIGHT ): + $position = new ezcGraphCoordinate( + $text['position']->x + ( $text['width'] - $boundings->width ), + $text['position']->y + $yOffset + ); + break; + case ( $text['align'] & ezcGraph::CENTER ): + $position = new ezcGraphCoordinate( + $text['position']->x + ( ( $text['width'] - $boundings->width ) / 2 ), + $text['position']->y + $yOffset + ); + break; + } + + // Optionally draw text shadow + if ( $text['font']->textShadow === true ) + { + $this->renderText( + $text['id'], + $string, + $chars[$text['font']->path], + $text['font']->type, + $text['font']->path, + $text['font']->textShadowColor, + new ezcGraphCoordinate( + $position->x + $this->modifyCoordinate( $text['font']->textShadowOffset ), + $position->y + $this->modifyCoordinate( $text['font']->textShadowOffset ) + ), + $size, + $text['rotation'] + ); + } + + // Finally draw text + $this->renderText( + $text['id'], + $string, + $chars[$text['font']->path], + $text['font']->type, + $text['font']->path, + $text['font']->color, + $position, + $size, + $text['rotation'] + ); + + $text['position']->y += $size * $this->options->lineSpacing; + } + } + } + + /** + * Draws a sector of cirlce + * + * @param ezcGraphCoordinate $center Center of circle + * @param mixed $width Width + * @param mixed $height Height + * @param mixed $startAngle Start angle of circle sector + * @param mixed $endAngle End angle of circle sector + * @param ezcGraphColor $color Color + * @param mixed $filled Filled + * @return void + */ + public function drawCircleSector( ezcGraphCoordinate $center, $width, $height, $startAngle, $endAngle, ezcGraphColor $color, $filled = true ) + { + if ( $startAngle > $endAngle ) + { + $tmp = $startAngle; + $startAngle = $endAngle; + $endAngle = $tmp; + } + + $movie = $this->getDocument(); + + $shape = new SWFShape(); + $this->setShapeColor( $shape, $color, 1, $filled ); + + if ( !$filled ) + { + try + { + $reduced = $this->reduceEllipseSize( $center, $width, $height, $startAngle, $endAngle, .5 ); + } + catch ( ezcGraphReducementFailedException $e ) + { + return false; + } + + $startAngle = $reduced['startAngle']; + $endAngle = $reduced['endAngle']; + + $width -= 1; + $height -= 1; + } + + $shape->movePenTo( $this->modifyCoordinate( $center->x ), $this->modifyCoordinate( $center->y ) ); + + // @TODO: User SWFShape::curveTo + for( + $angle = $startAngle; + $angle <= $endAngle; + $angle = min( $angle + $this->options->circleResolution, $endAngle ) ) + { + $shape->drawLineTo( + $this->modifyCoordinate( $center->x + cos( deg2rad( $angle ) ) * $width / 2 ), + $this->modifyCoordinate( $center->y + sin( deg2rad( $angle ) ) * $height / 2 ) + ); + + if ( $angle === $endAngle ) + { + break; + } + } + + $shape->drawLineTo( + $this->modifyCoordinate( $center->x ), + $this->modifyCoordinate( $center->y ) + ); + + $object = $movie->add( $shape ); + $object->setName( $id = 'ezcGraphCircleSector_' . $this->id++ ); + + return $id; + } + + /** + * Draws a circular arc consisting of several minor steps on the bounding + * lines. + * + * @param ezcGraphCoordinate $center + * @param mixed $width + * @param mixed $height + * @param mixed $size + * @param mixed $startAngle + * @param mixed $endAngle + * @param ezcGraphColor $color + * @param bool $filled + * @return string Element id + */ + protected function simulateCircularArc( ezcGraphCoordinate $center, $width, $height, $size, $startAngle, $endAngle, ezcGraphColor $color, $filled ) + { + $movie = $this->getDocument(); + $id = 'ezcGraphCircularArc_' . $this->id++; + + for ( + $tmpAngle = min( ceil ( $startAngle / 180 ) * 180, $endAngle ); + $tmpAngle <= $endAngle; + $tmpAngle = min( ceil ( $startAngle / 180 + 1 ) * 180, $endAngle ) ) + { + $shape = new SWFShape(); + $this->setShapeColor( $shape, $color, 1, $filled ); + + $shape->movePenTo( + $this->modifyCoordinate( $center->x + cos( deg2rad( $startAngle ) ) * $width / 2 ), + $this->modifyCoordinate( $center->y + sin( deg2rad( $startAngle ) ) * $height / 2 ) + ); + + // @TODO: Use SWFShape::curveTo + for( + $angle = $startAngle; + $angle <= $tmpAngle; + $angle = min( $angle + $this->options->circleResolution, $tmpAngle ) ) + { + $shape->drawLineTo( + $this->modifyCoordinate( $center->x + cos( deg2rad( $angle ) ) * $width / 2 ), + $this->modifyCoordinate( $center->y + sin( deg2rad( $angle ) ) * $height / 2 + $size ) + ); + + if ( $angle === $tmpAngle ) + { + break; + } + } + + for( + $angle = $tmpAngle; + $angle >= $startAngle; + $angle = max( $angle - $this->options->circleResolution, $startAngle ) ) + { + $shape->drawLineTo( + $this->modifyCoordinate( $center->x + cos( deg2rad( $angle ) ) * $width / 2 ), + $this->modifyCoordinate( $center->y + sin( deg2rad( $angle ) ) * $height / 2 ) + ); + + if ( $angle === $startAngle ) + { + break; + } + } + + $object = $movie->add( $shape ); + $object->setName( $id ); + + $startAngle = $tmpAngle; + if ( $tmpAngle === $endAngle ) + { + break; + } + } + + return $id; + } + + /** + * Draws a circular arc + * + * @param ezcGraphCoordinate $center Center of ellipse + * @param integer $width Width of ellipse + * @param integer $height Height of ellipse + * @param integer $size Height of border + * @param float $startAngle Starting angle of circle sector + * @param float $endAngle Ending angle of circle sector + * @param ezcGraphColor $color Color of Border + * @param bool $filled + * @return void + */ + public function drawCircularArc( ezcGraphCoordinate $center, $width, $height, $size, $startAngle, $endAngle, ezcGraphColor $color, $filled = true ) + { + if ( $startAngle > $endAngle ) + { + $tmp = $startAngle; + $startAngle = $endAngle; + $endAngle = $tmp; + } + + $id = $this->simulateCircularArc( $center, $width, $height, $size, $startAngle, $endAngle, $color, $filled ); + + if ( ( $this->options->shadeCircularArc !== false ) && + $filled ) + { + $gradient = new ezcGraphLinearGradient( + new ezcGraphCoordinate( + $center->x - $width, + $center->y + ), + new ezcGraphCoordinate( + $center->x + $width, + $center->y + ), + ezcGraphColor::fromHex( '#FFFFFF' )->transparent( $this->options->shadeCircularArc * 1.5 ), + ezcGraphColor::fromHex( '#000000' )->transparent( $this->options->shadeCircularArc * 1.5 ) + ); + + $this->simulateCircularArc( $center, $width, $height, $size, $startAngle, $endAngle, $gradient, $filled ); + } + + return $id; + } + + /** + * Draw circle + * + * @param ezcGraphCoordinate $center Center of ellipse + * @param mixed $width Width of ellipse + * @param mixed $height height of ellipse + * @param ezcGraphColor $color Color + * @param mixed $filled Filled + * @return void + */ + public function drawCircle( ezcGraphCoordinate $center, $width, $height, ezcGraphColor $color, $filled = true ) + { + $movie = $this->getDocument(); + + $shape = new SWFShape(); + $this->setShapeColor( $shape, $color, 1, $filled ); + + // Reduce size + if ( !$filled ) + { + $width -= 1; + $height -= 1; + } + + $shape->movePenTo( + $this->modifyCoordinate( $center->x + $width / 2 ), + $this->modifyCoordinate( $center->y ) + ); + + // @TODO: User SWFShape::curveTo + for ( $angle = $this->options->circleResolution; $angle < 360; $angle += $this->options->circleResolution ) + { + $shape->drawLineTo( + $this->modifyCoordinate( $center->x + cos( deg2rad( $angle ) ) * $width / 2 ), + $this->modifyCoordinate( $center->y + sin( deg2rad( $angle ) ) * $height / 2 ) + ); + } + + $shape->drawLineTo( + $this->modifyCoordinate( $center->x + $width / 2 ), + $this->modifyCoordinate( $center->y ) + ); + + $object = $movie->add( $shape ); + $object->setName( $id = 'ezcGraphCircle_' . $this->id++ ); + + return $id; + } + + /** + * Draw an image + * + * The image will be inlined in the SVG document using data URL scheme. For + * this the mime type and base64 encoded file content will be merged to + * URL. + * + * @param mixed $file Image file + * @param ezcGraphCoordinate $position Top left position + * @param float $width Width of image in destination image + * @param float $height Height of image in destination image + * @return void + */ + public function drawImage( $file, ezcGraphCoordinate $position, $width, $height ) + { + $movie = $this->getDocument(); + + $imageData = getimagesize( $file ); + if ( ( $imageData[2] !== IMAGETYPE_JPEG ) && ( $imageData[2] !== IMAGETYPE_PNG ) ) + { + throw new ezcGraphFlashBitmapTypeException( $imageData[2] ); + } + + // Try to create a new SWFBitmap object from provided file + $bitmap = new SWFBitmap( fopen( $file, 'rb' ) ); + + // Add the image to the movie + $object = $this->movie->add( $bitmap ); + + // Image size is calculated on the base of a tick size of 20, so + // that we need to transform this, to our tick size. + $factor = $this->modifyCoordinate( 1 ) / 20; + $object->scale( $factor, $factor ); + + // Scale by ratio of requested and original image size + $object->scale( + $width / $imageData[0], + $height / $imageData[1] + ); + + // Move object to the right position + $object->moveTo( + $this->modifyCoordinate( $position->x ), + $this->modifyCoordinate( $position->y ) + ); + + // Create, set and return unique ID + $object->setName( $id = 'ezcGraphImage_'. $this->id++ ); + return $id; + } + + /** + * Return mime type for current image format + * + * @return string + */ + public function getMimeType() + { + return 'application/x-shockwave-flash'; + } + + /** + * Finally save image + * + * @param string $file Destination filename + * @return void + */ + public function render( $file ) + { + $this->drawAllTexts(); + $movie = $this->getDocument(); + $movie->save( $file, $this->options->compression ); + } + + /** + * Get resource of rendered result + * + * Return the resource of the rendered result. You should not use this + * method before you called either renderToOutput() or render(), as the + * image may not be completely rendered until then. + * + * @return SWFMovie + */ + public function getResource() + { + return $this->movie; + } +} + +?> diff --git a/include/ezcomponents/Graph/src/driver/gd.php b/include/ezcomponents/Graph/src/driver/gd.php new file mode 100644 index 000000000..397136eb3 --- /dev/null +++ b/include/ezcomponents/Graph/src/driver/gd.php @@ -0,0 +1,1209 @@ + + * $graph = new ezcGraphPieChart(); + * $graph->palette = new ezcGraphPaletteEzGreen(); + * $graph->title = 'Access statistics'; + * $graph->legend = false; + * + * $graph->driver = new ezcGraphGdDriver(); + * $graph->options->font = 'tutorial_font.ttf'; + * + * // Generate a Jpeg with lower quality. The default settings result in a image + * // with better quality. + * // + * // The reduction of the supersampling to 1 will result in no anti aliasing of + * // the image. JPEG is not the optimal format for grapics, PNG is far better for + * // this kind of images. + * $graph->driver->options->supersampling = 1; + * $graph->driver->options->jpegQuality = 100; + * $graph->driver->options->imageFormat = IMG_JPEG; + * + * $graph->data['Access statistics'] = new ezcGraphArrayDataSet( array( + * 'Mozilla' => 19113, + * 'Explorer' => 10917, + * 'Opera' => 1464, + * 'Safari' => 652, + * 'Konqueror' => 474, + * ) ); + * + * $graph->render( 400, 200, 'tutorial_dirver_gd.jpg' ); + * + * + * @version 1.3 + * @package Graph + * @mainclass + */ +class ezcGraphGdDriver extends ezcGraphDriver +{ + + /** + * Image resource + * + * @var resource + */ + protected $image; + + /** + * Array with image files to draw + * + * @var array + */ + protected $preProcessImages = array(); + + /** + * List of strings to draw + * array ( array( + * 'text' => array( 'strings' ), + * 'options' => ezcGraphFontOptions, + * ) + * + * @var array + */ + protected $strings = array(); + + /** + * Contains resources for already loaded ps fonts. + * array( + * path => resource + * ) + * + * @var array + */ + protected $psFontResources = array(); + + /** + * Constructor + * + * @param array $options Default option array + * @return void + * @ignore + */ + public function __construct( array $options = array() ) + { + ezcBase::checkDependency( 'Graph', ezcBase::DEP_PHP_EXTENSION, 'gd' ); + $this->options = new ezcGraphGdDriverOptions( $options ); + } + + /** + * Returns the image resource to draw on. + * + * If no resource exists the image will be created. The size of the + * returned image depends on the supersampling factor and the size of the + * chart. + * + * @return resource + */ + protected function getImage() + { + if ( !isset( $this->image ) ) + { + $this->image = imagecreatetruecolor( + $this->supersample( $this->options->width ), + $this->supersample( $this->options->height ) + ); + + // Default to a transparent white background + $bgColor = imagecolorallocatealpha( $this->image, 255, 255, 255, 127 ); + imagealphablending( $this->image, true ); + imagesavealpha( $this->image, true ); + imagefill( $this->image, 1, 1, $bgColor ); + + imagesetthickness( + $this->image, + $this->options->supersampling + ); + } + + return $this->image; + } + + /** + * Allocates a color + * + * This function tries to allocate the requested color. If the color + * already exists in the imaga it will be reused. + * + * @param ezcGraphColor $color + * @return int Color index + */ + protected function allocate( ezcGraphColor $color ) + { + $image = $this->getImage(); + + if ( $color->alpha > 0 ) + { + $fetched = imagecolorexactalpha( $image, $color->red, $color->green, $color->blue, $color->alpha / 2 ); + if ( $fetched < 0 ) + { + $fetched = imagecolorallocatealpha( $image, $color->red, $color->green, $color->blue, $color->alpha / 2 ); + } + return $fetched; + } + else + { + $fetched = imagecolorexact( $image, $color->red, $color->green, $color->blue ); + if ( $fetched < 0 ) + { + $fetched = imagecolorallocate( $image, $color->red, $color->green, $color->blue ); + } + return $fetched; + } + } + + /** + * Creates an image resource from an image file + * + * @param string $file Filename + * @return resource Image + */ + protected function imageCreateFrom( $file ) + { + $data = getimagesize( $file ); + + switch ( $data[2] ) + { + case 1: + return array( + 'width' => $data[0], + 'height' => $data[1], + 'image' => imagecreatefromgif( $file ) + ); + case 2: + return array( + 'width' => $data[0], + 'height' => $data[1], + 'image' => imagecreatefromjpeg( $file ) + ); + case 3: + return array( + 'width' => $data[0], + 'height' => $data[1], + 'image' => imagecreatefrompng( $file ) + ); + default: + throw new ezcGraphGdDriverUnsupportedImageTypeException( $data[2] ); + } + } + + /** + * Supersamples a single coordinate value. + * + * Applies supersampling to a single coordinate value. + * + * @param float $value Coordinate value + * @return float Supersampled coordinate value + */ + protected function supersample( $value ) + { + $mod = (int) floor( $this->options->supersampling / 2 ); + return $value * $this->options->supersampling - $mod; + } + + /** + * Draws a single polygon. + * + * @param array $points Point array + * @param ezcGraphColor $color Polygon color + * @param mixed $filled Filled + * @param float $thickness Line thickness + * @return void + */ + public function drawPolygon( array $points, ezcGraphColor $color, $filled = true, $thickness = 1. ) + { + $image = $this->getImage(); + + $drawColor = $this->allocate( $color ); + + // Create point array + $pointCount = count( $points ); + $pointArray = array(); + for ( $i = 0; $i < $pointCount; ++$i ) + { + $pointArray[] = $this->supersample( $points[$i]->x ); + $pointArray[] = $this->supersample( $points[$i]->y ); + } + + // Draw polygon + if ( $filled ) + { + imagefilledpolygon( $image, $pointArray, $pointCount, $drawColor ); + } + else + { + imagepolygon( $image, $pointArray, $pointCount, $drawColor ); + } + + return $points; + } + + /** + * Draws a line + * + * @param ezcGraphCoordinate $start Start point + * @param ezcGraphCoordinate $end End point + * @param ezcGraphColor $color Line color + * @param float $thickness Line thickness + * @return void + */ + public function drawLine( ezcGraphCoordinate $start, ezcGraphCoordinate $end, ezcGraphColor $color, $thickness = 1. ) + { + $image = $this->getImage(); + + $drawColor = $this->allocate( $color ); + + imagesetthickness( + $this->image, + $this->options->supersampling * $thickness + ); + + imageline( + $image, + $this->supersample( $start->x ), + $this->supersample( $start->y ), + $this->supersample( $end->x ), + $this->supersample( $end->y ), + $drawColor + ); + + imagesetthickness( + $this->image, + $this->options->supersampling + ); + + return array(); + } + + /** + * Returns boundings of text depending on the available font extension + * + * @param float $size Textsize + * @param ezcGraphFontOptions $font Font + * @param string $text Text + * @return ezcGraphBoundings Boundings of text + */ + protected function getTextBoundings( $size, ezcGraphFontOptions $font, $text ) + { + switch ( $font->type ) + { + case ezcGraph::PS_FONT: + if ( !isset( $this->psFontResources[$font->path] ) ) + { + $this->psFontResources[$font->path] = imagePsLoadFont( $font->path ); + } + + $boundings = imagePsBBox( $text, $this->psFontResources[$font->path], $size ); + return new ezcGraphBoundings( + $boundings[0], + $boundings[1], + $boundings[2], + $boundings[3] + ); + case ezcGraph::TTF_FONT: + switch ( true ) + { + case ezcBaseFeatures::hasFunction( 'imageftbbox' ) && !$this->options->forceNativeTTF: + $boundings = imageFtBBox( $size, 0, $font->path, $text ); + return new ezcGraphBoundings( + $boundings[0], + $boundings[1], + $boundings[4], + $boundings[5] + ); + case ezcBaseFeatures::hasFunction( 'imagettfbbox' ): + $boundings = imageTtfBBox( $size, 0, $font->path, $text ); + return new ezcGraphBoundings( + $boundings[0], + $boundings[1], + $boundings[4], + $boundings[5] + ); + } + break; + } + } + + /** + * Render text depending of font type and available font extensions + * + * @param resource $image Image resource + * @param string $text Text + * @param int $type Font type + * @param string $path Font path + * @param ezcGraphColor $color Font color + * @param ezcGraphCoordinate $position Position + * @param float $size Textsize + * @param ezcGraphRotation $rotation + * + * @return void + */ + protected function renderText( $image, $text, $type, $path, ezcGraphColor $color, ezcGraphCoordinate $position, $size, ezcGraphRotation $rotation = null ) + { + if ( $rotation !== null ) + { + // Rotation is relative to top left point of text and not relative + // to the bounding coordinate system + $rotation = new ezcGraphRotation( + $rotation->getRotation(), + new ezcGraphCoordinate( + $rotation->getCenter()->x - $position->x, + $rotation->getCenter()->y - $position->y + ) + ); + } + + switch ( $type ) + { + case ezcGraph::PS_FONT: + imagePsText( + $image, + $text, + $this->psFontResources[$path], + $size, + $this->allocate( $color ), + 1, + $position->x + + ( $rotation === null ? 0 : $rotation->get( 0, 2 ) ), + $position->y + + ( $rotation === null ? 0 : $rotation->get( 1, 2 ) ), + 0, + 0, + ( $rotation === null ? 0 : -$rotation->getRotation() ), + 4 + ); + break; + case ezcGraph::TTF_FONT: + switch ( true ) + { + case ezcBaseFeatures::hasFunction( 'imagefttext' ) && !$this->options->forceNativeTTF: + imageFtText( + $image, + $size, + ( $rotation === null ? 0 : -$rotation->getRotation() ), + $position->x + + ( $rotation === null ? 0 : $rotation->get( 0, 2 ) ), + $position->y + + ( $rotation === null ? 0 : $rotation->get( 1, 2 ) ), + $this->allocate( $color ), + $path, + $text + ); + break; + case ezcBaseFeatures::hasFunction( 'imagettftext' ): + imageTtfText( + $image, + $size, + ( $rotation === null ? 0 : -$rotation->getRotation() ), + $position->x + + ( $rotation === null ? 0 : $rotation->get( 0, 2 ) ), + $position->y + + ( $rotation === null ? 0 : $rotation->get( 1, 2 ) ), + $this->allocate( $color ), + $path, + $text + ); + break; + } + break; + } + } + + /** + * Writes text in a box of desired size + * + * @param string $string Text + * @param ezcGraphCoordinate $position Top left position + * @param float $width Width of text box + * @param float $height Height of text box + * @param int $align Alignement of text + * @param ezcGraphRotation $rotation + * @return void + */ + public function drawTextBox( $string, ezcGraphCoordinate $position, $width, $height, $align, ezcGraphRotation $rotation = null ) + { + $padding = $this->options->font->padding + ( $this->options->font->border !== false ? $this->options->font->borderWidth : 0 ); + + $width -= $padding * 2; + $height -= $padding * 2; + $position->x += $padding; + $position->y += $padding; + + // Try to get a font size for the text to fit into the box + $maxSize = min( $height, $this->options->font->maxFontSize ); + $result = false; + for ( $size = $maxSize; $size >= $this->options->font->minFontSize; --$size ) + { + $result = $this->testFitStringInTextBox( $string, $position, $width, $height, $size ); + if ( is_array( $result ) ) + { + break; + } + $size = floor( ( $newsize = $size * ( $result ) ) >= $size ? $size - 1 : $newsize ); + } + + if ( !is_array( $result ) ) + { + if ( ( $height >= $this->options->font->minFontSize ) && + ( $this->options->autoShortenString ) ) + { + $result = $this->tryFitShortenedString( $string, $position, $width, $height, $size = $this->options->font->minFontSize ); + } + else + { + throw new ezcGraphFontRenderingException( $string, $this->options->font->minFontSize, $width, $height ); + } + } + + $this->options->font->minimalUsedFont = $size; + + $this->strings[] = array( + 'text' => $result, + 'position' => $position, + 'width' => $width, + 'height' => $height, + 'align' => $align, + 'font' => $this->options->font, + 'rotation' => $rotation, + ); + + return array( + clone $position, + new ezcGraphCoordinate( $position->x + $width, $position->y ), + new ezcGraphCoordinate( $position->x + $width, $position->y + $height ), + new ezcGraphCoordinate( $position->x, $position->y + $height ), + ); + } + + /** + * Draw all collected texts + * + * The texts are collected and their maximum possible font size is + * calculated. This function finally draws the texts on the image, this + * delayed drawing has two reasons: + * + * 1) This way the text strings are always on top of the image, what + * results in better readable texts + * 2) The maximum possible font size can be calculated for a set of texts + * with the same font configuration. Strings belonging to one chart + * element normally have the same font configuration, so that all texts + * belonging to one element will have the same font size. + * + * @access protected + * @return void + */ + protected function drawAllTexts() + { + $image = $this->getImage(); + + foreach ( $this->strings as $text ) + { + $size = $text['font']->minimalUsedFont; + + $completeHeight = count( $text['text'] ) * $size + ( count( $text['text'] ) - 1 ) * $this->options->lineSpacing; + + // Calculate y offset for vertical alignement + switch ( true ) + { + case ( $text['align'] & ezcGraph::BOTTOM ): + $yOffset = $text['height'] - $completeHeight; + break; + case ( $text['align'] & ezcGraph::MIDDLE ): + $yOffset = ( $text['height'] - $completeHeight ) / 2; + break; + case ( $text['align'] & ezcGraph::TOP ): + default: + $yOffset = 0; + break; + } + + $padding = $text['font']->padding + $text['font']->borderWidth / 2; + if ( $this->options->font->minimizeBorder === true ) + { + // Calculate maximum width of text rows + $width = false; + foreach ( $text['text'] as $line ) + { + $string = implode( ' ', $line ); + $boundings = $this->getTextBoundings( $size, $text['font'], $string ); + if ( ( $width === false) || ( $boundings->width > $width ) ) + { + $width = $boundings->width; + } + } + + switch ( true ) + { + case ( $text['align'] & ezcGraph::LEFT ): + $xOffset = 0; + break; + case ( $text['align'] & ezcGraph::CENTER ): + $xOffset = ( $text['width'] - $width ) / 2; + break; + case ( $text['align'] & ezcGraph::RIGHT ): + $xOffset = $text['width'] - $width; + break; + } + + $borderPolygonArray = array( + new ezcGraphCoordinate( + $text['position']->x - $padding + $xOffset, + $text['position']->y - $padding + $yOffset + ), + new ezcGraphCoordinate( + $text['position']->x + $padding * 2 + $xOffset + $width, + $text['position']->y - $padding + $yOffset + ), + new ezcGraphCoordinate( + $text['position']->x + $padding * 2 + $xOffset + $width, + $text['position']->y + $padding * 2 + $yOffset + $completeHeight + ), + new ezcGraphCoordinate( + $text['position']->x - $padding + $xOffset, + $text['position']->y + $padding * 2 + $yOffset + $completeHeight + ), + ); + } + else + { + $borderPolygonArray = array( + new ezcGraphCoordinate( + $text['position']->x - $padding, + $text['position']->y - $padding + ), + new ezcGraphCoordinate( + $text['position']->x + $padding * 2 + $text['width'], + $text['position']->y - $padding + ), + new ezcGraphCoordinate( + $text['position']->x + $padding * 2 + $text['width'], + $text['position']->y + $padding * 2 + $text['height'] + ), + new ezcGraphCoordinate( + $text['position']->x - $padding, + $text['position']->y + $padding * 2 + $text['height'] + ), + ); + } + + if ( $text['rotation'] !== null ) + { + foreach ( $borderPolygonArray as $nr => $point ) + { + $borderPolygonArray[$nr] = $text['rotation']->transformCoordinate( $point ); + } + } + + if ( $text['font']->background !== false ) + { + $this->drawPolygon( + $borderPolygonArray, + $text['font']->background, + true + ); + } + + if ( $text['font']->border !== false ) + { + $this->drawPolygon( + $borderPolygonArray, + $text['font']->border, + false, + $text['font']->borderWidth + ); + } + + // Render text with evaluated font size + foreach ( $text['text'] as $line ) + { + $string = implode( ' ', $line ); + $boundings = $this->getTextBoundings( $size, $text['font'], $string ); + $text['position']->y += $size; + + switch ( true ) + { + case ( $text['align'] & ezcGraph::LEFT ): + $position = new ezcGraphCoordinate( + $text['position']->x, + $text['position']->y + $yOffset + ); + break; + case ( $text['align'] & ezcGraph::RIGHT ): + $position = new ezcGraphCoordinate( + $text['position']->x + ( $text['width'] - $boundings->width ), + $text['position']->y + $yOffset + ); + break; + case ( $text['align'] & ezcGraph::CENTER ): + $position = new ezcGraphCoordinate( + $text['position']->x + ( ( $text['width'] - $boundings->width ) / 2 ), + $text['position']->y + $yOffset + ); + break; + } + + // Calculate relative modification of rotation center point + if ( $text['rotation'] !== null ) + { + $rotation = new ezcGraphRotation( + $text['rotation']->getRotation(), + new ezcGraphCoordinate( + $text['rotation']->getCenter()->x + + $position->x - $text['position']->x, + $text['rotation']->getCenter()->y + + $position->y - $text['position']->y + ) + ); + $rotation = $text['rotation']; + } + else + { + $rotation = null; + } + + // Optionally draw text shadow + if ( $text['font']->textShadow === true ) + { + $this->renderText( + $image, + $string, + $text['font']->type, + $text['font']->path, + $text['font']->textShadowColor, + new ezcGraphCoordinate( + $position->x + $text['font']->textShadowOffset, + $position->y + $text['font']->textShadowOffset + ), + $size, + $rotation + ); + } + + // Finally draw text + $this->renderText( + $image, + $string, + $text['font']->type, + $text['font']->path, + $text['font']->color, + $position, + $size, + $rotation + ); + + $text['position']->y += $size * $this->options->lineSpacing; + } + } + } + + /** + * Draws a sector of cirlce + * + * @param ezcGraphCoordinate $center Center of circle + * @param mixed $width Width + * @param mixed $height Height + * @param mixed $startAngle Start angle of circle sector + * @param mixed $endAngle End angle of circle sector + * @param ezcGraphColor $color Color + * @param mixed $filled Filled + * @return void + */ + public function drawCircleSector( ezcGraphCoordinate $center, $width, $height, $startAngle, $endAngle, ezcGraphColor $color, $filled = true ) + { + $image = $this->getImage(); + $drawColor = $this->allocate( $color ); + + // Normalize angles + if ( $startAngle > $endAngle ) + { + $tmp = $startAngle; + $startAngle = $endAngle; + $endAngle = $tmp; + } + + if ( $filled ) + { + imagefilledarc( + $image, + $this->supersample( $center->x ), + $this->supersample( $center->y ), + $this->supersample( $width ), + $this->supersample( $height ), + $startAngle, + $endAngle, + $drawColor, + IMG_ARC_PIE + ); + } + else + { + imagefilledarc( + $image, + $this->supersample( $center->x ), + $this->supersample( $center->y ), + $this->supersample( $width ), + $this->supersample( $height ), + $startAngle, + $endAngle, + $drawColor, + IMG_ARC_PIE | IMG_ARC_NOFILL | IMG_ARC_EDGED + ); + } + + // Create polygon array to return + $polygonArray = array( $center ); + for ( $angle = $startAngle; $angle < $endAngle; $angle += $this->options->imageMapResolution ) + { + $polygonArray[] = new ezcGraphCoordinate( + $center->x + + ( ( cos( deg2rad( $angle ) ) * $width ) / 2 ), + $center->y + + ( ( sin( deg2rad( $angle ) ) * $height ) / 2 ) + ); + } + $polygonArray[] = new ezcGraphCoordinate( + $center->x + + ( ( cos( deg2rad( $endAngle ) ) * $width ) / 2 ), + $center->y + + ( ( sin( deg2rad( $endAngle ) ) * $height ) / 2 ) + ); + + return $polygonArray; + } + + /** + * Draws a single element of a circular arc + * + * ext/gd itself does not support something like circular arcs, so that + * this functions draws rectangular polygons as a part of circular arcs + * to interpolate them. This way it is possible to apply a linear gradient + * to the circular arc, because we draw single steps anyway. + * + * @param ezcGraphCoordinate $center Center of ellipse + * @param integer $width Width of ellipse + * @param integer $height Height of ellipse + * @param integer $size Height of border + * @param float $startAngle Starting angle of circle sector + * @param float $endAngle Ending angle of circle sector + * @param ezcGraphColor $color Color of Border + * @return void + */ + protected function drawCircularArcStep( ezcGraphCoordinate $center, $width, $height, $size, $startAngle, $endAngle, ezcGraphColor $color ) + { + $this->drawPolygon( + array( + new ezcGraphCoordinate( + $center->x + + ( ( cos( deg2rad( $startAngle ) ) * $width ) / 2 ), + $center->y + + ( ( sin( deg2rad( $startAngle ) ) * $height ) / 2 ) + ), + new ezcGraphCoordinate( + $center->x + + ( ( cos( deg2rad( $startAngle ) ) * $width ) / 2 ), + $center->y + + ( ( sin( deg2rad( $startAngle ) ) * $height ) / 2 ) + $size + ), + new ezcGraphCoordinate( + $center->x + + ( ( cos( deg2rad( $endAngle ) ) * $width ) / 2 ), + $center->y + + ( ( sin( deg2rad( $endAngle ) ) * $height ) / 2 ) + $size + ), + new ezcGraphCoordinate( + $center->x + + ( ( cos( deg2rad( $endAngle ) ) * $width ) / 2 ), + $center->y + + ( ( sin( deg2rad( $endAngle ) ) * $height ) / 2 ) + ), + ), + $color->darken( $this->options->shadeCircularArc * ( 1 + cos ( deg2rad( $startAngle ) ) ) / 2 ), + true + ); + } + + /** + * Draws a circular arc + * + * @param ezcGraphCoordinate $center Center of ellipse + * @param integer $width Width of ellipse + * @param integer $height Height of ellipse + * @param integer $size Height of border + * @param float $startAngle Starting angle of circle sector + * @param float $endAngle Ending angle of circle sector + * @param ezcGraphColor $color Color of Border + * @param bool $filled + * @return void + */ + public function drawCircularArc( ezcGraphCoordinate $center, $width, $height, $size, $startAngle, $endAngle, ezcGraphColor $color, $filled = true ) + { + $image = $this->getImage(); + $drawColor = $this->allocate( $color ); + + // Normalize angles + if ( $startAngle > $endAngle ) + { + $tmp = $startAngle; + $startAngle = $endAngle; + $endAngle = $tmp; + } + + if ( $filled === true ) + { + $startIteration = ceil( $startAngle / $this->options->detail ) * $this->options->detail; + $endIteration = floor( $endAngle / $this->options->detail ) * $this->options->detail; + + if ( $startAngle < $startIteration ) + { + // Draw initial step + $this->drawCircularArcStep( + $center, + $width, + $height, + $size, + $startAngle, + $startIteration, + $color + ); + } + + // Draw all steps + for ( ; $startIteration < $endIteration; $startIteration += $this->options->detail ) + { + $this->drawCircularArcStep( + $center, + $width, + $height, + $size, + $startIteration, + $startIteration + $this->options->detail, + $color + ); + } + + if ( $endIteration < $endAngle ) + { + // Draw closing step + $this->drawCircularArcStep( + $center, + $width, + $height, + $size, + $endIteration, + $endAngle, + $color + ); + } + } + else + { + imagefilledarc( + $image, + $this->supersample( $center->x ), + $this->supersample( $center->y ), + $this->supersample( $width ), + $this->supersample( $height ), + $startAngle, + $endAngle, + $drawColor, + IMG_ARC_PIE | IMG_ARC_NOFILL + ); + } + + // Create polygon array to return + $polygonArray = array(); + for ( $angle = $startAngle; $angle < $endAngle; $angle += $this->options->imageMapResolution ) + { + $polygonArray[] = new ezcGraphCoordinate( + $center->x + + ( ( cos( deg2rad( $angle ) ) * $width ) / 2 ), + $center->y + + ( ( sin( deg2rad( $angle ) ) * $height ) / 2 ) + ); + } + $polygonArray[] = new ezcGraphCoordinate( + $center->x + + ( ( cos( deg2rad( $endAngle ) ) * $width ) / 2 ), + $center->y + + ( ( sin( deg2rad( $endAngle ) ) * $height ) / 2 ) + ); + + for ( $angle = $endAngle; $angle > $startAngle; $angle -= $this->options->imageMapResolution ) + { + $polygonArray[] = new ezcGraphCoordinate( + $center->x + + ( ( cos( deg2rad( $angle ) ) * $width ) / 2 ) + $size, + $center->y + + ( ( sin( deg2rad( $angle ) ) * $height ) / 2 ) + ); + } + $polygonArray[] = new ezcGraphCoordinate( + $center->x + + ( ( cos( deg2rad( $startAngle ) ) * $width ) / 2 ) + $size, + $center->y + + ( ( sin( deg2rad( $startAngle ) ) * $height ) / 2 ) + ); + + return $polygonArray; + } + + /** + * Draw circle + * + * @param ezcGraphCoordinate $center Center of ellipse + * @param mixed $width Width of ellipse + * @param mixed $height height of ellipse + * @param ezcGraphColor $color Color + * @param mixed $filled Filled + * @return void + */ + public function drawCircle( ezcGraphCoordinate $center, $width, $height, ezcGraphColor $color, $filled = true ) + { + $image = $this->getImage(); + + $drawColor = $this->allocate( $color ); + + if ( $filled ) + { + imagefilledellipse( + $image, + $this->supersample( $center->x ), + $this->supersample( $center->y ), + $this->supersample( $width ), + $this->supersample( $height ), + $drawColor + ); + } + else + { + imageellipse( + $image, + $this->supersample( $center->x ), + $this->supersample( $center->y ), + $this->supersample( $width ), + $this->supersample( $height ), + $drawColor + ); + } + + $polygonArray = array(); + for ( $angle = 0; $angle < 360; $angle += $this->options->imageMapResolution ) + { + $polygonArray[] = new ezcGraphCoordinate( + $center->x + + ( ( cos( deg2rad( $angle ) ) * $width ) / 2 ), + $center->y + + ( ( sin( deg2rad( $angle ) ) * $height ) / 2 ) + ); + } + + return $polygonArray; + } + + /** + * Draw an image + * + * The actual drawing of the image is delayed, to not apply supersampling + * to the image. The image will normally be resized using the gd function + * imagecopyresampled, which provides nice antialiased scaling, so that + * additional supersampling would make the image look blurred. The delayed + * images will be pre-processed, so that they are draw in the back of + * everything else. + * + * @param mixed $file Image file + * @param ezcGraphCoordinate $position Top left position + * @param mixed $width Width of image in destination image + * @param mixed $height Height of image in destination image + * @return void + */ + public function drawImage( $file, ezcGraphCoordinate $position, $width, $height ) + { + $this->preProcessImages[] = array( + 'file' => $file, + 'position' => clone $position, + 'width' => $width, + 'height' => $height, + ); + + return array( + $position, + new ezcGraphCoordinate( $position->x + $width, $position->y ), + new ezcGraphCoordinate( $position->x + $width, $position->y + $height ), + new ezcGraphCoordinate( $position->x, $position->y + $height ), + ); + } + + /** + * Draw all images to image resource handler + * + * @param resource $image Image to draw on + * @return resource Updated image resource + */ + protected function addImages( $image ) + { + foreach ( $this->preProcessImages as $preImage ) + { + $preImageData = $this->imageCreateFrom( $preImage['file'] ); + call_user_func_array( + $this->options->resampleFunction, + array( + $image, + $preImageData['image'], + $preImage['position']->x, $preImage['position']->y, + 0, 0, + $preImage['width'], $preImage['height'], + $preImageData['width'], $preImageData['height'], + ) + ); + } + + return $image; + } + + /** + * Return mime type for current image format + * + * @return string + */ + public function getMimeType() + { + switch ( $this->options->imageFormat ) + { + case IMG_PNG: + return 'image/png'; + case IMG_JPEG: + return 'image/jpeg'; + } + } + + /** + * Render image directly to output + * + * The method renders the image directly to the standard output. You + * normally do not want to use this function, because it makes it harder + * to proper cache the generated graphs. + * + * @return void + */ + public function renderToOutput() + { + header( 'Content-Type: ' . $this->getMimeType() ); + $this->render( null ); + } + + /** + * Finally save image + * + * @param string $file Destination filename + * @return void + */ + public function render( $file ) + { + $destination = imagecreatetruecolor( $this->options->width, $this->options->height ); + + // Default to a transparent white background + $bgColor = imagecolorallocatealpha( $destination, 255, 255, 255, 127 ); + imagealphablending( $destination, true ); + imagesavealpha( $destination, true ); + imagefill( $destination, 1, 1, $bgColor ); + + // Apply background if one is defined + if ( $this->options->background !== false ) + { + $background = $this->imageCreateFrom( $this->options->background ); + + call_user_func_array( + $this->options->resampleFunction, + array( + $destination, + $background['image'], + 0, 0, + 0, 0, + $this->options->width, $this->options->height, + $background['width'], $background['height'], + ) + ); + } + + // Draw all images to exclude them from supersampling + $destination = $this->addImages( $destination ); + + // Finally merge with graph + $image = $this->getImage(); + call_user_func_array( + $this->options->resampleFunction, + array( + $destination, + $image, + 0, 0, + 0, 0, + $this->options->width, $this->options->height, + $this->supersample( $this->options->width ), $this->supersample( $this->options->height ) + ) + ); + + $this->image = $destination; + imagedestroy( $image ); + + // Draw all texts + // Reset supersampling during text rendering + $supersampling = $this->options->supersampling; + $this->options->supersampling = 1; + $this->drawAllTexts(); + $this->options->supersampling = $supersampling; + + $image = $this->getImage(); + switch ( $this->options->imageFormat ) + { + case IMG_PNG: + if ( $file === null ) + { + imagepng( $image ); + } + else + { + imagepng( $image, $file ); + } + break; + case IMG_JPEG: + imagejpeg( $image, $file, $this->options->jpegQuality ); + break; + default: + throw new ezcGraphGdDriverUnsupportedImageTypeException( $this->options->imageFormat ); + } + } + + /** + * Get resource of rendered result + * + * Return the resource of the rendered result. You should not use this + * method before you called either renderToOutput() or render(), as the + * image may not be completely rendered until then. + * + * @return resource + */ + public function getResource() + { + return $this->image; + } +} + +?> diff --git a/include/ezcomponents/Graph/src/driver/svg.php b/include/ezcomponents/Graph/src/driver/svg.php new file mode 100644 index 000000000..687d657e6 --- /dev/null +++ b/include/ezcomponents/Graph/src/driver/svg.php @@ -0,0 +1,1230 @@ + + * $graph = new ezcGraphPieChart(); + * $graph->background->color = '#FFFFFFFF'; + * $graph->title = 'Access statistics'; + * $graph->legend = false; + * + * $graph->data['Access statistics'] = new ezcGraphArrayDataSet( array( + * 'Mozilla' => 19113, + * 'Explorer' => 10917, + * 'Opera' => 1464, + * 'Safari' => 652, + * 'Konqueror' => 474, + * ) ); + * + * $graph->renderer = new ezcGraphRenderer3d(); + * $graph->renderer->options->pieChartShadowSize = 10; + * $graph->renderer->options->pieChartGleam = .5; + * $graph->renderer->options->dataBorder = false; + * $graph->renderer->options->pieChartHeight = 16; + * $graph->renderer->options->legendSymbolGleam = .5; + * + * // SVG driver options + * $graph->driver->options->templateDocument = dirname( __FILE__ ) . '/template.svg'; + * $graph->driver->options->graphOffset = new ezcGraphCoordinate( 25, 40 ); + * $graph->driver->options->insertIntoGroup = 'ezcGraph'; + * + * $graph->render( 400, 200, 'tutorial_driver_svg.svg' ); + * + * + * @version 1.3 + * @package Graph + * @mainclass + */ +class ezcGraphSvgDriver extends ezcGraphDriver +{ + + /** + * DOM tree of the svg document + * + * @var DOMDocument + */ + protected $dom; + + /** + * DOMElement containing all svg style definitions + * + * @var DOMElement + */ + protected $defs; + + /** + * DOMElement containing all svg objects + * + * @var DOMElement + */ + protected $elements; + + /** + * List of strings to draw + * array ( array( + * 'text' => array( 'strings' ), + * 'options' => ezcGraphFontOptions, + * ) + * + * @var array + */ + protected $strings = array(); + + /** + * List of already created gradients + * + * @var array + */ + protected $drawnGradients = array(); + + /** + * Numeric unique element id + * + * @var int + */ + protected $elementID = 0; + + /** + * Font storage for SVG font glyphs and kernings. + * + * @var ezcGraphSvgFont + */ + protected $font = null; + + /** + * Constructor + * + * @param array $options Default option array + * @return void + * @ignore + */ + public function __construct( array $options = array() ) + { + ezcBase::checkDependency( 'Graph', ezcBase::DEP_PHP_EXTENSION, 'dom' ); + $this->options = new ezcGraphSvgDriverOptions( $options ); + $this->font = new ezcGraphSvgFont(); + } + + /** + * Creates the DOM object to insert SVG nodes in. + * + * If the DOM document does not exists it will be created or loaded + * according to the settings. + * + * @return void + */ + protected function createDocument() + { + if ( $this->dom === null ) + { + // Create encoding based dom document + if ( $this->options->encoding !== null ) + { + $this->dom = new DOMDocument( '1.0', $this->options->encoding ); + } + else + { + $this->dom = new DOMDocument( '1.0' ); + } + + if ( $this->options->templateDocument !== false ) + { + $this->dom->load( $this->options->templateDocument ); + + $this->defs = $this->dom->getElementsByTagName( 'defs' )->item( 0 ); + $svg = $this->dom->getElementsByTagName( 'svg' )->item( 0 ); + } + else + { + $svg = $this->dom->createElementNS( 'http://www.w3.org/2000/svg', 'svg' ); + $this->dom->appendChild( $svg ); + + $svg->setAttribute( 'width', $this->options->width ); + $svg->setAttribute( 'height', $this->options->height ); + $svg->setAttribute( 'version', '1.0' ); + $svg->setAttribute( 'id', $this->options->idPrefix ); + + $this->defs = $this->dom->createElement( 'defs' ); + $this->defs = $svg->appendChild( $this->defs ); + } + + if ( $this->options->insertIntoGroup !== false ) + { + // getElementById only works for Documents validated against a certain + // schema, so that the use of XPath should be faster in most cases. + $xpath = new DomXPath( $this->dom ); + $this->elements = $xpath->query( '//*[@id = \'' . $this->options->insertIntoGroup . '\']' )->item( 0 ); + if ( !$this->elements ) + { + throw new ezcGraphSvgDriverInvalidIdException( $this->options->insertIntoGroup ); + } + } + else + { + $this->elements = $this->dom->createElement( 'g' ); + $this->elements->setAttribute( 'id', $this->options->idPrefix . 'Chart' ); + $this->elements->setAttribute( 'color-rendering', $this->options->colorRendering ); + $this->elements->setAttribute( 'shape-rendering', $this->options->shapeRendering ); + $this->elements->setAttribute( 'text-rendering', $this->options->textRendering ); + $this->elements = $svg->appendChild( $this->elements ); + } + } + } + + /** + * Return gradient URL + * + * Creates the definitions needed for a gradient, if a proper gradient does + * not yet exists. In each case a URL referencing the correct gradient will + * be returned. + * + * @param ezcGraphColor $color Gradient + * @return string Gradient URL + */ + protected function getGradientUrl( ezcGraphColor $color ) + { + switch ( true ) + { + case ( $color instanceof ezcGraphLinearGradient ): + if ( !in_array( $color->__toString(), $this->drawnGradients, true ) ) + { + $gradient = $this->dom->createElement( 'linearGradient' ); + $gradient->setAttribute( 'id', 'Definition_' . $color->__toString() ); + $this->defs->appendChild( $gradient ); + + // Start of linear gradient + $stop = $this->dom->createElement( 'stop' ); + $stop->setAttribute( 'offset', 0 ); + $stop->setAttribute( 'style', sprintf( 'stop-color: #%02x%02x%02x; stop-opacity: %.2F;', + $color->startColor->red, + $color->startColor->green, + $color->startColor->blue, + 1 - ( $color->startColor->alpha / 255 ) + ) + ); + $gradient->appendChild( $stop ); + + // End of linear gradient + $stop = $this->dom->createElement( 'stop' ); + $stop->setAttribute( 'offset', 1 ); + $stop->setAttribute( 'style', sprintf( 'stop-color: #%02x%02x%02x; stop-opacity: %.2F;', + $color->endColor->red, + $color->endColor->green, + $color->endColor->blue, + 1 - ( $color->endColor->alpha / 255 ) + ) + ); + $gradient->appendChild( $stop ); + + $gradient = $this->dom->createElement( 'linearGradient' ); + $gradient->setAttribute( 'id', $color->__toString() ); + $gradient->setAttribute( 'x1', sprintf( '%.4F', $color->startPoint->x ) ); + $gradient->setAttribute( 'y1', sprintf( '%.4F', $color->startPoint->y ) ); + $gradient->setAttribute( 'x2', sprintf( '%.4F', $color->endPoint->x ) ); + $gradient->setAttribute( 'y2', sprintf( '%.4F', $color->endPoint->y ) ); + $gradient->setAttribute( 'gradientUnits', 'userSpaceOnUse' ); + $gradient->setAttributeNS( + 'http://www.w3.org/1999/xlink', + 'xlink:href', + '#Definition_' . $color->__toString() + ); + $this->defs->appendChild( $gradient ); + + $this->drawnGradients[] = $color->__toString(); + } + + return sprintf( 'url(#%s)', + $color->__toString() + ); + case ( $color instanceof ezcGraphRadialGradient ): + if ( !in_array( $color->__toString(), $this->drawnGradients, true ) ) + { + $gradient = $this->dom->createElement( 'linearGradient' ); + $gradient->setAttribute( 'id', 'Definition_' . $color->__toString() ); + $this->defs->appendChild( $gradient ); + + // Start of linear gradient + $stop = $this->dom->createElement( 'stop' ); + $stop->setAttribute( 'offset', 0 ); + $stop->setAttribute( 'style', sprintf( 'stop-color: #%02x%02x%02x; stop-opacity: %.2F;', + $color->startColor->red, + $color->startColor->green, + $color->startColor->blue, + 1 - ( $color->startColor->alpha / 255 ) + ) + ); + $gradient->appendChild( $stop ); + + // End of linear gradient + $stop = $this->dom->createElement( 'stop' ); + $stop->setAttribute( 'offset', 1 ); + $stop->setAttribute( 'style', sprintf( 'stop-color: #%02x%02x%02x; stop-opacity: %.2F;', + $color->endColor->red, + $color->endColor->green, + $color->endColor->blue, + 1 - ( $color->endColor->alpha / 255 ) + ) + ); + $gradient->appendChild( $stop ); + + $gradient = $this->dom->createElement( 'radialGradient' ); + $gradient->setAttribute( 'id', $color->__toString() ); + $gradient->setAttribute( 'cx', sprintf( '%.4F', $color->center->x ) ); + $gradient->setAttribute( 'cy', sprintf( '%.4F', $color->center->y ) ); + $gradient->setAttribute( 'fx', sprintf( '%.4F', $color->center->x ) ); + $gradient->setAttribute( 'fy', sprintf( '%.4F', $color->center->y ) ); + $gradient->setAttribute( 'r', max( $color->height, $color->width ) ); + $gradient->setAttribute( 'gradientUnits', 'userSpaceOnUse' ); + $gradient->setAttributeNS( + 'http://www.w3.org/1999/xlink', + 'xlink:href', + '#Definition_' . $color->__toString() + ); + $this->defs->appendChild( $gradient ); + + $this->drawnGradients[] = $color->__toString(); + } + + return sprintf( 'url(#%s)', + $color->__toString() + ); + default: + return false; + } + + } + + /** + * Get SVG style definition + * + * Returns a string with SVG style definitions created from color, + * fillstatus and line thickness. + * + * @param ezcGraphColor $color Color + * @param mixed $filled Filled + * @param float $thickness Line thickness. + * @return string Formatstring + */ + protected function getStyle( ezcGraphColor $color, $filled = true, $thickness = 1. ) + { + if ( $filled ) + { + if ( $url = $this->getGradientUrl( $color ) ) + { + return sprintf( 'fill: %s; stroke: none;', $url ); + } + else + { + return sprintf( 'fill: #%02x%02x%02x; fill-opacity: %.2F; stroke: none;', + $color->red, + $color->green, + $color->blue, + 1 - ( $color->alpha / 255 ) + ); + } + } + else + { + if ( $url = $this->getGradientUrl( $color ) ) + { + return sprintf( 'fill: none; stroke: %s;', $url ); + } + else + { + return sprintf( 'fill: none; stroke: #%02x%02x%02x; stroke-width: %d; stroke-opacity: %.2F; stroke-linecap: %s; stroke-linejoin: %s;', + $color->red, + $color->green, + $color->blue, + $thickness, + 1 - ( $color->alpha / 255 ), + $this->options->strokeLineCap, + $this->options->strokeLineJoin + ); + } + } + } + + /** + * Draws a single polygon. + * + * @param array $points Point array + * @param ezcGraphColor $color Polygon color + * @param mixed $filled Filled + * @param float $thickness Line thickness + * @return void + */ + public function drawPolygon( array $points, ezcGraphColor $color, $filled = true, $thickness = 1. ) + { + $this->createDocument(); + + if ( !$filled ) + { + // The middle of the border is on the outline of a polygon in SVG, + // fix that: + try + { + $points = $this->reducePolygonSize( $points, $thickness / 2 ); + } + catch ( ezcGraphReducementFailedException $e ) + { + return false; + } + } + + $lastPoint = end( $points ); + $pointString = sprintf( ' M %.4F,%.4F', + $lastPoint->x + $this->options->graphOffset->x, + $lastPoint->y + $this->options->graphOffset->y + ); + + foreach ( $points as $point ) + { + $pointString .= sprintf( ' L %.4F,%.4F', + $point->x + $this->options->graphOffset->x, + $point->y + $this->options->graphOffset->y + ); + } + $pointString .= ' z '; + + $path = $this->dom->createElement( 'path' ); + $path->setAttribute( 'd', $pointString ); + + $path->setAttribute( + 'style', + $this->getStyle( $color, $filled, $thickness ) + ); + $path->setAttribute( 'id', $id = ( $this->options->idPrefix . 'Polygon_' . ++$this->elementID ) ); + $this->elements->appendChild( $path ); + + return $id; + } + + /** + * Draws a line + * + * @param ezcGraphCoordinate $start Start point + * @param ezcGraphCoordinate $end End point + * @param ezcGraphColor $color Line color + * @param float $thickness Line thickness + * @return void + */ + public function drawLine( ezcGraphCoordinate $start, ezcGraphCoordinate $end, ezcGraphColor $color, $thickness = 1. ) + { + $this->createDocument(); + + $pointString = sprintf( ' M %.4F,%.4F L %.4F,%.4F', + $start->x + $this->options->graphOffset->x, + $start->y + $this->options->graphOffset->y, + $end->x + $this->options->graphOffset->x, + $end->y + $this->options->graphOffset->y + ); + + $path = $this->dom->createElement( 'path' ); + $path->setAttribute( 'd', $pointString ); + $path->setAttribute( + 'style', + $this->getStyle( $color, false, $thickness ) + ); + + $path->setAttribute( 'id', $id = ( $this->options->idPrefix . 'Line_' . ++$this->elementID ) ); + $this->elements->appendChild( $path ); + + return $id; + } + + /** + * Returns boundings of text depending on the available font extension + * + * @param float $size Textsize + * @param ezcGraphFontOptions $font Font + * @param string $text Text + * @return ezcGraphBoundings Boundings of text + */ + protected function getTextBoundings( $size, ezcGraphFontOptions $font, $text ) + { + if ( $font->type === ezcGraph::SVG_FONT ) + { + return new ezcGraphBoundings( + 0, + 0, + $this->font->calculateStringWidth( $font->path, $text ) * $size, + $size + ); + } + else + { + // If we didn't get a SVG font, continue guessing the font width. + return new ezcGraphBoundings( + 0, + 0, + $this->getTextWidth( $text, $size ), + $size + ); + } + } + + /** + * Writes text in a box of desired size + * + * @param string $string Text + * @param ezcGraphCoordinate $position Top left position + * @param float $width Width of text box + * @param float $height Height of text box + * @param int $align Alignement of text + * @param ezcGraphRotation $rotation + * @return void + */ + public function drawTextBox( $string, ezcGraphCoordinate $position, $width, $height, $align, ezcGraphRotation $rotation = null ) + { + $padding = $this->options->font->padding + ( $this->options->font->border !== false ? $this->options->font->borderWidth : 0 ); + + $width -= $padding * 2; + $height -= $padding * 2; + $textPosition = new ezcGraphCoordinate( + $position->x + $padding, + $position->y + $padding + ); + + // Try to get a font size for the text to fit into the box + $maxSize = min( $height, $this->options->font->maxFontSize ); + $result = false; + for ( $size = $maxSize; $size >= $this->options->font->minFontSize; ) + { + $result = $this->testFitStringInTextBox( $string, $position, $width, $height, $size ); + if ( is_array( $result ) ) + { + break; + } + $size = ( ( $newsize = $size * ( $result ) ) >= $size ? $size - 1 : floor( $newsize ) ); + } + + if ( !is_array( $result ) ) + { + if ( ( $height >= $this->options->font->minFontSize ) && + ( $this->options->autoShortenString ) ) + { + $result = $this->tryFitShortenedString( $string, $position, $width, $height, $size = $this->options->font->minFontSize ); + } + else + { + throw new ezcGraphFontRenderingException( $string, $this->options->font->minFontSize, $width, $height ); + } + } + + $this->options->font->minimalUsedFont = $size; + $this->strings[] = array( + 'text' => $result, + 'id' => $id = ( $this->options->idPrefix . 'TextBox_' . ++$this->elementID ), + 'position' => $textPosition, + 'width' => $width, + 'height' => $height, + 'align' => $align, + 'font' => $this->options->font, + 'rotation' => $rotation, + ); + + return $id; + } + + /** + * Guess text width for string + * + * The is no way to know the font or fontsize used by the SVG renderer to + * render the string. We assume some character width defined in the SVG + * driver options, tu guess the length of a string. We discern between + * numeric an non numeric strings, because we often use only numeric + * strings to display chart data and numbers tend to be a bit wider then + * characters. + * + * @param mixed $string + * @param mixed $size + * @access protected + * @return void + */ + protected function getTextWidth( $string, $size ) + { + switch ( strtolower( $this->options->encoding ) ) + { + case '': + case 'utf-8': + case 'utf-16': + $string = utf8_decode( $string ); + break; + } + + if ( is_numeric( $string ) ) + { + return $size * strlen( $string ) * $this->options->assumedNumericCharacterWidth; + } + else + { + return $size * strlen( $string ) * $this->options->assumedTextCharacterWidth; + } + } + + /** + * Encodes non-utf-8 strings + * + * Transforms non-utf-8 strings to their hex entities, because ext/DOM + * fails here with conversion errors. + * + * @param string $string + * @return string + */ + protected function encode( $string ) + { + $string = htmlspecialchars( $string ); + + switch ( strtolower( $this->options->encoding ) ) + { + case '': + case 'utf-8': + case 'utf-16': + return $string; + default: + // Manual escaping of non ANSII characters, because ext/DOM fails here + return preg_replace_callback( + '/[\\x80-\\xFF]/', + create_function( + '$char', + 'return sprintf( \'&#x%02x;\', ord( $char[0] ) );' + ), + $string + ); + } + } + + /** + * Draw all collected texts + * + * The texts are collected and their maximum possible font size is + * calculated. This function finally draws the texts on the image, this + * delayed drawing has two reasons: + * + * 1) This way the text strings are always on top of the image, what + * results in better readable texts + * 2) The maximum possible font size can be calculated for a set of texts + * with the same font configuration. Strings belonging to one chart + * element normally have the same font configuration, so that all texts + * belonging to one element will have the same font size. + * + * @access protected + * @return void + */ + protected function drawAllTexts() + { + $elementsRoot = $this->elements; + + foreach ( $this->strings as $text ) + { + // Add all text elements into one group + $group = $this->dom->createElement( 'g' ); + $group->setAttribute( 'id', $text['id'] ); + + if ( $text['rotation'] !== null ) + { + $group->setAttribute( 'transform', sprintf( 'rotate( %.2F %.4F %.4F )', + $text['rotation']->getRotation(), + $text['rotation']->getCenter()->x, + $text['rotation']->getCenter()->y + ) ); + } + + $group = $elementsRoot->appendChild( $group ); + + $size = $text['font']->minimalUsedFont; + $font = $text['font']->name; + + $completeHeight = count( $text['text'] ) * $size + ( count( $text['text'] ) - 1 ) * $this->options->lineSpacing; + + // Calculate y offset for vertical alignement + switch ( true ) + { + case ( $text['align'] & ezcGraph::BOTTOM ): + $yOffset = $text['height'] - $completeHeight; + break; + case ( $text['align'] & ezcGraph::MIDDLE ): + $yOffset = ( $text['height'] - $completeHeight ) / 2; + break; + case ( $text['align'] & ezcGraph::TOP ): + default: + $yOffset = 0; + break; + } + + $padding = $text['font']->padding + $text['font']->borderWidth / 2; + if ( $this->options->font->minimizeBorder === true ) + { + // Calculate maximum width of text rows + $width = false; + foreach ( $text['text'] as $line ) + { + $string = implode( ' ', $line ); + if ( ( $strWidth = $this->getTextBoundings( $size, $text['font'], $string )->width ) > $width ) + { + $width = $strWidth; + } + } + + switch ( true ) + { + case ( $text['align'] & ezcGraph::LEFT ): + $xOffset = 0; + break; + case ( $text['align'] & ezcGraph::CENTER ): + $xOffset = ( $text['width'] - $width ) / 2; + break; + case ( $text['align'] & ezcGraph::RIGHT ): + $xOffset = $text['width'] - $width; + break; + } + + $borderPolygonArray = array( + new ezcGraphCoordinate( + $text['position']->x - $padding + $xOffset, + $text['position']->y - $padding + $yOffset + ), + new ezcGraphCoordinate( + $text['position']->x + $padding * 2 + $xOffset + $width, + $text['position']->y - $padding + $yOffset + ), + new ezcGraphCoordinate( + $text['position']->x + $padding * 2 + $xOffset + $width, + $text['position']->y + $padding * 2 + $yOffset + $completeHeight + ), + new ezcGraphCoordinate( + $text['position']->x - $padding + $xOffset, + $text['position']->y + $padding * 2 + $yOffset + $completeHeight + ), + ); + } + else + { + $borderPolygonArray = array( + new ezcGraphCoordinate( + $text['position']->x - $padding, + $text['position']->y - $padding + ), + new ezcGraphCoordinate( + $text['position']->x + $padding * 2 + $text['width'], + $text['position']->y - $padding + ), + new ezcGraphCoordinate( + $text['position']->x + $padding * 2 + $text['width'], + $text['position']->y + $padding * 2 + $text['height'] + ), + new ezcGraphCoordinate( + $text['position']->x - $padding, + $text['position']->y + $padding * 2 + $text['height'] + ), + ); + } + + // Set elements root temporary to local text group to ensure + // background and border beeing elements of text group + $this->elements = $group; + if ( $text['font']->background !== false ) + { + $this->drawPolygon( + $borderPolygonArray, + $text['font']->background, + true + ); + } + else + { + // Always draw full tranparent background polygon as fallback, + // to be able to click on complete font space, not only on + // the text + $this->drawPolygon( + $borderPolygonArray, + ezcGraphColor::fromHex( '#FFFFFFFF' ), + true + ); + } + + if ( $text['font']->border !== false ) + { + $this->drawPolygon( + $borderPolygonArray, + $text['font']->border, + false, + $text['font']->borderWidth + ); + } + $this->elements = $elementsRoot; + + // Bottom line for SVG fonts is lifted a bit + $text['position']->y += $size * .85; + + // Render text with evaluated font size + foreach ( $text['text'] as $line ) + { + $string = implode( ' ', $line ); + + switch ( true ) + { + case ( $text['align'] & ezcGraph::LEFT ): + $position = new ezcGraphCoordinate( + $text['position']->x, + $text['position']->y + $yOffset + ); + break; + case ( $text['align'] & ezcGraph::RIGHT ): + $position = new ezcGraphCoordinate( + $text['position']->x + ( $text['width'] - $this->getTextBoundings( $size, $text['font'], $string )->width ), + $text['position']->y + $yOffset + ); + break; + case ( $text['align'] & ezcGraph::CENTER ): + $position = new ezcGraphCoordinate( + $text['position']->x + ( ( $text['width'] - $this->getTextBoundings( $size, $text['font'], $string )->width ) / 2 ), + $text['position']->y + $yOffset + ); + break; + } + + // Optionally draw text shadow + if ( $text['font']->textShadow === true ) + { + $textNode = $this->dom->createElement( 'text', $this->encode( $string ) ); + $textNode->setAttribute( 'id', $text['id'] . '_shadow' ); + $textNode->setAttribute( 'x', sprintf( '%.4F', $position->x + $this->options->graphOffset->x + $text['font']->textShadowOffset ) ); + $textNode->setAttribute( 'text-length', sprintf( '%.4Fpx', $this->getTextBoundings( $size, $text['font'], $string )->width ) ); + $textNode->setAttribute( 'y', sprintf( '%.4F', $position->y + $this->options->graphOffset->y + $text['font']->textShadowOffset ) ); + $textNode->setAttribute( + 'style', + sprintf( + 'font-size: %dpx; font-family: \'%s\'; fill: #%02x%02x%02x; fill-opacity: %.2F; stroke: none;', + $size, + $text['font']->name, + $text['font']->textShadowColor->red, + $text['font']->textShadowColor->green, + $text['font']->textShadowColor->blue, + 1 - ( $text['font']->textShadowColor->alpha / 255 ) + ) + ); + $group->appendChild( $textNode ); + } + + // Finally draw text + $textNode = $this->dom->createElement( 'text', $this->encode( $string ) ); + $textNode->setAttribute( 'id', $text['id'] . '_text' ); + $textNode->setAttribute( 'x', sprintf( '%.4F', $position->x + $this->options->graphOffset->x ) ); + $textNode->setAttribute( 'text-length', sprintf( '%.4Fpx', $this->getTextBoundings( $size, $text['font'], $string )->width ) ); + $textNode->setAttribute( 'y', sprintf( '%.4F', $position->y + $this->options->graphOffset->y ) ); + $textNode->setAttribute( + 'style', + sprintf( + 'font-size: %dpx; font-family: \'%s\'; fill: #%02x%02x%02x; fill-opacity: %.2F; stroke: none;', + $size, + $text['font']->name, + $text['font']->color->red, + $text['font']->color->green, + $text['font']->color->blue, + 1 - ( $text['font']->color->alpha / 255 ) + ) + ); + $group->appendChild( $textNode ); + + $text['position']->y += $size + $size * $this->options->lineSpacing; + } + } + } + + /** + * Draws a sector of cirlce + * + * @param ezcGraphCoordinate $center Center of circle + * @param mixed $width Width + * @param mixed $height Height + * @param mixed $startAngle Start angle of circle sector + * @param mixed $endAngle End angle of circle sector + * @param ezcGraphColor $color Color + * @param mixed $filled Filled; + * @return void + */ + public function drawCircleSector( ezcGraphCoordinate $center, $width, $height, $startAngle, $endAngle, ezcGraphColor $color, $filled = true ) + { + $this->createDocument(); + + // Normalize angles + if ( $startAngle > $endAngle ) + { + $tmp = $startAngle; + $startAngle = $endAngle; + $endAngle = $tmp; + } + + if ( ( $endAngle - $startAngle ) >= 360 ) + { + return $this->drawCircle( $center, $width, $height, $color, $filled ); + } + + // We need the radius + $width /= 2; + $height /= 2; + + // Apply offset to copy of center coordinate + $center = clone $center; + $center->x += $this->options->graphOffset->x; + $center->y += $this->options->graphOffset->y; + + if ( $filled ) + { + $Xstart = $center->x + $width * cos( -deg2rad( $startAngle ) ); + $Ystart = $center->y + $height * sin( deg2rad( $startAngle ) ); + $Xend = $center->x + $width * cos( ( -deg2rad( $endAngle ) ) ); + $Yend = $center->y + $height * sin( ( deg2rad( $endAngle ) ) ); + + $arc = $this->dom->createElement( 'path' ); + $arc->setAttribute( 'd', sprintf( 'M %.2F,%.2F L %.2F,%.2F A %.2F,%.2F 0 %d,1 %.2F,%.2F z', + // Middle + $center->x, $center->y, + // Startpoint + $Xstart, $Ystart, + // Radius + $width, $height, + // SVG-Stuff + ( $endAngle - $startAngle ) > 180, + // Endpoint + $Xend, $Yend + ) + ); + + $arc->setAttribute( + 'style', + $this->getStyle( $color, $filled, 1 ) + ); + $arc->setAttribute( 'id', $id = ( $this->options->idPrefix . 'CircleSector_' . ++$this->elementID ) ); + $this->elements->appendChild( $arc ); + return $id; + } + else + { + try + { + $reduced = $this->reduceEllipseSize( $center, $width * 2, $height * 2, $startAngle, $endAngle, .5 ); + } + catch ( ezcGraphReducementFailedException $e ) + { + return false; + } + + $arc = $this->dom->createElement( 'path' ); + $arc->setAttribute( 'd', sprintf( 'M %.2F,%.2F L %.2F,%.2F A %.2F,%.2F 0 %d,1 %.2F,%.2F z', + // Middle + $reduced['center']->x, $reduced['center']->y, + // Startpoint + $reduced['start']->x, $reduced['start']->y, + // Radius + $width - .5, $height - .5, + // SVG-Stuff + ( $endAngle - $startAngle ) > 180, + // Endpoint + $reduced['end']->x, $reduced['end']->y + ) + ); + + $arc->setAttribute( + 'style', + $this->getStyle( $color, $filled, 1 ) + ); + + $arc->setAttribute( 'id', $id = ( $this->options->idPrefix . 'CircleSector_' . ++$this->elementID ) ); + $this->elements->appendChild( $arc ); + + return $id; + } + } + + /** + * Draws a circular arc + * + * @param ezcGraphCoordinate $center Center of ellipse + * @param integer $width Width of ellipse + * @param integer $height Height of ellipse + * @param integer $size Height of border + * @param float $startAngle Starting angle of circle sector + * @param float $endAngle Ending angle of circle sector + * @param ezcGraphColor $color Color of Border + * @param bool $filled + * @return void + */ + public function drawCircularArc( ezcGraphCoordinate $center, $width, $height, $size, $startAngle, $endAngle, ezcGraphColor $color, $filled = true ) + { + $this->createDocument(); + + // Normalize angles + if ( $startAngle > $endAngle ) + { + $tmp = $startAngle; + $startAngle = $endAngle; + $endAngle = $tmp; + } + + if ( ( $endAngle - $startAngle > 180 ) || + ( ( $startAngle % 180 != 0) && ( $endAngle % 180 != 0) && ( ( $startAngle % 360 > 180 ) XOR ( $endAngle % 360 > 180 ) ) ) ) + { + // Border crosses he 180 degrees border + $intersection = floor( $endAngle / 180 ) * 180; + while ( $intersection >= $endAngle ) + { + $intersection -= 180; + } + + $this->drawCircularArc( $center, $width, $height, $size, $startAngle, $intersection, $color, $filled ); + $this->drawCircularArc( $center, $width, $height, $size, $intersection, $endAngle, $color, $filled ); + return; + } + + // We need the radius + $width /= 2; + $height /= 2; + + $Xstart = $center->x + $this->options->graphOffset->x + $width * cos( -deg2rad( $startAngle ) ); + $Ystart = $center->y + $this->options->graphOffset->y + $height * sin( deg2rad( $startAngle ) ); + $Xend = $center->x + $this->options->graphOffset->x + $width * cos( ( -deg2rad( $endAngle ) ) ); + $Yend = $center->y + $this->options->graphOffset->y + $height * sin( ( deg2rad( $endAngle ) ) ); + + if ( $filled === true ) + { + $arc = $this->dom->createElement( 'path' ); + $arc->setAttribute( 'd', sprintf( 'M %.2F,%.2F A %.2F,%.2F 0 %d,0 %.2F,%.2F L %.2F,%.2F A %.2F,%2F 0 %d,1 %.2F,%.2F z', + // Endpoint low + $Xend, $Yend + $size, + // Radius + $width, $height, + // SVG-Stuff + ( $endAngle - $startAngle ) > 180, + // Startpoint low + $Xstart, $Ystart + $size, + // Startpoint + $Xstart, $Ystart, + // Radius + $width, $height, + // SVG-Stuff + ( $endAngle - $startAngle ) > 180, + // Endpoint + $Xend, $Yend + ) + ); + } + else + { + $arc = $this->dom->createElement( 'path' ); + $arc->setAttribute( 'd', sprintf( 'M %.2F,%.2F A %.2F,%.2F 0 %d,1 %.2F,%.2F', + // Startpoint + $Xstart, $Ystart, + // Radius + $width, $height, + // SVG-Stuff + ( $endAngle - $startAngle ) > 180, + // Endpoint + $Xend, $Yend + ) + ); + } + + $arc->setAttribute( + 'style', + $this->getStyle( $color, $filled ) + ); + + $arc->setAttribute( 'id', $id = ( $this->options->idPrefix . 'CircularArc_' . ++$this->elementID ) ); + $this->elements->appendChild( $arc ); + + if ( ( $this->options->shadeCircularArc !== false ) && + $filled ) + { + $gradient = new ezcGraphLinearGradient( + new ezcGraphCoordinate( + $center->x - $width, + $center->y + ), + new ezcGraphCoordinate( + $center->x + $width, + $center->y + ), + ezcGraphColor::fromHex( '#FFFFFF' )->transparent( $this->options->shadeCircularArc * 1.5 ), + ezcGraphColor::fromHex( '#000000' )->transparent( $this->options->shadeCircularArc ) + ); + + $arc = $this->dom->createElement( 'path' ); + $arc->setAttribute( 'd', sprintf( 'M %.2F,%.2F A %.2F,%.2F 0 %d,0 %.2F,%.2F L %.2F,%.2F A %.2F,%2F 0 %d,1 %.2F,%.2F z', + // Endpoint low + $Xend, $Yend + $size, + // Radius + $width, $height, + // SVG-Stuff + ( $endAngle - $startAngle ) > 180, + // Startpoint low + $Xstart, $Ystart + $size, + // Startpoint + $Xstart, $Ystart, + // Radius + $width, $height, + // SVG-Stuff + ( $endAngle - $startAngle ) > 180, + // Endpoint + $Xend, $Yend + ) + ); + + $arc->setAttribute( + 'style', + $this->getStyle( $gradient, $filled ) + ); + $arc->setAttribute( 'id', $id = ( $this->options->idPrefix . 'CircularArc_' . ++$this->elementID ) ); + + $this->elements->appendChild( $arc ); + } + + return $id; + } + + /** + * Draw circle + * + * @param ezcGraphCoordinate $center Center of ellipse + * @param mixed $width Width of ellipse + * @param mixed $height height of ellipse + * @param ezcGraphColor $color Color + * @param mixed $filled Filled + * @return void + */ + public function drawCircle( ezcGraphCoordinate $center, $width, $height, ezcGraphColor $color, $filled = true ) + { + $this->createDocument(); + + $ellipse = $this->dom->createElement( 'ellipse' ); + $ellipse->setAttribute( 'cx', sprintf( '%.4F', $center->x + $this->options->graphOffset->x ) ); + $ellipse->setAttribute( 'cy', sprintf( '%.4F', $center->y + $this->options->graphOffset->y ) ); + $ellipse->setAttribute( 'rx', sprintf( '%.4F', $width / 2 - ( $filled ? 0 : .5 ) ) ); + $ellipse->setAttribute( 'ry', sprintf( '%.4F', $height / 2 - ( $filled ? 0 : .5 ) ) ); + + $ellipse->setAttribute( + 'style', + $this->getStyle( $color, $filled, 1 ) + ); + + $ellipse->setAttribute( 'id', $id = ( $this->options->idPrefix . 'Circle_' . ++$this->elementID ) ); + $this->elements->appendChild( $ellipse ); + + return $id; + } + + /** + * Draw an image + * + * The image will be inlined in the SVG document using data URL scheme. For + * this the mime type and base64 encoded file content will be merged to + * URL. + * + * @param mixed $file Image file + * @param ezcGraphCoordinate $position Top left position + * @param mixed $width Width of image in destination image + * @param mixed $height Height of image in destination image + * @return void + */ + public function drawImage( $file, ezcGraphCoordinate $position, $width, $height ) + { + $this->createDocument(); + + $data = getimagesize( $file ); + $image = $this->dom->createElement( 'image' ); + + $image->setAttribute( 'x', sprintf( '%.4F', $position->x + $this->options->graphOffset->x ) ); + $image->setAttribute( 'y', sprintf( '%.4F', $position->y + $this->options->graphOffset->y ) ); + $image->setAttribute( 'width', sprintf( '%.4Fpx', $width ) ); + $image->setAttribute( 'height', sprintf( '%.4Fpx', $height ) ); + $image->setAttributeNS( + 'http://www.w3.org/1999/xlink', + 'xlink:href', + sprintf( 'data:%s;base64,%s', + $data['mime'], + base64_encode( file_get_contents( $file ) ) + ) + ); + + $this->elements->appendChild( $image ); + $image->setAttribute( 'id', $id = ( $this->options->idPrefix . 'Image_' . ++$this->elementID ) ); + + return $id; + } + + /** + * Return mime type for current image format + * + * @return string + */ + public function getMimeType() + { + return 'image/svg+xml'; + } + + /** + * Render image directly to output + * + * The method renders the image directly to the standard output. You + * normally do not want to use this function, because it makes it harder + * to proper cache the generated graphs. + * + * @return void + */ + public function renderToOutput() + { + $this->createDocument(); + $this->drawAllTexts(); + + header( 'Content-Type: ' . $this->getMimeType() ); + echo $this->dom->saveXML(); + } + + /** + * Finally save image + * + * @param string $file Destination filename + * @return void + */ + public function render( $file ) + { + $this->createDocument(); + $this->drawAllTexts(); + + // Embed used glyphs + $this->font->addFontToDocument( $this->dom ); + $this->dom->save( $file ); + } + + /** + * Get resource of rendered result + * + * Return the resource of the rendered result. You should not use this + * method before you called either renderToOutput() or render(), as the + * image may not be completely rendered until then. + * + * @return DOMDocument + */ + public function getResource() + { + return $this->dom; + } +} + +?> diff --git a/include/ezcomponents/Graph/src/driver/svg_font.php b/include/ezcomponents/Graph/src/driver/svg_font.php new file mode 100644 index 000000000..eb1d332c8 --- /dev/null +++ b/include/ezcomponents/Graph/src/driver/svg_font.php @@ -0,0 +1,299 @@ +`. + * + * Usage: + * + * $font = new ezcGraphSvgFont(); + * var_dump( + * $font->calculateStringWidth( '../tests/data/font.svg', 'Just a test string.' ), + * $font->calculateStringWidth( '../tests/data/font2.svg', 'Just a test string.' ) + * ); + * + * + * @version 1.3 + * @package Graph + * @mainclass + */ +class ezcGraphSvgFont +{ + /** + * Units per EM + * + * @var float + */ + protected $unitsPerEm; + + /** + * Used glyphs + * + * @var array + */ + protected $usedGlyphs = array(); + + /** + * Cache for glyph size to save XPath lookups. + * + * @var array + */ + protected $glyphCache = array(); + + /** + * Used kernings + * + * @var array + */ + protected $usedKerns = array(); + + /** + * Path to font + * + * @var string + */ + protected $fonts = array(); + + /** + * Initialize SVG font + * + * Loads the SVG font $filename. This should be the path to the file + * generated by ttf2svg. + * + * Returns the (normlized) name of the initilized font. + * + * @param string $fontPath + * @return string + */ + protected function initializeFont( $fontPath ) + { + $fontPath = realpath( $fontPath ); + if ( isset( $this->fonts[$fontPath] ) ) + { + return $fontPath; + } + + // Check for existance of font file + if ( !is_file( $fontPath ) || !is_readable( $fontPath ) ) + { + throw new ezcBaseFileNotFoundException( $fontPath ); + } + + $this->fonts[$fontPath] = simplexml_load_file( $fontPath )->defs->font; + + // SimpleXML requires us to register a namespace for XPath to work + $this->fonts[$fontPath]->registerXPathNamespace( 'svg', 'http://www.w3.org/2000/svg' ); + + // Extract the number of units per Em + $this->unitsPerEm[$fontPath] = (int) $this->fonts[$fontPath]->{'font-face'}['units-per-em']; + + return $fontPath; + } + + /** + * Get name of font + * + * Get the name of the given font, by extracting its font family from the + * SVG font file. + * + * @param string $fontPath + * @return string + */ + public static function getFontName( $fontPath ) + { + $font = simplexml_load_file( $fontPath )->defs->font; + + // SimpleXML requires us to register a namespace for XPath to work + $font->registerXPathNamespace( 'svg', 'http://www.w3.org/2000/svg' ); + + // Extract the font family name + return (string) $font->{'font-face'}['font-family']; + } + + /** + * XPath has no standard means of escaping ' and ", with the only solution + * being to delimit your string with the opposite type of quote. ( And if + * your string contains both concat( ) it ). + * + * This method will correctly delimit $char with the appropriate quote type + * so that it can be used in an XPath expression. + * + * @param string $char + * @return string + */ + protected static function xpathEscape( $char ) + { + return "'" . str_replace( + array( '\'', '\\' ), + array( '\\\'', '\\\\' ), + $char ) . "'"; + } + + /** + * Returns the associated with $char. + * + * @param string $fontPath + * @param string $char + * @return float + */ + protected function getGlyph( $fontPath, $char ) + { + // Check if glyphwidth has already been calculated. + if ( isset( $this->glyphCache[$fontPath][$char] ) ) + { + return $this->glyphCache[$fontPath][$char]; + } + + $matches = $this->fonts[$fontPath]->xpath( + $query = "glyph[@unicode=" . self::xpathEscape( $char ) . "]" + ); + + if ( count( $matches ) === 0 ) + { + // Just ignore missing glyphs. The client will still render them + // using a default font. We try to estimate some width by using a + // common other character. + return $this->glyphCache[$fontPath][$char] = + ( $char === 'o' ? false : $this->getGlyph( $fontPath, 'o' ) ); + } + + $glyph = $matches[0]; + if ( !in_array( $glyph, $this->usedGlyphs ) ) + { + $this->usedGlyphs[$fontPath][] = $glyph; + } + + // There should only ever be one match + return $this->glyphCache[$fontPath][$char] = $glyph; + } + + /** + * Returns the amount of kerning to apply for glyphs $g1 and $g2. If no + * valid kerning pair can be found 0 is returned. + * + * @param string $fontPath + * @param SimpleXMLElement $g1 + * @param SimpleXMLElement $g2 + * @return int + */ + public function getKerning( $fontPath, SimpleXMLElement $glyph1, SimpleXMLElement $glyph2 ) + { + // Get the glyph names + $g1Name = self::xpathEscape( ( string ) $glyph1['glyph-name'] ); + $g2Name = self::xpathEscape( ( string ) $glyph2['glyph-name'] ); + + // Get the unicode character names + $g1Uni = self::xpathEscape( ( string ) $glyph1['unicode'] ); + $g2Uni = self::xpathEscape( ( string ) $glyph2['unicode'] ); + + // Search for kerning pairs + $pair = $this->fonts[$fontPath]->xpath( + "svg:hkern[( @g1=$g1Name and @g2=$g2Name ) + or + ( @u1=$g1Uni and @g2=$g2Uni )]" + ); + + // If we found anything return it + if ( count( $pair ) ) + { + if ( !in_array( $pair[0], $this->usedKerns ) ) + { + $this->usedKerns[$fontPath][] = $pair[0]; + } + + return ( int ) $pair[0]['k']; + } + else + { + return 0; + } + } + + /** + * Calculates the width of $string in the current font in Em's. + * + * @param string $fontPath + * @param string $string + * @return float + */ + public function calculateStringWidth( $fontPath, $string ) + { + // Ensure font is properly initilized + $fontPath = $this->initializeFont( $fontPath ); + + $strlen = strlen( $string ); + $prevCharInfo = null; + $length = 0; + // @TODO: Add UTF-8 support here - iterating over the bytes does not + // really help. + for ( $i = 0; $i < $strlen; ++$i ) + { + // Find the font information for the character + $charInfo = $this->getGlyph( $fontPath, $string[$i] ); + + // Handle missing glyphs + if ( $charInfo === false ) + { + $prevCharInfo = null; + $length .= .5 * $this->unitsPerEm[$fontPath]; + continue; + } + + // Add the horizontal advance for the character to the length + $length += (float) $charInfo['horiz-adv-x']; + + // If we are not the first character, look for kerning pairs + if ( $prevCharInfo !== null ) + { + // Apply kerning (if any) + $length -= $this->getKerning( $fontPath, $prevCharInfo, $charInfo ); + } + + $prevCharInfo = clone $charInfo; + } + + // Divide by _unitsPerEm to get the length in Em + return (float) $length / $this->unitsPerEm[$fontPath]; + } + + /** + * Add font definitions to SVG document + * + * Add the SVG font definition paths for all used glyphs and kernings to + * the given SVG document. + * + * @param DOMDocument $document + * @return void + */ + public function addFontToDocument( DOMDocument $document ) + { + $defs = $document->getElementsByTagName( 'defs' )->item( 0 ); + + $fontNr = 0; + foreach ( $this->fonts as $path => $definition ) + { + // Just import complete font for now. + // @TODO: Only import used characters. + $font = dom_import_simplexml( $definition ); + $font = $document->importNode( $font, true ); + $font->setAttribute( 'id', 'Font' . ++$fontNr ); + + $defs->appendChild( $font ); + } + } +} + +?> diff --git a/include/ezcomponents/Graph/src/driver/verbose.php b/include/ezcomponents/Graph/src/driver/verbose.php new file mode 100644 index 000000000..788a77f40 --- /dev/null +++ b/include/ezcomponents/Graph/src/driver/verbose.php @@ -0,0 +1,242 @@ +options = new ezcGraphSvgDriverOptions( $options ); + echo "\n"; + } + + /** + * Draws a single polygon + * + * @param array $points + * @param ezcGraphColor $color + * @param bool $filled + * @param float $thickness + * @return void + */ + public function drawPolygon( array $points, ezcGraphColor $color, $filled = true, $thickness = 1. ) + { + $pointString = ''; + foreach ( $points as $point ) + { + $pointString .= sprintf( "\t( %.2f, %.2f )\n", $point->x, $point->y ); + } + + printf( "% 4d: Draw %spolygon:\n%s", + $this->call++, + ( $filled ? 'filled ' : '' ), + $pointString + ); + } + + /** + * Draws a single line + * + * @param ezcGraphCoordinate $start + * @param ezcGraphCoordinate $end + * @param ezcGraphColor $color + * @param float $thickness + * @return void + */ + public function drawLine( ezcGraphCoordinate $start, ezcGraphCoordinate $end, ezcGraphColor $color, $thickness = 1. ) + { + printf( "% 4d: Draw line from ( %.2f, %.2f ) to ( %.2f, %.2f ) with thickness %d.\n", + $this->call++, + $start->x, + $start->y, + $end->x, + $end->y, + $thickness + ); + } + + /** + * Returns boundings of text depending on the available font extension + * + * @param float $size Textsize + * @param ezcGraphFontOptions $font Font + * @param string $text Text + * @return ezcGraphBoundings Boundings of text + */ + protected function getTextBoundings( $size, ezcGraphFontOptions $font, $text ) + { + return null; + } + + /** + * Wrties text in a box of desired size + * + * @param mixed $string + * @param ezcGraphCoordinate $position + * @param mixed $width + * @param mixed $height + * @param int $align + * @param ezcGraphRotation $rotation + * @return void + */ + public function drawTextBox( $string, ezcGraphCoordinate $position, $width, $height, $align, ezcGraphRotation $rotation = null ) + { + printf( "% 4d: Draw text '%s' at ( %.2f, %.2f ) with dimensions ( %d, %d ) and alignement %d.\n", + $this->call++, + $string, + $position->x, + $position->y, + $width, + $height, + $align + ); + } + /** + * Draws a sector of cirlce + * + * @param ezcGraphCoordinate $center + * @param mixed $width + * @param mixed $height + * @param mixed $startAngle + * @param mixed $endAngle + * @param ezcGraphColor $color + * @param bool $filled + * @return void + */ + public function drawCircleSector( ezcGraphCoordinate $center, $width, $height, $startAngle, $endAngle, ezcGraphColor $color, $filled = true ) + { + printf( "% 4d: Draw %scicle sector at ( %.2f, %.2f ) with dimensions ( %d, %d ) from %.2f to %.2f.\n", + $this->call++, + ( $filled ? 'filled ' : '' ), + $center->x, + $center->y, + $width, + $height, + $startAngle, + $endAngle + ); + } + + /** + * Draws a circular arc + * + * @param ezcGraphCoordinate $center Center of ellipse + * @param integer $width Width of ellipse + * @param integer $height Height of ellipse + * @param integer $size Height of border + * @param float $startAngle Starting angle of circle sector + * @param float $endAngle Ending angle of circle sector + * @param ezcGraphColor $color Color of Border + * @param bool $filled + * @return void + */ + public function drawCircularArc( ezcGraphCoordinate $center, $width, $height, $size, $startAngle, $endAngle, ezcGraphColor $color, $filled = true ) + { + printf( "% 4d: Draw circular arc at ( %.2f, %.2f ) with dimensions ( %d, %d ) and size %.2f from %.2f to %.2f.\n", + $this->call++, + $center->x, + $center->y, + $width, + $height, + $size, + $startAngle, + $endAngle + ); + } + + /** + * Draws a circle + * + * @param ezcGraphCoordinate $center + * @param mixed $width + * @param mixed $height + * @param ezcGraphColor $color + * @param bool $filled + * + * @return void + */ + public function drawCircle( ezcGraphCoordinate $center, $width, $height, ezcGraphColor $color, $filled = true ) + { + printf( "% 4d: Draw %scircle at ( %.2f, %.2f ) with dimensions ( %d, %d ).\n", + $this->call++, + ( $filled ? 'filled ' : '' ), + $center->x, + $center->y, + $width, + $height + ); + } + + /** + * Draws a imagemap of desired size + * + * @param mixed $file + * @param ezcGraphCoordinate $position + * @param mixed $width + * @param mixed $height + * @return void + */ + public function drawImage( $file, ezcGraphCoordinate $position, $width, $height ) + { + printf( "% 4d: Draw image '%s' at ( %.2f, %.2f ) with dimensions ( %d, %d ).\n", + $this->call++, + $file, + $position->x, + $position->y, + $width, + $height + ); + } + + /** + * Return mime type for current image format + * + * @return string + */ + public function getMimeType() + { + return 'text/plain'; + } + + /** + * Finally save image + * + * @param mixed $file + * @return void + */ + public function render ( $file ) + { + printf( "Render image.\n" ); + } +} + +?> diff --git a/include/ezcomponents/Graph/src/element/axis.php b/include/ezcomponents/Graph/src/element/axis.php new file mode 100644 index 000000000..9d5bbbd31 --- /dev/null +++ b/include/ezcomponents/Graph/src/element/axis.php @@ -0,0 +1,438 @@ +properties['nullPosition'] = false; + $this->properties['axisSpace'] = .1; + $this->properties['majorGrid'] = false; + $this->properties['minorGrid'] = false; + $this->properties['majorStep'] = null; + $this->properties['minorStep'] = null; + $this->properties['formatString'] = '%s'; + $this->properties['label'] = false; + $this->properties['labelSize'] = 14; + $this->properties['labelMargin'] = 2; + $this->properties['minArrowHeadSize'] = 4; + $this->properties['maxArrowHeadSize'] = 8; + $this->properties['labelCallback'] = null; + $this->properties['chartPosition'] = null; + $this->properties['initialized'] = false; + + parent::__construct( $options ); + + if ( !isset( $this->axisLabelRenderer ) ) + { + $this->axisLabelRenderer = new ezcGraphAxisExactLabelRenderer(); + } + } + + /** + * Set colors and border fro this element + * + * @param ezcGraphPalette $palette Palette + * @return void + */ + public function setFromPalette( ezcGraphPalette $palette ) + { + $this->border = $palette->axisColor; + $this->padding = $palette->padding; + $this->margin = $palette->margin; + $this->majorGrid = $palette->majorGridColor; + $this->minorGrid = $palette->minorGridColor; + } + + /** + * __set + * + * @param mixed $propertyName + * @param mixed $propertyValue + * @throws ezcBaseValueException + * If a submitted parameter was out of range or type. + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @return void + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case 'nullPosition': + $this->properties['nullPosition'] = (float) $propertyValue; + break; + case 'axisSpace': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) || + ( $propertyValue > 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, '0 <= float <= 1' ); + } + + $this->properties['axisSpace'] = (float) $propertyValue; + break; + case 'majorGrid': + $this->properties['majorGrid'] = ezcGraphColor::create( $propertyValue ); + break; + case 'minorGrid': + $this->properties['minorGrid'] = ezcGraphColor::create( $propertyValue ); + break; + case 'majorStep': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue <= 0 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'float > 0' ); + } + + $this->properties['majorStep'] = (float) $propertyValue; + break; + case 'minorStep': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue <= 0 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'float > 0' ); + } + + $this->properties['minorStep'] = (float) $propertyValue; + break; + case 'formatString': + $this->properties['formatString'] = (string) $propertyValue; + break; + case 'label': + $this->properties['label'] = (string) $propertyValue; + break; + case 'labelSize': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue <= 6 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int >= 6' ); + } + + $this->properties['labelSize'] = (int) $propertyValue; + break; + case 'labelMargin': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue <= 0 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int >= 0' ); + } + + $this->properties['labelMargin'] = (int) $propertyValue; + break; + case 'maxArrowHeadSize': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue <= 0 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int >= 0' ); + } + + $this->properties['maxArrowHeadSize'] = (int) $propertyValue; + break; + case 'minArrowHeadSize': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue <= 0 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int >= 0' ); + } + + $this->properties['minArrowHeadSize'] = (int) $propertyValue; + break; + case 'axisLabelRenderer': + if ( $propertyValue instanceof ezcGraphAxisLabelRenderer ) + { + $this->axisLabelRenderer = $propertyValue; + } + else + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'ezcGraphAxisLabelRenderer' ); + } + break; + case 'labelCallback': + if ( is_callable( $propertyValue ) ) + { + $this->properties['labelCallback'] = $propertyValue; + } + else + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'callback function' ); + } + break; + case 'chartPosition': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) || + ( $propertyValue > 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, '0 <= float <= 1' ); + } + + $this->properties['chartPosition'] = (float) $propertyValue; + break; + default: + parent::__set( $propertyName, $propertyValue ); + break; + } + } + + /** + * __get + * + * @param mixed $propertyName + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @return mixed + * @ignore + */ + public function __get( $propertyName ) + { + switch ( $propertyName ) + { + case 'axisLabelRenderer': + return $this->axisLabelRenderer; + default: + return parent::__get( $propertyName ); + } + } + + /** + * Get coordinate for a dedicated value on the chart + * + * @param float $value Value to determine position for + * @return float Position on chart + */ + abstract public function getCoordinate( $value ); + + /** + * Return count of minor steps + * + * @return integer Count of minor steps + */ + abstract public function getMinorStepCount(); + + /** + * Return count of major steps + * + * @return integer Count of major steps + */ + abstract public function getMajorStepCount(); + + /** + * Get label for a dedicated step on the axis + * + * @param integer $step Number of step + * @return string label + */ + abstract public function getLabel( $step ); + + /** + * Return array of steps on this axis + * + * @return array( ezcGraphAxisStep ) + */ + public function getSteps() + { + $majorSteps = $this->getMajorStepCount(); + $minorStepsPerMajorStepCount = ( $this->getMinorStepCount() / $majorSteps ); + + $majorStepSize = 1 / $majorSteps; + $minorStepSize = ( $minorStepsPerMajorStepCount > 0 ? $majorStepSize / $minorStepsPerMajorStepCount : 0 ); + + $steps = array(); + for ( $major = 0; $major <= $majorSteps; ++$major ) + { + $majorStep = new ezcGraphAxisStep( + $majorStepSize * $major, + $majorStepSize, + $this->getLabel( $major ), + array(), + $this->isZeroStep( $major ), + ( $major === $majorSteps ) + ); + + if ( ( $minorStepsPerMajorStepCount > 0 ) && + ( $major < $majorSteps ) ) + { + // Do not add minor steps at major steps positions + for( $minor = 1; $minor < $minorStepsPerMajorStepCount; ++$minor ) + { + $majorStep->childs[] = new ezcGraphAxisStep( + ( $majorStepSize * $major ) + ( $minorStepSize * $minor ), + $minorStepSize + ); + } + } + + $steps[] = $majorStep; + } + + return $steps; + } + + /** + * Is zero step + * + * Returns true if the given step is the one on the initial axis position + * + * @param int $step Number of step + * @return bool Status If given step is initial axis position + */ + abstract public function isZeroStep( $step ); + + /** + * Add data for this axis + * + * @param array $values + * @return void + */ + abstract public function addData( array $values ); + + /** + * Calculate axis bounding values on base of the assigned values + * + * @abstract + * @access public + * @return void + */ + abstract public function calculateAxisBoundings(); + + /** + * Render the axis + * + * @param ezcGraphRenderer $renderer Renderer + * @param ezcGraphBoundings $boundings Boundings for the axis + * @return ezcGraphBoundings Remaining boundings + */ + public function render( ezcGraphRenderer $renderer, ezcGraphBoundings $boundings ) + { + switch ( $this->position ) + { + case ezcGraph::TOP: + $start = new ezcGraphCoordinate( + ( $boundings->x1 - $boundings->x0 ) * $this->axisSpace + + $this->nullPosition * ( $boundings->x1 - $boundings->x0 ) * ( 1 - 2 * $this->axisSpace ), + 0 + ); + $end = new ezcGraphCoordinate( + ( $boundings->x1 - $boundings->x0 ) * $this->axisSpace + + $this->nullPosition * ( $boundings->x1 - $boundings->x0 ) * ( 1 - 2 * $this->axisSpace ), + $boundings->y1 - $boundings->y0 + ); + break; + case ezcGraph::BOTTOM: + $start = new ezcGraphCoordinate( + ( $boundings->x1 - $boundings->x0 ) * $this->axisSpace + + $this->nullPosition * ( $boundings->x1 - $boundings->x0 ) * ( 1 - 2 * $this->axisSpace ), + $boundings->y1 - $boundings->y0 + ); + $end = new ezcGraphCoordinate( + ( $boundings->x1 - $boundings->x0 ) * $this->axisSpace + + $this->nullPosition * ( $boundings->x1 - $boundings->x0 ) * ( 1 - 2 * $this->axisSpace ), + 0 + ); + break; + case ezcGraph::LEFT: + $start = new ezcGraphCoordinate( + 0, + ( $boundings->y1 - $boundings->y0 ) * $this->axisSpace + + $this->nullPosition * ( $boundings->y1 - $boundings->y0 ) * ( 1 - 2 * $this->axisSpace ) + ); + $end = new ezcGraphCoordinate( + $boundings->x1 - $boundings->x0, + ( $boundings->y1 - $boundings->y0 ) * $this->axisSpace + + $this->nullPosition * ( $boundings->y1 - $boundings->y0 ) * ( 1 - 2 * $this->axisSpace ) + ); + break; + case ezcGraph::RIGHT: + $start = new ezcGraphCoordinate( + $boundings->x1 - $boundings->x0, + ( $boundings->y1 - $boundings->y0 ) * $this->axisSpace + + $this->nullPosition * ( $boundings->y1 - $boundings->y0 ) * ( 1 - 2 * $this->axisSpace ) + ); + $end = new ezcGraphCoordinate( + 0, + ( $boundings->y1 - $boundings->y0 ) * $this->axisSpace + + $this->nullPosition * ( $boundings->y1 - $boundings->y0 ) * ( 1 - 2 * $this->axisSpace ) + ); + break; + } + + $renderer->drawAxis( + $boundings, + $start, + $end, + $this, + $this->axisLabelRenderer + ); + + return $boundings; + } +} + +?> diff --git a/include/ezcomponents/Graph/src/element/background.php b/include/ezcomponents/Graph/src/element/background.php new file mode 100644 index 000000000..92ec810de --- /dev/null +++ b/include/ezcomponents/Graph/src/element/background.php @@ -0,0 +1,202 @@ + + * $chart->background->image = 'background.png'; + * + * // Image will be repeated horizontal at the top of the background + * $chart->background->repeat = ezcGraph::HORIZONTAL; + * $chart->background->postion = ezcGraph::TOP; + * + * // Image will be placed once in the center + * $chart->background->repeat = ezcGraph::NO_REPEAT; // default; + * $chart->background->position = ezcGraph::CENTER | ezcGraph::MIDDLE; + * + * // Image will be repeated all over + * $chart->background->repeat = ezcGraph::HORIZONTAL | ezcGraph::VERTICAL; + * // The position is not relevant here. + * + * + * @property string $image + * Filename of the file to use for background + * @property int $repeat + * Defines how the background image gets repeated + * + * @version 1.3 + * @package Graph + * @mainclass + */ +class ezcGraphChartElementBackground extends ezcGraphChartElement +{ + + /** + * Constructor + * + * @param array $options Default option array + * @return void + * @ignore + */ + public function __construct( array $options = array() ) + { + $this->properties['image'] = false; + $this->properties['repeat'] = ezcGraph::NO_REPEAT; + + parent::__construct( $options ); + } + + /** + * __set + * + * @param mixed $propertyName + * @param mixed $propertyValue + * @throws ezcBaseValueException + * If a submitted parameter was out of range or type. + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @return void + * @ignore + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case 'image': + // Check for existance of file + if ( !is_file( $propertyValue ) || !is_readable( $propertyValue ) ) + { + throw new ezcBaseFileNotFoundException( $propertyValue ); + } + + // Check for beeing an image file + $data = getImageSize( $propertyValue ); + if ( $data === false ) + { + throw new ezcGraphInvalidImageFileException( $propertyValue ); + } + + // SWF files are useless.. + if ( $data[2] === 4 ) + { + throw new ezcGraphInvalidImageFileException( 'We cant use SWF files like <' . $propertyValue . '>.' ); + } + + $this->properties['image'] = $propertyValue; + break; + case 'repeat': + if ( ( $propertyValue >= 0 ) && ( $propertyValue <= 3 ) ) + { + $this->properties['repeat'] = (int) $propertyValue; + } + else + { + throw new ezcBaseValueException( $propertyName, $propertyValue, '0 <= int <= 3' ); + } + break; + case 'position': + // Overwrite parent position setter, to be able to use + // combination of positions like + // ezcGraph::TOP | ezcGraph::CENTER + if ( is_int( $propertyValue ) ) + { + $this->properties['position'] = $propertyValue; + } + else + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'integer' ); + } + break; + case 'color': + // Use color as an alias to set background color for background + $this->__set( 'background', $propertyValue ); + break; + default: + return parent::__set( $propertyName, $propertyValue ); + } + } + + /** + * __get + * + * @param mixed $propertyName + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @return mixed + * @ignore + */ + public function __get( $propertyName ) + { + switch ( $propertyName ) + { + case 'color': + // Use color as an alias to set background color for background + return $this->properties['background']; + default: + return parent::__get( $propertyName ); + } + } + + /** + * Set colors and border for this element + * + * Method is overwritten because we do not ant to apply the global padding + * and margin here. + * + * @param ezcGraphPalette $palette Palette + * @return void + */ + public function setFromPalette( ezcGraphPalette $palette ) + { + $this->border = $palette->chartBorderColor; + $this->borderWidth = $palette->chartBorderWidth; + $this->background = $palette->chartBackground; + $this->padding = 0; + $this->margin = 0; + } + + /** + * Render the background + * + * @param ezcGraphRenderer $renderer Renderer + * @param ezcGraphBoundings $boundings Boundings + * @return ezcGraphBoundings Remaining boundings + */ + public function render( ezcGraphRenderer $renderer, ezcGraphBoundings $boundings ) + { + $boundings = $renderer->drawBox( + $boundings, + $this->background, + $this->border, + $this->borderWidth, + $this->margin, + $this->padding + ); + + if ( $this->image === false ) + { + return $boundings; + } + + $renderer->drawBackgroundImage( + $boundings, + $this->image, + $this->position, + $this->repeat + ); + + return $boundings; + } +} + +?> diff --git a/include/ezcomponents/Graph/src/element/legend.php b/include/ezcomponents/Graph/src/element/legend.php new file mode 100644 index 000000000..75858dc2e --- /dev/null +++ b/include/ezcomponents/Graph/src/element/legend.php @@ -0,0 +1,298 @@ + (string) 'Label of data element', + * 'color' => (ezcGraphColor) $color, + * 'symbol' => (integer) ezcGraph::DIAMOND, + * ), + * ... + * ) + * + * @var array + */ + protected $labels; + + /** + * Constructor + * + * @param array $options Default option array + * @return void + * @ignore + */ + public function __construct( array $options = array() ) + { + $this->properties['portraitSize'] = .2; + $this->properties['landscapeSize'] = .1; + $this->properties['symbolSize'] = 14; + $this->properties['padding'] = 1; + $this->properties['minimumSymbolSize'] = .05; + $this->properties['spacing'] = 2; + + parent::__construct( $options ); + } + + /** + * __set + * + * @param mixed $propertyName + * @param mixed $propertyValue + * @throws ezcBaseValueException + * If a submitted parameter was out of range or type. + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @return void + * @ignore + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case 'padding': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int >= 0' ); + } + + $this->properties['padding'] = (int) $propertyValue; + break; + case 'symbolSize': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int >= 1' ); + } + + $this->properties['symbolSize'] = (int) $propertyValue; + break; + case 'landscapeSize': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) || + ( $propertyValue > 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, '0 <= int <= 1' ); + } + + $this->properties['landscapeSize'] = (float) $propertyValue; + break; + case 'portraitSize': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) || + ( $propertyValue > 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, '0 <= int <= 1' ); + } + + $this->properties['portraitSize'] = (float) $propertyValue; + break; + case 'minimumSymbolSize': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) || + ( $propertyValue > 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, '0 <= int <= 1' ); + } + + $this->properties['minimumSymbolSize'] = (float) $propertyValue; + break; + case 'spacing': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int >= 0' ); + } + + $this->properties['spacing'] = (int) $propertyValue; + break; + default: + parent::__set( $propertyName, $propertyValue ); + break; + } + } + + /** + * __get + * + * @param mixed $propertyName + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @return mixed + * @ignore + */ + public function __get( $propertyName ) + { + switch ( $propertyName ) + { + case 'labels': + return $this->labels; + default: + return parent::__get( $propertyName ); + } + } + + /** + * Generate legend from several datasets with on entry per dataset + * + * @param ezcGraphChartDataContainer $datasets + * @return void + */ + public function generateFromDataSets( ezcGraphChartDataContainer $datasets ) + { + $this->labels = array(); + foreach ( $datasets as $dataset ) + { + $this->labels[] = array( + 'label' => $dataset->label->default, + 'url' => $dataset->url->default, + 'color' => $dataset->color->default, + 'symbol' => ( $dataset->symbol->default === null ? + ezcGraph::NO_SYMBOL : + $dataset->symbol->default ), + ); + } + } + + /** + * Generate legend from single dataset with on entry per data element + * + * @param ezcGraphDataSet $dataset + * @return void + */ + public function generateFromDataSet( ezcGraphDataSet $dataset ) + { + $this->labels = array(); + foreach ( $dataset as $label => $data ) + { + $this->labels[] = array( + 'label' => $label, + 'url' => $dataset->url[$label], + 'color' => $dataset->color[$label], + 'symbol' => ( $dataset->symbol[$label] === null ? + ezcGraph::NO_SYMBOL : + $dataset->symbol[$label] ), + ); + } + } + + /** + * Calculated boundings needed for the legend. + * + * Uses the position and the configured horizontal or vertical size of a + * legend to calculate the boundings for the legend. + * + * @param ezcGraphBoundings $boundings Avalable boundings + * @return ezcGraphBoundings Remaining boundings + */ + protected function calculateBoundings( ezcGraphBoundings $boundings ) + { + $this->properties['boundings'] = clone $boundings; + + switch ( $this->position ) + { + case ezcGraph::LEFT: + $size = ( $boundings->width ) * $this->portraitSize; + + $boundings->x0 += $size; + $this->boundings->x1 = $boundings->x0; + break; + case ezcGraph::RIGHT: + $size = ( $boundings->width ) * $this->portraitSize; + + $boundings->x1 -= $size; + $this->boundings->x0 = $boundings->x1; + break; + case ezcGraph::TOP: + $size = ( $boundings->height ) * $this->landscapeSize; + + $boundings->y0 += $size; + $this->boundings->y1 = $boundings->y0; + break; + case ezcGraph::BOTTOM: + $size = ( $boundings->height ) * $this->landscapeSize; + + $boundings->y1 -= $size; + $this->boundings->y0 = $boundings->y1; + break; + } + + return $boundings; + } + + /** + * Render a legend + * + * @param ezcGraphRenderer $renderer Renderer + * @param ezcGraphBoundings $boundings Boundings for the axis + * @return ezcGraphBoundings Remaining boundings + */ + public function render( ezcGraphRenderer $renderer, ezcGraphBoundings $boundings ) + { + $boundings = $this->calculateBoundings( $boundings ); + + if ( $this->position === ezcGraph::LEFT || $this->position === ezcGraph::RIGHT ) + { + $type = ezcGraph::VERTICAL; + } + else + { + $type = ezcGraph::HORIZONTAL; + } + + // Render standard elements + $this->properties['boundings'] = $renderer->drawBox( + $this->properties['boundings'], + $this->properties['background'], + $this->properties['border'], + $this->properties['borderWidth'], + $this->properties['margin'], + $this->properties['padding'], + $this->properties['title'], + $this->getTitleSize( $this->properties['boundings'], $type ) + ); + + // Render legend + $renderer->drawLegend( + $this->boundings, + $this, + $type + ); + + return $boundings; + } +} + +?> diff --git a/include/ezcomponents/Graph/src/element/text.php b/include/ezcomponents/Graph/src/element/text.php new file mode 100644 index 000000000..ba8c3e6ab --- /dev/null +++ b/include/ezcomponents/Graph/src/element/text.php @@ -0,0 +1,122 @@ +properties['maxHeight'] = .1; + + parent::__construct( $options ); + } + + /** + * __set + * + * @param mixed $propertyName + * @param mixed $propertyValue + * @throws ezcBaseValueException + * If a submitted parameter was out of range or type. + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @return void + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case 'maxHeight': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) || + ( $propertyValue > 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, '0 <= float <= 1' ); + } + + $this->properties['maxHeight'] = (float) $propertyValue; + break; + default: + parent::__set( $propertyName, $propertyValue ); + break; + } + } + + /** + * Render the text + * + * @param ezcGraphRenderer $renderer Renderer + * @param ezcGraphBoundings $boundings Boundings for the axis + * @return ezcGraphBoundings Remaining boundings + */ + public function render( ezcGraphRenderer $renderer, ezcGraphBoundings $boundings ) + { + $height = (int) min( + round( $this->properties['maxHeight'] * ( $boundings->y1 - $boundings->y0 ) ), + $this->properties['font']->maxFontSize + $this->padding * 2 + $this->margin * 2 + ); + + switch ( $this->properties['position'] ) + { + case ezcGraph::TOP: + $textBoundings = new ezcGraphBoundings( + $boundings->x0, + $boundings->y0, + $boundings->x1, + $boundings->y0 + $height + ); + $boundings->y0 += $height + $this->properties['margin']; + break; + case ezcGraph::BOTTOM: + $textBoundings = new ezcGraphBoundings( + $boundings->x0, + $boundings->y1 - $height, + $boundings->x1, + $boundings->y1 + ); + $boundings->y1 -= $height + $this->properties['margin']; + break; + } + + $textBoundings = $renderer->drawBox( + $textBoundings, + $this->properties['background'], + $this->properties['border'], + $this->properties['borderWidth'], + $this->properties['margin'], + $this->properties['padding'] + ); + + $renderer->drawText( + $textBoundings, + $this->properties['title'], + ezcGraph::CENTER | ezcGraph::MIDDLE + ); + + return $boundings; + } +} + +?> diff --git a/include/ezcomponents/Graph/src/exceptions/date_parsing.php b/include/ezcomponents/Graph/src/exceptions/date_parsing.php new file mode 100644 index 000000000..eaa7887ce --- /dev/null +++ b/include/ezcomponents/Graph/src/exceptions/date_parsing.php @@ -0,0 +1,33 @@ + diff --git a/include/ezcomponents/Graph/src/exceptions/exception.php b/include/ezcomponents/Graph/src/exceptions/exception.php new file mode 100644 index 000000000..86a0deb6e --- /dev/null +++ b/include/ezcomponents/Graph/src/exceptions/exception.php @@ -0,0 +1,20 @@ + diff --git a/include/ezcomponents/Graph/src/exceptions/flash_bitmap_type.php b/include/ezcomponents/Graph/src/exceptions/flash_bitmap_type.php new file mode 100644 index 000000000..aa6f27e0d --- /dev/null +++ b/include/ezcomponents/Graph/src/exceptions/flash_bitmap_type.php @@ -0,0 +1,31 @@ + diff --git a/include/ezcomponents/Graph/src/exceptions/font_rendering.php b/include/ezcomponents/Graph/src/exceptions/font_rendering.php new file mode 100644 index 000000000..163d3d38f --- /dev/null +++ b/include/ezcomponents/Graph/src/exceptions/font_rendering.php @@ -0,0 +1,40 @@ + diff --git a/include/ezcomponents/Graph/src/exceptions/font_type.php b/include/ezcomponents/Graph/src/exceptions/font_type.php new file mode 100644 index 000000000..68e9e4094 --- /dev/null +++ b/include/ezcomponents/Graph/src/exceptions/font_type.php @@ -0,0 +1,32 @@ + diff --git a/include/ezcomponents/Graph/src/exceptions/incompatible_driver.php b/include/ezcomponents/Graph/src/exceptions/incompatible_driver.php new file mode 100644 index 000000000..4646d226c --- /dev/null +++ b/include/ezcomponents/Graph/src/exceptions/incompatible_driver.php @@ -0,0 +1,34 @@ + diff --git a/include/ezcomponents/Graph/src/exceptions/invalid_assignement.php b/include/ezcomponents/Graph/src/exceptions/invalid_assignement.php new file mode 100644 index 000000000..affa6dfa4 --- /dev/null +++ b/include/ezcomponents/Graph/src/exceptions/invalid_assignement.php @@ -0,0 +1,31 @@ + diff --git a/include/ezcomponents/Graph/src/exceptions/invalid_data.php b/include/ezcomponents/Graph/src/exceptions/invalid_data.php new file mode 100644 index 000000000..e767387c3 --- /dev/null +++ b/include/ezcomponents/Graph/src/exceptions/invalid_data.php @@ -0,0 +1,32 @@ + diff --git a/include/ezcomponents/Graph/src/exceptions/invalid_data_source.php b/include/ezcomponents/Graph/src/exceptions/invalid_data_source.php new file mode 100644 index 000000000..9123e5e50 --- /dev/null +++ b/include/ezcomponents/Graph/src/exceptions/invalid_data_source.php @@ -0,0 +1,33 @@ + diff --git a/include/ezcomponents/Graph/src/exceptions/invalid_dimensions.php b/include/ezcomponents/Graph/src/exceptions/invalid_dimensions.php new file mode 100644 index 000000000..433e968af --- /dev/null +++ b/include/ezcomponents/Graph/src/exceptions/invalid_dimensions.php @@ -0,0 +1,35 @@ + diff --git a/include/ezcomponents/Graph/src/exceptions/invalid_display_type.php b/include/ezcomponents/Graph/src/exceptions/invalid_display_type.php new file mode 100644 index 000000000..02681be38 --- /dev/null +++ b/include/ezcomponents/Graph/src/exceptions/invalid_display_type.php @@ -0,0 +1,46 @@ + 'Pie', + ezcGraph::LINE => 'Line', + ezcGraph::BAR => 'Bar', + ); + + if ( isset( $chartTypeNames[$type] ) ) + { + $chartTypeName = $chartTypeNames[$type]; + } + else + { + $chartTypeName = 'Unknown'; + } + + parent::__construct( "Invalid data set display type '$type' ('$chartTypeName') for current chart." ); + } +} + +?> diff --git a/include/ezcomponents/Graph/src/exceptions/invalid_id.php b/include/ezcomponents/Graph/src/exceptions/invalid_id.php new file mode 100644 index 000000000..24ebec36e --- /dev/null +++ b/include/ezcomponents/Graph/src/exceptions/invalid_id.php @@ -0,0 +1,32 @@ + diff --git a/include/ezcomponents/Graph/src/exceptions/invalid_image_file.php b/include/ezcomponents/Graph/src/exceptions/invalid_image_file.php new file mode 100644 index 000000000..634588080 --- /dev/null +++ b/include/ezcomponents/Graph/src/exceptions/invalid_image_file.php @@ -0,0 +1,31 @@ + diff --git a/include/ezcomponents/Graph/src/exceptions/invalid_keys.php b/include/ezcomponents/Graph/src/exceptions/invalid_keys.php new file mode 100644 index 000000000..1d080e13f --- /dev/null +++ b/include/ezcomponents/Graph/src/exceptions/invalid_keys.php @@ -0,0 +1,31 @@ + diff --git a/include/ezcomponents/Graph/src/exceptions/no_data.php b/include/ezcomponents/Graph/src/exceptions/no_data.php new file mode 100644 index 000000000..33f77b21c --- /dev/null +++ b/include/ezcomponents/Graph/src/exceptions/no_data.php @@ -0,0 +1,30 @@ + diff --git a/include/ezcomponents/Graph/src/exceptions/no_such_data.php b/include/ezcomponents/Graph/src/exceptions/no_such_data.php new file mode 100644 index 000000000..aa1f235a6 --- /dev/null +++ b/include/ezcomponents/Graph/src/exceptions/no_such_data.php @@ -0,0 +1,31 @@ + diff --git a/include/ezcomponents/Graph/src/exceptions/no_such_dataset.php b/include/ezcomponents/Graph/src/exceptions/no_such_dataset.php new file mode 100644 index 000000000..a3cd18405 --- /dev/null +++ b/include/ezcomponents/Graph/src/exceptions/no_such_dataset.php @@ -0,0 +1,31 @@ + diff --git a/include/ezcomponents/Graph/src/exceptions/no_such_element.php b/include/ezcomponents/Graph/src/exceptions/no_such_element.php new file mode 100644 index 000000000..dfc7a5a08 --- /dev/null +++ b/include/ezcomponents/Graph/src/exceptions/no_such_element.php @@ -0,0 +1,31 @@ + diff --git a/include/ezcomponents/Graph/src/exceptions/not_rendered.php b/include/ezcomponents/Graph/src/exceptions/not_rendered.php new file mode 100644 index 000000000..d5efb2f60 --- /dev/null +++ b/include/ezcomponents/Graph/src/exceptions/not_rendered.php @@ -0,0 +1,32 @@ + diff --git a/include/ezcomponents/Graph/src/exceptions/out_of_boundings.php b/include/ezcomponents/Graph/src/exceptions/out_of_boundings.php new file mode 100644 index 000000000..6300a1414 --- /dev/null +++ b/include/ezcomponents/Graph/src/exceptions/out_of_boundings.php @@ -0,0 +1,35 @@ + diff --git a/include/ezcomponents/Graph/src/exceptions/out_of_logarithmical_boundings.php b/include/ezcomponents/Graph/src/exceptions/out_of_logarithmical_boundings.php new file mode 100644 index 000000000..da06fe759 --- /dev/null +++ b/include/ezcomponents/Graph/src/exceptions/out_of_logarithmical_boundings.php @@ -0,0 +1,32 @@ + diff --git a/include/ezcomponents/Graph/src/exceptions/reducement_failed.php b/include/ezcomponents/Graph/src/exceptions/reducement_failed.php new file mode 100644 index 000000000..fc9877455 --- /dev/null +++ b/include/ezcomponents/Graph/src/exceptions/reducement_failed.php @@ -0,0 +1,31 @@ + diff --git a/include/ezcomponents/Graph/src/exceptions/too_many_datasets.php b/include/ezcomponents/Graph/src/exceptions/too_many_datasets.php new file mode 100644 index 000000000..a9c026ad3 --- /dev/null +++ b/include/ezcomponents/Graph/src/exceptions/too_many_datasets.php @@ -0,0 +1,31 @@ + diff --git a/include/ezcomponents/Graph/src/exceptions/unknown_color_definition.php b/include/ezcomponents/Graph/src/exceptions/unknown_color_definition.php new file mode 100644 index 000000000..199ac2f96 --- /dev/null +++ b/include/ezcomponents/Graph/src/exceptions/unknown_color_definition.php @@ -0,0 +1,32 @@ + diff --git a/include/ezcomponents/Graph/src/exceptions/unregular_steps.php b/include/ezcomponents/Graph/src/exceptions/unregular_steps.php new file mode 100644 index 000000000..4c254ea3a --- /dev/null +++ b/include/ezcomponents/Graph/src/exceptions/unregular_steps.php @@ -0,0 +1,31 @@ + diff --git a/include/ezcomponents/Graph/src/exceptions/unsupported_image_type.php b/include/ezcomponents/Graph/src/exceptions/unsupported_image_type.php new file mode 100644 index 000000000..34cc75432 --- /dev/null +++ b/include/ezcomponents/Graph/src/exceptions/unsupported_image_type.php @@ -0,0 +1,61 @@ + 'GIF', + 2 => 'Jpeg', + 3 => 'PNG', + 4 => 'SWF', + 5 => 'PSD', + 6 => 'BMP', + 7 => 'TIFF (intel)', + 8 => 'TIFF (motorola)', + 9 => 'JPC', + 10 => 'JP2', + 11 => 'JPX', + 12 => 'JB2', + 13 => 'SWC', + 14 => 'IFF', + 15 => 'WBMP', + 16 => 'XBM', + + ); + + if ( isset( $typeName[$type] ) ) + { + $type = $typeName[$type]; + } + else + { + $type = 'Unknown'; + } + + parent::__construct( "Unsupported image format '{$type}'." ); + } +} + +?> diff --git a/include/ezcomponents/Graph/src/graph.php b/include/ezcomponents/Graph/src/graph.php new file mode 100644 index 000000000..6ccd0e15e --- /dev/null +++ b/include/ezcomponents/Graph/src/graph.php @@ -0,0 +1,134 @@ + diff --git a/include/ezcomponents/Graph/src/interfaces/axis_label_renderer.php b/include/ezcomponents/Graph/src/interfaces/axis_label_renderer.php new file mode 100644 index 000000000..1481946ae --- /dev/null +++ b/include/ezcomponents/Graph/src/interfaces/axis_label_renderer.php @@ -0,0 +1,438 @@ +properties['majorStepCount'] = false; + $this->properties['minorStepCount'] = false; + $this->properties['majorStepSize'] = 3; + $this->properties['minorStepSize'] = 1; + $this->properties['innerStep'] = true; + $this->properties['outerStep'] = false; + $this->properties['outerGrid'] = false; + $this->properties['showLabels'] = true; + $this->properties['labelPadding'] = 2; + + parent::__construct( $options ); + } + + /** + * __set + * + * @param mixed $propertyName + * @param mixed $propertyValue + * @throws ezcBaseValueException + * If a submitted parameter was out of range or type. + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @return void + * @ignore + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case 'driver': + if ( $propertyValue instanceof ezcGraphDriver ) + { + $this->properties['driver'] = $propertyValue; + } + else + { + throw new ezcGraphInvalidDriverException( $propertyValue ); + } + break; + case 'majorStepCount': + if ( ( $propertyValue !== false ) && + !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int >= 0' ); + } + + $this->properties['majorStepCount'] = (int) $propertyValue; + break; + case 'minorStepCount': + if ( ( $propertyValue !== false ) && + !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int >= 0' ); + } + + $this->properties['minorStepCount'] = (int) $propertyValue; + break; + case 'majorStepSize': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int >= 0' ); + } + + $this->properties['majorStepSize'] = (int) $propertyValue; + break; + case 'minorStepSize': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int >= 0' ); + } + + $this->properties['minorStepSize'] = (int) $propertyValue; + break; + case 'innerStep': + if ( !is_bool( $propertyValue ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'bool' ); + } + + $this->properties['innerStep'] = (bool) $propertyValue; + break; + case 'outerStep': + if ( !is_bool( $propertyValue ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'bool' ); + } + + $this->properties['outerStep'] = (bool) $propertyValue; + break; + case 'outerGrid': + if ( !is_bool( $propertyValue ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'bool' ); + } + + $this->properties['outerGrid'] = (bool) $propertyValue; + break; + case 'showLabels': + if ( !is_bool( $propertyValue ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'bool' ); + } + + $this->properties['showLabels'] = (bool) $propertyValue; + break; + case 'labelPadding': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int >= 0' ); + } + + $this->properties['labelPadding'] = (int) $propertyValue; + break; + default: + throw new ezcBasePropertyNotFoundException( $propertyName ); + } + } + + /** + * Checks for the cutting point of two lines. + * + * The lines are given by a start position and the direction of the line, + * both as instances of {@link ezcGraphCoordinate}. If no cutting point + * could be calculated, because the lines are parallel the function will + * return false. Otherwise the factor returned can be used to calculate the + * cutting point using the following equatation: + * point = $aStart + $factor * $aDir; + * + * We return the factor instead of the resulting point because it can be + * easily determined from the factor if the cutting point is in "behind" + * the line starting point, or if the distance to the cutting point is + * bigger then the direction vector is long ( $factor > 1 ). + * + * @param ezcGraphCoordinate $aStart + * @param ezcGraphCoordinate $aDir + * @param ezcGraphCoordinate $bStart + * @param ezcGraphCoordinate $bDir + * @return mixed + */ + public function determineLineCuttingPoint( ezcGraphCoordinate $aStart, ezcGraphCoordinate $aDir, ezcGraphCoordinate $bStart, ezcGraphCoordinate $bDir ) + { + // Check if lines are parallel + if ( ( ( abs( $aDir->x ) < .000001 ) && ( abs( $bDir->x ) < .000001 ) ) || + ( ( abs( $aDir->y ) < .000001 ) && ( abs( $bDir->y ) < .000001 ) ) || + ( ( abs( $aDir->x * $bDir->x * $aDir->y * $bDir->y ) > .000001 ) && + ( abs( ( $aDir->x / $aDir->y ) - ( $bDir->x / $bDir->y ) ) < .000001 ) + ) + ) + { + return false; + } + + // Use ? : to prevent division by zero + $denominator = + ( abs( $aDir->y ) > .000001 ? $bDir->y / $aDir->y : .0 ) - + ( abs( $aDir->x ) > .000001 ? $bDir->x / $aDir->x : .0 ); + + // Solve equatation + if ( abs( $denominator ) < .000001 ) + { + return - ( + ( abs( $aDir->y ) > .000001 ? $bStart->y / $aDir->y : .0 ) - + ( abs( $aDir->y ) > .000001 ? $aStart->y / $aDir->y : .0 ) - + ( abs( $aDir->x ) > .000001 ? $bStart->x / $aDir->x : .0 ) + + ( abs( $aDir->x ) > .000001 ? $aStart->x / $aDir->x : .0 ) + ); + } + else + { + return - ( + ( abs( $aDir->y ) > .000001 ? $bStart->y / $aDir->y : .0 ) - + ( abs( $aDir->y ) > .000001 ? $aStart->y / $aDir->y : .0 ) - + ( abs( $aDir->x ) > .000001 ? $bStart->x / $aDir->x : .0 ) + + ( abs( $aDir->x ) > .000001 ? $aStart->x / $aDir->x : .0 ) + ) / $denominator; + } + } + + /** + * Draw single step on a axis + * + * Draws a step on a axis at the current position + * + * @param ezcGraphRenderer $renderer Renderer to draw the step with + * @param ezcGraphCoordinate $position Position of step + * @param ezcGraphCoordinate $direction Direction of axis + * @param int $axisPosition Position of axis + * @param int $size Step size + * @param ezcGraphColor $color Color of axis + * @return void + */ + public function drawStep( ezcGraphRenderer $renderer, ezcGraphCoordinate $position, ezcGraphCoordinate $direction, $axisPosition, $size, ezcGraphColor $color ) + { + if ( ! ( $this->innerStep || $this->outerStep ) ) + { + return false; + } + + $drawStep = false; + if ( ( ( $axisPosition === ezcGraph::CENTER ) && $this->innerStep ) || + ( ( $axisPosition === ezcGraph::BOTTOM ) && $this->outerStep ) || + ( ( $axisPosition === ezcGraph::TOP ) && $this->innerStep ) || + ( ( $axisPosition === ezcGraph::RIGHT ) && $this->outerStep ) || + ( ( $axisPosition === ezcGraph::LEFT ) && $this->innerStep ) ) + { + // Turn direction vector to left by 90 degrees and multiply + // with major step size + $stepStart = new ezcGraphCoordinate( + $position->x - $direction->y * $size, + $position->y + $direction->x * $size + ); + $drawStep = true; + } + else + { + $stepStart = $position; + } + + if ( ( ( $axisPosition === ezcGraph::CENTER ) && $this->innerStep ) || + ( ( $axisPosition === ezcGraph::BOTTOM ) && $this->innerStep ) || + ( ( $axisPosition === ezcGraph::TOP ) && $this->outerStep ) || + ( ( $axisPosition === ezcGraph::RIGHT ) && $this->innerStep ) || + ( ( $axisPosition === ezcGraph::LEFT ) && $this->outerStep ) ) + { + // Turn direction vector to right by 90 degrees and multiply + // with major step size + $stepEnd = new ezcGraphCoordinate( + $position->x + $direction->y * $size, + $position->y - $direction->x * $size + ); + $drawStep = true; + } + else + { + $stepEnd = $position; + } + + if ( $drawStep ) + { + $renderer->drawStepLine( + $stepStart, + $stepEnd, + $color + ); + } + } + + /** + * Draw grid + * + * Draws a grid line at the current position + * + * @param ezcGraphRenderer $renderer Renderer to draw the grid with + * @param ezcGraphBoundings $boundings Boundings of axis + * @param ezcGraphCoordinate $position Position of step + * @param ezcGraphCoordinate $direction Direction of axis + * @param ezcGraphColor $color Color of axis + * @return void + */ + protected function drawGrid( ezcGraphRenderer $renderer, ezcGraphBoundings $boundings, ezcGraphCoordinate $position, ezcGraphCoordinate $direction, ezcGraphColor $color ) + { + // Direction of grid line is direction of axis turned right by 90 + // degrees + $gridDirection = new ezcGraphCoordinate( + $direction->y, + - $direction->x + ); + + $cuttingPoints = array(); + foreach ( array( // Bounding lines + array( + 'start' => new ezcGraphCoordinate( $boundings->x0, $boundings->y0 ), + 'dir' => new ezcGraphCoordinate( 0, $boundings->y1 - $boundings->y0 ) + ), + array( + 'start' => new ezcGraphCoordinate( $boundings->x0, $boundings->y0 ), + 'dir' => new ezcGraphCoordinate( $boundings->x1 - $boundings->x0, 0 ) + ), + array( + 'start' => new ezcGraphCoordinate( $boundings->x1, $boundings->y1 ), + 'dir' => new ezcGraphCoordinate( 0, $boundings->y0 - $boundings->y1 ) + ), + array( + 'start' => new ezcGraphCoordinate( $boundings->x1, $boundings->y1 ), + 'dir' => new ezcGraphCoordinate( $boundings->x0 - $boundings->x1, 0 ) + ), + ) as $boundingLine ) + { + // Test for cutting points with bounding lines, where cutting + // position is between 0 and 1, which means, that the line is hit + // on the bounding box rectangle. Use these points as a start and + // ending point for the grid lines. There should *always* be + // exactly two points returned. + $cuttingPosition = $this->determineLineCuttingPoint( + $boundingLine['start'], + $boundingLine['dir'], + $position, + $gridDirection + ); + + if ( $cuttingPosition === false ) + { + continue; + } + + // Round to prevent minor float incorectnesses + $cuttingPosition = abs( round( $cuttingPosition, 2 ) ); + + if ( ( $cuttingPosition >= 0 ) && + ( $cuttingPosition <= 1 ) ) + { + $cuttingPoints[] = new ezcGraphCoordinate( + $boundingLine['start']->x + $cuttingPosition * $boundingLine['dir']->x, + $boundingLine['start']->y + $cuttingPosition * $boundingLine['dir']->y + ); + } + } + + if ( count( $cuttingPoints ) < 2 ) + { + // This should not happpen + return false; + } + + // Finally draw grid line + $renderer->drawGridLine( + $cuttingPoints[0], + $cuttingPoints[1], + $color + ); + } + + /** + * Modify chart boundings + * + * Optionally modify boundings of chart data + * + * @param ezcGraphBoundings $boundings Current boundings of chart + * @param ezcGraphCoordinate $direction Direction of the current axis + * @return ezcGraphBoundings Modified boundings + */ + public function modifyChartBoundings( ezcGraphBoundings $boundings, ezcGraphCoordinate $direction ) + { + return $boundings; + } + + /** + * Modify chart data position + * + * Optionally additionally modify the coodinate of a data point + * + * @param ezcGraphCoordinate $coordinate Data point coordinate + * @return ezcGraphCoordinate Modified coordinate + */ + public function modifyChartDataPosition( ezcGraphCoordinate $coordinate ) + { + return $coordinate; + } + + /** + * Render Axis labels + * + * Render labels for an axis. + * + * @param ezcGraphRenderer $renderer Renderer used to draw the chart + * @param ezcGraphBoundings $boundings Boundings of the axis + * @param ezcGraphCoordinate $start Axis starting point + * @param ezcGraphCoordinate $end Axis ending point + * @param ezcGraphChartElementAxis $axis Axis instance + * @return void + */ + abstract public function renderLabels( + ezcGraphRenderer $renderer, + ezcGraphBoundings $boundings, + ezcGraphCoordinate $start, + ezcGraphCoordinate $end, + ezcGraphChartElementAxis $axis + ); +} +?> diff --git a/include/ezcomponents/Graph/src/interfaces/chart.php b/include/ezcomponents/Graph/src/interfaces/chart.php new file mode 100644 index 000000000..09c103a32 --- /dev/null +++ b/include/ezcomponents/Graph/src/interfaces/chart.php @@ -0,0 +1,288 @@ +palette = new ezcGraphPaletteTango(); + $this->data = new ezcGraphChartDataContainer( $this ); + + // Add standard elements + $this->addElement( 'background', new ezcGraphChartElementBackground() ); + $this->elements['background']->position = ezcGraph::CENTER | ezcGraph::MIDDLE; + + $this->addElement( 'title', new ezcGraphChartElementText() ); + $this->elements['title']->position = ezcGraph::TOP; + $this->renderElement['title'] = false; + + $this->addElement( 'legend', new ezcGraphChartElementLegend() ); + $this->elements['legend']->position = ezcGraph::LEFT; + + // Define standard renderer and driver + $this->properties['driver'] = new ezcGraphSvgDriver(); + $this->properties['renderer'] = new ezcGraphRenderer2d(); + $this->properties['renderer']->setDriver( $this->driver ); + + // Initialize other properties + $this->properties['renderedFile'] = null; + } + + /** + * Add element to chart + * + * Add a chart element to the chart and perform the required configuration + * tasks for the chart element. + * + * @param string $name Element name + * @param ezcGraphChartElement $element Chart element + * @return void + */ + protected function addElement( $name, ezcGraphChartElement $element ) + { + $this->elements[$name] = $element; + $this->elements[$name]->font = $this->options->font; + $this->elements[$name]->setFromPalette( $this->palette ); + + // Render element by default + $this->renderElement[$name] = true; + } + + /** + * Options write access + * + * @throws ezcBasePropertyNotFoundException + * If Option could not be found + * @throws ezcBaseValueException + * If value is out of range + * @param mixed $propertyName Option name + * @param mixed $propertyValue Option value; + * @return void + * @ignore + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) { + case 'title': + $this->elements['title']->title = $propertyValue; + $this->renderElement['title'] = true; + break; + case 'legend': + if ( !is_bool( $propertyValue ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'boolean' ); + } + + $this->renderElement['legend'] = (bool) $propertyValue; + break; + case 'renderer': + if ( $propertyValue instanceof ezcGraphRenderer ) + { + $this->properties['renderer'] = $propertyValue; + $this->properties['renderer']->setDriver( $this->driver ); + return $this->properties['renderer']; + } + else + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'ezcGraphRenderer' ); + } + break; + case 'driver': + if ( $propertyValue instanceof ezcGraphDriver ) + { + $this->properties['driver'] = $propertyValue; + $this->properties['renderer']->setDriver( $this->driver ); + return $this->properties['driver']; + } + else + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'ezcGraphDriver' ); + } + break; + case 'palette': + if ( $propertyValue instanceof ezcGraphPalette ) + { + $this->properties['palette'] = $propertyValue; + $this->setFromPalette( $this->palette ); + } + else + { + throw new ezcBaseValueException( "palette", $propertyValue, "instanceof ezcGraphPalette" ); + } + + break; + case 'renderedFile': + $this->properties['renderedFile'] = (string) $propertyValue; + break; + case 'options': + if ( $propertyValue instanceof ezcGraphChartOptions ) + { + $this->options = $propertyValue; + } + else + { + throw new ezcBaseValueException( "options", $propertyValue, "instanceof ezcGraphOptions" ); + } + default: + throw new ezcBasePropertyNotFoundException( $propertyName ); + break; + } + } + + /** + * Set colors and border fro this element + * + * @param ezcGraphPalette $palette Palette + * @return void + */ + public function setFromPalette( ezcGraphPalette $palette ) + { + $this->options->font->name = $palette->fontName; + $this->options->font->color = $palette->fontColor; + + foreach ( $this->elements as $element ) + { + $element->setFromPalette( $palette ); + } + } + + /** + * __get + * + * @param mixed $propertyName + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @return mixed + * @ignore + */ + public function __get( $propertyName ) + { + if ( array_key_exists( $propertyName, $this->properties ) ) + { + return $this->properties[$propertyName]; + } + + if ( isset( $this->elements[$propertyName] ) ) + { + return $this->elements[$propertyName]; + } + + if ( ( $propertyName === 'options' ) || + ( $propertyName === 'data' ) ) + { + return $this->$propertyName; + } + else + { + throw new ezcGraphNoSuchElementException( $propertyName ); + } + } + + /** + * Returns the default display type of the current chart type. + * + * @return int Display type + */ + abstract public function getDefaultDisplayType(); + + /** + * Return filename of rendered file, and false if no file was yet rendered. + * + * @return mixed + */ + public function getRenderedFile() + { + return ( $this->renderedFile !== null ? $this->renderedFile : false ); + } + + /** + * Renders this chart + * + * Creates basic visual chart elements from the chart to be processed by + * the renderer. + * + * @param int $width + * @param int $height + * @param string $file + * @return void + */ + abstract public function render( $width, $height, $file = null ); + + /** + * Renders this chart to direct output + * + * Does the same as ezcGraphChart::render(), but renders directly to + * output and not into a file. + * + * @param int $width + * @param int $height + * @return void + */ + abstract public function renderToOutput( $width, $height ); +} + +?> diff --git a/include/ezcomponents/Graph/src/interfaces/dataset_property.php b/include/ezcomponents/Graph/src/interfaces/dataset_property.php new file mode 100644 index 000000000..d085ffdfe --- /dev/null +++ b/include/ezcomponents/Graph/src/interfaces/dataset_property.php @@ -0,0 +1,179 @@ +dataset = $dataset; + } + + /** + * Set the default value for this property + * + * @param string $name Property name + * @param mixed $value Property value + * @return void + */ + public function __set( $name, $value ) + { + if ( $name === 'default' && + $this->checkValue( $value ) ) + { + $this->defaultValue = $value; + } + } + + /** + * Get the default value for this property + * + * @param string $name Property name + * @return mixed + */ + public function __get( $name ) + { + if ( $name === 'default' ) + { + return $this->defaultValue; + } + } + + /** + * Returns if an option exists. + * Allows isset() using ArrayAccess. + * + * @param string $key The name of the option to get. + * @return bool Wether the option exists. + */ + final public function offsetExists( $key ) + { + return isset( $this->dataset[$key] ); + } + + /** + * Returns an option value. + * Get an option value by ArrayAccess. + * + * @param string $key The name of the option to get. + * @return mixed The option value. + * + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + */ + final public function offsetGet( $key ) + { + if ( isset( $this->dataValue[$key] ) ) + { + return $this->dataValue[$key]; + } + elseif ( isset( $this->dataset[$key] ) ) + { + return $this->defaultValue; + } + else + { + throw new ezcGraphNoSuchDataException( $key ); + } + } + + /** + * Set an option. + * Sets an option using ArrayAccess. + * + * @param string $key The option to set. + * @param mixed $value The value for the option. + * @return void + * + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @throws ezcBaseValueException + * If a the value for a property is out of range. + */ + public function offsetSet( $key, $value ) + { + if ( isset( $this->dataset[$key] ) && + $this->checkValue( $value ) ) + { + $this->dataValue[$key] = $value; + } + else + { + throw new ezcGraphNoSuchDataException( $key ); + } + } + + /** + * Unset an option. + * Unsets an option using ArrayAccess. + * + * @param string $key The options to unset. + * @return void + * + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @throws ezcBaseValueException + * If a the value for a property is out of range. + */ + final public function offsetUnset( $key ) + { + if ( isset( $this->dataset[$key] ) ) + { + unset( $this->dataValue[$key] ); + } + else + { + throw new ezcGraphNoSuchDataException( $key ); + } + } +} + +?> diff --git a/include/ezcomponents/Graph/src/interfaces/driver.php b/include/ezcomponents/Graph/src/interfaces/driver.php new file mode 100644 index 000000000..dc169eda9 --- /dev/null +++ b/include/ezcomponents/Graph/src/interfaces/driver.php @@ -0,0 +1,740 @@ +options = $propertyValue; + } + else + { + throw new ezcBaseValueException( "options", $propertyValue, "instanceof ezcGraphOptions" ); + } + break; + + default: + throw new ezcBasePropertyNotFoundException( $propertyName ); + break; + } + } + + /** + * __get + * + * @param mixed $propertyName + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @return mixed + * @ignore + */ + public function __get( $propertyName ) + { + switch ( $propertyName ) + { + case 'options': + return $this->options; + default: + throw new ezcBasePropertyNotFoundException( $propertyName ); + } + } + + /** + * Reduces the size of a polygon + * + * The method takes a polygon defined by a list of points and reduces its + * size by moving all lines to the middle by the given $size value. + * + * The detection of the inner side of the polygon depends on the angle at + * each edge point. This method will always work for 3 edged polygones, + * because the smaller angle will always be on the inner side. For + * polygons with more then 3 edges this method may fail. For ezcGraph this + * is a valid simplification, because we do not have any polygones which + * have an inner angle >= 180 degrees. + * + * @param array(ezcGraphCoordinate) $points + * @param float $size + * @throws ezcGraphReducementFailedException + * @return array( ezcGraphCoordinate ) + */ + protected function reducePolygonSize( array $points, $size ) + { + $pointCount = count( $points ); + + // Build normalized vectors between polygon edge points + $vectors = array(); + $vectorLength = array(); + for ( $i = 0; $i < $pointCount; ++$i ) + { + $nextPoint = ( $i + 1 ) % $pointCount; + $vectors[$i] = ezcGraphVector::fromCoordinate( $points[$nextPoint] ) + ->sub( $points[$i] ); + + // Throw exception if polygon is too small to reduce + $vectorLength[$i] = $vectors[$i]->length(); + if ( $vectorLength[$i] < $size ) + { + throw new ezcGraphReducementFailedException(); + } + $vectors[$i]->unify(); + + // Remove point from list if it the same as the next point + if ( ( $vectors[$i]->x == $vectors[$i]->y ) && ( $vectors[$i]->x == 0 ) ) + { + $pointCount--; + if ( $i === 0 ) + { + $points = array_slice( $points, $i + 1 ); + } + else + { + $points = array_merge( + array_slice( $points, 0, $i ), + array_slice( $points, $i + 1 ) + ); + } + $i--; + } + } + + // Remove vectors and appendant point, if local angle equals zero + // dergrees. + for ( $i = 0; $i < $pointCount; ++$i ) + { + $nextPoint = ( $i + 1 ) % $pointCount; + + if ( ( abs( $vectors[$i]->x - $vectors[$nextPoint]->x ) < .0001 ) && + ( abs( $vectors[$i]->y - $vectors[$nextPoint]->y ) < .0001 ) ) + { + $pointCount--; + + $points = array_merge( + array_slice( $points, 0, $i + 1 ), + array_slice( $points, $i + 2 ) + ); + $vectors = array_merge( + array_slice( $vectors, 0, $i + 1 ), + array_slice( $vectors, $i + 2 ) + ); + $i--; + } + } + + // No reducements for lines + if ( $pointCount <= 2 ) + { + return $points; + } + + // Determine one of the angles - we need to know where the smaller + // angle is, to determine if the inner side of the polygon is on + // the left or right hand. + // + // This is a valid simplification for ezcGraph(, for now). + // + // The sign of the scalar products results indicates on which site + // the smaller angle is, when comparing the orthogonale vector of + // one of the vectors with the other. Why? .. use pen and paper .. + // + // It is sufficant to do this once before iterating over the points, + // because the inner side of the polygon is on the same side of the + // point for each point. + $last = 0; + $next = 1; + + $sign = ( + -$vectors[$last]->y * $vectors[$next]->x + + $vectors[$last]->x * $vectors[$next]->y + ) < 0 ? 1 : -1; + + // Move points to center + $newPoints = array(); + for ( $i = 0; $i < $pointCount; ++$i ) + { + $last = $i; + $next = ( $i + 1 ) % $pointCount; + + // Orthogonal vector with direction based on the side of the inner + // angle + $v = clone $vectors[$next]; + if ( $sign > 0 ) + { + $v->rotateCounterClockwise()->scalar( $size ); + } + else + { + $v->rotateClockwise()->scalar( $size ); + } + + // get last vector not pointing in reverse direction + $lastVector = clone $vectors[$last]; + $lastVector->scalar( -1 ); + + // Calculate new point: Move point to the center site of the + // polygon using the normalized orthogonal vectors next to the + // point and the size as distance to move. + // point + v + size / tan( angle / 2 ) * startVector + $newPoint = clone $vectors[$next]; + $v ->add( + $newPoint + ->scalar( + $size / + tan( + $lastVector->angle( $vectors[$next] ) / 2 + ) + ) + ); + + // A fast guess: If the movement of the point exceeds the length of + // the surrounding edge vectors the angle was to small to perform a + // valid size reducement. In this case we just reduce the length of + // the movement to the minimal length of the surrounding vectors. + // This should fit in most cases. + // + // The correct way to check would be a test, if the calculated + // point is still in the original polygon, but a test for a point + // in a polygon is too expensive. + $movement = $v->length(); + if ( ( $movement > $vectorLength[$last] ) && + ( $movement > $vectorLength[$next] ) ) + { + $v->unify()->scalar( min( $vectorLength[$last], $vectorLength[$next] ) ); + } + + $newPoints[$next] = $v->add( $points[$next] ); + } + + return $newPoints; + } + + /** + * Reduce the size of an ellipse + * + * The method returns a the edgepoints and angles for an ellipse where all + * borders are moved to the inner side of the ellipse by the give $size + * value. + * + * The method returns an + * array ( + * 'center' => (ezcGraphCoordinate) New center point, + * 'start' => (ezcGraphCoordinate) New outer start point, + * 'end' => (ezcGraphCoordinate) New outer end point, + * ) + * + * @param ezcGraphCoordinate $center + * @param float $width + * @param float $height + * @param float $startAngle + * @param float $endAngle + * @param float $size + * @throws ezcGraphReducementFailedException + * @return array + */ + protected function reduceEllipseSize( ezcGraphCoordinate $center, $width, $height, $startAngle, $endAngle, $size ) + { + $oldStartPoint = new ezcGraphVector( + $width * cos( deg2rad( $startAngle ) ) / 2, + $height * sin( deg2rad( $startAngle ) ) / 2 + ); + + $oldEndPoint = new ezcGraphVector( + $width * cos( deg2rad( $endAngle ) ) / 2, + $height * sin( deg2rad( $endAngle ) ) / 2 + ); + + // We always need radian values.. + $degAngle = abs( $endAngle - $startAngle ); + $startAngle = deg2rad( $startAngle ); + $endAngle = deg2rad( $endAngle ); + + // Calculate normalized vectors for the lines spanning the ellipse + $unifiedStartVector = ezcGraphVector::fromCoordinate( $oldStartPoint )->unify(); + $unifiedEndVector = ezcGraphVector::fromCoordinate( $oldEndPoint )->unify(); + $startVector = ezcGraphVector::fromCoordinate( $oldStartPoint ); + $endVector = ezcGraphVector::fromCoordinate( $oldEndPoint ); + + $oldStartPoint->add( $center ); + $oldEndPoint->add( $center ); + + // Use orthogonal vectors of normalized ellipse spanning vectors to + $v = clone $unifiedStartVector; + $v->rotateClockwise()->scalar( $size ); + + // calculate new center point + // center + v + size / tan( angle / 2 ) * startVector + $centerMovement = clone $unifiedStartVector; + $newCenter = $v->add( $centerMovement->scalar( $size / tan( ( $endAngle - $startAngle ) / 2 ) ) )->add( $center ); + + // Test if center is still inside the ellipse, otherwise the sector + // was to small to be reduced + $innerBoundingBoxSize = 0.7 * min( $width, $height ); + if ( ( $newCenter->x < ( $center->x + $innerBoundingBoxSize ) ) && + ( $newCenter->x > ( $center->x - $innerBoundingBoxSize ) ) && + ( $newCenter->y < ( $center->y + $innerBoundingBoxSize ) ) && + ( $newCenter->y > ( $center->y - $innerBoundingBoxSize ) ) ) + { + // Point is in inner bounding box -> everything is OK + } + elseif ( ( $newCenter->x < ( $center->x - $width ) ) || + ( $newCenter->x > ( $center->x + $width ) ) || + ( $newCenter->y < ( $center->y - $height ) ) || + ( $newCenter->y > ( $center->y + $height ) ) ) + { + // Quick outer boundings check + if ( $degAngle > 180 ) + { + // Use old center for very big angles + $newCenter = clone $center; + } + else + { + // Do not draw for very small angles + throw new ezcGraphReducementFailedException(); + } + } + else + { + // Perform exact check + $distance = new ezcGraphVector( + $newCenter->x - $center->x, + $newCenter->y - $center->y + ); + + // Convert elipse to circle for correct angle calculation + $direction = clone $distance; + $direction->y *= ( $width / $height ); + $angle = $direction->angle( new ezcGraphVector( 0, 1 ) ); + + $outerPoint = new ezcGraphVector( + sin( $angle ) * $width / 2, + cos( $angle ) * $height / 2 + ); + + // Point is not in ellipse any more + if ( abs( $distance->x ) > abs( $outerPoint->x ) ) + { + if ( $degAngle > 180 ) + { + // Use old center for very big angles + $newCenter = clone $center; + } + else + { + // Do not draw for very small angles + throw new ezcGraphReducementFailedException(); + } + } + } + + // Use start spanning vector and its orthogonal vector to calculate + // new start point + $newStartPoint = clone $oldStartPoint; + + // Create tangent vector from tangent angle + + // Ellipse tangent factor + $ellipseTangentFactor = sqrt( + pow( $height, 2 ) * + pow( cos( $startAngle ), 2 ) + + pow( $width, 2 ) * + pow( sin( $startAngle ), 2 ) + ); + $ellipseTangentVector = new ezcGraphVector( + $width * -sin( $startAngle ) / $ellipseTangentFactor, + $height * cos( $startAngle ) / $ellipseTangentFactor + ); + + // Reverse spanning vector + $innerVector = clone $unifiedStartVector; + $innerVector->scalar( $size )->scalar( -1 ); + + $newStartPoint->add( $innerVector)->add( $ellipseTangentVector->scalar( $size ) ); + $newStartVector = clone $startVector; + $newStartVector->add( $ellipseTangentVector ); + + // Use end spanning vector and its orthogonal vector to calculate + // new end point + $newEndPoint = clone $oldEndPoint; + + // Create tangent vector from tangent angle + + // Ellipse tangent factor + $ellipseTangentFactor = sqrt( + pow( $height, 2 ) * + pow( cos( $endAngle ), 2 ) + + pow( $width, 2 ) * + pow( sin( $endAngle ), 2 ) + ); + $ellipseTangentVector = new ezcGraphVector( + $width * -sin( $endAngle ) / $ellipseTangentFactor, + $height * cos( $endAngle ) / $ellipseTangentFactor + ); + + // Reverse spanning vector + $innerVector = clone $unifiedEndVector; + $innerVector->scalar( $size )->scalar( -1 ); + + $newEndPoint->add( $innerVector )->add( $ellipseTangentVector->scalar( $size )->scalar( -1 ) ); + $newEndVector = clone $endVector; + $newEndVector->add( $ellipseTangentVector ); + + return array( + 'center' => $newCenter, + 'start' => $newStartPoint, + 'end' => $newEndPoint, + 'startAngle' => rad2deg( $startAngle + $startVector->angle( $newStartVector ) ), + 'endAngle' => rad2deg( $endAngle - $endVector->angle( $newEndVector ) ), + ); + } + + /** + * Draws a single polygon. + * + * @param array $points Point array + * @param ezcGraphColor $color Polygon color + * @param mixed $filled Filled + * @param float $thickness Line thickness + * @return void + */ + abstract public function drawPolygon( array $points, ezcGraphColor $color, $filled = true, $thickness = 1. ); + + /** + * Draws a line + * + * @param ezcGraphCoordinate $start Start point + * @param ezcGraphCoordinate $end End point + * @param ezcGraphColor $color Line color + * @param float $thickness Line thickness + * @return void + */ + abstract public function drawLine( ezcGraphCoordinate $start, ezcGraphCoordinate $end, ezcGraphColor $color, $thickness = 1. ); + + /** + * Returns boundings of text depending on the available font extension + * + * @param float $size Textsize + * @param ezcGraphFontOptions $font Font + * @param string $text Text + * @return ezcGraphBoundings Boundings of text + */ + abstract protected function getTextBoundings( $size, ezcGraphFontOptions $font, $text ); + + /** + * Test if string fits in a box with given font size + * + * This method splits the text up into tokens and tries to wrap the text + * in an optimal way to fit in the Box defined by width and height. + * + * If the text fits into the box an array with lines is returned, which + * can be used to render the text later: + * array( + * // Lines + * array( 'word', 'word', .. ), + * ) + * Otherwise the function will return false. + * + * @param string $string Text + * @param ezcGraphCoordinate $position Topleft position of the text box + * @param float $width Width of textbox + * @param float $height Height of textbox + * @param int $size Fontsize + * @return mixed Array with lines or false on failure + */ + protected function testFitStringInTextBox( $string, ezcGraphCoordinate $position, $width, $height, $size ) + { + // Tokenize String + $tokens = preg_split( '/\s+/', $string ); + $initialHeight = $height; + + $lines = array( array() ); + $line = 0; + foreach ( $tokens as $nr => $token ) + { + // Add token to tested line + $selectedLine = $lines[$line]; + $selectedLine[] = $token; + + $boundings = $this->getTextBoundings( $size, $this->options->font, implode( ' ', $selectedLine ) ); + // Check if line is too long + if ( $boundings->width > $width ) + { + if ( count( $selectedLine ) == 1 ) + { + // Return false if one single word does not fit into one line + // Scale down font size to fit this word in one line + return $width / $boundings->width; + } + else + { + // Put word in next line instead and reduce available height by used space + $lines[++$line][] = $token; + $height -= $size * ( 1 + $this->options->lineSpacing ); + } + } + else + { + // Everything is ok - put token in this line + $lines[$line][] = $token; + } + + // Return false if text exceeds vertical limit + if ( $size > $height ) + { + return 1; + } + } + + // Check width of last line + $boundings = $this->getTextBoundings( $size, $this->options->font, implode( ' ', $lines[$line] ) ); + if ( $boundings->width > $width ) + { + return 1; + } + + // It seems to fit - return line array + return $lines; + } + + /** + * If it is allow to shortened the string, this method tries to extract as + * many chars as possible to display a decent amount of characters. + * + * If no complete token (word) does fit, the largest possible amount of + * chars from the first word are taken. If the amount of chars is bigger + * then strlen( shortenedStringPostFix ) * 2 the last chars are replace by + * the postfix. + * + * If one complete word fits the box as many words are taken as possible + * including a appended shortenedStringPostFix. + * + * @param mixed $string + * @param ezcGraphCoordinate $position + * @param mixed $width + * @param mixed $height + * @param mixed $size + * @access protected + * @return void + */ + protected function tryFitShortenedString( $string, ezcGraphCoordinate $position, $width, $height, $size ) + { + $tokens = preg_split( '/\s+/', $string ); + + // Try to fit a complete word first + $boundings = $this->getTextBoundings( + $size, + $this->options->font, + reset( $tokens ) . ( $postfix = $this->options->autoShortenStringPostFix ) + ); + + if ( $boundings->width > $width ) + { + // Not even one word fits the box + $word = reset( $tokens ); + + // Test if first character fits the box + $boundigs = $this->getTextBoundings( + $size, + $this->options->font, + $hit = $word[0] + ); + + if ( $boundigs->width > $width ) + { + // That is a really small box. + throw new ezcGraphFontRenderingException( $string, $size, $width, $height ); + } + + // Try to put more charactes in there + $postLength = strlen( $postfix ); + $wordLength = strlen( $word ); + for ( $i = 2; $i <= $wordLength; ++$i ) + { + $string = substr( $word, 0, $i ); + if ( strlen( $string ) > ( $postLength << 1 ) ) + { + $string = substr( $string, 0, -$postLength ) . $postfix; + } + + $boundigs = $this->getTextBoundings( $size, $this->options->font, $string ); + + if ( $boundigs->width < $width ) + { + $hit = $string; + } + else + { + // Use last string which fit + break; + } + } + } + else + { + // Try to use as many words as possible + $hit = reset( $tokens ); + + for ( $i = 2; $i < count( $tokens ); ++$i ) + { + $string = implode( ' ', array_slice( $tokens, 0, $i ) ) . + $postfix; + + $boundings = $this->getTextBoundings( $size, $this->options->font, $string ); + + if ( $boundings->width <= $width ) + { + $hit .= ' ' . $tokens[$i - 1]; + } + else + { + // Use last valid hit + break; + } + } + + $hit .= $postfix; + } + + return array( array( $hit ) ); + } + + /** + * Writes text in a box of desired size + * + * @param string $string Text + * @param ezcGraphCoordinate $position Top left position + * @param float $width Width of text box + * @param float $height Height of text box + * @param int $align Alignement of text + * @param ezcGraphRotation $rotation + * @return void + */ + abstract public function drawTextBox( $string, ezcGraphCoordinate $position, $width, $height, $align, ezcGraphRotation $rotation = null ); + + /** + * Draws a sector of cirlce + * + * @param ezcGraphCoordinate $center Center of circle + * @param mixed $width Width + * @param mixed $height Height + * @param mixed $startAngle Start angle of circle sector + * @param mixed $endAngle End angle of circle sector + * @param ezcGraphColor $color Color + * @param mixed $filled Filled + * @return void + */ + abstract public function drawCircleSector( ezcGraphCoordinate $center, $width, $height, $startAngle, $endAngle, ezcGraphColor $color, $filled = true ); + + /** + * Draws a circular arc + * + * @param ezcGraphCoordinate $center Center of ellipse + * @param integer $width Width of ellipse + * @param integer $height Height of ellipse + * @param integer $size Height of border + * @param float $startAngle Starting angle of circle sector + * @param float $endAngle Ending angle of circle sector + * @param ezcGraphColor $color Color of Border + * @param bool $filled Fill state + * @return void + */ + abstract public function drawCircularArc( ezcGraphCoordinate $center, $width, $height, $size, $startAngle, $endAngle, ezcGraphColor $color, $filled = true ); + + /** + * Draw circle + * + * @param ezcGraphCoordinate $center Center of ellipse + * @param mixed $width Width of ellipse + * @param mixed $height height of ellipse + * @param ezcGraphColor $color Color + * @param mixed $filled Filled + * @return void + */ + abstract public function drawCircle( ezcGraphCoordinate $center, $width, $height, ezcGraphColor $color, $filled = true ); + + /** + * Draw an image + * + * @param mixed $file Image file + * @param ezcGraphCoordinate $position Top left position + * @param mixed $width Width of image in destination image + * @param mixed $height Height of image in destination image + * @return void + */ + abstract public function drawImage( $file, ezcGraphCoordinate $position, $width, $height ); + + /** + * Return mime type for current image format + * + * @return string + */ + abstract public function getMimeType(); + + /** + * Render image directly to output + * + * The method renders the image directly to the standard output. You + * normally do not want to use this function, because it makes it harder + * to proper cache the generated graphs. + * + * @return void + */ + public function renderToOutput() + { + header( 'Content-Type: ' . $this->getMimeType() ); + $this->render( 'php://output' ); + } + + /** + * Finally save image + * + * @param string $file Destination filename + * @return void + */ + abstract public function render( $file ); +} + +?> diff --git a/include/ezcomponents/Graph/src/interfaces/element.php b/include/ezcomponents/Graph/src/interfaces/element.php new file mode 100644 index 000000000..9d93edfd4 --- /dev/null +++ b/include/ezcomponents/Graph/src/interfaces/element.php @@ -0,0 +1,280 @@ +properties['title'] = false; + $this->properties['background'] = false; + $this->properties['boundings'] = new ezcGraphBoundings(); + $this->properties['border'] = false; + $this->properties['borderWidth'] = 0; + $this->properties['padding'] = 0; + $this->properties['margin'] = 0; + $this->properties['position'] = ezcGraph::LEFT; + $this->properties['maxTitleHeight'] = 16; + $this->properties['portraitTitleSize'] = .15; + $this->properties['landscapeTitleSize'] = .2; + $this->properties['font'] = new ezcGraphFontOptions(); + $this->properties['fontCloned'] = false; + + parent::__construct( $options ); + } + + /** + * Set colors and border fro this element + * + * @param ezcGraphPalette $palette Palette + * @return void + */ + public function setFromPalette( ezcGraphPalette $palette ) + { + $this->properties['border'] = $palette->elementBorderColor; + $this->properties['borderWidth'] = $palette->elementBorderWidth; + $this->properties['background'] = $palette->elementBackground; + $this->properties['padding'] = $palette->padding; + $this->properties['margin'] = $palette->margin; + } + + /** + * __set + * + * @param mixed $propertyName + * @param mixed $propertyValue + * @throws ezcBaseValueException + * If a submitted parameter was out of range or type. + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @return void + * @ignore + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case 'title': + $this->properties['title'] = (string) $propertyValue; + break; + case 'background': + $this->properties['background'] = ezcGraphColor::create( $propertyValue ); + break; + case 'border': + $this->properties['border'] = ezcGraphColor::create( $propertyValue ); + break; + case 'padding': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int >= 0' ); + } + + $this->properties['padding'] = (int) $propertyValue; + break; + case 'margin': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int >= 0' ); + } + + $this->properties['margin'] = (int) $propertyValue; + break; + case 'borderWidth': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int >= 0' ); + } + + $this->properties['borderWidth'] = (int) $propertyValue; + break; + case 'font': + if ( $propertyValue instanceof ezcGraphFontOptions ) + { + $this->properties['font'] = $propertyValue; + } + elseif ( is_string( $propertyValue ) ) + { + if ( !$this->fontCloned ) + { + $this->properties['font'] = clone $this->font; + $this->properties['fontCloned'] = true; + } + + $this->properties['font']->path = $propertyValue; + } + else + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'ezcGraphFontOptions' ); + } + break; + case 'position': + $positions = array( + ezcGraph::TOP, + ezcGraph::BOTTOM, + ezcGraph::LEFT, + ezcGraph::RIGHT, + ); + + if ( in_array( $propertyValue, $positions, true ) ) + { + $this->properties['position'] = $propertyValue; + } + else + { + throw new ezcBaseValueException( 'position', $propertyValue, 'integer' ); + } + break; + case 'maxTitleHeight': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int >= 0' ); + } + + $this->properties['maxTitleHeight'] = (int) $propertyValue; + break; + case 'portraitTitleSize': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) || + ( $propertyValue > 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, '0 <= float <= 1' ); + } + + $this->properties['portraitTitleSize'] = (float) $propertyValue; + break; + case 'landscapeTitleSize': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) || + ( $propertyValue > 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, '0 <= float <= 1' ); + } + + $this->properties['landscapeTitleSize'] = (float) $propertyValue; + break; + default: + throw new ezcBasePropertyNotFoundException( $propertyName ); + break; + } + } + + /** + * __get + * + * @param mixed $propertyName + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @return mixed + * @ignore + */ + public function __get( $propertyName ) + { + switch ( $propertyName ) + { + case 'font': + // Clone font configuration when requested for this element + if ( !$this->fontCloned ) + { + $this->properties['font'] = clone $this->properties['font']; + $this->properties['fontCloned'] = true; + } + return $this->properties['font']; + default: + return parent::__get( $propertyName ); + } + } + + /** + * Renders this chart element + * + * This method receives and returns a part of the canvas where it can be + * rendered on. + * + * @param ezcGraphRenderer $renderer + * @param ezcGraphBoundings $boundings + * @return ezcGraphBoundings Part of canvas, which is still free to draw on + */ + abstract public function render( ezcGraphRenderer $renderer, ezcGraphBoundings $boundings ); + + /** + * Returns calculated boundings based on available percentual space of + * given bounding box specified in the elements options and direction of + * the box. + * + * @param ezcGraphBoundings $boundings + * @param int $direction + * @return ezcGraphBoundings + */ + protected function getTitleSize( ezcGraphBoundings $boundings, $direction = ezcGraph::HORIZONTAL ) + { + if ( $direction === ezcGraph::HORIZONTAL ) + { + return min( + $this->maxTitleHeight, + ( $boundings->y1 - $boundings->y0 ) * $this->landscapeTitleSize + ); + } + else + { + return min( + $this->maxTitleHeight, + ( $boundings->y1 - $boundings->y0 ) * $this->portraitTitleSize + ); + } + } +} + +?> diff --git a/include/ezcomponents/Graph/src/interfaces/odometer_renderer.php b/include/ezcomponents/Graph/src/interfaces/odometer_renderer.php new file mode 100644 index 000000000..fe6f6da56 --- /dev/null +++ b/include/ezcomponents/Graph/src/interfaces/odometer_renderer.php @@ -0,0 +1,51 @@ + diff --git a/include/ezcomponents/Graph/src/interfaces/palette.php b/include/ezcomponents/Graph/src/interfaces/palette.php new file mode 100644 index 000000000..d48617c5f --- /dev/null +++ b/include/ezcomponents/Graph/src/interfaces/palette.php @@ -0,0 +1,284 @@ +colorIndex = -1; + $this->symbolIndex = -1; + } + + /** + * Returns the requested property + * + * @param string $propertyName Name of property + * @return mixed + * @ignore + */ + public function __get( $propertyName ) + { + switch ( $propertyName ) + { + case 'axisColor': + case 'majorGridColor': + case 'minorGridColor': + case 'fontColor': + case 'chartBackground': + case 'chartBorderColor': + case 'elementBackground': + case 'elementBorderColor': + return ( $this->$propertyName = $this->checkColor( $this->$propertyName ) ); + + case 'dataSetColor': + $this->colorIndex = ( ( $this->colorIndex + 1 ) % count( $this->dataSetColor ) ); + return $this->checkColor( $this->dataSetColor[ $this->colorIndex ] ); + case 'dataSetSymbol': + $this->symbolIndex = ( ( $this->symbolIndex + 1 ) % count( $this->dataSetSymbol ) ); + return $this->dataSetSymbol[ $this->symbolIndex ]; + + case 'fontName': + case 'chartBorderWidth': + case 'elementBorderWidth': + case 'padding': + case 'margin': + return $this->$propertyName; + + default: + throw new ezcBasePropertyNotFoundException( $propertyName ); + } + } + + /** + * __set + * + * @param mixed $propertyName Property name + * @param mixed $propertyValue Property value + * @access public + * @ignore + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case 'axisColor': + case 'majorGridColor': + case 'minorGridColor': + case 'fontColor': + case 'chartBackground': + case 'chartBorderColor': + case 'elementBackground': + case 'elementBorderColor': + $this->$propertyName = ezcGraphColor::create( $propertyValue ); + break; + + case 'dataSetColor': + if ( !is_array( $propertyValue ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'array( ezcGraphColor )' ); + } + + $this->dataSetColor = array(); + foreach ( $propertyValue as $value ) + { + $this->dataSetColor[] = ezcGraphColor::create( $value ); + } + $this->colorIndex = -1; + break; + case 'dataSetSymbol': + if ( !is_array( $propertyValue ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'array( (int) ezcGraph::SYMBOL_TYPE )' ); + } + + $this->dataSetSymbol = array(); + foreach ( $propertyValue as $value ) + { + $this->dataSetSymbol[] = (int) $value; + } + $this->symbolIndex = -1; + break; + + case 'fontName': + $this->$propertyName = (string) $propertyValue; + break; + + case 'chartBorderWidth': + case 'elementBorderWidth': + case 'padding': + case 'margin': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int >= 0' ); + } + + $this->$propertyName = (int) $propertyValue; + break; + + default: + throw new ezcBasePropertyNotFoundException( $propertyName ); + } + } +} + +?> diff --git a/include/ezcomponents/Graph/src/interfaces/radar_renderer.php b/include/ezcomponents/Graph/src/interfaces/radar_renderer.php new file mode 100644 index 000000000..f1f34eda2 --- /dev/null +++ b/include/ezcomponents/Graph/src/interfaces/radar_renderer.php @@ -0,0 +1,54 @@ + diff --git a/include/ezcomponents/Graph/src/interfaces/renderer.php b/include/ezcomponents/Graph/src/interfaces/renderer.php new file mode 100644 index 000000000..deecc300e --- /dev/null +++ b/include/ezcomponents/Graph/src/interfaces/renderer.php @@ -0,0 +1,571 @@ +driver = $driver; + } + + /** + * Adds a element reference for context + * + * @param ezcGraphContext $context Dataoint context + * @param mixed $reference Driver dependant reference + * @return void + */ + protected function addElementReference( ezcGraphContext $context, $reference ) + { + $this->elements['data'][$context->dataset][$context->datapoint][] = $reference; + } + + /** + * Return all chart element references + * + * @return array chart element references + */ + public function getElementReferences() + { + return $this->elements; + } + + /** + * __get + * + * @param string $propertyName + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @return mixed + * @ignore + */ + public function __get( $propertyName ) + { + switch ( $propertyName ) + { + case 'xAxisSpace': + case 'yAxisSpace': + return $this->$propertyName; + case 'elements': + return $this->elements; + default: + throw new ezcBasePropertyNotFoundException( $propertyName ); + } + } + + /** + * Draw pie segment + * + * Draws a single pie segment + * + * @param ezcGraphBoundings $boundings Chart boundings + * @param ezcGraphContext $context Context of call + * @param ezcGraphColor $color Color of pie segment + * @param float $startAngle Start angle + * @param float $endAngle End angle + * @param mixed $label Label of pie segment + * @param bool $moveOut Move out from middle for hilighting + * @return void + */ + abstract public function drawPieSegment( + ezcGraphBoundings $boundings, + ezcGraphContext $context, + ezcGraphColor $color, + $startAngle = .0, + $endAngle = 360., + $label = false, + $moveOut = false + ); + + /** + * Draw bar + * + * Draws a bar as a data element in a line chart + * + * @param ezcGraphBoundings $boundings Chart boundings + * @param ezcGraphContext $context Context of call + * @param ezcGraphColor $color Color of line + * @param ezcGraphCoordinate $position Position of data point + * @param float $stepSize Space which can be used for bars + * @param int $dataNumber Number of dataset + * @param int $dataCount Count of datasets in chart + * @param int $symbol Symbol to draw for line + * @param float $axisPosition Position of axis for drawing filled lines + * @return void + */ + abstract public function drawBar( + ezcGraphBoundings $boundings, + ezcGraphContext $context, + ezcGraphColor $color, + ezcGraphCoordinate $position, + $stepSize, + $dataNumber = 1, + $dataCount = 1, + $symbol = ezcGraph::NO_SYMBOL, + $axisPosition = 0. + ); + + /** + * Draw data line + * + * Draws a line as a data element in a line chart + * + * @param ezcGraphBoundings $boundings Chart boundings + * @param ezcGraphContext $context Context of call + * @param ezcGraphColor $color Color of line + * @param ezcGraphCoordinate $start Starting point + * @param ezcGraphCoordinate $end Ending point + * @param int $dataNumber Number of dataset + * @param int $dataCount Count of datasets in chart + * @param int $symbol Symbol to draw for line + * @param ezcGraphColor $symbolColor Color of the symbol, defaults to linecolor + * @param ezcGraphColor $fillColor Color to fill line with + * @param float $axisPosition Position of axis for drawing filled lines + * @param float $thickness Line thickness + * @return void + */ + abstract public function drawDataLine( + ezcGraphBoundings $boundings, + ezcGraphContext $context, + ezcGraphColor $color, + ezcGraphCoordinate $start, + ezcGraphCoordinate $end, + $dataNumber = 1, + $dataCount = 1, + $symbol = ezcGraph::NO_SYMBOL, + ezcGraphColor $symbolColor = null, + ezcGraphColor $fillColor = null, + $axisPosition = 0., + $thickness = 1. + ); + + /** + * Draws a highlight textbox for a datapoint. + * + * A highlight textbox for line and bar charts means a box with the current + * value in the graph. + * + * @param ezcGraphBoundings $boundings Chart boundings + * @param ezcGraphContext $context Context of call + * @param ezcGraphCoordinate $end Ending point + * @param float $axisPosition Position of axis for drawing filled lines + * @param int $dataNumber Number of dataset + * @param int $dataCount Count of datasets in chart + * @param ezcGraphFontOptions $font Font used for highlight string + * @param string $text Acutual value + * @param int $size Size of highlight text + * @param ezcGraphColor $markLines + * @return void + */ + abstract public function drawDataHighlightText( + ezcGraphBoundings $boundings, + ezcGraphContext $context, + ezcGraphCoordinate $end, + $axisPosition = 0., + $dataNumber = 1, + $dataCount = 1, + ezcGraphFontOptions $font, + $text, + $size, + ezcGraphColor $markLines = null + ); + + /** + * Draw legend + * + * Will draw a legend in the bounding box + * + * @param ezcGraphBoundings $boundings Bounding of legend + * @param ezcGraphChartElementLegend $legend Legend to draw + * @param int $type Type of legend: Protrait or landscape + * @return void + */ + abstract public function drawLegend( + ezcGraphBoundings $boundings, + ezcGraphChartElementLegend $legend, + $type = ezcGraph::VERTICAL + ); + + /** + * Draw box + * + * Box are wrapping each major chart element and draw border, background + * and title to each chart element. + * + * Optionally a padding and margin for each box can be defined. + * + * @param ezcGraphBoundings $boundings Boundings of the box + * @param ezcGraphColor $background Background color + * @param ezcGraphColor $borderColor Border color + * @param int $borderWidth Border width + * @param int $margin Margin + * @param int $padding Padding + * @param mixed $title Title of the box + * @param int $titleSize Size of title in the box + * @return ezcGraphBoundings Remaining inner boundings + */ + abstract public function drawBox( + ezcGraphBoundings $boundings, + ezcGraphColor $background = null, + ezcGraphColor $borderColor = null, + $borderWidth = 0, + $margin = 0, + $padding = 0, + $title = false, + $titleSize = 16 + ); + + /** + * Draw text + * + * Draws the provided text in the boundings + * + * @param ezcGraphBoundings $boundings Boundings of text + * @param string $text Text + * @param int $align Alignement of text + * @param ezcGraphRotation $rotation + * @return void + */ + abstract public function drawText( + ezcGraphBoundings $boundings, + $text, + $align = ezcGraph::LEFT, + ezcGraphRotation $rotation = null + ); + + /** + * Draw axis + * + * Draws an axis form the provided start point to the end point. A specific + * angle of the axis is not required. + * + * For the labeleing of the axis a sorted array with major steps and an + * array with minor steps is expected, which are build like this: + * array( + * array( + * 'position' => (float), + * 'label' => (string), + * ) + * ) + * where the label is optional. + * + * The label renderer class defines how the labels are rendered. For more + * documentation on this topic have a look at the basic label renderer + * class. + * + * Additionally it can be specified if a major and minor grid are rendered + * by defining a color for them. Teh axis label is used to add a caption + * for the axis. + * + * @param ezcGraphBoundings $boundings Boundings of axis + * @param ezcGraphCoordinate $start Start point of axis + * @param ezcGraphCoordinate $end Endpoint of axis + * @param ezcGraphChartElementAxis $axis Axis to render + * @param ezcGraphAxisLabelRenderer $labelClass Used label renderer + * @return void + */ + abstract public function drawAxis( + ezcGraphBoundings $boundings, + ezcGraphCoordinate $start, + ezcGraphCoordinate $end, + ezcGraphChartElementAxis $axis, + ezcGraphAxisLabelRenderer $labelClass = null + ); + + /** + * Draw background image + * + * Draws a background image at the defined position. If repeat is set the + * background image will be repeated like any texture. + * + * @param ezcGraphBoundings $boundings Boundings for the background image + * @param string $file Filename of background image + * @param int $position Position of background image + * @param int $repeat Type of repetition + * @return void + */ + abstract public function drawBackgroundImage( + ezcGraphBoundings $boundings, + $file, + $position = 48, // ezcGraph::CENTER | ezcGraph::MIDDLE + $repeat = ezcGraph::NO_REPEAT + ); + + /** + * Draw Symbol + * + * Draws a single symbol defined by the symbol constants in ezcGraph. for + * NO_SYMBOL a rect will be drawn. + * + * @param ezcGraphBoundings $boundings Boundings of symbol + * @param ezcGraphColor $color Color of symbol + * @param int $symbol Type of symbol + * @return void + */ + public function drawSymbol( + ezcGraphBoundings $boundings, + ezcGraphColor $color, + $symbol = ezcGraph::NO_SYMBOL ) + { + switch ( $symbol ) + { + case ezcGraph::NO_SYMBOL: + $return = $this->driver->drawPolygon( + array( + new ezcGraphCoordinate( $boundings->x0, $boundings->y0 ), + new ezcGraphCoordinate( $boundings->x1, $boundings->y0 ), + new ezcGraphCoordinate( $boundings->x1, $boundings->y1 ), + new ezcGraphCoordinate( $boundings->x0, $boundings->y1 ), + ), + $color, + true + ); + + // Draw optional gleam + if ( $this->options->legendSymbolGleam !== false ) + { + $this->driver->drawPolygon( + array( + $topLeft = new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->x1 - $boundings->x0 ) * $this->options->legendSymbolGleamSize, + $boundings->y0 + ( $boundings->y1 - $boundings->y0 ) * $this->options->legendSymbolGleamSize + ), + new ezcGraphCoordinate( + $boundings->x1 - ( $boundings->x1 - $boundings->x0 ) * $this->options->legendSymbolGleamSize, + $boundings->y0 + ( $boundings->y1 - $boundings->y0 ) * $this->options->legendSymbolGleamSize + ), + $bottomRight = new ezcGraphCoordinate( + $boundings->x1 - ( $boundings->x1 - $boundings->x0 ) * $this->options->legendSymbolGleamSize, + $boundings->y1 - ( $boundings->y1 - $boundings->y0 ) * $this->options->legendSymbolGleamSize + ), + new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->x1 - $boundings->x0 ) * $this->options->legendSymbolGleamSize, + $boundings->y1 - ( $boundings->y1 - $boundings->y0 ) * $this->options->legendSymbolGleamSize + ), + ), + new ezcGraphLinearGradient( + $bottomRight, + $topLeft, + $color->darken( -$this->options->legendSymbolGleam ), + $color->darken( $this->options->legendSymbolGleam ) + ), + true + ); + } + return $return; + case ezcGraph::DIAMOND: + $return = $this->driver->drawPolygon( + array( + new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->x1 - $boundings->x0 ) / 2, + $boundings->y0 + ), + new ezcGraphCoordinate( + $boundings->x1, + $boundings->y0 + ( $boundings->y1 - $boundings->y0 ) / 2 + ), + new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->x1 - $boundings->x0 ) / 2, + $boundings->y1 + ), + new ezcGraphCoordinate( + $boundings->x0, + $boundings->y0 + ( $boundings->y1 - $boundings->y0 ) / 2 + ), + ), + $color, + true + ); + + // Draw optional gleam + if ( $this->options->legendSymbolGleam !== false ) + { + $this->driver->drawPolygon( + array( + new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->x1 - $boundings->x0 ) / 2, + $boundings->y0 + ( $boundings->y1 - $boundings->y0 ) * $this->options->legendSymbolGleamSize + ), + new ezcGraphCoordinate( + $boundings->x1 - ( $boundings->x1 - $boundings->x0 ) * $this->options->legendSymbolGleamSize, + $boundings->y0 + ( $boundings->y1 - $boundings->y0 ) / 2 + ), + new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->x1 - $boundings->x0 ) / 2, + $boundings->y1 - ( $boundings->y1 - $boundings->y0 ) * $this->options->legendSymbolGleamSize + ), + new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->x1 - $boundings->x0 ) * $this->options->legendSymbolGleamSize, + $boundings->y0 + ( $boundings->y1 - $boundings->y0 ) / 2 + ), + ), + new ezcGraphLinearGradient( + new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->x1 - $boundings->x0 ) * 0.353553391, + $boundings->y0 + ( $boundings->y1 - $boundings->y0 ) * 0.353553391 + ), + new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->x1 - $boundings->x0 ) * ( 1 - 0.353553391 ), + $boundings->y0 + ( $boundings->y1 - $boundings->y0 ) * ( 1 - 0.353553391 ) + ), + $color->darken( -$this->options->legendSymbolGleam ), + $color->darken( $this->options->legendSymbolGleam ) + ), + true + ); + } + return $return; + case ezcGraph::BULLET: + $return = $this->driver->drawCircle( + new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->x1 - $boundings->x0 ) / 2, + $boundings->y0 + ( $boundings->y1 - $boundings->y0 ) / 2 + ), + $boundings->x1 - $boundings->x0, + $boundings->y1 - $boundings->y0, + $color, + true + ); + + // Draw optional gleam + if ( $this->options->legendSymbolGleam !== false ) + { + $this->driver->drawCircle( + new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->x1 - $boundings->x0 ) / 2, + $boundings->y0 + ( $boundings->y1 - $boundings->y0 ) / 2 + ), + ( $boundings->x1 - $boundings->x0 ) * $this->options->legendSymbolGleamSize, + ( $boundings->y1 - $boundings->y0 ) * $this->options->legendSymbolGleamSize, + new ezcGraphLinearGradient( + new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->x1 - $boundings->x0 ) * 0.292893219, + $boundings->y0 + ( $boundings->y1 - $boundings->y0 ) * 0.292893219 + ), + new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->x1 - $boundings->x0 ) * 0.707106781, + $boundings->y0 + ( $boundings->y1 - $boundings->y0 ) * 0.707106781 + ), + $color->darken( -$this->options->legendSymbolGleam ), + $color->darken( $this->options->legendSymbolGleam ) + ), + true + ); + } + return $return; + case ezcGraph::CIRCLE: + return $this->driver->drawCircle( + new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->x1 - $boundings->x0 ) / 2, + $boundings->y0 + ( $boundings->y1 - $boundings->y0 ) / 2 + ), + $boundings->x1 - $boundings->x0, + $boundings->y1 - $boundings->y0, + $color, + false + ); + } + } + + /** + * Finish rendering + * + * Method is called before the final image is renderer, so that finishing + * operations can be performed here. + * + * @return void + */ + abstract protected function finish(); + + /** + * Reset renderer properties + * + * Reset all renderer properties, which were calculated during the + * rendering process, to offer a clean environment for rerendering. + * + * @return void + */ + protected function resetRenderer() + { + $this->xAxisSpace = false; + $this->yAxisSpace = false; + + // Reset driver, maintaining its configuration + $driverClass = get_class( $this->driver ); + $driverOptions = $this->driver->options; + $this->driver = new $driverClass(); + $this->driver->options = $driverOptions; + } + + /** + * Finally renders the image + * + * @param string $file Filename of destination file + * @return void + */ + public function render( $file = null ) + { + $this->finish(); + + if ( $file === null ) + { + $this->driver->renderToOutput(); + } + else + { + $this->driver->render( $file ); + } + + $this->resetRenderer(); + } +} +?> diff --git a/include/ezcomponents/Graph/src/interfaces/stacked_bar_renderer.php b/include/ezcomponents/Graph/src/interfaces/stacked_bar_renderer.php new file mode 100644 index 000000000..949d7e909 --- /dev/null +++ b/include/ezcomponents/Graph/src/interfaces/stacked_bar_renderer.php @@ -0,0 +1,46 @@ + diff --git a/include/ezcomponents/Graph/src/math/boundings.php b/include/ezcomponents/Graph/src/math/boundings.php new file mode 100644 index 000000000..36b6c8e4d --- /dev/null +++ b/include/ezcomponents/Graph/src/math/boundings.php @@ -0,0 +1,105 @@ +x0 = $x0; + $this->y0 = $y0; + $this->x1 = $x1; + $this->y1 = $y1; + + // Switch values to ensure correct order + if ( $this->x0 > $this->x1 ) + { + $tmp = $this->x0; + $this->x0 = $this->x1; + $this->x1 = $tmp; + } + + if ( $this->y0 > $this->y1 ) + { + $tmp = $this->y0; + $this->y0 = $this->y1; + $this->y1 = $tmp; + } + } + + /** + * Getter for calculated values depending on the boundings. + * - 'width': Width of bounding recangle + * - 'height': Height of bounding recangle + * + * @param string $name Name of property to get + * @return mixed Calculated value + */ + public function __get( $name ) + { + switch ( $name ) + { + case 'width': + return $this->x1 - $this->x0; + case 'height': + return $this->y1 - $this->y0; + default: + throw new ezcBasePropertyNotFoundException( $name ); + } + } +} + +?> diff --git a/include/ezcomponents/Graph/src/math/matrix.php b/include/ezcomponents/Graph/src/math/matrix.php new file mode 100644 index 000000000..97c4404c9 --- /dev/null +++ b/include/ezcomponents/Graph/src/math/matrix.php @@ -0,0 +1,502 @@ +rows = max( 1, (int) $rows ); + $this->columns = max( 1, (int) $columns ); + + if ( $values !== null ) + { + $this->fromArray( $values ); + } + else + { + $this->init(); + } + } + + /** + * Create matrix from array + * + * Use an array with float values to set matrix values. + * + * @param array $values Array with values + * @return ezcGraphMatrix Modified matrix + */ + public function fromArray( array $values ) + { + for ( $i = 0; $i < $this->rows; ++$i ) + { + for ( $j = 0; $j < $this->columns; ++$j ) + { + $this->matrix[$i][$j] = + ( isset( $values[$i][$j] ) + ? (float) $values[$i][$j] + : 0 ); + } + } + + return $this; + } + + /** + * Init matrix + * + * Sets matrix to identity matrix. + * + * @return ezcGraphMatrix Modified matrix + */ + public function init() + { + for ( $i = 0; $i < $this->rows; ++$i ) + { + for ( $j = 0; $j < $this->columns; ++$j ) + { + $this->matrix[$i][$j] = ( $i === $j ? 1 : 0 ); + } + } + + return $this; + } + + /** + * Returns number of rows + * + * @return int Number of rows + */ + public function rows() + { + return $this->rows; + } + + /** + * Returns number of columns + * + * @return int Number of columns + */ + public function columns() + { + return $this->columns; + } + + /** + * Get a single matrix value + * + * Returns the value of the matrix at the given position + * + * @param int $i Column + * @param int $j Row + * @return float Matrix value + */ + public function get( $i, $j ) + { + if ( ( $i < 0 ) || + ( $i >= $this->rows ) || + ( $j < 0 ) || + ( $j >= $this->columns ) ) + { + throw new ezcGraphMatrixOutOfBoundingsException( $this->rows, $this->columns, $i, $j ); + } + + return ( !isset( $this->matrix[$i][$j] ) ? .0 : $this->matrix[$i][$j] ); + } + + /** + * Set a single matrix value + * + * Sets the value of the matrix at the given position. + * + * @param int $i Column + * @param int $j Row + * @param float $value Value + * @return ezcGraphMatrix Updated matrix + */ + public function set( $i, $j, $value ) + { + if ( ( $i < 0 ) || + ( $i >= $this->rows ) || + ( $j < 0 ) || + ( $j >= $this->columns ) ) + { + throw new ezcGraphMatrixOutOfBoundingsException( $this->rows, $this->columns, $i, $j ); + } + + $this->matrix[$i][$j] = $value; + + return $this; + } + + /** + * Adds one matrix to the current one + * + * Calculate the sum of two matrices and returns the resulting matrix. + * + * @param ezcGraphMatrix $matrix Matrix to sum with + * @return ezcGraphMatrix Result matrix + */ + public function add( ezcGraphMatrix $matrix ) + { + if ( ( $this->rows !== $matrix->rows() ) || + ( $this->columns !== $matrix->columns() ) ) + { + throw new ezcGraphMatrixInvalidDimensionsException( $this->rows, $this->columns, $matrix->rows(), $matrix->columns() ); + } + + for ( $i = 0; $i < $this->rows; ++$i ) + { + for ( $j = 0; $j < $this->columns; ++$j ) + { + $this->matrix[$i][$j] += $matrix->get( $i, $j ); + } + } + + return $this; + } + + /** + * Subtracts matrix from current one + * + * Calculate the diffenrence of two matices and returns the result matrix. + * + * @param ezcGraphMatrix $matrix subtrahend + * @return ezcGraphMatrix Result matrix + */ + public function diff( ezcGraphMatrix $matrix ) + { + if ( ( $this->rows !== $matrix->rows() ) || + ( $this->columns !== $matrix->columns() ) ) + { + throw new ezcGraphMatrixInvalidDimensionsException( $this->rows, $this->columns, $matrix->rows(), $matrix->columns() ); + } + + for ( $i = 0; $i < $this->rows; ++$i ) + { + for ( $j = 0; $j < $this->columns; ++$j ) + { + $this->matrix[$i][$j] -= $matrix->get( $i, $j ); + } + } + + return $this; + } + + /** + * Scalar multiplication + * + * Multiplies matrix with the given scalar and returns the result matrix + * + * @param float $scalar Scalar + * @return ezcGraphMatrix Result matrix + */ + public function scalar( $scalar ) + { + $scalar = (float) $scalar; + + for ( $i = 0; $i < $this->rows; ++$i ) + { + for ( $j = 0; $j < $this->columns; ++$j ) + { + $this->matrix[$i][$j] *= $scalar; + } + } + } + + /** + * Transpose matrix + * + * @return ezcGraphMatrix Transposed matrix + */ + public function transpose() + { + $matrix = clone $this; + + $this->rows = $matrix->columns(); + $this->columns = $matrix->rows(); + + $this->matrix = array(); + + for ( $i = 0; $i < $this->rows; ++$i ) + { + for ( $j = 0; $j < $this->columns; ++$j ) + { + $this->matrix[$i][$j] = $matrix->get( $j, $i ); + } + } + + return $this; + } + + /** + * Multiplies two matrices + * + * Multiply current matrix with another matrix and returns the result + * matrix. + * + * @param ezcGraphMatrix $matrix Second factor + * @return ezcGraphMatrix Result matrix + */ + public function multiply( ezcGraphMatrix $matrix ) + { + $mColumns = $matrix->columns(); + if ( $this->columns !== ( $mRows = $matrix->rows() ) ) + { + throw new ezcGraphMatrixInvalidDimensionsException( $this->columns, $this->rows, $mColumns, $mRows ); + } + + $result = new ezcGraphMatrix( $this->rows, $mColumns ); + + for ( $i = 0; $i < $this->rows; ++$i ) + { + for ( $j = 0; $j < $mColumns; ++$j ) + { + $sum = 0; + for ( $k = 0; $k < $mRows; ++$k ) { + $sum += $this->matrix[$i][$k] * $matrix->get( $k, $j ); + } + + $result->set( $i, $j, $sum ); + } + } + + return $result; + } + + /** + * Solve nonlinear equatation + * + * Tries to solve equatation given by two matrices, with assumption, that: + * A * x = B + * where $this is A, and the paramenter B. x is cosnidered as a vector + * x = ( x^n, x^(n-1), ..., x^2, x, 1 ) + * + * Will return a polynomial solution for x. + * + * See: http://en.wikipedia.org/wiki/Gauss-Newton_algorithm + * + * @param ezcGraphMatrix $matrix B + * @return ezcGraphPolygon Solution of equatation + */ + public function solveNonlinearEquatation( ezcGraphMatrix $matrix ) + { + // Build complete equatation + $equatation = new ezcGraphMatrix( $this->rows, $columns = ( $this->columns + 1 ) ); + + for ( $i = 0; $i < $this->rows; ++$i ) + { + for ( $j = 0; $j < $this->columns; ++$j ) + { + $equatation->set( $i, $j, $this->matrix[$i][$j] ); + } + $equatation->set( $i, $this->columns, $matrix->get( $i, 0 ) ); + } + + // Compute upper triangular matrix on left side of equatation + for ( $i = 0; $i < ( $this->rows - 1 ); ++$i ) + { + for ( $j = $i + 1; $j < $this->rows; ++$j ) + { + if ( $equatation->get( $j, $i ) !== 0 ) + { + if ( $equatation->get( $j, $i ) == 0 ) + { + continue; + } + else + { + $factor = -( $equatation->get( $i, $i ) / $equatation->get( $j, $i ) ); + } + + for ( $k = $i; $k < $columns; ++$k ) + { + $equatation->set( $j, $k, $equatation->get( $i, $k ) + $factor * $equatation->get( $j, $k ) ); + } + } + } + } + + // Normalize values on left side matrix diagonale + for ( $i = 0; $i < $this->rows; ++$i ) + { + if ( ( ( $value = $equatation->get( $i, $i ) ) != 1 ) && + ( $value != 0 ) ) + { + $factor = 1 / $value; + for ( $k = $i; $k < $columns; ++$k ) + { + $equatation->set( $i, $k, $equatation->get( $i, $k ) * $factor ); + } + } + } + + // Build up solving polynom + $polynom = new ezcGraphPolynom(); + for ( $i = ( $this->rows - 1 ); $i >= 0; --$i ) + { + for ( $j = $i + 1; $j < $this->columns; ++$j ) + { + $equatation->set( + $i, + $this->columns, + $equatation->get( $i, $this->columns ) + ( -$equatation->get( $i, $j ) * $polynom->get( $j ) ) + ); + $equatation->set( $i, $j, 0 ); + } + $polynom->set( $i, $equatation->get( $i, $this->columns ) ); + } + + return $polynom; + } + + /** + * Build LR decomposition from matrix + * + * Use Cholesky-Crout algorithm to get LR decomposition of the current + * matrix. + * + * Will return an array with two matrices: + * array( + * 'l' => (ezcGraphMatrix) $left, + * 'r' => (ezcGraphMatrix) $right, + * ) + * + * @return array( ezcGraphMatrix ) + */ + public function LRdecomposition() + { + /** + * Use Cholesky-Crout algorithm to get LR decomposition + * + * Input: Matrix A ($this) + * + * For i = 1 To n + * For j = i To n + * R(i,j)=A(i,j) + * For k = 1 TO i-1 + * R(i,j)-=L(i,k)*R(k,j) + * end + * end + * For j=i+1 To n + * L(j,i)= A(j,i) + * For k = 1 TO i-1 + * L(j,i)-=L(j,k)*R(k,i) + * end + * L(j,i)/=R(i,i) + * end + * end + * + * Output: matrices L,R + */ + $l = new ezcGraphMatrix( $this->columns, $this->rows ); + $r = new ezcGraphMatrix( $this->columns, $this->rows ); + + for ( $i = 0; $i < $this->columns; ++$i ) + { + for ( $j = $i; $j < $this->rows; ++$j ) + { + $r->set( $i, $j, $this->matrix[$i][$j] ); + for ( $k = 0; $k <= ( $i - 1 ); ++$k ) + { + $r->set( $i, $j, $r->get( $i, $j ) - $l->get( $i, $k ) * $r->get( $k, $j ) ); + } + } + + for ( $j = $i + 1; $j < $this->rows; ++$j ) + { + $l->set( $j, $i, $this->matrix[$j][$i] ); + for ( $k = 0; $k <= ( $i - 1 ); ++$k ) + { + $l->set( $j, $i, $l->get( $j, $i ) - $l->get( $j, $k ) * $r->get( $k, $i ) ); + } + $l->set( $j, $i, $l->get( $j, $i ) / $r->get( $i, $i ) ); + } + } + + return array( + 'l' => $l, + 'r' => $r, + ); + } + + /** + * Returns a string representation of the matrix + * + * @return string + */ + public function __toString() + { + $string = sprintf( "%d x %d matrix:\n", $this->rows, $this->columns ); + + for ( $i = 0; $i < $this->rows; ++$i ) + { + $string .= '| '; + for ( $j = 0; $j < $this->columns; ++$j ) + { + $string .= sprintf( '%04.2f ', $this->get( $i, $j ) ); + } + $string .= "|\n"; + } + + return $string; + } +} +?> diff --git a/include/ezcomponents/Graph/src/math/polynom.php b/include/ezcomponents/Graph/src/math/polynom.php new file mode 100644 index 000000000..c2f0484aa --- /dev/null +++ b/include/ezcomponents/Graph/src/math/polynom.php @@ -0,0 +1,230 @@ + (float) 2, + * (int) 1 => (float) .5, + * (int) 0 => (float) -3, + * ) + * + * @var array + */ + protected $values; + + // @TODO: Introduce precision option for string output? + + /** + * Constructor + * + * Constructs a polynom object from given array, where the key is the + * exponent and the value the factor. + * An example: + * Polynom: + * 2 * x^3 + .5 * x - 3 + * Array: + * array ( + * (int) 3 => (float) 2, + * (int) 1 => (float) .5, + * (int) 0 => (float) -3, + * ) + * + * @param array $values Array with values + * @return ezcGraphPolynom + */ + public function __construct( array $values = array() ) + { + foreach ( $values as $exponent => $factor ) + { + $this->values[(int) $exponent] = (float) $factor; + } + } + + /** + * Initialise a polygon + * + * Initialise a polygon of the given order. Sets all factors to 0. + * + * @param int $order Order of polygon + * @return ezcGraphPolynom Created polynom + */ + public function init( $order ) + { + for ( $i = 0; $i <= $order; ++$i ) + { + $this->values[$i] = 0; + } + + return $this; + } + + /** + * Return factor for one exponent + * + * @param int $exponent Exponent + * @return float Factor + */ + public function get( $exponent ) + { + if ( !isset( $this->values[$exponent] ) ) + { + return 0; + } + else + { + return $this->values[$exponent]; + } + } + + /** + * Set the factor for one exponent + * + * @param int $exponent Exponent + * @param float $factor Factor + * @return ezcGraphPolynom Modified polynom + */ + public function set( $exponent, $factor ) + { + $this->values[(int) $exponent] = (float) $factor; + + return $this; + } + + /** + * Returns the order of the polynom + * + * @return int Polynom order + */ + public function getOrder() + { + return max( array_keys( $this->values ) ); + } + + /** + * Adds polynom to current polynom + * + * @param ezcGraphPolynom $polynom Polynom to add + * @return ezcGraphPolynom Modified polynom + */ + public function add( ezcGraphPolynom $polynom ) + { + $order = max( + $this->getOrder(), + $polynom->getOrder() + ); + + for ( $i = 0; $i <= $order; ++$i ) + { + $this->set( $i, $this->get( $i ) + $polynom->get( $i ) ); + } + + return $this; + } + + /** + * Evaluate Polynom with a given value + * + * @param float $x Value + * @return float Result + */ + public function evaluate( $x ) + { + $value = 0; + foreach ( $this->values as $exponent => $factor ) + { + $value += $factor * pow( $x, $exponent ); + } + + return $value; + } + + /** + * Returns a string represenation of the polynom + * + * @return string String representation of polynom + */ + public function __toString() + { + krsort( $this->values ); + $string = ''; + + foreach ( $this->values as $exponent => $factor ) + { + if ( $factor == 0 ) + { + continue; + } + + $string .= ( $factor < 0 ? ' - ' : ' + ' ); + + $factor = abs( $factor ); + switch ( true ) + { + case abs( 1 - $factor ) < .0001: + // No not append, if factor is ~1 + break; + case $factor < 1: + case $factor >= 1000: + $string .= sprintf( '%.2e ', $factor ); + break; + case $factor >= 100: + $string .= sprintf( '%.0f ', $factor ); + break; + case $factor >= 10: + $string .= sprintf( '%.1f ', $factor ); + break; + default: + $string .= sprintf( '%.2f ', $factor ); + break; + } + + switch ( true ) + { + case $exponent > 1: + $string .= sprintf( 'x^%d', $exponent ); + break; + case $exponent === 1: + $string .= 'x'; + break; + case $exponent === 0: + if ( abs( 1 - $factor ) < .0001 ) + { + $string .= '1'; + } + break; + } + } + + if ( substr( $string, 0, 3 ) === ' + ' ) + { + $string = substr( $string, 3 ); + } + else + { + $string = '-' . substr( $string, 3 ); + } + + return trim( $string ); + } +} +?> diff --git a/include/ezcomponents/Graph/src/math/rotation.php b/include/ezcomponents/Graph/src/math/rotation.php new file mode 100644 index 000000000..f17467ca0 --- /dev/null +++ b/include/ezcomponents/Graph/src/math/rotation.php @@ -0,0 +1,90 @@ +rotation = (float) $rotation; + + if ( $center === null ) + { + $this->center = new ezcGraphCoordinate( 0, 0 ); + + $clockwiseRotation = deg2rad( $rotation ); + $rotationMatrixArray = array( + array( cos( $clockwiseRotation ), -sin( $clockwiseRotation ), 0 ), + array( sin( $clockwiseRotation ), cos( $clockwiseRotation ), 0 ), + array( 0, 0, 1 ), + ); + + return parent::__construct( $rotationMatrixArray ); + } + + parent::__construct(); + + $this->center = $center; + + $this->multiply( new ezcGraphTranslation( $center->x, $center->y ) ); + $this->multiply( new ezcGraphRotation( $rotation ) ); + $this->multiply( new ezcGraphTranslation( -$center->x, -$center->y ) ); + } + + /** + * Return rotaion angle in degrees + * + * @return float + */ + public function getRotation() + { + return $this->rotation; + } + + /** + * Return the center point of the current rotation + * + * @return ezcGraphCoordinate + */ + public function getCenter() + { + return $this->center; + } +} + +?> diff --git a/include/ezcomponents/Graph/src/math/transformation.php b/include/ezcomponents/Graph/src/math/transformation.php new file mode 100644 index 000000000..3731a4847 --- /dev/null +++ b/include/ezcomponents/Graph/src/math/transformation.php @@ -0,0 +1,85 @@ +columns(); + + // We want to ensure, that the matrix stays 3x3 + if ( ( $this->columns !== $matrix->rows() ) && + ( $this->rows !== $mColumns ) ) + { + throw new ezcGraphMatrixInvalidDimensionsException( $this->columns, $this->rows, $mColumns, $matrix->rows() ); + } + + $result = parent::multiply( $matrix ); + + // The matrix dimensions stay the same, so that we can modify $this. + for ( $i = 0; $i < $this->rows; ++$i ) + { + for ( $j = 0; $j < $mColumns; ++$j ) + { + $this->set( $i, $j, $result->get( $i, $j ) ); + } + } + + return $this; + } + + /** + * Transform a coordinate with the current transformation matrix. + * + * @param ezcGraphCoordinate $coordinate + * @return ezcGraphCoordinate + */ + public function transformCoordinate( ezcGraphCoordinate $coordinate ) + { + $vector = new ezcGraphMatrix( 3, 1, array( array( $coordinate->x ), array( $coordinate->y ), array( 1 ) ) ); + $vector = parent::multiply( $vector ); + + return new ezcGraphCoordinate( $vector->get( 0, 0 ), $vector->get( 1, 0 ) ); + } +} + +?> diff --git a/include/ezcomponents/Graph/src/math/translation.php b/include/ezcomponents/Graph/src/math/translation.php new file mode 100644 index 000000000..1304b9067 --- /dev/null +++ b/include/ezcomponents/Graph/src/math/translation.php @@ -0,0 +1,38 @@ + diff --git a/include/ezcomponents/Graph/src/math/vector.php b/include/ezcomponents/Graph/src/math/vector.php new file mode 100644 index 000000000..28edd6cd2 --- /dev/null +++ b/include/ezcomponents/Graph/src/math/vector.php @@ -0,0 +1,187 @@ +x; + $this->x = $this->y; + $this->y = -$tmp; + + return $this; + } + + /** + * Rotates vector to the right by 90 degrees + * + * @return void + */ + public function rotateClockwise() + { + $tmp = $this->x; + $this->x = -$this->y; + $this->y = $tmp; + + return $this; + } + + /** + * Unifies vector length to 1 + * + * @return void + */ + public function unify() + { + $length = $this->length(); + if ( $length == 0 ) + { + return $this; + } + + $this->x /= $length; + $this->y /= $length; + + return $this; + } + + /** + * Returns length of vector + * + * @return float + */ + public function length() + { + return sqrt( + pow( $this->x, 2 ) + + pow( $this->y, 2 ) + ); + } + + /** + * Multiplies vector with a scalar + * + * @param float $value + * @return void + */ + public function scalar( $value ) + { + $this->x *= $value; + $this->y *= $value; + + return $this; + } + + /** + * Calculates scalar product of two vectors + * + * @param ezcGraphCoordinate $vector + * @return void + */ + public function mul( ezcGraphCoordinate $vector ) + { + return $this->x * $vector->x + $this->y * $vector->y; + } + + /** + * Returns the angle between two vectors in radian + * + * @param ezcGraphCoordinate $vector + * @return float + */ + public function angle( ezcGraphCoordinate $vector ) + { + if ( !$vector instanceof ezcGraphVector ) + { + // Ensure beeing a vector for calling length() + $vector = ezcGraphVector::fromCoordinate( $vector ); + } + + $factor = $this->length() * $vector->length(); + + if ( $factor == 0 ) + { + return false; + } + else + { + return acos( $this->mul( $vector ) / $factor ); + } + } + + /** + * Adds a vector to another vector + * + * @param ezcGraphCoordinate $vector + * @return void + */ + public function add( ezcGraphCoordinate $vector ) + { + $this->x += $vector->x; + $this->y += $vector->y; + + return $this; + } + + /** + * Subtracts a vector from another vector + * + * @param ezcGraphCoordinate $vector + * @return void + */ + public function sub( ezcGraphCoordinate $vector ) + { + $this->x -= $vector->x; + $this->y -= $vector->y; + + return $this; + } + + /** + * Creates a vector from a coordinate object + * + * @param ezcGraphCoordinate $coordinate + * @return ezcGraphVector + */ + public static function fromCoordinate( ezcGraphCoordinate $coordinate ) + { + return new ezcGraphVector( $coordinate->x, $coordinate->y ); + } + + /** + * Transform vector using transformation matrix + * + * @param ezcGraphTransformation $transformation + * @return ezcGraphVector + */ + public function transform( ezcGraphTransformation $transformation ) + { + $result = $transformation->transformCoordinate( $this ); + + $this->x = $result->x; + $this->y = $result->y; + + return $this; + } +} + +?> diff --git a/include/ezcomponents/Graph/src/options/cairo_driver.php b/include/ezcomponents/Graph/src/options/cairo_driver.php new file mode 100644 index 000000000..d9d966972 --- /dev/null +++ b/include/ezcomponents/Graph/src/options/cairo_driver.php @@ -0,0 +1,100 @@ + + * $graph = new ezcGraphPieChart(); + * $graph->background->color = '#FFFFFFFF'; + * $graph->title = 'Access statistics'; + * $graph->legend = false; + * + * $graph->data['Access statistics'] = new ezcGraphArrayDataSet( array( + * 'Mozilla' => 19113, + * 'Explorer' => 10917, + * 'Opera' => 1464, + * 'Safari' => 652, + * 'Konqueror' => 474, + * ) ); + * + * $graph->driver = new ezcGraphCairoDriver(); + * + * // No options yet. + * + * $graph->render( 400, 200, 'tutorial_driver_cairo.png' ); + * + * + * @property float $imageMapResolution + * Degree step used to interpolate round image primitives by + * polygons for image maps + * @property float $circleResolution + * Resolution for circles, until I understand how to draw ellipses + * with SWFShape::curveTo() + * + * @version 1.3 + * @package Graph + */ +class ezcGraphCairoDriverOptions extends ezcGraphDriverOptions +{ + /** + * Constructor + * + * @param array $options Default option array + * @return void + * @ignore + */ + public function __construct( array $options = array() ) + { + $this->properties['imageMapResolution'] = 10; + $this->properties['circleResolution'] = 2.; + + parent::__construct( $options ); + } + + /** + * Set an option value + * + * @param string $propertyName + * @param mixed $propertyValue + * @throws ezcBasePropertyNotFoundException + * If a property is not defined in this class + * @return void + * @ignore + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case 'imageMapResolution': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int >= 1' ); + } + + $this->properties['imageMapResolution'] = (int) $propertyValue; + break; + case 'circleResolution': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue <= 0 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'float > 0' ); + } + + $this->properties['circleResolution'] = (float) $propertyValue; + break; + default: + parent::__set( $propertyName, $propertyValue ); + break; + } + } +} + +?> diff --git a/include/ezcomponents/Graph/src/options/chart.php b/include/ezcomponents/Graph/src/options/chart.php new file mode 100644 index 000000000..311da801f --- /dev/null +++ b/include/ezcomponents/Graph/src/options/chart.php @@ -0,0 +1,107 @@ + + * $graph = new ezcGraphPieChart(); + * $graph->palette = new ezcGraphPaletteEzBlue(); + * $graph->title = 'Access statistics'; + * + * // Global font options + * $graph->options->font->name = 'serif'; + * + * // Special font options for sub elements + * $graph->title->background = '#EEEEEC'; + * $graph->title->font->name = 'sans-serif'; + * + * $graph->options->font->maxFontSize = 8; + * + * $graph->data['Access statistics'] = new ezcGraphArrayDataSet( array( + * 'Mozilla' => 19113, + * 'Explorer' => 10917, + * 'Opera' => 1464, + * 'Safari' => 652, + * 'Konqueror' => 474, + * ) ); + * + * $graph->render( 400, 150, 'tutorial_chart_title.svg' ); + * + * + * @property int $width + * Width of the chart. + * @property int $height + * Height of the chart. + * @property ezcGraphFontOptions $font + * Font used in the graph. + * + * @version 1.3 + * @package Graph + */ +class ezcGraphChartOptions extends ezcBaseOptions +{ + /** + * Constructor + * + * @param array $options Default option array + * @return void + * @ignore + */ + public function __construct( array $options = array() ) + { + $this->properties['width'] = null; + $this->properties['height'] = null; + $this->properties['font'] = new ezcGraphFontOptions(); + + parent::__construct( $options ); + } + + /** + * Set an option value + * + * @param string $propertyName + * @param mixed $propertyValue + * @throws ezcBasePropertyNotFoundException + * If a property is not defined in this class + * @ignore + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case 'width': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int >= 1' ); + } + + $this->properties['width'] = (int) $propertyValue; + break; + case 'height': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int >= 1' ); + } + + $this->properties['height'] = (int) $propertyValue; + break; + case 'font': + $this->properties['font']->path = $propertyValue; + break; + default: + throw new ezcBasePropertyNotFoundException( $propertyName ); + break; + } + } +} + +?> diff --git a/include/ezcomponents/Graph/src/options/driver.php b/include/ezcomponents/Graph/src/options/driver.php new file mode 100644 index 000000000..1711f6716 --- /dev/null +++ b/include/ezcomponents/Graph/src/options/driver.php @@ -0,0 +1,157 @@ + + * require_once 'tutorial_autoload.php'; + * + * $graph = new ezcGraphPieChart(); + * $graph->palette = new ezcGraphPaletteEzBlue(); + * $graph->title = 'Access statistics'; + * + * $graph->data['Access statistics'] = new ezcGraphArrayDataSet( array( + * 'Mozilla' => 19113, + * 'Explorer' => 10917, + * 'Opera' => 1464, + * 'Safari' => 652, + * 'Konqueror' => 474, + * ) ); + * + * $graph->driver->options->autoShortenString = false; + * + * $graph->render( 400, 150, 'tutorial_chart_title.svg' ); + * + * + * @property int $width + * Width of the chart. + * @property int $height + * Height of the chart. + * @property float $shadeCircularArc + * Percent to darken circular arcs at the sides + * @property float $lineSpacing + * Percent of font size used for line spacing + * @property int $font + * Font used in the graph. + * @property bool $autoShortenString + * Automatically shorten string if it does not fit into a box + * @property string $autoShortenStringPostFix + * String to append to shortened strings, if there is enough space + * + * @version 1.3 + * @package Graph + */ +abstract class ezcGraphDriverOptions extends ezcBaseOptions +{ + /** + * Constructor + * + * @param array $options Default option array + * @return void + * @ignore + */ + public function __construct( array $options = array() ) + { + $this->properties['width'] = null; + $this->properties['height'] = null; + + $this->properties['lineSpacing'] = .1; + $this->properties['shadeCircularArc'] = .5; + $this->properties['font'] = new ezcGraphFontOptions(); + $this->properties['font']->color = ezcGraphColor::fromHex( '#000000' ); + + $this->properties['autoShortenString'] = true; + $this->properties['autoShortenStringPostFix'] = '..'; + + parent::__construct( $options ); + } + + /** + * Set an option value + * + * @param string $propertyName + * @param mixed $propertyValue + * @throws ezcBasePropertyNotFoundException + * If a property is not defined in this class + * @return void + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case 'width': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int >= 1' ); + } + + $this->properties['width'] = (int) $propertyValue; + break; + case 'height': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int >= 1' ); + } + + $this->properties['height'] = (int) $propertyValue; + break; + case 'lineSpacing': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) || + ( $propertyValue > 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, '0 <= float <= 1' ); + } + + $this->properties['lineSpacing'] = (float) $propertyValue; + break; + case 'shadeCircularArc': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) || + ( $propertyValue > 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, '0 <= float <= 1' ); + } + + $this->properties['shadeCircularArc'] = (float) $propertyValue; + break; + case 'font': + if ( $propertyValue instanceof ezcGraphFontOptions ) + { + $this->properties['font'] = $propertyValue; + } + else + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'ezcGraphFontOptions' ); + } + break; + case 'autoShortenString': + if ( is_bool( $propertyValue ) ) + { + $this->properties['autoShortenString'] = $propertyValue; + } + else + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'boolean' ); + } + break; + case 'autoShortenStringPostFix': + $this->properties['autoShortenStringPostFix'] = (string) $propertyValue; + break; + default: + throw new ezcBasePropertyNotFoundException( $propertyName ); + break; + } + } +} + +?> diff --git a/include/ezcomponents/Graph/src/options/flash_driver.php b/include/ezcomponents/Graph/src/options/flash_driver.php new file mode 100644 index 000000000..c49565290 --- /dev/null +++ b/include/ezcomponents/Graph/src/options/flash_driver.php @@ -0,0 +1,103 @@ + + * $graph = new ezcGraphPieChart(); + * $graph->title = 'Access statistics'; + * $graph->legend = false; + * + * $graph->driver = new ezcGraphFlashDriver(); + * $graph->driver->options->compresion = 0; + * + * $graph->options->font = 'tutorial_font.fdb'; + * + * $graph->driver->options->compression = 7; + * + * $graph->data['Access statistics'] = new ezcGraphArrayDataSet( array( + * 'Mozilla' => 19113, + * 'Explorer' => 10917, + * 'Opera' => 1464, + * 'Safari' => 652, + * 'Konqueror' => 474, + * ) ); + * + * $graph->render( 400, 200, 'tutorial_driver_flash.swf' ); + * + * + * @property int $compression + * Compression level used for generated flash file + * @see http://php.net/manual/en/function.swfmovie.save.php + * @property float $circleResolution + * Resolution for circles, until I understand how to draw ellipses + * with SWFShape::curveTo() + * + * @version 1.3 + * @package Graph + */ +class ezcGraphFlashDriverOptions extends ezcGraphDriverOptions +{ + /** + * Constructor + * + * @param array $options Default option array + * @return void + * @ignore + */ + public function __construct( array $options = array() ) + { + $this->properties['compression'] = 9; + $this->properties['circleResolution'] = 2.; + + parent::__construct( $options ); + } + + /** + * Set an option value + * + * @param string $propertyName + * @param mixed $propertyValue + * @throws ezcBasePropertyNotFoundException + * If a property is not defined in this class + * @return void + * @ignore + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case 'compression': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) || + ( $propertyValue > 9 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, '0 <= int <= 9' ); + } + + $this->properties['compression'] = max( 0, min( 9, (int) $propertyValue ) ); + break; + case 'circleResolution': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue <= 0 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'float > 0' ); + } + + $this->properties['circleResolution'] = (float) $propertyValue; + break; + default: + parent::__set( $propertyName, $propertyValue ); + break; + } + } +} + +?> diff --git a/include/ezcomponents/Graph/src/options/font.php b/include/ezcomponents/Graph/src/options/font.php new file mode 100644 index 000000000..67dffc2d3 --- /dev/null +++ b/include/ezcomponents/Graph/src/options/font.php @@ -0,0 +1,292 @@ + + * $graph = new ezcGraphPieChart(); + * $graph->palette = new ezcGraphPaletteEzBlue(); + * $graph->title = 'Access statistics'; + * + * $graph->options->font->name = 'serif'; + * $graph->options->font->maxFontSize = 12; + * + * $graph->title->background = '#EEEEEC'; + * $graph->title->font->name = 'sans-serif'; + * + * $graph->options->font->maxFontSize = 8; + * + * $graph->data['Access statistics'] = new ezcGraphArrayDataSet( array( + * 'Mozilla' => 19113, + * 'Explorer' => 10917, + * 'Opera' => 1464, + * 'Safari' => 652, + * 'Konqueror' => 474, + * ) ); + * + * $graph->render( 400, 150, 'tutorial_chart_title.svg' ); + * + * + * @property string $name + * Name of font. + * @property string $path + * Path to font file. + * @property int $type + * Type of used font. May be one of the following: + * - TTF_FONT Native TTF fonts + * - PS_FONT PostScript Type1 fonts + * - FT2_FONT FreeType 2 fonts + * @property float $minFontSize + * Minimum font size for displayed texts. + * @property float $maxFontSize + * Maximum font size for displayed texts. + * @property float $minimalUsedFont + * The minimal used font size for this element. + * @property ezcGraphColor $color + * Font color. + * @property ezcGraphColor $background + * Background color + * @property ezcGraphColor $border + * Border color + * @property int $borderWidth + * Border width + * @property int $padding + * Padding between text and border + * @property bool $minimizeBorder + * Fit the border exactly around the text, or use the complete + * possible space. + * @property bool $textShadow + * Draw shadow for texts + * @property int $textShadowOffset + * Offset for text shadow + * @property ezcGraphColor $textShadowColor + * Color of text shadow. If false the inverse color of the text + * color will be used. + * + * @version 1.3 + * @package Graph + */ +class ezcGraphFontOptions extends ezcBaseOptions +{ + /** + * Indicates if path already has been checked for correct font + * + * @var bool + */ + protected $pathChecked = false; + + /** + * Constructor + * + * @param array $options Default option array + * @return void + * @ignore + */ + public function __construct( array $options = array() ) + { + $this->properties['name'] = 'sans-serif'; +// $this->properties['path'] = 'Graph/tests/data/font.ttf'; + $this->properties['path'] = ''; + $this->properties['type'] = ezcGraph::TTF_FONT; + + $this->properties['minFontSize'] = 6; + $this->properties['maxFontSize'] = 96; + $this->properties['minimalUsedFont'] = 96; + $this->properties['color'] = ezcGraphColor::fromHex( '#000000' ); + + $this->properties['background'] = false; + $this->properties['border'] = false; + $this->properties['borderWidth'] = 1; + $this->properties['padding'] = 0; + $this->properties['minimizeBorder'] = true; + + $this->properties['textShadow'] = false; + $this->properties['textShadowOffset'] = 1; + $this->properties['textShadowColor'] = false; + + parent::__construct( $options ); + } + + /** + * Set an option value + * + * @param string $propertyName + * @param mixed $propertyValue + * @throws ezcBasePropertyNotFoundException + * If a property is not defined in this class + * @return void + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case 'minFontSize': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'float > 1' ); + } + + // Ensure min font size is smaller or equal max font size. + if ( $propertyValue > $this->properties['maxFontSize'] ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'float <= ' . $this->properties['maxFontSize'] ); + } + + $this->properties[$propertyName] = (float) $propertyValue; + break; + + case 'maxFontSize': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'float > 1' ); + } + + // Ensure max font size is greater or equal min font size. + if ( $propertyValue < $this->properties['minFontSize'] ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'float >= ' . $this->properties['minFontSize'] ); + } + + $this->properties[$propertyName] = (float) $propertyValue; + break; + + case 'minimalUsedFont': + $propertyValue = (float) $propertyValue; + if ( $propertyValue < $this->minimalUsedFont ) + { + $this->properties['minimalUsedFont'] = $propertyValue; + } + break; + + case 'color': + case 'background': + case 'border': + case 'textShadowColor': + $this->properties[$propertyName] = ezcGraphColor::create( $propertyValue ); + break; + + case 'borderWidth': + case 'padding': + case 'textShadowOffset': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int >= 0' ); + } + + $this->properties[$propertyName] = (int) $propertyValue; + break; + + case 'minimizeBorder': + case 'textShadow': + if ( !is_bool( $propertyValue ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'bool' ); + } + $this->properties[$propertyName] = (bool) $propertyValue; + break; + + case 'name': + if ( is_string( $propertyValue ) ) + { + $this->properties['name'] = $propertyValue; + } + else + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'string' ); + } + break; + case 'path': + if ( is_file( $propertyValue ) && is_readable( $propertyValue ) ) + { + $this->properties['path'] = realpath( $propertyValue ); + $parts = pathinfo( $this->properties['path'] ); + switch ( strtolower( $parts['extension'] ) ) + { + case 'fdb': + $this->properties['type'] = ezcGraph::PALM_FONT; + break; + case 'pfb': + $this->properties['type'] = ezcGraph::PS_FONT; + break; + case 'ttf': + $this->properties['type'] = ezcGraph::TTF_FONT; + break; + case 'svg': + $this->properties['type'] = ezcGraph::SVG_FONT; + $this->properties['name'] = ezcGraphSvgFont::getFontName( $propertyValue ); + break; + default: + throw new ezcGraphUnknownFontTypeException( $propertyValue, $parts['extension'] ); + } + $this->pathChecked = true; + } + else + { + throw new ezcBaseFileNotFoundException( $propertyValue, 'font' ); + } + break; + case 'type': + if ( is_int( $propertyValue ) ) + { + $this->properties['type'] = $propertyValue; + } + else + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int' ); + } + break; + default: + throw new ezcBasePropertyNotFoundException( $propertyName ); + break; + } + } + + /** + * __get + * + * @param mixed $propertyName + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @return mixed + * @ignore + */ + public function __get( $propertyName ) + { + switch ( $propertyName ) + { + case 'textShadowColor': + // Use inverted font color if false + if ( $this->properties['textShadowColor'] === false ) + { + $this->properties['textShadowColor'] = $this->properties['color']->invert(); + } + + return $this->properties['textShadowColor']; + case 'path': + if ( $this->pathChecked === false ) + { + // Enforce call of path check + $this->__set( 'path', $this->properties['path'] ); + } + // No break to use parent return + default: + return parent::__get( $propertyName ); + } + } +} + +?> diff --git a/include/ezcomponents/Graph/src/options/gd_driver.php b/include/ezcomponents/Graph/src/options/gd_driver.php new file mode 100644 index 000000000..9565d6d52 --- /dev/null +++ b/include/ezcomponents/Graph/src/options/gd_driver.php @@ -0,0 +1,181 @@ + + * $graph = new ezcGraphPieChart(); + * $graph->palette = new ezcGraphPaletteEzGreen(); + * $graph->title = 'Access statistics'; + * $graph->legend = false; + * + * $graph->driver = new ezcGraphGdDriver(); + * $graph->options->font = 'tutorial_font.ttf'; + * + * // Generate a Jpeg with lower quality. The default settings result in a better + * // quality image + * $graph->driver->options->supersampling = 1; + * $graph->driver->options->jpegQuality = 100; + * $graph->driver->options->imageFormat = IMG_JPEG; + * + * $graph->data['Access statistics'] = new ezcGraphArrayDataSet( array( + * 'Mozilla' => 19113, + * 'Explorer' => 10917, + * 'Opera' => 1464, + * 'Safari' => 652, + * 'Konqueror' => 474, + * ) ); + * + * $graph->render( 400, 200, 'tutorial_dirver_gd.jpg' ); + * + * + * @property int $imageFormat + * Type of generated image. + * Should be one of those: IMG_PNG, IMG_JPEG + * @property int $jpegQuality + * Quality of generated jpeg + * @property int $detail + * Count of degrees to render one polygon for in circular arcs + * @property int $supersampling + * Factor of supersampling used to simulate antialiasing + * @property string $background + * Background image to put the graph on + * @property string $resampleFunction + * Function used to resample / resize images + * @property bool $forceNativeTTF + * Force use of native ttf functions instead of free type 2 + * @property float $imageMapResolution + * Degree step used to interpolate round image primitives by + * polygons for image maps + * + * @version 1.3 + * @package Graph + */ +class ezcGraphGdDriverOptions extends ezcGraphDriverOptions +{ + /** + * Constructor + * + * @param array $options Default option array + * @return void + * @ignore + */ + public function __construct( array $options = array() ) + { + $this->properties['imageFormat'] = IMG_PNG; + $this->properties['jpegQuality'] = 70; + $this->properties['detail'] = 1; + $this->properties['shadeCircularArc'] = .5; + $this->properties['supersampling'] = 2; + $this->properties['background'] = false; + $this->properties['resampleFunction'] = 'imagecopyresampled'; + $this->properties['forceNativeTTF'] = false; + $this->properties['imageMapResolution'] = 10; + + parent::__construct( $options ); + } + + /** + * Set an option value + * + * @param string $propertyName + * @param mixed $propertyValue + * @throws ezcBasePropertyNotFoundException + * If a property is not defined in this class + * @return void + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case 'imageFormat': + if ( imagetypes() & $propertyValue ) + { + $this->properties['imageFormat'] = (int) $propertyValue; + } + else + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'Unsupported image type.' ); + } + break; + case 'jpegQuality': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) || + ( $propertyValue > 100 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, '0 <= int <= 100' ); + } + + $this->properties['jpegQuality'] = (int) $propertyValue; + break; + case 'detail': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int >= 1' ); + } + + $this->properties['detail'] = (int) $propertyValue; + break; + case 'supersampling': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int >= 1' ); + } + + $this->properties['supersampling'] = (int) $propertyValue; + break; + case 'background': + if ( $propertyValue === false || + ( is_file( $propertyValue ) && is_readable( $propertyValue ) ) ) + { + $this->properties['background'] = realpath( $propertyValue ); + } + else + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'readable file' ); + } + break; + case 'resampleFunction': + if ( ezcBaseFeatures::hasFunction( $propertyValue ) ) + { + $this->properties['resampleFunction'] = $propertyValue; + } + else + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'function' ); + } + break; + case 'forceNativeTTF': + if ( !is_bool( $propertyValue ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'bool' ); + } + + $this->properties['forceNativeTTF'] = (bool) $propertyValue; + break; + case 'imageMapResolution': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int >= 1' ); + } + + $this->properties['imageMapResolution'] = (int) $propertyValue; + break; + default: + parent::__set( $propertyName, $propertyValue ); + break; + } + } +} + +?> diff --git a/include/ezcomponents/Graph/src/options/line_chart.php b/include/ezcomponents/Graph/src/options/line_chart.php new file mode 100644 index 000000000..a51de57f1 --- /dev/null +++ b/include/ezcomponents/Graph/src/options/line_chart.php @@ -0,0 +1,189 @@ + + * $graph = new ezcGraphLineChart(); + * $graph->title = 'Wikipedia articles'; + * + * $graph->options->fillLines = 220; + * $graph->options->lineThickness = 3; + * + * // Add data + * foreach ( $wikidata as $language => $data ) + * { + * $graph->data[$language] = new ezcGraphArrayDataSet( $data ); + * } + * + * $graph->render( 400, 150, 'tutorial_line_chart.svg' ); + * + * + * @property float $lineThickness + * Thickness of chart lines + * @property mixed $fillLines + * Status wheather the space between line and axis should get filled. + * - FALSE to not fill the space at all. + * - (int) Opacity used to fill up the space with the lines color. + * @property int $symbolSize + * Size of symbols in line chart. + * @property ezcGraphFontOptions $highlightFont + * Font configuration for highlight tests + * @property int $highlightSize + * Size of highlight blocks + * @property bool $highlightLines + * If true, it adds lines to highlight the values position on the + * axis. + * @property true $stackBars + * Stack bars + * + * @version 1.3 + * @package Graph + */ +class ezcGraphLineChartOptions extends ezcGraphChartOptions +{ + /** + * Constructor + * + * @param array $options Default option array + * @return void + * @ignore + */ + public function __construct( array $options = array() ) + { + $this->properties['lineThickness'] = 1; + $this->properties['fillLines'] = false; + $this->properties['symbolSize'] = 8; + $this->properties['highlightFont'] = new ezcGraphFontOptions(); + $this->properties['highlightFontCloned'] = false; + $this->properties['highlightSize'] = 14; + $this->properties['highlightLines'] = false; + $this->properties['stackBars'] = false; + + parent::__construct( $options ); + } + + /** + * Set an option value + * + * @param string $propertyName + * @param mixed $propertyValue + * @throws ezcBasePropertyNotFoundException + * If a property is not defined in this class + * @return void + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case 'lineThickness': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int >= 0' ); + } + + $this->properties[$propertyName] = (int) $propertyValue; + break; + case 'symbolSize': + case 'highlightSize': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int >= 1' ); + } + + $this->properties[$propertyName] = (int) $propertyValue; + break; + case 'fillLines': + if ( ( $propertyValue !== false ) && + !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) || + ( $propertyValue > 255 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'false OR 0 <= int <= 255' ); + } + + $this->properties[$propertyName] = ( + $propertyValue === false + ? false + : (int) $propertyValue ); + break; + case 'highlightFont': + if ( $propertyValue instanceof ezcGraphFontOptions ) + { + $this->properties['highlightFont'] = $propertyValue; + } + elseif ( is_string( $propertyValue ) ) + { + if ( !$this->properties['highlightFontCloned'] ) + { + $this->properties['highlightFont'] = clone $this->font; + $this->properties['highlightFontCloned'] = true; + } + + $this->properties['highlightFont']->path = $propertyValue; + } + else + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'ezcGraphFontOptions' ); + } + break; + $this->properties['highlightSize'] = max( 1, (int) $propertyValue ); + break; + case 'highlightLines': + if ( !is_bool( $propertyValue ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'bool' ); + } + + $this->properties['highlightLines'] = $propertyValue; + break; + case 'stackBars': + if ( !is_bool( $propertyValue ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'bool' ); + } + + $this->properties['stackBars'] = $propertyValue; + break; + default: + return parent::__set( $propertyName, $propertyValue ); + } + } + + /** + * __get + * + * @param mixed $propertyName + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @return mixed + * @ignore + */ + public function __get( $propertyName ) + { + switch ( $propertyName ) + { + case 'highlightFont': + // Clone font configuration when requested for this element + if ( !$this->properties['highlightFontCloned'] ) + { + $this->properties['highlightFont'] = clone $this->properties['font']; + $this->properties['highlightFontCloned'] = true; + } + return $this->properties['highlightFont']; + default: + return parent::__get( $propertyName ); + } + } +} + +?> diff --git a/include/ezcomponents/Graph/src/options/odometer_chart.php b/include/ezcomponents/Graph/src/options/odometer_chart.php new file mode 100644 index 000000000..83db33453 --- /dev/null +++ b/include/ezcomponents/Graph/src/options/odometer_chart.php @@ -0,0 +1,113 @@ + + * $graph = new ezcGraphOdoMeterChart(); + * + * $graph->data['Test'] = new ezcGraphArrayDataSet( array( 0, 1, 23, 30 ) ); + * + * $graph->options->odometerHeight = .3; + * $graph->options->borderColor = '#2e3436'; + * + * $graph->render( 150, 50, 'odometer.svg' ); + * + * + * @property ezcGraphColor $borderColor + * Color of border around odometer chart + * @property int $borderWidth + * Width of border around odometer chart + * @property ezcGraphColor $startColor + * Start color of grdient used as the odometer chart background. + * @property ezcGraphColor $endColor + * End color of grdient used as the odometer chart background. + * @property int $markerWidth + * Width of odometer markers + * @property float $odometerHeight + * Height consumed by odometer chart + * + * @version 1.3 + * @package Graph + */ +class ezcGraphOdometerChartOptions extends ezcGraphChartOptions +{ + /** + * Constructor + * + * @param array $options Default option array + * @return void + * @ignore + */ + public function __construct( array $options = array() ) + { + $this->properties['borderColor'] = ezcGraphColor::create( '#000000' ); + $this->properties['borderWidth'] = 0; + + $this->properties['startColor'] = ezcGraphColor::create( '#4e9a06A0' ); + $this->properties['endColor'] = ezcGraphColor::create( '#A40000A0' ); + + $this->properties['markerWidth'] = 2; + + $this->properties['odometerHeight'] = 0.5; + + parent::__construct( $options ); + } + + /** + * Set an option value + * + * @param string $propertyName + * @param mixed $propertyValue + * @throws ezcBasePropertyNotFoundException + * If a property is not defined in this class + * @return void + * @ignore + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case 'borderWidth': + case 'markerWidth': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int >= 1' ); + } + + $this->properties[$propertyName] = (int) $propertyValue; + break; + + case 'borderColor': + case 'startColor': + case 'endColor': + $this->properties[$propertyName] = ezcGraphColor::create( $propertyValue ); + break; + + case 'odometerHeight': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) || + ( $propertyValue > 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, '0 <= float <= 1' ); + } + + $this->properties[$propertyName] = (float) $propertyValue; + break; + + default: + return parent::__set( $propertyName, $propertyValue ); + } + } +} + +?> diff --git a/include/ezcomponents/Graph/src/options/pie_chart.php b/include/ezcomponents/Graph/src/options/pie_chart.php new file mode 100644 index 000000000..c4e3f7ab8 --- /dev/null +++ b/include/ezcomponents/Graph/src/options/pie_chart.php @@ -0,0 +1,143 @@ + + * $graph = new ezcGraphPieChart(); + * $graph->palette = new ezcGraphPaletteEzRed(); + * $graph->title = 'Access statistics'; + * $graph->legend = false; + * + * $graph->options->label = '%1$s (%3$.1f)'; + * $graph->options->percentThreshold = .05; + * + * $graph->data['Access statistics'] = new ezcGraphArrayDataSet( array( + * 'Mozilla' => 19113, + * 'Explorer' => 10917, + * 'Opera' => 1464, + * 'Safari' => 652, + * 'Konqueror' => 474, + * ) ); + * $graph->data['Access statistics']->highlight['Explorer'] = true; + * + * $graph->render( 400, 150, 'tutorial_pie_chart_options.svg' ); + * + * + * @property string $label + * String used to label pies + * %1$s Name of pie + * %2$d Value of pie + * %3$.1f Percentage + * @property callback $labelCallback + * Callback function to format pie chart labels. + * Function will receive 3 parameters: + * string function( label, value, percent ) + * @property float $sum + * Fixed sum of values. This should be used for incomplete pie + * charts. + * @property float $percentThreshold + * Values with a lower percentage value are aggregated. + * @property float $absoluteThreshold + * Values with a lower absolute value are aggregated. + * @property string $summarizeCaption + * Caption for values summarized because they are lower then the + * configured tresh hold. + * + * @version 1.3 + * @package Graph + */ +class ezcGraphPieChartOptions extends ezcGraphChartOptions +{ + /** + * Constructor + * + * @param array $options Default option array + * @return void + * @ignore + */ + public function __construct( array $options = array() ) + { + $this->properties['label'] = '%1$s: %2$d (%3$.1f%%)'; + $this->properties['labelCallback'] = null; + $this->properties['sum'] = false; + + $this->properties['percentThreshold'] = .0; + $this->properties['absoluteThreshold'] = .0; + $this->properties['summarizeCaption'] = 'Misc'; + + parent::__construct( $options ); + } + + /** + * Set an option value + * + * @param string $propertyName + * @param mixed $propertyValue + * @throws ezcBasePropertyNotFoundException + * If a property is not defined in this class + * @return void + * @ignore + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case 'label': + $this->properties['label'] = (string) $propertyValue; + break; + case 'labelCallback': + if ( is_callable( $propertyValue ) ) + { + $this->properties['labelCallback'] = $propertyValue; + } + else + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'callback function' ); + } + break; + case 'sum': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue <= 0 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'float > 0' ); + } + + $this->properties['sum'] = (float) $propertyValue; + break; + case 'percentThreshold': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) || + ( $propertyValue > 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, '0 <= float <= 1' ); + } + + $this->properties['percentThreshold'] = (float) $propertyValue; + break; + case 'absoluteThreshold': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue <= 0 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'float > 0' ); + } + + $this->properties['absoluteThreshold'] = (float) $propertyValue; + break; + case 'summarizeCaption': + $this->properties['summarizeCaption'] = (string) $propertyValue; + break; + default: + return parent::__set( $propertyName, $propertyValue ); + } + } +} + +?> diff --git a/include/ezcomponents/Graph/src/options/radar_chart.php b/include/ezcomponents/Graph/src/options/radar_chart.php new file mode 100644 index 000000000..0a2b1cb29 --- /dev/null +++ b/include/ezcomponents/Graph/src/options/radar_chart.php @@ -0,0 +1,172 @@ + + * $wikidata = include 'tutorial_wikipedia_data.php'; + * + * $graph = new ezcGraphRadarChart(); + * $graph->title = 'Wikipedia articles'; + * + * $graph->options->fillLines = 220; + * + * // Add data + * foreach ( $wikidata as $language => $data ) + * { + * $graph->data[$language] = new ezcGraphArrayDataSet( $data ); + * $graph->data[$language][] = reset( $data ); + * } + * + * $graph->render( 400, 150, 'tutorial_radar_chart.svg' ); + * + * + * @property float $lineThickness + * Theickness of chart lines + * @property mixed $fillLines + * Status wheather the space between line and axis should get filled. + * - FALSE to not fill the space at all. + * - (int) Opacity used to fill up the space with the lines color. + * @property int $symbolSize + * Size of symbols in line chart. + * @property ezcGraphFontOptions $highlightFont + * Font configuration for highlight tests + * @property int $highlightSize + * Size of highlight blocks + * @property bool $highlightRadars + * If true, it adds lines to highlight the values position on the + * axis. + * + * @version 1.3 + * @package Graph + */ +class ezcGraphRadarChartOptions extends ezcGraphChartOptions +{ + /** + * Constructor + * + * @param array $options Default option array + * @return void + * @ignore + */ + public function __construct( array $options = array() ) + { + $this->properties['lineThickness'] = 1; + $this->properties['fillLines'] = false; + $this->properties['symbolSize'] = 8; + $this->properties['highlightFont'] = new ezcGraphFontOptions(); + $this->properties['highlightFontCloned'] = false; + $this->properties['highlightSize'] = 14; + $this->properties['highlightRadars'] = false; + + parent::__construct( $options ); + } + + /** + * Set an option value + * + * @param string $propertyName + * @param mixed $propertyValue + * @throws ezcBasePropertyNotFoundException + * If a property is not defined in this class + * @return void + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case 'lineThickness': + case 'symbolSize': + case 'highlightSize': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int >= 1' ); + } + + $this->properties[$propertyName] = (int) $propertyValue; + break; + case 'fillLines': + if ( ( $propertyValue !== false ) && + !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) || + ( $propertyValue > 255 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'false OR 0 <= int <= 255' ); + } + + $this->properties[$propertyName] = ( + $propertyValue === false + ? false + : (int) $propertyValue ); + break; + case 'highlightFont': + if ( $propertyValue instanceof ezcGraphFontOptions ) + { + $this->properties['highlightFont'] = $propertyValue; + } + elseif ( is_string( $propertyValue ) ) + { + if ( !$this->properties['highlightFontCloned'] ) + { + $this->properties['highlightFont'] = clone $this->font; + $this->properties['highlightFontCloned'] = true; + } + + $this->properties['highlightFont']->path = $propertyValue; + } + else + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'ezcGraphFontOptions' ); + } + break; + $this->properties['highlightSize'] = max( 1, (int) $propertyValue ); + break; + case 'highlightRadars': + if ( !is_bool( $propertyValue ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'bool' ); + } + + $this->properties['highlightRadars'] = $propertyValue; + break; + default: + return parent::__set( $propertyName, $propertyValue ); + } + } + + /** + * __get + * + * @param mixed $propertyName + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @return mixed + * @ignore + */ + public function __get( $propertyName ) + { + switch ( $propertyName ) + { + case 'highlightFont': + // Clone font configuration when requested for this element + if ( !$this->properties['highlightFontCloned'] ) + { + $this->properties['highlightFont'] = clone $this->properties['font']; + $this->properties['highlightFontCloned'] = true; + } + return $this->properties['highlightFont']; + default: + return parent::__get( $propertyName ); + } + } +} + +?> diff --git a/include/ezcomponents/Graph/src/options/renderer.php b/include/ezcomponents/Graph/src/options/renderer.php new file mode 100644 index 000000000..7e657a181 --- /dev/null +++ b/include/ezcomponents/Graph/src/options/renderer.php @@ -0,0 +1,212 @@ + + * $wikidata = include 'tutorial_wikipedia_data.php'; + * + * $graph = new ezcGraphBarChart(); + * $graph->title = 'Wikipedia articles'; + * + * // Add data + * foreach ( $wikidata as $language => $data ) + * { + * $graph->data[$language] = new ezcGraphArrayDataSet( $data ); + * } + * + * // $graph->renderer = new ezcGraphRenderer2d(); + * + * $graph->renderer->options->barMargin = .2; + * $graph->renderer->options->barPadding = .2; + * + * $graph->renderer->options->dataBorder = 0; + * + * $graph->render( 400, 150, 'tutorial_bar_chart_options.svg' ); + * + * + * @property float $maxLabelHeight + * Percent of chart height used as maximum height for pie chart + * labels. + * @property bool $showSymbol + * Indicates wheather to show the line between pie elements and + * labels. + * @property float $symbolSize + * Size of symbols used to connect a label with a pie. + * @property float $moveOut + * Percent to move pie chart elements out of the middle on highlight. + * @property int $titlePosition + * Position of title in a box. + * @property int $titleAlignement + * Alignement of box titles. + * @property float $dataBorder + * Factor to darken border of data elements, like lines, bars and + * pie segments. + * @property float $barMargin + * Procentual distance between bar blocks. + * @property float $barPadding + * Procentual distance between bars. + * @property float $pieChartOffset + * Offset for starting with first pie chart segment in degrees. + * @property float $legendSymbolGleam + * Opacity of gleam in legend symbols + * @property float $legendSymbolGleamSize + * Size of gleam in legend symbols + * @property float $legendSymbolGleamColor + * Color of gleam in legend symbols + * @property float $pieVerticalSize + * Percent of vertical space used for maximum pie chart size. + * @property float $pieHorizontalSize + * Percent of horizontal space used for maximum pie chart size. + * @property float $pieChartSymbolColor + * Color of pie chart symbols + * @property float $pieChartGleam + * Enhance pie chart with gleam on top. + * @property float $pieChartGleamColor + * Color used for gleam on pie charts. + * @property float $pieChartGleamBorder + * Do not draw gleam on an outer border of this size. + * @property bool $syncAxisFonts + * Synchronize fonts of axis. With the defaut true value, the only + * the fonts of the yAxis will be used. + * + * @version 1.3 + * @package Graph + */ +class ezcGraphRendererOptions extends ezcGraphChartOptions +{ + /** + * Constructor + * + * @param array $options Default option array + * @return void + * @ignore + */ + public function __construct( array $options = array() ) + { + $this->properties['maxLabelHeight'] = .10; + $this->properties['showSymbol'] = true; + $this->properties['symbolSize'] = 6; + $this->properties['moveOut'] = .1; + $this->properties['titlePosition'] = ezcGraph::TOP; + $this->properties['titleAlignement'] = ezcGraph::MIDDLE | ezcGraph::CENTER; + $this->properties['dataBorder'] = .5; + $this->properties['barMargin'] = .1; + $this->properties['barPadding'] = .05; + $this->properties['pieChartOffset'] = 0; + $this->properties['pieChartSymbolColor'] = ezcGraphColor::fromHex( '#000000' ); + $this->properties['pieChartGleam'] = false; + $this->properties['pieChartGleamColor'] = ezcGraphColor::fromHex( '#FFFFFF' ); + $this->properties['pieChartGleamBorder'] = 0; + $this->properties['legendSymbolGleam'] = false; + $this->properties['legendSymbolGleamSize'] = .9; + $this->properties['legendSymbolGleamColor'] = ezcGraphColor::fromHex( '#FFFFFF' ); + $this->properties['pieVerticalSize'] = .5; + $this->properties['pieHorizontalSize'] = .25; + $this->properties['syncAxisFonts'] = true; + + parent::__construct( $options ); + } + + + /** + * Set an option value + * + * @param string $propertyName + * @param mixed $propertyValue + * @throws ezcBasePropertyNotFoundException + * If a property is not defined in this class + * @return void + * @ignore + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case 'dataBorder': + case 'pieChartGleam': + case 'legendSymbolGleam': + if ( $propertyValue !== false && + !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) || + ( $propertyValue > 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'false OR 0 <= float <= 1' ); + } + + $this->properties[$propertyName] = ( + $propertyValue === false + ? false + : (float) $propertyValue ); + break; + + case 'maxLabelHeight': + case 'moveOut': + case 'barMargin': + case 'barPadding': + case 'legendSymbolGleamSize': + case 'pieVerticalSize': + case 'pieHorizontalSize': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) || + ( $propertyValue > 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, '0 <= float <= 1' ); + } + + $this->properties[$propertyName] = (float) $propertyValue; + break; + + case 'symbolSize': + case 'titlePosition': + case 'titleAlignement': + case 'pieChartGleamBorder': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int >= 0' ); + } + + $this->properties[$propertyName] = (int) $propertyValue; + break; + + case 'showSymbol': + case 'syncAxisFonts': + if ( !is_bool( $propertyValue ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'bool' ); + } + $this->properties[$propertyName] = (bool) $propertyValue; + break; + + case 'pieChartOffset': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) || + ( $propertyValue > 360 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, '0 <= float <= 360' ); + } + + $this->properties[$propertyName] = (float) $propertyValue; + break; + + case 'pieChartSymbolColor': + case 'pieChartGleamColor': + case 'legendSymbolGleamColor': + $this->properties[$propertyName] = ezcGraphColor::create( $propertyValue ); + break; + + default: + return parent::__set( $propertyName, $propertyValue ); + } + } +} + +?> diff --git a/include/ezcomponents/Graph/src/options/renderer_2d.php b/include/ezcomponents/Graph/src/options/renderer_2d.php new file mode 100644 index 000000000..a005f980d --- /dev/null +++ b/include/ezcomponents/Graph/src/options/renderer_2d.php @@ -0,0 +1,120 @@ + + * $graph = new ezcGraphPieChart(); + * $graph->palette = new ezcGraphPaletteBlack(); + * $graph->title = 'Access statistics'; + * $graph->options->label = '%2$d (%3$.1f%%)'; + * + * $graph->data['Access statistics'] = new ezcGraphArrayDataSet( array( + * 'Mozilla' => 19113, + * 'Explorer' => 10917, + * 'Opera' => 1464, + * 'Safari' => 652, + * 'Konqueror' => 474, + * ) ); + * $graph->data['Access statistics']->highlight['Explorer'] = true; + * + * // $graph->renderer = new ezcGraphRenderer2d(); + * + * $graph->renderer->options->moveOut = .2; + * + * $graph->renderer->options->pieChartOffset = 63; + * + * $graph->renderer->options->pieChartGleam = .3; + * $graph->renderer->options->pieChartGleamColor = '#FFFFFF'; + * $graph->renderer->options->pieChartGleamBorder = 2; + * + * $graph->renderer->options->pieChartShadowSize = 3; + * $graph->renderer->options->pieChartShadowColor = '#000000'; + * + * $graph->renderer->options->legendSymbolGleam = .5; + * $graph->renderer->options->legendSymbolGleamSize = .9; + * $graph->renderer->options->legendSymbolGleamColor = '#FFFFFF'; + * + * $graph->renderer->options->pieChartSymbolColor = '#BABDB688'; + * + * $graph->render( 400, 150, 'tutorial_pie_chart_pimped.svg' ); + * + * + * @property int $pieChartShadowSize + * Size of shadows. + * @property float $pieChartShadowTransparency + * Used transparency for pie chart shadows. + * @property float $pieChartShadowColor + * Color used for pie chart shadows. + * + * @version 1.3 + * @package Graph + */ +class ezcGraphRenderer2dOptions extends ezcGraphRendererOptions +{ + /** + * Constructor + * + * @param array $options Default option array + * @return void + * @ignore + */ + public function __construct( array $options = array() ) + { + $this->properties['pieChartShadowSize'] = 0; + $this->properties['pieChartShadowTransparency'] = .3; + $this->properties['pieChartShadowColor'] = ezcGraphColor::fromHex( '#000000' ); + + parent::__construct( $options ); + } + + /** + * Set an option value + * + * @param string $propertyName + * @param mixed $propertyValue + * @throws ezcBasePropertyNotFoundException + * If a property is not defined in this class + * @return void + * @ignore + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case 'pieChartShadowSize': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'float >= 0' ); + } + + $this->properties['pieChartShadowSize'] = (int) $propertyValue; + break; + case 'pieChartShadowTransparency': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) || + ( $propertyValue > 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, '0 <= float <= 1' ); + } + + $this->properties['pieChartShadowTransparency'] = (float) $propertyValue; + break; + case 'pieChartShadowColor': + $this->properties['pieChartShadowColor'] = ezcGraphColor::create( $propertyValue ); + break; + default: + return parent::__set( $propertyName, $propertyValue ); + } + } +} + +?> diff --git a/include/ezcomponents/Graph/src/options/renderer_3d.php b/include/ezcomponents/Graph/src/options/renderer_3d.php new file mode 100644 index 000000000..986196503 --- /dev/null +++ b/include/ezcomponents/Graph/src/options/renderer_3d.php @@ -0,0 +1,185 @@ + + * $graph = new ezcGraphPieChart(); + * $graph->palette = new ezcGraphPaletteEzRed(); + * $graph->title = 'Access statistics'; + * $graph->options->label = '%2$d (%3$.1f%%)'; + * + * $graph->data['Access statistics'] = new ezcGraphArrayDataSet( array( + * 'Mozilla' => 19113, + * 'Explorer' => 10917, + * 'Opera' => 1464, + * 'Safari' => 652, + * 'Konqueror' => 474, + * ) ); + * $graph->data['Access statistics']->highlight['Explorer'] = true; + * + * $graph->renderer = new ezcGraphRenderer3d(); + * + * $graph->renderer->options->moveOut = .2; + * + * $graph->renderer->options->pieChartOffset = 63; + * + * $graph->renderer->options->pieChartGleam = .3; + * $graph->renderer->options->pieChartGleamColor = '#FFFFFF'; + * + * $graph->renderer->options->pieChartShadowSize = 5; + * $graph->renderer->options->pieChartShadowColor = '#000000'; + * + * $graph->renderer->options->legendSymbolGleam = .5; + * $graph->renderer->options->legendSymbolGleamSize = .9; + * $graph->renderer->options->legendSymbolGleamColor = '#FFFFFF'; + * + * $graph->renderer->options->pieChartSymbolColor = '#55575388'; + * + * $graph->renderer->options->pieChartHeight = 5; + * $graph->renderer->options->pieChartRotation = .8; + * + * $graph->render( 400, 150, 'tutorial_pie_chart_3d.svg' ); + * + * + * @property bool $seperateLines + * Indicates wheather the full depth should be used for each line in + * the chart, or beeing seperated by the count of lines. + * @property float $fillAxis + * Transparency used to fill the axis polygon. + * @property float $fillGrid + * Transparency used to fill the grid lines. + * @property float $depth + * Part of picture used to simulate depth of three dimensional chart. + * @property float $pieChartHeight + * Height of the pie charts border. + * @property float $pieChartRotation + * Rotation of pie chart. Defines the percent of width used to + * calculate the height of the ellipse. + * @property int $pieChartShadowSize + * Size of shadows. + * @property float $pieChartShadowTransparency + * Used transparency for pie chart shadows. + * @property float $pieChartShadowColor + * Color used for pie chart shadows. + * @property float $barDarkenSide + * Factor to darken the color used for the bars side polygon. + * @property float $barDarkenTop + * Factor to darken the color used for the bars top polygon. + * @property float $barChartGleam + * Transparancy for gleam on bar charts + * + * @version 1.3 + * @package Graph + */ +class ezcGraphRenderer3dOptions extends ezcGraphRendererOptions +{ + /** + * Constructor + * + * @param array $options Default option array + * @return void + * @ignore + */ + public function __construct( array $options = array() ) + { + $this->properties['seperateLines'] = true; + $this->properties['fillAxis'] = .8; + $this->properties['fillGrid'] = 0; + $this->properties['depth'] = .1; + $this->properties['pieChartHeight'] = 10.; + $this->properties['pieChartRotation'] = .6; + $this->properties['pieChartShadowSize'] = 0; + $this->properties['pieChartShadowTransparency'] = .3; + $this->properties['pieChartShadowColor'] = ezcGraphColor::fromHex( '#000000' ); + $this->properties['pieChartGleam'] = false; + $this->properties['pieChartGleamColor'] = ezcGraphColor::fromHex( '#FFFFFF' ); + $this->properties['barDarkenSide'] = .2; + $this->properties['barDarkenTop'] = .4; + $this->properties['barChartGleam'] = false; + + parent::__construct( $options ); + } + + /** + * Set an option value + * + * @param string $propertyName + * @param mixed $propertyValue + * @throws ezcBasePropertyNotFoundException + * If a property is not defined in this class + * @return void + * @ignore + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case 'fillAxis': + case 'fillGrid': + if ( $propertyValue !== false && + !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) || + ( $propertyValue > 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'false OR 0 <= float <= 1' ); + } + + $this->properties[$propertyName] = ( + $propertyValue === false + ? false + : (float) $propertyValue ); + break; + + case 'depth': + case 'pieChartRotation': + case 'pieChartShadowTransparency': + case 'barDarkenSide': + case 'barDarkenTop': + case 'barChartGleam': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) || + ( $propertyValue > 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, '0 <= float <= 1' ); + } + + $this->properties[$propertyName] = (float) $propertyValue; + break; + + case 'pieChartHeight': + case 'pieChartShadowSize': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue <= 0 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'float > 0' ); + } + + $this->properties[$propertyName] = (float) $propertyValue; + break; + + case 'seperateLines': + if ( !is_bool( $propertyValue ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'bool' ); + } + + $this->properties['seperateLines'] = $propertyValue; + break; + case 'pieChartShadowColor': + $this->properties['pieChartShadowColor'] = ezcGraphColor::create( $propertyValue ); + break; + default: + return parent::__set( $propertyName, $propertyValue ); + } + } +} + +?> diff --git a/include/ezcomponents/Graph/src/options/svg_driver.php b/include/ezcomponents/Graph/src/options/svg_driver.php new file mode 100644 index 000000000..8fdcca73e --- /dev/null +++ b/include/ezcomponents/Graph/src/options/svg_driver.php @@ -0,0 +1,272 @@ + + * $graph = new ezcGraphPieChart(); + * $graph->background->color = '#FFFFFFFF'; + * $graph->title = 'Access statistics'; + * $graph->legend = false; + * + * $graph->data['Access statistics'] = new ezcGraphArrayDataSet( array( + * 'Mozilla' => 19113, + * 'Explorer' => 10917, + * 'Opera' => 1464, + * 'Safari' => 652, + * 'Konqueror' => 474, + * ) ); + * + * $graph->driver->options->templateDocument = dirname( __FILE__ ) . '/template.svg'; + * $graph->driver->options->graphOffset = new ezcGraphCoordinate( 25, 40 ); + * $graph->driver->options->insertIntoGroup = 'ezcGraph'; + * + * $graph->render( 400, 200, 'tutorial_driver_svg.svg' ); + * + * + * @property string $encoding + * Encoding of the SVG XML document + * @property float $assumedNumericCharacterWidth + * Assumed percentual average width of chars in numeric strings with + * the used font. + * @property float $assumedTextCharacterWidth + * Assumed percentual average width of chars in non numeric strings + * with the used font. + * @property string $strokeLineCap + * This specifies the shape to be used at the end of open subpaths + * when they are stroked. + * @property string $strokeLineJoin + * This specifies the shape to be used at the edges of paths. + * @property string $shapeRendering + * "The creator of SVG content might want to provide a hint to the + * implementation about what tradeoffs to make as it renders vector + * graphics elements such as 'path' elements and basic shapes such as + * circles and rectangles." + * @property string $colorRendering + * "The creator of SVG content might want to provide a hint to the + * implementation about how to make speed vs. quality tradeoffs as it + * performs color interpolation and compositing. The + * 'color-rendering' property provides a hint to the SVG user agent + * about how to optimize its color interpolation and compositing + * operations." + * @property string $textRendering + * "The creator of SVG content might want to provide a hint to the + * implementation about what tradeoffs to make as it renders text." + * @property mixed $templateDocument + * Use existing SVG document as template to insert graph into. If + * insertIntoGroup is not set, a new group will be inserted in the + * svg root node. + * @property mixed $insertIntoGroup + * ID of a SVG group node to insert the graph. Only works with a + * custom template document. + * @property ezcGraphCoordinate $graphOffset + * Offset of the graph in the svg. + * @property string $idPrefix + * Prefix used for the ids in SVG documents. + * @property string $linkCursor + * CSS value for cursor property used for linked SVG elements + * + * @version 1.3 + * @package Graph + */ +class ezcGraphSvgDriverOptions extends ezcGraphDriverOptions +{ + /** + * Constructor + * + * @param array $options Default option array + * @return void + * @ignore + */ + public function __construct( array $options = array() ) + { + $this->properties['encoding'] = null; + $this->properties['assumedNumericCharacterWidth'] = .62; + $this->properties['assumedTextCharacterWidth'] = .53; + $this->properties['strokeLineJoin'] = 'round'; + $this->properties['strokeLineCap'] = 'round'; + $this->properties['shapeRendering'] = 'geometricPrecision'; + $this->properties['colorRendering'] = 'optimizeQuality'; + $this->properties['textRendering'] = 'optimizeLegibility'; + $this->properties['templateDocument'] = false; + $this->properties['insertIntoGroup'] = false; + $this->properties['graphOffset'] = new ezcGraphCoordinate( 0, 0 ); + $this->properties['idPrefix'] = 'ezcGraph'; + $this->properties['linkCursor'] = 'pointer'; + + parent::__construct( $options ); + } + + /** + * Set an option value + * + * @param string $propertyName + * @param mixed $propertyValue + * @throws ezcBasePropertyNotFoundException + * If a property is not defined in this class + * @return void + * @ignore + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case 'assumedNumericCharacterWidth': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'float > 0' ); + } + + $this->properties['assumedNumericCharacterWidth'] = (float) $propertyValue; + break; + case 'assumedTextCharacterWidth': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 0 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'float > 0' ); + } + + $this->properties['assumedTextCharacterWidth'] = (float) $propertyValue; + break; + case 'strokeLineJoin': + $values = array( + 'round', + 'miter', + 'bevel', + 'inherit', + ); + + if ( in_array( $propertyValue, $values, true ) ) + { + $this->properties['strokeLineJoin'] = $propertyValue; + } + else + { + throw new ezcBaseValueException( $propertyName, $propertyValue, implode( $values, ', ' ) ); + } + break; + case 'strokeLineCap': + $values = array( + 'round', + 'butt', + 'square', + 'inherit', + ); + + if ( in_array( $propertyValue, $values, true ) ) + { + $this->properties['strokeLineCap'] = $propertyValue; + } + else + { + throw new ezcBaseValueException( $propertyName, $propertyValue, implode( $values, ', ' ) ); + } + break; + case 'shapeRendering': + $values = array( + 'auto', + 'optimizeSpeed', + 'crispEdges', + 'geometricPrecision', + 'inherit', + ); + + if ( in_array( $propertyValue, $values, true ) ) + { + $this->properties['shapeRendering'] = $propertyValue; + } + else + { + throw new ezcBaseValueException( $propertyName, $propertyValue, implode( $values, ', ' ) ); + } + break; + case 'colorRendering': + $values = array( + 'auto', + 'optimizeSpeed', + 'optimizeQuality', + 'inherit', + ); + + if ( in_array( $propertyValue, $values, true ) ) + { + $this->properties['colorRendering'] = $propertyValue; + } + else + { + throw new ezcBaseValueException( $propertyName, $propertyValue, implode( $values, ', ' ) ); + } + break; + case 'textRendering': + $values = array( + 'auto', + 'optimizeSpeed', + 'optimizeLegibility', + 'geometricPrecision', + 'inherit', + ); + + if ( in_array( $propertyValue, $values, true ) ) + { + $this->properties['textRendering'] = $propertyValue; + } + else + { + throw new ezcBaseValueException( $propertyName, $propertyValue, implode( $values, ', ' ) ); + } + break; + case 'templateDocument': + if ( !is_file( $propertyValue ) || !is_readable( $propertyValue ) ) + { + throw new ezcBaseFileNotFoundException( $propertyValue ); + } + else + { + $this->properties['templateDocument'] = realpath( $propertyValue ); + } + break; + case 'insertIntoGroup': + if ( !is_string( $propertyValue ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'string' ); + } + else + { + $this->properties['insertIntoGroup'] = $propertyValue; + } + break; + case 'graphOffset': + if ( $propertyValue instanceof ezcGraphCoordinate ) + { + $this->properties['graphOffset'] = $propertyValue; + } + else + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'ezcGraphCoordinate' ); + } + break; + case 'idPrefix': + $this->properties['idPrefix'] = (string) $propertyValue; + break; + case 'encoding': + $this->properties['encoding'] = (string) $propertyValue; + break; + case 'linkCursor': + $this->properties['linkCursor'] = (string) $propertyValue; + break; + default: + parent::__set( $propertyName, $propertyValue ); + break; + } + } +} + +?> diff --git a/include/ezcomponents/Graph/src/palette/black.php b/include/ezcomponents/Graph/src/palette/black.php new file mode 100644 index 000000000..1e27fbac9 --- /dev/null +++ b/include/ezcomponents/Graph/src/palette/black.php @@ -0,0 +1,114 @@ + diff --git a/include/ezcomponents/Graph/src/palette/ez.php b/include/ezcomponents/Graph/src/palette/ez.php new file mode 100644 index 000000000..785d4c9e6 --- /dev/null +++ b/include/ezcomponents/Graph/src/palette/ez.php @@ -0,0 +1,97 @@ + diff --git a/include/ezcomponents/Graph/src/palette/ez_blue.php b/include/ezcomponents/Graph/src/palette/ez_blue.php new file mode 100644 index 000000000..d6eb8dc29 --- /dev/null +++ b/include/ezcomponents/Graph/src/palette/ez_blue.php @@ -0,0 +1,90 @@ + diff --git a/include/ezcomponents/Graph/src/palette/ez_green.php b/include/ezcomponents/Graph/src/palette/ez_green.php new file mode 100644 index 000000000..b7245c2b1 --- /dev/null +++ b/include/ezcomponents/Graph/src/palette/ez_green.php @@ -0,0 +1,90 @@ + diff --git a/include/ezcomponents/Graph/src/palette/ez_red.php b/include/ezcomponents/Graph/src/palette/ez_red.php new file mode 100644 index 000000000..841f6b6a8 --- /dev/null +++ b/include/ezcomponents/Graph/src/palette/ez_red.php @@ -0,0 +1,90 @@ + diff --git a/include/ezcomponents/Graph/src/palette/tango.php b/include/ezcomponents/Graph/src/palette/tango.php new file mode 100644 index 000000000..009432bdd --- /dev/null +++ b/include/ezcomponents/Graph/src/palette/tango.php @@ -0,0 +1,87 @@ + diff --git a/include/ezcomponents/Graph/src/renderer/2d.php b/include/ezcomponents/Graph/src/renderer/2d.php new file mode 100644 index 000000000..8021c039c --- /dev/null +++ b/include/ezcomponents/Graph/src/renderer/2d.php @@ -0,0 +1,1707 @@ + + * $graph = new ezcGraphPieChart(); + * $graph->palette = new ezcGraphPaletteBlack(); + * $graph->title = 'Access statistics'; + * $graph->options->label = '%2$d (%3$.1f%%)'; + * + * $graph->data['Access statistics'] = new ezcGraphArrayDataSet( array( + * 'Mozilla' => 19113, + * 'Explorer' => 10917, + * 'Opera' => 1464, + * 'Safari' => 652, + * 'Konqueror' => 474, + * ) ); + * $graph->data['Access statistics']->highlight['Explorer'] = true; + * + * // $graph->renderer = new ezcGraphRenderer2d(); + * + * $graph->renderer->options->moveOut = .2; + * + * $graph->renderer->options->pieChartOffset = 63; + * + * $graph->renderer->options->pieChartGleam = .3; + * $graph->renderer->options->pieChartGleamColor = '#FFFFFF'; + * $graph->renderer->options->pieChartGleamBorder = 2; + * + * $graph->renderer->options->pieChartShadowSize = 3; + * $graph->renderer->options->pieChartShadowColor = '#000000'; + * + * $graph->renderer->options->legendSymbolGleam = .5; + * $graph->renderer->options->legendSymbolGleamSize = .9; + * $graph->renderer->options->legendSymbolGleamColor = '#FFFFFF'; + * + * $graph->renderer->options->pieChartSymbolColor = '#BABDB688'; + * + * $graph->render( 400, 150, 'tutorial_pie_chart_pimped.svg' ); + * + * + * @version 1.3 + * @package Graph + * @mainclass + */ +class ezcGraphRenderer2d + extends + ezcGraphRenderer + implements + ezcGraphRadarRenderer, ezcGraphStackedBarsRenderer, ezcGraphOdometerRenderer +{ + + /** + * Pie segment labels divided into two array, containing the labels on the + * left and right side of the pie chart center. + * + * @var array + */ + protected $pieSegmentLabels = array( + 0 => array(), + 1 => array(), + ); + + /** + * Contains the boundings used for pie segments + * + * @var ezcGraphBoundings + */ + protected $pieSegmentBoundings = false; + + /** + * Array with symbols for post processing, which ensures, that the symbols + * are rendered topmost. + * + * @var array + */ + protected $linePostSymbols = array(); + + /** + * Options + * + * @var ezcGraphRenderer2dOptions + */ + protected $options; + + /** + * Collect axis labels, so that the axis are drawn, when all axis spaces + * are known. + * + * @var array + */ + protected $axisLabels = array(); + + /** + * Collects circle sectors to draw shadow in background of all circle + * sectors. + * + * @var array + */ + protected $circleSectors = array(); + + /** + * Constructor + * + * @param array $options Default option array + * @return void + * @ignore + */ + public function __construct( array $options = array() ) + { + $this->options = new ezcGraphRenderer2dOptions( $options ); + } + + /** + * __get + * + * @param mixed $propertyName + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @return mixed + * @ignore + */ + public function __get( $propertyName ) + { + switch ( $propertyName ) + { + case 'options': + return $this->options; + default: + return parent::__get( $propertyName ); + } + } + + /** + * Draw pie segment + * + * Draws a single pie segment + * + * @param ezcGraphBoundings $boundings Chart boundings + * @param ezcGraphContext $context Context of call + * @param ezcGraphColor $color Color of pie segment + * @param float $startAngle Start angle + * @param float $endAngle End angle + * @param mixed $label Label of pie segment + * @param bool $moveOut Move out from middle for hilighting + * @return void + */ + public function drawPieSegment( + ezcGraphBoundings $boundings, + ezcGraphContext $context, + ezcGraphColor $color, + $startAngle = .0, + $endAngle = 360., + $label = false, + $moveOut = false ) + { + // Apply offset + $startAngle += $this->options->pieChartOffset; + $endAngle += $this->options->pieChartOffset; + + // Calculate position and size of pie + $center = new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->width ) / 2, + $boundings->y0 + ( $boundings->height ) / 2 + ); + + // Limit radius to fourth of width and half of height at maximum + $radius = min( + ( $boundings->width ) * $this->options->pieHorizontalSize, + ( $boundings->height ) * $this->options->pieVerticalSize + ); + + // Move pie segment out of the center + if ( $moveOut ) + { + $direction = ( $endAngle + $startAngle ) / 2; + + $center = new ezcGraphCoordinate( + $center->x + $this->options->moveOut * $radius * cos( deg2rad( $direction ) ), + $center->y + $this->options->moveOut * $radius * sin( deg2rad( $direction ) ) + ); + } + + // Add circle sector to queue + $this->circleSectors[] = array( + 'center' => $center, + 'context' => $context, + 'width' => $radius * 2 * ( 1 - $this->options->moveOut ), + 'height' => $radius * 2 * ( 1 - $this->options->moveOut ), + 'start' => $startAngle, + 'end' => $endAngle, + 'color' => $color, + ); + + if ( $label ) + { + // Determine position of label + $direction = ( $endAngle + $startAngle ) / 2; + $pieSegmentCenter = new ezcGraphCoordinate( + $center->x + cos( deg2rad( $direction ) ) * $radius, + $center->y + sin( deg2rad( $direction ) ) * $radius + ); + + // Split labels up into left an right size and index them on their + // y position + $this->pieSegmentLabels[(int) ($pieSegmentCenter->x > $center->x)][$pieSegmentCenter->y] = array( + new ezcGraphCoordinate( + $center->x + cos( deg2rad( $direction ) ) * $radius * 2 / 3, + $center->y + sin( deg2rad( $direction ) ) * $radius * 2 / 3 + ), + $label, + $context + ); + } + + if ( !$this->pieSegmentBoundings ) + { + $this->pieSegmentBoundings = $boundings; + } + } + + /** + * Draws the collected circle sectors + * + * All circle sectors are collected and drawn later to be able to render + * the shadows of the pie segments in the back of all pie segments. + * + * @return void + */ + protected function finishCircleSectors() + { + // Add circle sector sides to simple z buffer prioriry list + if ( $this->options->pieChartShadowSize > 0 ) + { + foreach ( $this->circleSectors as $circleSector ) + { + $this->driver->drawCircleSector( + new ezcGraphCoordinate( + $circleSector['center']->x + $this->options->pieChartShadowSize, + $circleSector['center']->y + $this->options->pieChartShadowSize + ), + $circleSector['width'], + $circleSector['height'], + $circleSector['start'], + $circleSector['end'], + $this->options->pieChartShadowColor->transparent( $this->options->pieChartShadowTransparency ), + true + ); + } + } + + foreach ( $this->circleSectors as $circleSector ) + { + // Draw circle sector + $this->addElementReference( + $circleSector['context'], + $this->driver->drawCircleSector( + $circleSector['center'], + $circleSector['width'], + $circleSector['height'], + $circleSector['start'], + $circleSector['end'], + $circleSector['color'], + true + ) + ); + + $darkenedColor = $circleSector['color']->darken( $this->options->dataBorder ); + $this->driver->drawCircleSector( + $circleSector['center'], + $circleSector['width'], + $circleSector['height'], + $circleSector['start'], + $circleSector['end'], + $darkenedColor, + false + ); + + if ( $this->options->pieChartGleam !== false ) + { + $gradient = new ezcGraphLinearGradient( + $circleSector['center'], + new ezcGraphCoordinate( + $circleSector['center']->x, + $circleSector['center']->y - $circleSector['height'] / 2 + ), + $this->options->pieChartGleamColor->transparent( 1 ), + $this->options->pieChartGleamColor->transparent( $this->options->pieChartGleam ) + ); + + $this->addElementReference( $circleSector['context'], + $this->driver->drawCircleSector( + $circleSector['center'], + $circleSector['width'] - $this->options->pieChartGleamBorder * 2, + $circleSector['height'] - $this->options->pieChartGleamBorder * 2, + $circleSector['start'], + $circleSector['end'], + $gradient, + true + ) + ); + + $gradient = new ezcGraphLinearGradient( + new ezcGraphCoordinate( + $circleSector['center']->x, + $circleSector['center']->y + $circleSector['height'] / 4 + ), + new ezcGraphCoordinate( + $circleSector['center']->x, + $circleSector['center']->y + $circleSector['height'] / 2 + ), + $this->options->pieChartGleamColor->transparent( 1 ), + $this->options->pieChartGleamColor->transparent( $this->options->pieChartGleam ) + ); + + $this->addElementReference( $circleSector['context'], + $this->driver->drawCircleSector( + $circleSector['center'], + $circleSector['width'] - $this->options->pieChartGleamBorder * 2, + $circleSector['height'] - $this->options->pieChartGleamBorder * 2, + $circleSector['start'], + $circleSector['end'], + $gradient, + true + ) + ); + } + } + } + + /** + * Draws the collected pie segment labels + * + * All labels are collected and drawn later to be able to partition the + * available space for the labels woth knowledge of the overall label + * count and their required size and optimal position. + * + * @return void + */ + protected function finishPieSegmentLabels() + { + if ( $this->pieSegmentBoundings === false ) + { + return true; + } + + $boundings = $this->pieSegmentBoundings; + + // Calculate position and size of pie + $center = new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->width ) / 2, + $boundings->y0 + ( $boundings->height ) / 2 + ); + + // Limit radius to fourth of width and half of height at maximum + $radius = min( + ( $boundings->width ) * $this->options->pieHorizontalSize, + ( $boundings->height ) * $this->options->pieVerticalSize + ); + + $pieChartHeight = min( + $radius * 2 + $radius / max( 1, count ( $this->pieSegmentLabels[0] ), count( $this->pieSegmentLabels[1] ) ) * 4, + $boundings->height + ); + $pieChartYPosition = $boundings->y0 + ( ( $boundings->height ) - $pieChartHeight ) / 2; + + // Calculate maximum height of labels + $labelHeight = min( + ( count( $this->pieSegmentLabels[0] ) + ? $pieChartHeight / count( $this->pieSegmentLabels[0] ) + : $pieChartHeight + ), + ( count( $this->pieSegmentLabels[1] ) + ? $pieChartHeight / count( $this->pieSegmentLabels[1] ) + : $pieChartHeight + ), + ( $pieChartHeight ) * $this->options->maxLabelHeight + ); + + $symbolSize = $this->options->symbolSize; + + foreach ( $this->pieSegmentLabels as $side => $labelPart ) + { + $minHeight = $pieChartYPosition; + $toShare = $pieChartHeight - count( $labelPart ) * $labelHeight; + + // Sort to draw topmost label first + ksort( $labelPart ); + $sign = ( $side ? -1 : 1 ); + + foreach ( $labelPart as $height => $label ) + { + if ( ( $height - $labelHeight / 2 ) > $minHeight ) + { + $share = min( $toShare, ( $height - $labelHeight / 2) - $minHeight ); + $minHeight += $share; + $toShare -= $share; + } + + // Determine position of label + $minHeight += max( 0, $height - $minHeight - $labelHeight ) / $pieChartHeight * $toShare; + $verticalDistance = ( $center->y - $minHeight - $labelHeight / 2 ) / $radius; + + $labelPosition = new ezcGraphCoordinate( + $center->x - + $sign * ( + abs( $verticalDistance ) > 1 + // If vertical distance to center is greater then the + // radius, use the centerline for the horizontal + // position + ? max ( + 5, + abs( $label[0]->x - $center->x ) + ) + // Else place the label outside of the pie chart + : ( cos ( asin ( $verticalDistance ) ) * $radius + + $symbolSize * (int) $this->options->showSymbol + ) + ), + $minHeight + $labelHeight / 2 + ); + + if ( $this->options->showSymbol ) + { + // Draw label + $this->driver->drawLine( + $label[0], + $labelPosition, + $this->options->pieChartSymbolColor, + 1 + ); + + $this->driver->drawCircle( + $label[0], + $symbolSize, + $symbolSize, + $this->options->pieChartSymbolColor, + true + ); + $this->driver->drawCircle( + $labelPosition, + $symbolSize, + $symbolSize, + $this->options->pieChartSymbolColor, + true + ); + } + + $this->addElementReference( + $label[2], + $this->driver->drawTextBox( + $label[1], + new ezcGraphCoordinate( + ( !$side ? $boundings->x0 : $labelPosition->x + $symbolSize ), + $minHeight + ), + ( !$side ? $labelPosition->x - $boundings->x0 - $symbolSize : $boundings->x1 - $labelPosition->x - $symbolSize ), + $labelHeight, + ( !$side ? ezcGraph::RIGHT : ezcGraph::LEFT ) | ezcGraph::MIDDLE + ) + ); + + // Add used space to minHeight + $minHeight += $labelHeight; + } + } + } + + /** + * Draw the collected line symbols + * + * Symbols for the data lines are collected and delayed to ensure that + * they are not covered and hidden by other data lines. + * + * @return void + */ + protected function finishLineSymbols() + { + foreach ( $this->linePostSymbols as $symbol ) + { + $this->addElementReference( + $symbol['context'], + $this->drawSymbol( + $symbol['boundings'], + $symbol['color'], + $symbol['symbol'] + ) + ); + } + } + + /** + * Draw bar + * + * Draws a bar as a data element in a line chart + * + * @param ezcGraphBoundings $boundings Chart boundings + * @param ezcGraphContext $context Context of call + * @param ezcGraphColor $color Color of line + * @param ezcGraphCoordinate $position Position of data point + * @param float $stepSize Space which can be used for bars + * @param int $dataNumber Number of dataset + * @param int $dataCount Count of datasets in chart + * @param int $symbol Symbol to draw for line + * @param float $axisPosition Position of axis for drawing filled lines + * @return void + */ + public function drawBar( + ezcGraphBoundings $boundings, + ezcGraphContext $context, + ezcGraphColor $color, + ezcGraphCoordinate $position, + $stepSize, + $dataNumber = 1, + $dataCount = 1, + $symbol = ezcGraph::NO_SYMBOL, + $axisPosition = 0. ) + { + // Apply margin + $margin = $stepSize * $this->options->barMargin; + $padding = $stepSize * $this->options->barPadding; + $barWidth = ( $stepSize - $margin ) / $dataCount - $padding; + $offset = - $stepSize / 2 + $margin / 2 + ( $dataCount - $dataNumber -1 ) * ( $padding + $barWidth ) + $padding / 2; + + $barPointArray = array( + new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->width ) * $position->x + $offset, + $boundings->y0 + ( $boundings->height ) * $axisPosition + ), + new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->width ) * $position->x + $offset, + $boundings->y0 + ( $boundings->height ) * $position->y + ), + new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->width ) * $position->x + $offset + $barWidth, + $boundings->y0 + ( $boundings->height ) * $position->y + ), + new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->width ) * $position->x + $offset + $barWidth, + $boundings->y0 + ( $boundings->height ) * $axisPosition + ), + ); + + $this->addElementReference( + $context, + $this->driver->drawPolygon( + $barPointArray, + $color, + true + ) + ); + + if ( $this->options->dataBorder > 0 ) + { + $darkened = $color->darken( $this->options->dataBorder ); + $this->driver->drawPolygon( + $barPointArray, + $darkened, + false, + 1 + ); + } + } + + /** + * Draw stacked bar + * + * Draws a stacked bar part as a data element in a line chart + * + * @param ezcGraphBoundings $boundings Chart boundings + * @param ezcGraphContext $context Context of call + * @param ezcGraphColor $color Color of line + * @param ezcGraphCoordinate $start + * @param ezcGraphCoordinate $position + * @param float $stepSize Space which can be used for bars + * @param int $symbol Symbol to draw for line + * @param float $axisPosition Position of axis for drawing filled lines + * @return void + */ + public function drawStackedBar( + ezcGraphBoundings $boundings, + ezcGraphContext $context, + ezcGraphColor $color, + ezcGraphCoordinate $start, + ezcGraphCoordinate $position, + $stepSize, + $symbol = ezcGraph::NO_SYMBOL, + $axisPosition = 0. ) + { + // Apply margin + $margin = $stepSize * $this->options->barMargin; + $barWidth = $stepSize - $margin; + $offset = - $stepSize / 2 + $margin / 2; + + $barPointArray = array( + new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->width ) * $position->x + $offset, + $boundings->y0 + ( $boundings->height ) * $start->y + ), + new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->width ) * $position->x + $offset, + $boundings->y0 + ( $boundings->height ) * $position->y + ), + new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->width ) * $position->x + $offset + $barWidth, + $boundings->y0 + ( $boundings->height ) * $position->y + ), + new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->width ) * $position->x + $offset + $barWidth, + $boundings->y0 + ( $boundings->height ) * $start->y + ), + ); + + $this->addElementReference( + $context, + $this->driver->drawPolygon( + $barPointArray, + $color, + true + ) + ); + + if ( $this->options->dataBorder > 0 ) + { + $darkened = $color->darken( $this->options->dataBorder ); + $this->driver->drawPolygon( + $barPointArray, + $darkened, + false, + 1 + ); + } + } + + /** + * Draw data line + * + * Draws a line as a data element in a line chart + * + * @param ezcGraphBoundings $boundings Chart boundings + * @param ezcGraphContext $context Context of call + * @param ezcGraphColor $color Color of line + * @param ezcGraphCoordinate $start Starting point + * @param ezcGraphCoordinate $end Ending point + * @param int $dataNumber Number of dataset + * @param int $dataCount Count of datasets in chart + * @param int $symbol Symbol to draw for line + * @param ezcGraphColor $symbolColor Color of the symbol, defaults to linecolor + * @param ezcGraphColor $fillColor Color to fill line with + * @param float $axisPosition Position of axis for drawing filled lines + * @param float $thickness Line thickness + * @return void + */ + public function drawDataLine( + ezcGraphBoundings $boundings, + ezcGraphContext $context, + ezcGraphColor $color, + ezcGraphCoordinate $start, + ezcGraphCoordinate $end, + $dataNumber = 1, + $dataCount = 1, + $symbol = ezcGraph::NO_SYMBOL, + ezcGraphColor $symbolColor = null, + ezcGraphColor $fillColor = null, + $axisPosition = 0., + $thickness = 1. ) + { + // Perhaps fill up line + if ( $fillColor !== null && + $start->x != $end->x ) + { + $startValue = $axisPosition - $start->y; + $endValue = $axisPosition - $end->y; + + if ( ( $startValue == 0 ) || + ( $endValue == 0 ) || + ( $startValue / abs( $startValue ) == $endValue / abs( $endValue ) ) ) + { + // Values have the same sign or are on the axis + $this->driver->drawPolygon( + array( + new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->width ) * $start->x, + $boundings->y0 + ( $boundings->height ) * $start->y + ), + new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->width ) * $end->x, + $boundings->y0 + ( $boundings->height ) * $end->y + ), + new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->width ) * $end->x, + $boundings->y0 + ( $boundings->height ) * $axisPosition + ), + new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->width ) * $start->x, + $boundings->y0 + ( $boundings->height ) * $axisPosition + ), + ), + $fillColor, + true + ); + } + else + { + // values are on differente sides of the axis - split the filled polygon + $startDiff = abs( $axisPosition - $start->y ); + $endDiff = abs( $axisPosition - $end->y ); + + $cuttingPosition = $startDiff / ( $endDiff + $startDiff ); + $cuttingPoint = new ezcGraphCoordinate( + $start->x + ( $end->x - $start->x ) * $cuttingPosition, + $axisPosition + ); + + $this->driver->drawPolygon( + array( + new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->width ) * $start->x, + $boundings->y0 + ( $boundings->height ) * $axisPosition + ), + new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->width ) * $start->x, + $boundings->y0 + ( $boundings->height ) * $start->y + ), + new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->width ) * $cuttingPoint->x, + $boundings->y0 + ( $boundings->height ) * $cuttingPoint->y + ), + ), + $fillColor, + true + ); + + $this->driver->drawPolygon( + array( + new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->width ) * $end->x, + $boundings->y0 + ( $boundings->height ) * $axisPosition + ), + new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->width ) * $end->x, + $boundings->y0 + ( $boundings->height ) * $end->y + ), + new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->width ) * $cuttingPoint->x, + $boundings->y0 + ( $boundings->height ) * $cuttingPoint->y + ), + ), + $fillColor, + true + ); + } + } + + // Draw line + $this->driver->drawLine( + new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->width ) * $start->x, + $boundings->y0 + ( $boundings->height ) * $start->y + ), + new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->width ) * $end->x, + $boundings->y0 + ( $boundings->height ) * $end->y + ), + $color, + $thickness + ); + + // Draw line symbol + if ( $symbol !== ezcGraph::NO_SYMBOL ) + { + if ( $symbolColor === null ) + { + $symbolColor = $color; + } + + $this->linePostSymbols[] = array( + 'boundings' => new ezcGraphBoundings( + $boundings->x0 + ( $boundings->width ) * $end->x - $this->options->symbolSize / 2, + $boundings->y0 + ( $boundings->height ) * $end->y - $this->options->symbolSize / 2, + $boundings->x0 + ( $boundings->width ) * $end->x + $this->options->symbolSize / 2, + $boundings->y0 + ( $boundings->height ) * $end->y + $this->options->symbolSize / 2 + ), + 'color' => $symbolColor, + 'context' => $context, + 'symbol' => $symbol, + ); + } + } + + /** + * Returns a coordinate in the given bounding box for the given angle + * radius with the center as base point. + * + * @param ezcGraphBoundings $boundings + * @param ezcGraphCoordinate $center + * @param float $angle + * @param float $radius + * @return float + */ + protected function getCoordinateFromAngleAndRadius( + ezcGraphBoundings $boundings, + ezcGraphCoordinate $center, + $angle, + $radius + ) + { + $direction = new ezcGraphCoordinate( + sin( $angle ) * $boundings->width / 2, + -cos( $angle ) * $boundings->height / 2 + ); + + $offset = new ezcGraphCoordinate( + sin( $angle ) * $this->xAxisSpace, + -cos( $angle ) * $this->yAxisSpace + ); + + $direction->x -= 2 * $offset->x; + $direction->y -= 2 * $offset->y; + + return new ezcGraphCoordinate( + $boundings->x0 + + $center->x + + $offset->x + + $direction->x * $radius, + $boundings->y0 + + $center->y + + $offset->y + + $direction->y * $radius + ); + } + + /** + * Draw radar chart data line + * + * Draws a line as a data element in a radar chart + * + * @param ezcGraphBoundings $boundings Chart boundings + * @param ezcGraphContext $context Context of call + * @param ezcGraphColor $color Color of line + * @param ezcGraphCoordinate $center Center of radar chart + * @param ezcGraphCoordinate $start Starting point + * @param ezcGraphCoordinate $end Ending point + * @param int $dataNumber Number of dataset + * @param int $dataCount Count of datasets in chart + * @param int $symbol Symbol to draw for line + * @param ezcGraphColor $symbolColor Color of the symbol, defaults to linecolor + * @param ezcGraphColor $fillColor Color to fill line with + * @param float $thickness Line thickness + * @return void + */ + public function drawRadarDataLine( + ezcGraphBoundings $boundings, + ezcGraphContext $context, + ezcGraphColor $color, + ezcGraphCoordinate $center, + ezcGraphCoordinate $start, + ezcGraphCoordinate $end, + $dataNumber = 1, + $dataCount = 1, + $symbol = ezcGraph::NO_SYMBOL, + ezcGraphColor $symbolColor = null, + ezcGraphColor $fillColor = null, + $thickness = 1. + ) + { + // Calculate line points from chart coordinates + $start = $this->getCoordinateFromAngleAndRadius( + $boundings, + $center, + $start->x * 2 * M_PI, + $start->y + ); + $end = $this->getCoordinateFromAngleAndRadius( + $boundings, + $center, + $end->x * 2 * M_PI, + $end->y + ); + + // Fill line + if ( $fillColor !== null ) + { + $this->driver->drawPolygon( + array( + $start, + $end, + new ezcGraphCoordinate( + $boundings->x0 + $center->x, + $boundings->y0 + $center->y + ), + ), + $fillColor, + true + ); + } + + // Draw line + $this->driver->drawLine( + $start, + $end, + $color, + $thickness + ); + + if ( $symbol !== ezcGraph::NO_SYMBOL ) + { + $this->drawSymbol( + new ezcGraphBoundings( + $end->x - $this->options->symbolSize / 2, + $end->y - $this->options->symbolSize / 2, + $end->x + $this->options->symbolSize / 2, + $end->y + $this->options->symbolSize / 2 + ), + $symbolColor, + $symbol + ); + } + } + + /** + * Draws a highlight textbox for a datapoint. + * + * A highlight textbox for line and bar charts means a box with the current + * value in the graph. + * + * @param ezcGraphBoundings $boundings Chart boundings + * @param ezcGraphContext $context Context of call + * @param ezcGraphCoordinate $end Ending point + * @param float $axisPosition Position of axis for drawing filled lines + * @param int $dataNumber Number of dataset + * @param int $dataCount Count of datasets in chart + * @param ezcGraphFontOptions $font Font used for highlight string + * @param string $text Acutual value + * @param int $size Size of highlight text + * @param ezcGraphColor $markLines + * @return void + */ + public function drawDataHighlightText( + ezcGraphBoundings $boundings, + ezcGraphContext $context, + ezcGraphCoordinate $end, + $axisPosition = 0., + $dataNumber = 1, + $dataCount = 1, + ezcGraphFontOptions $font, + $text, + $size, + ezcGraphColor $markLines = null ) + { + $this->driver->options->font = $font; + $width = $boundings->width / $dataCount; + + $dataPoint = new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->width ) * $end->x, + $boundings->y0 + ( $boundings->height ) * $end->y + ); + + if ( $end->y < $axisPosition ) + { + $this->driver->drawTextBox( + $text, + new ezcGraphCoordinate( + $dataPoint->x - $width / 2, + $dataPoint->y - $size - $font->padding - $this->options->symbolSize + ), + $width, + $size, + ezcGraph::CENTER | ezcGraph::BOTTOM + ); + } + else + { + $this->driver->drawTextBox( + $text, + new ezcGraphCoordinate( + $dataPoint->x - $width / 2, + $dataPoint->y + $font->padding + $this->options->symbolSize + ), + $width, + $size, + ezcGraph::CENTER | ezcGraph::TOP + ); + } + } + + /** + * Draw legend + * + * Will draw a legend in the bounding box + * + * @param ezcGraphBoundings $boundings Bounding of legend + * @param ezcGraphChartElementLegend $legend Legend to draw; + * @param int $type Type of legend: Protrait or landscape + * @return void + */ + public function drawLegend( + ezcGraphBoundings $boundings, + ezcGraphChartElementLegend $legend, + $type = ezcGraph::VERTICAL ) + { + $labels = $legend->labels; + + // Calculate boundings of each label + if ( $type & ezcGraph::VERTICAL ) + { + $labelWidth = $boundings->width; + $labelHeight = min( + ( $boundings->height ) / count( $labels ) - $legend->spacing, + $legend->symbolSize + 2 * $legend->padding + ); + } + else + { + $labelWidth = ( $boundings->width ) / count( $labels ) - $legend->spacing; + $labelHeight = min( + $boundings->height, + $legend->symbolSize + 2 * $legend->padding + ); + } + + $symbolSize = $labelHeight - 2 * $legend->padding; + + // Draw all labels + $labelPosition = new ezcGraphCoordinate( $boundings->x0, $boundings->y0 ); + foreach ( $labels as $label ) + { + $this->elements['legend_url'][$label['label']] = $label['url']; + + $this->elements['legend'][$label['label']]['symbol'] = $this->drawSymbol( + new ezcGraphBoundings( + $labelPosition->x + $legend->padding, + $labelPosition->y + $legend->padding, + $labelPosition->x + $legend->padding + $symbolSize, + $labelPosition->y + $legend->padding + $symbolSize + ), + $label['color'], + $label['symbol'] + ); + + $this->elements['legend'][$label['label']]['text'] = $this->driver->drawTextBox( + $label['label'], + new ezcGraphCoordinate( + $labelPosition->x + 2 * $legend->padding + $symbolSize, + $labelPosition->y + $legend->padding + ), + $labelWidth - $symbolSize - 3 * $legend->padding, + $labelHeight - 2 * $legend->padding, + ezcGraph::LEFT | ezcGraph::MIDDLE + ); + + $labelPosition->x += ( $type === ezcGraph::VERTICAL ? 0 : $labelWidth + $legend->spacing ); + $labelPosition->y += ( $type === ezcGraph::VERTICAL ? $labelHeight + $legend->spacing : 0 ); + } + } + + /** + * Draw box + * + * Box are wrapping each major chart element and draw border, background + * and title to each chart element. + * + * Optionally a padding and margin for each box can be defined. + * + * @param ezcGraphBoundings $boundings Boundings of the box + * @param ezcGraphColor $background Background color + * @param ezcGraphColor $borderColor Border color + * @param int $borderWidth Border width + * @param int $margin Margin + * @param int $padding Padding + * @param mixed $title Title of the box + * @param int $titleSize Size of title in the box + * @return ezcGraphBoundings Remaining inner boundings + */ + public function drawBox( + ezcGraphBoundings $boundings, + ezcGraphColor $background = null, + ezcGraphColor $borderColor = null, + $borderWidth = 0, + $margin = 0, + $padding = 0, + $title = false, + $titleSize = 16 ) + { + // Apply margin + $boundings->x0 += $margin; + $boundings->y0 += $margin; + $boundings->x1 -= $margin; + $boundings->y1 -= $margin; + + if ( $background instanceof ezcGraphColor ) + { + // Draw box background + $this->driver->drawPolygon( + array( + new ezcGraphCoordinate( $boundings->x0, $boundings->y0 ), + new ezcGraphCoordinate( $boundings->x1, $boundings->y0 ), + new ezcGraphCoordinate( $boundings->x1, $boundings->y1 ), + new ezcGraphCoordinate( $boundings->x0, $boundings->y1 ), + ), + $background, + true + ); + } + + if ( ( $borderColor instanceof ezcGraphColor ) && + ( $borderWidth > 0 ) ) + { + // Draw border + $this->driver->drawPolygon( + array( + new ezcGraphCoordinate( $boundings->x0, $boundings->y0 ), + new ezcGraphCoordinate( $boundings->x1, $boundings->y0 ), + new ezcGraphCoordinate( $boundings->x1, $boundings->y1 ), + new ezcGraphCoordinate( $boundings->x0, $boundings->y1 ), + ), + $borderColor, + false, + $borderWidth + ); + + // Reduce local boundings by borderWidth + $boundings->x0 += $borderWidth; + $boundings->y0 += $borderWidth; + $boundings->x1 -= $borderWidth; + $boundings->y1 -= $borderWidth; + } + + // Apply padding + $boundings->x0 += $padding; + $boundings->y0 += $padding; + $boundings->x1 -= $padding; + $boundings->y1 -= $padding; + + // Add box title + if ( $title !== false ) + { + switch ( $this->options->titlePosition ) + { + case ezcGraph::TOP: + $this->driver->drawTextBox( + $title, + new ezcGraphCoordinate( $boundings->x0, $boundings->y0 ), + $boundings->width, + $titleSize, + $this->options->titleAlignement + ); + + $boundings->y0 += $titleSize + $padding; + $boundings->y1 -= $titleSize + $padding; + break; + case ezcGraph::BOTTOM: + $this->driver->drawTextBox( + $title, + new ezcGraphCoordinate( $boundings->x0, $boundings->y1 - $titleSize ), + $boundings->width, + $titleSize, + $this->options->titleAlignement + ); + + $boundings->y1 -= $titleSize + $padding; + break; + } + } + + return $boundings; + } + + /** + * Draw text + * + * Draws the provided text in the boundings + * + * @param ezcGraphBoundings $boundings Boundings of text + * @param string $text Text + * @param int $align Alignement of text + * @param ezcGraphRotation $rotation + * @return void + */ + public function drawText( + ezcGraphBoundings $boundings, + $text, + $align = ezcGraph::LEFT, + ezcGraphRotation $rotation = null ) + { + $this->driver->drawTextBox( + $text, + new ezcGraphCoordinate( $boundings->x0, $boundings->y0 ), + $boundings->width, + $boundings->height, + $align, + $rotation + ); + } + + /** + * Draw grid line + * + * Draw line for the grid in the chart background + * + * @param ezcGraphCoordinate $start Start point + * @param ezcGraphCoordinate $end End point + * @param ezcGraphColor $color Color of the grid line + * @return void + */ + public function drawGridLine( ezcGraphCoordinate $start, ezcGraphCoordinate $end, ezcGraphColor $color ) + { + $this->driver->drawLine( + $start, + $end, + $color, + 1 + ); + } + + /** + * Draw step line + * + * Draw a step (marker for label position) on a axis. + * + * @param ezcGraphCoordinate $start Start point + * @param ezcGraphCoordinate $end End point + * @param ezcGraphColor $color Color of the grid line + * @return void + */ + public function drawStepLine( ezcGraphCoordinate $start, ezcGraphCoordinate $end, ezcGraphColor $color ) + { + $this->driver->drawLine( + $start, + $end, + $color, + 1 + ); + } + + /** + * Draw axis + * + * Draws an axis form the provided start point to the end point. A specific + * angle of the axis is not required. + * + * For the labeleing of the axis a sorted array with major steps and an + * array with minor steps is expected, which are build like this: + * array( + * array( + * 'position' => (float), + * 'label' => (string), + * ) + * ) + * where the label is optional. + * + * The label renderer class defines how the labels are rendered. For more + * documentation on this topic have a look at the basic label renderer + * class. + * + * Additionally it can be specified if a major and minor grid are rendered + * by defining a color for them. Teh axis label is used to add a caption + * for the axis. + * + * @param ezcGraphBoundings $boundings Boundings of axis + * @param ezcGraphCoordinate $start Start point of axis + * @param ezcGraphCoordinate $end Endpoint of axis + * @param ezcGraphChartElementAxis $axis Axis to render + * @param ezcGraphAxisLabelRenderer $labelClass Used label renderer + * @return void + */ + public function drawAxis( + ezcGraphBoundings $boundings, + ezcGraphCoordinate $start, + ezcGraphCoordinate $end, + ezcGraphChartElementAxis $axis, + ezcGraphAxisLabelRenderer $labelClass = null ) + { + // Store axis space for use by label renderer + switch ( $axis->position ) + { + case ezcGraph::TOP: + case ezcGraph::BOTTOM: + $this->xAxisSpace = ( $boundings->width ) * $axis->axisSpace; + break; + case ezcGraph::LEFT: + case ezcGraph::RIGHT: + $this->yAxisSpace = ( $boundings->height ) * $axis->axisSpace; + break; + } + + // Clone boundings because of internal modifications + $boundings = clone $boundings; + + $start->x += $boundings->x0; + $start->y += $boundings->y0; + $end->x += $boundings->x0; + $end->y += $boundings->y0; + + // Determine normalized direction + $direction = new ezcGraphVector( + $start->x - $end->x, + $start->y - $end->y + ); + $direction->unify(); + + // Draw axis + $this->driver->drawLine( + $start, + $end, + $axis->border, + 1 + ); + + // Draw small arrowhead + $size = max( + $axis->minArrowHeadSize, + min( + $axis->maxArrowHeadSize, + abs( ceil( ( ( $end->x - $start->x ) + ( $end->y - $start->y ) ) * $axis->axisSpace / 4 ) ) + ) + ); + + $orthogonalDirection = clone $direction; + $orthogonalDirection->rotateClockwise(); + + $this->driver->drawPolygon( + array( + new ezcGraphCoordinate( + $end->x, + $end->y + ), + new ezcGraphCoordinate( + $end->x + - $orthogonalDirection->x * $size / 2 + + $direction->x * $size, + $end->y + - $orthogonalDirection->y * $size / 2 + + $direction->y * $size + ), + new ezcGraphCoordinate( + $end->x + + $orthogonalDirection->x * $size / 2 + + $direction->x * $size, + $end->y + + $orthogonalDirection->y * $size / 2 + + $direction->y * $size + ), + ), + $axis->border, + true + ); + + // Draw axis label + if ( $axis->label !== false ) + { + $width = $boundings->width; + switch ( $axis->position ) + { + case ezcGraph::TOP: + $this->driver->drawTextBox( + $axis->label, + new ezcGraphCoordinate( + $end->x + $axis->labelMargin - $width * ( 1 - $axis->axisSpace * 2 ), + $end->y - $axis->labelMargin - $axis->labelSize + ), + $width * ( 1 - $axis->axisSpace * 2 ) - $axis->labelMargin, + $axis->labelSize, + ezcGraph::TOP | ezcGraph::RIGHT + ); + break; + case ezcGraph::BOTTOM: + $this->driver->drawTextBox( + $axis->label, + new ezcGraphCoordinate( + $end->x + $axis->labelMargin, + $end->y + $axis->labelMargin + ), + $width * ( 1 - $axis->axisSpace * 2 ) - $axis->labelMargin, + $axis->labelSize, + ezcGraph::TOP | ezcGraph::LEFT + ); + break; + case ezcGraph::LEFT: + $this->driver->drawTextBox( + $axis->label, + new ezcGraphCoordinate( + $end->x - $width, + $end->y - $axis->labelSize - $axis->labelMargin + ), + $width - $axis->labelMargin, + $axis->labelSize, + ezcGraph::BOTTOM | ezcGraph::RIGHT + ); + break; + case ezcGraph::RIGHT: + $this->driver->drawTextBox( + $axis->label, + new ezcGraphCoordinate( + $end->x, + $end->y - $axis->labelSize - $axis->labelMargin + ), + $width - $axis->labelMargin, + $axis->labelSize, + ezcGraph::BOTTOM | ezcGraph::LEFT + ); + break; + } + } + + // Collect axis labels and draw, when all axisSpaces are collected + $this->axisLabels[] = array( + 'object' => $labelClass, + 'boundings' => $boundings, + 'start' => clone $start, + 'end' => clone $end, + 'axis' => $axis, + ); + + if ( $this->xAxisSpace && $this->yAxisSpace ) + { + $this->drawAxisLabels(); + } + } + + /** + * Draw all left axis labels + * + * @return void + */ + protected function drawAxisLabels() + { + foreach ( $this->axisLabels as $nr => $axisLabel ) + { + // If font should not be synchronized, use font configuration from + // each axis + if ( $this->options->syncAxisFonts === false ) + { + $this->driver->options->font = $axisLabel['axis']->font; + } + + $start = $axisLabel['start']; + $end = $axisLabel['end']; + + $direction = new ezcGraphVector( + $end->x - $start->x, + $end->y - $start->y + ); + $direction->unify(); + + // Convert elipse to circle for correct angle calculation + $direction->y *= ( $this->xAxisSpace / $this->yAxisSpace ); + $angle = $direction->angle( new ezcGraphVector( 0, 1 ) ); + + $movement = new ezcGraphVector( + sin( $angle ) * $this->xAxisSpace * ( $direction->x < 0 ? -1 : 1 ), + cos( $angle ) * $this->yAxisSpace + ); + + $start->x += $movement->x; + $start->y += $movement->y; + $end->x -= $movement->x; + $end->y -= $movement->y; + + $axisLabel['object']->renderLabels( + $this, + $axisLabel['boundings'], + $start, + $end, + $axisLabel['axis'] + ); + + // Prevent from redrawing axis on more then 2 axis. + unset( $this->axisLabels[$nr] ); + } + } + + /** + * Draw background image + * + * Draws a background image at the defined position. If repeat is set the + * background image will be repeated like any texture. + * + * @param ezcGraphBoundings $boundings Boundings for the background image + * @param string $file Filename of background image + * @param int $position Position of background image + * @param int $repeat Type of repetition + * @return void + */ + public function drawBackgroundImage( + ezcGraphBoundings $boundings, + $file, + $position = 48, // ezcGraph::CENTER | ezcGraph::MIDDLE + $repeat = ezcGraph::NO_REPEAT ) + { + $imageData = getimagesize( $file ); + $imageWidth = $imageData[0]; + $imageHeight = $imageData[1]; + + $imageWidth = min( $imageWidth, $boundings->width ); + $imageHeight = min( $imageHeight, $boundings->height ); + + $imagePosition = new ezcGraphCoordinate( + $boundings->x0, + $boundings->y0 + ); + + // Determine x position + switch ( true ) { + case ( $repeat & ezcGraph::HORIZONTAL ): + // If is repeated on this axis fall back to position zero + case ( $position & ezcGraph::LEFT ): + $imagePosition->x = $boundings->x0; + break; + case ( $position & ezcGraph::RIGHT ): + $imagePosition->x = max( + $boundings->x1 - $imageWidth, + $boundings->x0 + ); + break; + default: + $imagePosition->x = max( + $boundings->x0 + ( $boundings->width - $imageWidth ) / 2, + $boundings->x0 + ); + break; + } + + // Determine y position + switch ( true ) { + case ( $repeat & ezcGraph::VERTICAL ): + // If is repeated on this axis fall back to position zero + case ( $position & ezcGraph::TOP ): + $imagePosition->y = $boundings->y0; + break; + case ( $position & ezcGraph::BOTTOM ): + $imagePosition->y = max( + $boundings->y1 - $imageHeight, + $boundings->y0 + ); + break; + default: + $imagePosition->y = max( + $boundings->y0 + ( $boundings->height - $imageHeight ) / 2, + $boundings->y0 + ); + break; + } + + // Texturize backround based on position and repetition + $position = new ezcGraphCoordinate( + $imagePosition->x, + $imagePosition->y + ); + + do + { + $position->y = $imagePosition->y; + + do + { + $this->driver->drawImage( + $file, + $position, + $imageWidth, + $imageHeight + ); + + $position->y += $imageHeight; + } + while ( ( $position->y < $boundings->y1 ) && + ( $repeat & ezcGraph::VERTICAL ) ); + + $position->x += $imageWidth; + } + while ( ( $position->x < $boundings->x1 ) && + ( $repeat & ezcGraph::HORIZONTAL ) ); + } + + /** + * Call all postprocessing functions + * + * @return void + */ + protected function finish() + { + $this->finishCircleSectors(); + $this->finishPieSegmentLabels(); + $this->finishLineSymbols(); + + return true; + } + + /** + * Reset renderer properties + * + * Reset all renderer properties, which were calculated during the + * rendering process, to offer a clean environment for rerendering. + * + * @return void + */ + protected function resetRenderer() + { + parent::resetRenderer(); + + // Also reset special 2D renderer options + $this->pieSegmentLabels = array( + 0 => array(), + 1 => array(), + ); + $this->pieSegmentBoundings = false; + $this->linePostSymbols = array(); + $this->axisLabels = array(); + $this->circleSectors = array(); + } + + /** + * Render odometer chart + * + * @param ezcGraphBoundings $boundings + * @param ezcGraphChartElementAxis $axis + * @param ezcGraphOdometerChartOptions $options + * @return ezcGraphBoundings + */ + public function drawOdometer( + ezcGraphBoundings $boundings, + ezcGraphChartElementAxis $axis, + ezcGraphOdometerChartOptions $options ) + { + $height = $boundings->height * $options->odometerHeight; + + // Draw axis + $oldAxisSpace = $axis->axisSpace; + $axis->axisSpace = 0; + + $axis->render( $this, $boundings ); + + // Reset axisspaces to correct values + $this->xAxisSpace = $boundings->width * $oldAxisSpace; + $this->yAxisSpace = ( $boundings->height - $height ) / 2; + + $this->drawAxisLabels(); + + // Reduce size of chart boundings respecting requested odometer height + $boundings->x0 += $this->xAxisSpace; + $boundings->x1 -= $this->xAxisSpace; + $boundings->y0 += $this->yAxisSpace; + $boundings->y1 -= $this->yAxisSpace; + + $gradient = new ezcGraphLinearGradient( + new ezcGraphCoordinate( $boundings->x0, $boundings->y0 ), + new ezcGraphCoordinate( $boundings->x1, $boundings->y0 ), + $options->startColor, + $options->endColor + ); + + // Simply draw box with gradient and optional border + $this->drawBox( + $boundings, + $gradient, + $options->borderColor, + $options->borderWidth + ); + + // Return modified chart boundings + return $boundings; + } + + /** + * Draw a single odometer marker. + * + * @param ezcGraphBoundings $boundings + * @param ezcGraphCoordinate $position + * @param int $symbol + * @param ezcGraphColor $color + * @param int $width + */ + public function drawOdometerMarker( + ezcGraphBoundings $boundings, + ezcGraphCoordinate $position, + $symbol, + ezcGraphColor $color, + $width ) + { + $this->driver->drawLine( + new ezcGraphCoordinate( + $xPos = $boundings->x0 + ( $position->x * $boundings->width ), + $boundings->y0 + ), + new ezcGraphCoordinate( + $xPos, + $boundings->y1 + ), + $color, + $width + ); + } +} + +?> diff --git a/include/ezcomponents/Graph/src/renderer/3d.php b/include/ezcomponents/Graph/src/renderer/3d.php new file mode 100644 index 000000000..4c6e1436f --- /dev/null +++ b/include/ezcomponents/Graph/src/renderer/3d.php @@ -0,0 +1,2407 @@ + + * $graph = new ezcGraphPieChart(); + * $graph->palette = new ezcGraphPaletteEzRed(); + * $graph->title = 'Access statistics'; + * $graph->options->label = '%2$d (%3$.1f%%)'; + * + * $graph->data['Access statistics'] = new ezcGraphArrayDataSet( array( + * 'Mozilla' => 19113, + * 'Explorer' => 10917, + * 'Opera' => 1464, + * 'Safari' => 652, + * 'Konqueror' => 474, + * ) ); + * $graph->data['Access statistics']->highlight['Explorer'] = true; + * + * $graph->renderer = new ezcGraphRenderer3d(); + * + * $graph->renderer->options->moveOut = .2; + * + * $graph->renderer->options->pieChartOffset = 63; + * + * $graph->renderer->options->pieChartGleam = .3; + * $graph->renderer->options->pieChartGleamColor = '#FFFFFF'; + * + * $graph->renderer->options->pieChartShadowSize = 5; + * $graph->renderer->options->pieChartShadowColor = '#000000'; + * + * $graph->renderer->options->legendSymbolGleam = .5; + * $graph->renderer->options->legendSymbolGleamSize = .9; + * $graph->renderer->options->legendSymbolGleamColor = '#FFFFFF'; + * + * $graph->renderer->options->pieChartSymbolColor = '#55575388'; + * + * $graph->renderer->options->pieChartHeight = 5; + * $graph->renderer->options->pieChartRotation = .8; + * + * $graph->render( 400, 150, 'tutorial_pie_chart_3d.svg' ); + * + * + * @version 1.3 + * @package Graph + * @mainclass + */ +class ezcGraphRenderer3d + extends + ezcGraphRenderer + implements + ezcGraphStackedBarsRenderer +{ + + /** + * Pie segment labels divided into two array, containing the labels on the + * left and right side of the pie chart center. + * + * @var array + */ + protected $pieSegmentLabels = array( + 0 => array(), + 1 => array(), + ); + + /** + * Contains the boundings used for pie segments + * + * @var ezcGraphBoundings + */ + protected $pieSegmentBoundings = false; + + /** + * Array with symbols for post processing, which ensures, that the symbols + * are rendered topmost. + * + * @var array + */ + protected $linePostSymbols = array(); + + /** + * Array containing lines from the axis and grid which should be redrawn on + * top of the data. + * + * @var array + */ + protected $frontLines = array(); + + /** + * Collects circle sectors to draw shadow in background of all circle + * sectors. + * + * @var array + */ + protected $circleSectors = array(); + + /** + * Collects bar sides to draw them in a post processing step to simulate + * a simple z buffer. + * array( + * array( + * 'index' => (int) // used for sorting + * 'context' => ezcGraphContext // context of call + * 'method' => (string) // method of driver to call + * 'parameters' => array // parameters for method call + * ), ... + * ) + * + * @var array + */ + protected $barPostProcessing = array(); + + /** + * Options + * + * @var ezcGraphRenderer3dOptions + */ + protected $options; + + /** + * Depth of displayed pseudo three dimensional line chart elements. + * + * @var float + */ + protected $depth = false; + + /** + * Factor to reduce the width according to depth + * + * @var float + */ + protected $xDepthFactor = false; + + /** + * Factor to reduce the height according to depth + * + * @var float + */ + protected $yDepthFactor = false; + + /** + * Boundings for the chart data + * + * @var ezcGraphBoundings + */ + protected $dataBoundings = false; + + /** + * Collect axis labels, so that the axis are drawn, when all axis spaces + * are known. + * + * @var array + */ + protected $axisLabels = array(); + + /** + * Constructor + * + * @param array $options Default option array + * @return void + * @ignore + */ + public function __construct( array $options = array() ) + { + $this->options = new ezcGraphRenderer3dOptions( $options ); + } + + /** + * __get + * + * @param mixed $propertyName + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @return mixed + * @ignore + */ + public function __get( $propertyName ) + { + switch ( $propertyName ) + { + case 'options': + return $this->options; + default: + return parent::__get( $propertyName ); + } + } + + /** + * Calculate the display coordinate from a coordinate + * + * Calculates the display coordinate of a coordinate depending on the + * depth setting and the distance of the coordinate to the front of the + * chart. + * + * @param ezcGraphCoordinate $c Coordinate + * @param float $front Distance to front (0 - 1) + * @return ezcGraphCoordinate Resulting coordinate + */ + protected function get3dCoordinate( ezcGraphCoordinate $c, $front = 1. ) + { + return new ezcGraphCoordinate( + ( $c->x - $this->dataBoundings->x0 ) * $this->xDepthFactor + $this->dataBoundings->x0 + $this->depth * $front, + ( $c->y - $this->dataBoundings->y0 ) * $this->yDepthFactor + $this->dataBoundings->y0 + $this->depth * ( 1 - $front ) + ); + } + + /** + * Draw pie segment + * + * Draws a single pie segment + * + * @param ezcGraphBoundings $boundings Chart boundings + * @param ezcGraphContext $context Context of call + * @param ezcGraphColor $color Color of pie segment + * @param float $startAngle Start angle + * @param float $endAngle End angle + * @param mixed $label Label of pie segment + * @param bool $moveOut Move out from middle for hilighting + * @return void + */ + public function drawPieSegment( + ezcGraphBoundings $boundings, + ezcGraphContext $context, + ezcGraphColor $color, + $startAngle = .0, + $endAngle = 360., + $label = false, + $moveOut = false ) + { + // Apply offset + $startAngle += $this->options->pieChartOffset; + $endAngle += $this->options->pieChartOffset; + + // Calculate position and size of pie + $center = new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->x1 - $boundings->x0 ) / 2, + $boundings->y0 + ( $boundings->y1 - $boundings->y0 ) / 2 + - $this->options->pieChartHeight / 2 + ); + + // Limit radius to fourth of width and half of height at maximum + $radius = min( + ( $boundings->x1 - $boundings->x0 ) * $this->options->pieHorizontalSize, + ( $boundings->y1 - $boundings->y0 ) * $this->options->pieVerticalSize + ); + + // Move pie segment out of the center + if ( $moveOut ) + { + $direction = ( $endAngle + $startAngle ) / 2; + + $center = new ezcGraphCoordinate( + $center->x + $this->options->moveOut * $radius * cos( deg2rad( $direction ) ), + $center->y + $this->options->moveOut * $radius * sin( deg2rad( $direction ) ) * $this->options->pieChartRotation + ); + } + + // Add circle sector to queue + $this->circleSectors[] = array( + 'center' => $center, + 'context' => $context, + 'width' => $radius * 2 * ( 1 - $this->options->moveOut ), + 'height' => $radius * 2 * ( 1 - $this->options->moveOut ) * $this->options->pieChartRotation - $this->options->pieChartHeight, + 'start' => $startAngle, + 'end' => $endAngle, + 'color' => $color, + ); + + if ( $label ) + { + // Determine position of label + $direction = ( $endAngle + $startAngle ) / 2; + $pieSegmentCenter = new ezcGraphCoordinate( + $center->x + cos( deg2rad( $direction ) ) * $radius, + $center->y + sin( deg2rad( $direction ) ) * $radius * $this->options->pieChartRotation + ); + + // Split labels up into left a right site and index them on their + // y position + $this->pieSegmentLabels[(int) ($pieSegmentCenter->x > $center->x)][(int) ( $pieSegmentCenter->y * 100 )] = array( + new ezcGraphCoordinate( + $center->x + cos( deg2rad( $direction ) ) * $radius * 2 / 3 * ( 1 - $this->options->moveOut ), + $center->y + sin( deg2rad( $direction ) ) * ( $radius - $this->options->pieChartHeight ) * 2 / 3 * ( 1 - $this->options->moveOut ) * $this->options->pieChartRotation + ), + $label, + $context, + ); + } + + if ( !$this->pieSegmentBoundings ) + { + $this->pieSegmentBoundings = $boundings; + } + } + + /** + * Draws the collected pie segment labels + * + * All labels are collected and drawn later to be able to partition the + * available space for the labels woth knowledge of the overall label + * count and their required size and optimal position. + * + * @return void + */ + protected function finishPieSegmentLabels() + { + if ( $this->pieSegmentBoundings === false ) + { + return true; + } + + $boundings = $this->pieSegmentBoundings; + + // Calculate position and size of pie + $center = new ezcGraphCoordinate( + $boundings->x0 + ( $boundings->x1 - $boundings->x0 ) / 2, + $boundings->y0 + ( $boundings->y1 - $boundings->y0 ) / 2 + ); + + // Limit radius to fourth of width and half of height at maximum + $radius = min( + ( $boundings->width ) * $this->options->pieHorizontalSize, + ( $boundings->height ) * $this->options->pieVerticalSize + ); + + $pieChartHeight = min( + $radius * 2 + $radius / max( 1, count ( $this->pieSegmentLabels[0] ), count( $this->pieSegmentLabels[1] ) ) * 4, + $boundings->height + ); + $pieChartYPosition = $boundings->y0 + ( ( $boundings->height ) - $pieChartHeight ) / 2; + + // Calculate maximum height of labels + $labelHeight = min( + ( count( $this->pieSegmentLabels[0] ) + ? $pieChartHeight / count( $this->pieSegmentLabels[0] ) + : $pieChartHeight + ), + ( count( $this->pieSegmentLabels[1] ) + ? $pieChartHeight / count( $this->pieSegmentLabels[1] ) + : $pieChartHeight + ), + ( $pieChartHeight ) * $this->options->maxLabelHeight + ); + + $symbolSize = $this->options->symbolSize; + + foreach ( $this->pieSegmentLabels as $side => $labelPart ) + { + $minHeight = $pieChartYPosition; + $toShare = $pieChartHeight - count( $labelPart ) * $labelHeight; + + // Sort to draw topmost label first + ksort( $labelPart ); + $sign = ( $side ? -1 : 1 ); + + foreach ( $labelPart as $height => $label ) + { + $height = (int) ( $height / 100 ); + + if ( ( $height - $labelHeight / 2 ) > $minHeight ) + { + $share = min( $toShare, ( $height - $labelHeight / 2) - $minHeight ); + $minHeight += $share; + $toShare -= $share; + } + + // Determine position of label + $minHeight += max( 0, $height - $minHeight - $labelHeight ) / $pieChartHeight * $toShare; + $verticalDistance = ( $center->y - $minHeight - $labelHeight / 2 ) / $radius; + + $labelPosition = new ezcGraphCoordinate( + $center->x - + $sign * ( + abs( $verticalDistance ) > 1 + // If vertical distance to center is greater then the + // radius, use the centerline for the horizontal + // position + ? max ( + 5, + abs( $label[0]->x - $center->x ) + ) + // Else place the label outside of the pie chart + : ( cos ( asin ( $verticalDistance ) ) * $radius + + $symbolSize * (int) $this->options->showSymbol + ) + ), + $minHeight + $labelHeight / 2 + ); + + if ( $this->options->showSymbol ) + { + // Draw label + $this->driver->drawLine( + $label[0], + $labelPosition, + $this->options->pieChartSymbolColor, + 1 + ); + + $this->driver->drawCircle( + $label[0], + $symbolSize, + $symbolSize, + $this->options->pieChartSymbolColor, + true + ); + $this->driver->drawCircle( + $labelPosition, + $symbolSize, + $symbolSize, + $this->options->pieChartSymbolColor, + true + ); + } + + $this->addElementReference( $label[2], + $this->driver->drawTextBox( + $label[1], + new ezcGraphCoordinate( + ( !$side ? $boundings->x0 : $labelPosition->x + $symbolSize ), + $minHeight + ), + ( !$side ? $labelPosition->x - $boundings->x0 - $symbolSize : $boundings->x1 - $labelPosition->x - $symbolSize ), + $labelHeight, + ( !$side ? ezcGraph::RIGHT : ezcGraph::LEFT ) | ezcGraph::MIDDLE + ) + ); + + // Add used space to minHeight + $minHeight += $labelHeight; + } + } + } + + /** + * Draws the collected circle sectors + * + * All circle sectors are collected and drawn later to be able to render + * the shadows of the pie segments in the back of all pie segments, and + * ensure the correct drawing order for all pie segment elements. + * + * @return void + */ + protected function finishCirleSectors() + { + $zBuffer = array(); + + $shadows = array(); + $shadowCenter = false; + $shadowEndAngle = false; + + // Add circle sector sides to simple z buffer prioriry list + foreach ( $this->circleSectors as $circleSector ) + { + // Draw shadow if wanted + if ( $this->options->pieChartShadowSize > 0 ) + { + if ( $shadowEndAngle === false ) + { + $shadowStartAngle = $circleSector['start']; + $shadowEndAngle = $circleSector['end']; + $shadowCenter = $circleSector['center']; + } + elseif ( $circleSector['center'] == $shadowCenter ) + { + $shadowEndAngle = $circleSector['end']; + } + else + { + $shadows[] = array( + 'center' => $shadowCenter, + 'start' => $shadowStartAngle, + 'end' => $shadowEndAngle, + 'width' => $circleSector['width'], + 'height' => $circleSector['height'], + ); + + $shadowCenter = $circleSector['center']; + $shadowStartAngle = $circleSector['start']; + $shadowEndAngle = $circleSector['end']; + } + } + + $darkenedColor = $circleSector['color']->darken( $this->options->dataBorder ); + + $center = (int) ( $circleSector['center']->y + sin( deg2rad( $circleSector['start'] + ( $circleSector['end'] - $circleSector['start'] ) / 2 ) ) * $circleSector['height'] / 2 + $this->options->pieChartHeight / 2 + 1 ); + + $zBuffer[$center][] = array( + 'method' => 'drawCircularArc', + 'paramenters' => array( + $circleSector['center'], + $circleSector['width'], + $circleSector['height'], + $this->options->pieChartHeight, + $circleSector['start'], + $circleSector['end'], + $circleSector['color'] + ) + ); + + // Left side + $polygonPoints = array( + $circleSector['center'], + new ezcGraphCoordinate( + $circleSector['center']->x, + $circleSector['center']->y + $this->options->pieChartHeight + ), + new ezcGraphCoordinate( + $circleSector['center']->x + cos( deg2rad( $circleSector['start'] ) ) * $circleSector['width'] / 2, + $circleSector['center']->y + sin( deg2rad( $circleSector['start'] ) ) * $circleSector['height'] / 2 + $this->options->pieChartHeight + ), + new ezcGraphCoordinate( + $circleSector['center']->x + cos( deg2rad( $circleSector['start'] ) ) * $circleSector['width'] / 2, + $circleSector['center']->y + sin( deg2rad( $circleSector['start'] ) ) * $circleSector['height'] / 2 + ), + ); + + // Get average y coordinate for polygon to use for zBuffer + $center = 0; + foreach ( $polygonPoints as $point ) + { + $center += $point->y; + } + $center = (int) ( $center / count( $polygonPoints ) ); + + $zBuffer[$center][] = array( + 'method' => 'drawPolygon', + 'paramenters' => array( + $polygonPoints, + $circleSector['color'], + true + ), + ); + + $zBuffer[$center][] = array( + 'method' => 'drawPolygon', + 'paramenters' => array( + $polygonPoints, + $darkenedColor, + false + ), + ); + + // Right side + $polygonPoints = array( + $circleSector['center'], + new ezcGraphCoordinate( + $circleSector['center']->x, + $circleSector['center']->y + $this->options->pieChartHeight + ), + new ezcGraphCoordinate( + $circleSector['center']->x + cos( deg2rad( $circleSector['end'] ) ) * $circleSector['width'] / 2, + $circleSector['center']->y + sin( deg2rad( $circleSector['end'] ) ) * $circleSector['height'] / 2 + $this->options->pieChartHeight + ), + new ezcGraphCoordinate( + $circleSector['center']->x + cos( deg2rad( $circleSector['end'] ) ) * $circleSector['width'] / 2, + $circleSector['center']->y + sin( deg2rad( $circleSector['end'] ) ) * $circleSector['height'] / 2 + ), + ); + + // Get average y coordinate for polygon to use for zBuffer + $center = 0; + foreach ( $polygonPoints as $point ) + { + $center += $point->y; + } + $center = (int) ( $center / count( $polygonPoints ) ); + + $zBuffer[$center][] = array( + 'method' => 'drawPolygon', + 'paramenters' => array( + $polygonPoints, + $circleSector['color'], + true + ), + ); + + $zBuffer[$center][] = array( + 'method' => 'drawPolygon', + 'paramenters' => array( + $polygonPoints, + $darkenedColor, + false + ), + ); + } + + if ( $this->options->pieChartShadowSize > 0 ) + { + $shadows[] = array( + 'center' => $shadowCenter, + 'start' => $shadowStartAngle, + 'end' => $shadowEndAngle, + 'width' => $circleSector['width'], + 'height' => $circleSector['height'], + ); + } + + // Draw collected shadows + foreach ( $shadows as $circleSector ) + { + for ( $i = $this->options->pieChartShadowSize; $i > 0; --$i ) + { + $startAngle = $circleSector['start']; + $endAngle = $circleSector['end']; + + $startAngle = $circleSector['start'] - ( $this->options->pieChartShadowSize - $i ); + $endAngle = $circleSector['end'] + ( $this->options->pieChartShadowSize - $i ); + + if ( ( $endAngle - $startAngle ) >= 360 ) + { + $this->driver->drawCircle( + new ezcGraphCoordinate( + $circleSector['center']->x, + $circleSector['center']->y + $this->options->pieChartHeight + ), + $circleSector['width'] + $i * 2, + $circleSector['height'] + $i * 2, + $this->options->pieChartShadowColor->transparent( 1 - ( $this->options->pieChartShadowTransparency / $this->options->pieChartShadowSize ) ), + true + ); + } + else + { + $this->driver->drawCircleSector( + new ezcGraphCoordinate( + $circleSector['center']->x, + $circleSector['center']->y + $this->options->pieChartHeight + ), + $circleSector['width'] + $i * 2, + $circleSector['height'] + $i * 2, + $startAngle, + $endAngle, + $this->options->pieChartShadowColor->transparent( 1 - ( $this->options->pieChartShadowTransparency / $this->options->pieChartShadowSize ) ), + true + ); + } + } + } + + ksort( $zBuffer ); + foreach ( $zBuffer as $sides ) + { + foreach ( $sides as $side ) + { + call_user_func_array( array( $this->driver, $side['method'] ), $side['paramenters'] ); + } + } + + // Draw circle sector for front + foreach ( $this->circleSectors as $circleSector ) + { + $this->addElementReference( $circleSector['context'], + $this->driver->drawCircleSector( + $circleSector['center'], + $circleSector['width'], + $circleSector['height'], + $circleSector['start'], + $circleSector['end'], + $circleSector['color'], + true + ) + ); + + if ( $this->options->pieChartGleam !== false ) + { + $gradient = new ezcGraphLinearGradient( + $circleSector['center'], + new ezcGraphCoordinate( + $circleSector['center']->x - $circleSector['width'] / 2, + $circleSector['center']->y - $circleSector['height'] / 2 + ), + $this->options->pieChartGleamColor->transparent( 1 ), + $this->options->pieChartGleamColor->transparent( $this->options->pieChartGleam ) + ); + + $this->addElementReference( $circleSector['context'], + $this->driver->drawCircleSector( + $circleSector['center'], + $circleSector['width'] - $this->options->pieChartGleamBorder * 2, + $circleSector['height'] - $this->options->pieChartGleamBorder * 2 * $this->options->pieChartRotation, + $circleSector['start'], + $circleSector['end'], + $gradient, + true + ) + ); + } + + $darkenedColor = $circleSector['color']->darken( $this->options->dataBorder ); + $this->driver->drawCircleSector( + $circleSector['center'], + $circleSector['width'], + $circleSector['height'], + $circleSector['start'], + $circleSector['end'], + $darkenedColor, + false + ); + + if ( $this->options->pieChartGleam !== false ) + { + $radialGradient = new ezcGraphRadialGradient( + new ezcGraphCoordinate( + $circleSector['center']->x + $circleSector['width'] / 2 * cos( deg2rad( 135 ) ), + $circleSector['center']->y + $circleSector['height'] / 2 * sin( deg2rad( 135 ) ) + ), + $circleSector['width'], + $circleSector['height'], + $this->options->pieChartGleamColor->transparent( $this->options->pieChartGleam ), + $this->options->pieChartGleamColor->transparent( .8 ) + ); + + $this->driver->drawCircularArc( + $circleSector['center'], + $circleSector['width'], + $circleSector['height'], + 0, + $circleSector['start'], + $circleSector['end'], + $radialGradient, + false + ); + } + } + } + + /** + * Draw collected front lines + * + * Draw all grid and axis lines, which should be redrawn in front of the + * data. + * + * @return void + */ + protected function finishFrontLines() + { + foreach ( $this->frontLines as $line ) + { + $this->driver->drawLine( + $line[0], + $line[1], + $line[2], + $line[3] + ); + } + } + + /** + * Draw the collected line symbols + * + * Symbols for the data lines are collected and delayed to ensure that + * they are not covered and hidden by other data lines. + * + * @return void + */ + protected function finishLineSymbols() + { + foreach ( $this->linePostSymbols as $symbol ) + { + $this->addElementReference( $symbol['context'], + $this->drawSymbol( + $symbol['boundings'], + $symbol['color'], + $symbol['symbol'] + ) + ); + } + } + + /** + * Draws a bar with a rectangular ground shape. + * + * @param ezcGraphContext $context + * @param ezcGraphColor $color + * @param ezcGraphCoordinate $position + * @param float $barWidth + * @param float $offset + * @param float $axisPosition + * @param float $startDepth + * @param float $midDepth + * @param float $endDepth + * @return void + */ + protected function drawRectangularBar( + ezcGraphContext $context, + ezcGraphColor $color, + ezcGraphCoordinate $position, + $barWidth, + $offset, + $axisPosition, + $startDepth, + $midDepth, + $endDepth ) + { + $barPolygonArray = array( + new ezcGraphCoordinate( + $this->dataBoundings->x0 + $this->xAxisSpace + $position->x * ( $this->dataBoundings->x1 - ( $this->dataBoundings->x0 + 2 * $this->xAxisSpace ) ) + $offset, + $this->dataBoundings->y0 + $this->yAxisSpace + $axisPosition * ( $this->dataBoundings->y1 - ( $this->dataBoundings->y0 + 2 * $this->yAxisSpace ) ) + ), + new ezcGraphCoordinate( + $this->dataBoundings->x0 + $this->xAxisSpace + $position->x * ( $this->dataBoundings->x1 - ( $this->dataBoundings->x0 + 2 * $this->xAxisSpace ) ) + $offset, + $this->dataBoundings->y0 + $this->yAxisSpace + $position->y * ( $this->dataBoundings->y1 - ( $this->dataBoundings->y0 + 2 * $this->yAxisSpace ) ) + ), + new ezcGraphCoordinate( + $this->dataBoundings->x0 + $this->xAxisSpace + $position->x * ( $this->dataBoundings->x1 - ( $this->dataBoundings->x0 + 2 * $this->xAxisSpace ) ) + $offset + $barWidth, + $this->dataBoundings->y0 + $this->yAxisSpace + $position->y * ( $this->dataBoundings->y1 - ( $this->dataBoundings->y0 + 2 * $this->yAxisSpace ) ) + ), + new ezcGraphCoordinate( + $this->dataBoundings->x0 + $this->xAxisSpace + $position->x * ( $this->dataBoundings->x1 - ( $this->dataBoundings->x0 + 2 * $this->xAxisSpace ) ) + $offset + $barWidth, + $this->dataBoundings->y0 + $this->yAxisSpace + $axisPosition * ( $this->dataBoundings->y1 - ( $this->dataBoundings->y0 + 2 * $this->yAxisSpace ) ) + ), + ); + + // Draw right bar side + $this->barPostProcessing[] = array( + 'index' => $barPolygonArray[2]->x + ( 1 - $position->y ), + 'method' => 'drawPolygon', + 'context' => $context, + 'parameters' => array( + array( + $this->get3dCoordinate( $barPolygonArray[2], $startDepth ), + $this->get3dCoordinate( $barPolygonArray[3], $startDepth ), + $this->get3dCoordinate( $barPolygonArray[3], $endDepth ), + $this->get3dCoordinate( $barPolygonArray[2], $endDepth ), + ), + $color->darken( $this->options->barDarkenSide ), + true + ), + ); + + // Draw top side + $this->barPostProcessing[] = array( + 'index' => $barPolygonArray[1]->x + ( 1 - $position->y ), + 'method' => 'drawPolygon', + 'context' => $context, + 'parameters' => array( + ( $barPolygonArray[1]->y < $barPolygonArray[3]->y + ? array( + $this->get3dCoordinate( $barPolygonArray[1], $startDepth ), + $this->get3dCoordinate( $barPolygonArray[2], $startDepth ), + $this->get3dCoordinate( $barPolygonArray[2], $endDepth ), + $this->get3dCoordinate( $barPolygonArray[1], $endDepth ), + ) + : array( + $this->get3dCoordinate( $barPolygonArray[0], $startDepth ), + $this->get3dCoordinate( $barPolygonArray[3], $startDepth ), + $this->get3dCoordinate( $barPolygonArray[3], $endDepth ), + $this->get3dCoordinate( $barPolygonArray[0], $endDepth ), + ) + ), + $color->darken( $this->options->barDarkenTop ), + true + ), + ); + + // Draw top side gleam + if ( $this->options->barChartGleam !== false ) + { + $this->barPostProcessing[] = array( + 'index' => $barPolygonArray[1]->x + 1 + ( 1 - $position->y ), + 'method' => 'drawPolygon', + 'context' => $context, + 'parameters' => array( + ( $barPolygonArray[1]->y < $barPolygonArray[3]->y + ? array( + $this->get3dCoordinate( $barPolygonArray[1], $startDepth ), + $this->get3dCoordinate( $barPolygonArray[2], $startDepth ), + $this->get3dCoordinate( $barPolygonArray[2], $endDepth ), + $this->get3dCoordinate( $barPolygonArray[1], $endDepth ), + ) + : array( + $this->get3dCoordinate( $barPolygonArray[0], $startDepth ), + $this->get3dCoordinate( $barPolygonArray[3], $startDepth ), + $this->get3dCoordinate( $barPolygonArray[3], $endDepth ), + $this->get3dCoordinate( $barPolygonArray[0], $endDepth ), + ) + ), + new ezcGraphLinearGradient( + ( $barPolygonArray[1]->y < $barPolygonArray[3]->y + ? $this->get3dCoordinate( $barPolygonArray[2], $endDepth ) + : $this->get3dCoordinate( $barPolygonArray[3], $endDepth ) + ), + ( $barPolygonArray[1]->y < $barPolygonArray[3]->y + ? $this->get3dCoordinate( $barPolygonArray[1], $startDepth ) + : $this->get3dCoordinate( $barPolygonArray[0], $startDepth ) + ), + ezcGraphColor::fromHex( '#FFFFFFFF' ), + ezcGraphColor::fromHex( '#FFFFFF' )->transparent( 1 - $this->options->barChartGleam ) + ), + true + ), + ); + } + + // Draw front side + $this->barPostProcessing[] = array( + 'index' => $barPolygonArray[1]->x + ( 1 - $position->y ), + 'method' => 'drawPolygon', + 'context' => $context, + 'parameters' => array( + array( + $this->get3dCoordinate( $barPolygonArray[0], $startDepth ), + $this->get3dCoordinate( $barPolygonArray[1], $startDepth ), + $this->get3dCoordinate( $barPolygonArray[2], $startDepth ), + $this->get3dCoordinate( $barPolygonArray[3], $startDepth ), + ), + $color, + true + ), + ); + + // Draw front side gleam + if ( $this->options->barChartGleam !== false ) + { + $this->barPostProcessing[] = array( + 'index' => $barPolygonArray[1]->x + 1 + ( 1 - $position->y ), + 'method' => 'drawPolygon', + 'context' => $context, + 'parameters' => array( + array( + $this->get3dCoordinate( $barPolygonArray[0], $startDepth ), + $this->get3dCoordinate( $barPolygonArray[1], $startDepth ), + $this->get3dCoordinate( $barPolygonArray[2], $startDepth ), + $this->get3dCoordinate( $barPolygonArray[3], $startDepth ), + ), + new ezcGraphLinearGradient( + $this->get3dCoordinate( $barPolygonArray[3], $startDepth ), + $this->get3dCoordinate( $barPolygonArray[1], $startDepth ), + ezcGraphColor::fromHex( '#FFFFFFFF' ), + ezcGraphColor::fromHex( '#FFFFFF' )->transparent( 1 - $this->options->barChartGleam ) + ), + true + ), + ); + } + } + + /** + * Draws a bar with a diamond ground shape. + * + * @param ezcGraphContext $context + * @param ezcGraphColor $color + * @param ezcGraphCoordinate $position + * @param float $barWidth + * @param float $offset + * @param float $axisPosition + * @param float $startDepth + * @param float $midDepth + * @param float $endDepth + * @return void + */ + protected function drawDiamondBar( + ezcGraphContext $context, + ezcGraphColor $color, + ezcGraphCoordinate $position, + $barWidth, + $offset, + $axisPosition, + $startDepth, + $midDepth, + $endDepth ) + { + $barCoordinateArray = array( + // The bottom point of the diamond is moved to .7 instead + // of .5 because it looks more correct, even it is wrong... + 'x' => array( + $this->dataBoundings->x0 + $this->xAxisSpace + $position->x * ( $this->dataBoundings->x1 - ( $this->dataBoundings->x0 + 2 * $this->xAxisSpace ) ) + $offset, + $this->dataBoundings->x0 + $this->xAxisSpace + $position->x * ( $this->dataBoundings->x1 - ( $this->dataBoundings->x0 + 2 * $this->xAxisSpace ) ) + $offset + $barWidth * .7, + $this->dataBoundings->x0 + $this->xAxisSpace + $position->x * ( $this->dataBoundings->x1 - ( $this->dataBoundings->x0 + 2 * $this->xAxisSpace ) ) + $offset + $barWidth, + $this->dataBoundings->x0 + $this->xAxisSpace + $position->x * ( $this->dataBoundings->x1 - ( $this->dataBoundings->x0 + 2 * $this->xAxisSpace ) ) + $offset + $barWidth * .3, + ), + 'y' => array( + $this->dataBoundings->y0 + $this->yAxisSpace + $axisPosition * ( $this->dataBoundings->y1 - ( $this->dataBoundings->y0 + 2 * $this->yAxisSpace ) ), + $this->dataBoundings->y0 + $this->yAxisSpace + $position->y * ( $this->dataBoundings->y1 - ( $this->dataBoundings->y0 + 2 * $this->yAxisSpace ) ), + ), + ); + + // Left side + $this->barPostProcessing[] = array( + 'index' => $barCoordinateArray['x'][0], + 'method' => 'drawPolygon', + 'context' => $context, + 'parameters' => array( + array( + $this->get3dCoordinate( new ezcGraphCoordinate( $barCoordinateArray['x'][0], $barCoordinateArray['y'][0] ), $midDepth ), + $this->get3dCoordinate( new ezcGraphCoordinate( $barCoordinateArray['x'][0], $barCoordinateArray['y'][1] ), $midDepth ), + $this->get3dCoordinate( new ezcGraphCoordinate( $barCoordinateArray['x'][1], $barCoordinateArray['y'][1] ), $startDepth ), + $this->get3dCoordinate( new ezcGraphCoordinate( $barCoordinateArray['x'][1], $barCoordinateArray['y'][0] ), $startDepth ), + ), + $color, + true + ), + ); + + // Right side + $this->barPostProcessing[] = array( + 'index' => $barCoordinateArray['x'][1], + 'method' => 'drawPolygon', + 'context' => $context, + 'parameters' => array( + array( + $this->get3dCoordinate( new ezcGraphCoordinate( $barCoordinateArray['x'][2], $barCoordinateArray['y'][0] ), $midDepth ), + $this->get3dCoordinate( new ezcGraphCoordinate( $barCoordinateArray['x'][2], $barCoordinateArray['y'][1] ), $midDepth ), + $this->get3dCoordinate( new ezcGraphCoordinate( $barCoordinateArray['x'][1], $barCoordinateArray['y'][1] ), $startDepth ), + $this->get3dCoordinate( new ezcGraphCoordinate( $barCoordinateArray['x'][1], $barCoordinateArray['y'][0] ), $startDepth ), + ), + $color->darken( $this->options->barDarkenSide ), + true + ), + ); + + $topLocation = min( + $barCoordinateArray['y'][0], + $barCoordinateArray['y'][1] + ); + + // Top side + $this->barPostProcessing[] = array( + 'index' => $barCoordinateArray['x'][0], + 'method' => 'drawPolygon', + 'context' => $context, + 'parameters' => array( + array( + $this->get3dCoordinate( new ezcGraphCoordinate( $barCoordinateArray['x'][1], $topLocation ), $startDepth ), + $this->get3dCoordinate( new ezcGraphCoordinate( $barCoordinateArray['x'][2], $topLocation ), $midDepth ), + $this->get3dCoordinate( new ezcGraphCoordinate( $barCoordinateArray['x'][3], $topLocation ), $endDepth ), + $this->get3dCoordinate( new ezcGraphCoordinate( $barCoordinateArray['x'][0], $topLocation ), $midDepth ), + ), + $color->darken( $this->options->barDarkenTop ), + true + ), + ); + + // Top side gleam + if ( $this->options->barChartGleam !== false ) + { + $this->barPostProcessing[] = array( + 'index' => $barCoordinateArray['x'][0] + 1, + 'method' => 'drawPolygon', + 'context' => $context, + 'parameters' => array( + array( + $this->get3dCoordinate( new ezcGraphCoordinate( $barCoordinateArray['x'][1], $topLocation ), $startDepth ), + $this->get3dCoordinate( new ezcGraphCoordinate( $barCoordinateArray['x'][2], $topLocation ), $midDepth ), + $this->get3dCoordinate( new ezcGraphCoordinate( $barCoordinateArray['x'][3], $topLocation ), $endDepth ), + $this->get3dCoordinate( new ezcGraphCoordinate( $barCoordinateArray['x'][0], $topLocation ), $midDepth ), + ), + new ezcGraphLinearGradient( + $this->get3dCoordinate( new ezcGraphCoordinate( $barCoordinateArray['x'][2], $topLocation ), $midDepth ), + $this->get3dCoordinate( new ezcGraphCoordinate( $barCoordinateArray['x'][0], $topLocation ), $midDepth ), + ezcGraphColor::fromHex( '#FFFFFFFF' ), + ezcGraphColor::fromHex( '#FFFFFF' )->transparent( 1 - $this->options->barChartGleam ) + ), + true + ), + ); + } + } + + /** + * Draws a bar with a circular ground shape. + * + * @param ezcGraphContext $context + * @param ezcGraphColor $color + * @param ezcGraphCoordinate $position + * @param float $barWidth + * @param float $offset + * @param float $axisPosition + * @param float $startDepth + * @param float $midDepth + * @param float $endDepth + * @param int $symbol + * @return void + */ + protected function drawCircularBar( + ezcGraphContext $context, + ezcGraphColor $color, + ezcGraphCoordinate $position, + $barWidth, + $offset, + $axisPosition, + $startDepth, + $midDepth, + $endDepth, + $symbol ) + { + $barCenterTop = new ezcGraphCoordinate( + $this->dataBoundings->x0 + $this->xAxisSpace + $position->x * ( $this->dataBoundings->x1 - ( $this->dataBoundings->x0 + 2 * $this->xAxisSpace ) ) + $offset + $barWidth / 2, + $this->dataBoundings->y0 + $this->yAxisSpace + $position->y * ( $this->dataBoundings->y1 - ( $this->dataBoundings->y0 + 2 * $this->yAxisSpace ) ) + + ); + $barCenterBottom = new ezcGraphCoordinate( + $this->dataBoundings->x0 + $this->xAxisSpace + $position->x * ( $this->dataBoundings->x1 - ( $this->dataBoundings->x0 + 2 * $this->xAxisSpace ) ) + $offset + $barWidth / 2, + $this->dataBoundings->y0 + $this->yAxisSpace + $axisPosition * ( $this->dataBoundings->y1 - ( $this->dataBoundings->y0 + 2 * $this->yAxisSpace ) ) + ); + + if ( $barCenterTop->y > $barCenterBottom->y ) + { + $tmp = $barCenterTop; + $barCenterTop = $barCenterBottom; + $barCenterBottom = $tmp; + } + + $this->barPostProcessing[] = array( + 'index' => $barCenterBottom->x, + 'method' => 'drawCircularArc', + 'context' => $context, + 'parameters' => array( + $this->get3dCoordinate( $barCenterTop, $midDepth ), + $barWidth, + $barWidth / 2, + ( $barCenterBottom->y - $barCenterTop->y ) * $this->yDepthFactor, + 0, + 180, + $color + ), + ); + + $this->barPostProcessing[] = array( + 'index' => $barCenterBottom->x + 1, + 'method' => 'drawCircle', + 'context' => $context, + 'parameters' => array( + $top = $this->get3dCoordinate( $barCenterTop, $midDepth ), + $barWidth, + $barWidth / 2, + ( $symbol === ezcGraph::CIRCLE + ? new ezcGraphLinearGradient( + new ezcGraphCoordinate( + $top->x - $barWidth / 2, + $top->y + ), + new ezcGraphCoordinate( + $top->x + $barWidth / 2, + $top->y + ), + $color->darken( $this->options->barDarkenTop ), + $color + ) + : $color + ) + ), + ); + } + + /** + * Draw bar + * + * Draws a bar as a data element in a line chart + * + * @param ezcGraphBoundings $boundings Chart boundings + * @param ezcGraphContext $context Context of call + * @param ezcGraphColor $color Color of line + * @param ezcGraphCoordinate $position Position of data point + * @param float $stepSize Space which can be used for bars + * @param int $dataNumber Number of dataset + * @param int $dataCount Count of datasets in chart + * @param int $symbol Symbol to draw for line + * @param float $axisPosition Position of axis for drawing filled lines + * @return void + */ + public function drawBar( + ezcGraphBoundings $boundings, + ezcGraphContext $context, + ezcGraphColor $color, + ezcGraphCoordinate $position, + $stepSize, + $dataNumber = 1, + $dataCount = 1, + $symbol = ezcGraph::NO_SYMBOL, + $axisPosition = 0. ) + { + // Apply margin + $margin = $stepSize * $this->options->barMargin; + $padding = $stepSize * $this->options->barPadding; + $barWidth = ( $stepSize - $margin ) / $dataCount - $padding; + $offset = - $stepSize / 2 + $margin / 2 + ( $dataCount - $dataNumber - 1 ) * ( $padding + $barWidth ) + $padding / 2; + + if ( $barWidth < 0 ) + { + $offset -= $barWidth = abs( $barWidth ); + } + + $startDepth = $this->options->barMargin; + $midDepth = .5; + $endDepth = 1 - $this->options->barMargin; + + switch ( $symbol ) + { + case ezcGraph::NO_SYMBOL: + $this->drawRectangularBar( + $context, + $color, + $position, + $barWidth, + $offset, + $axisPosition, + $startDepth, + $midDepth, + $endDepth + ); + break; + case ezcGraph::DIAMOND: + $this->drawDiamondBar( + $context, + $color, + $position, + $barWidth, + $offset, + $axisPosition, + $startDepth, + $midDepth, + $endDepth + ); + break; + case ezcGraph::BULLET: + case ezcGraph::CIRCLE: + $this->drawCircularBar( + $context, + $color, + $position, + $barWidth, + $offset, + $axisPosition, + $startDepth, + $midDepth, + $endDepth, + $symbol + ); + break; + } + } + + /** + * Draw stacked bar + * + * Draws a stacked bar part as a data element in a line chart + * + * @param ezcGraphBoundings $boundings Chart boundings + * @param ezcGraphContext $context Context of call + * @param ezcGraphColor $color Color of line + * @param ezcGraphCoordinate $start + * @param ezcGraphCoordinate $position + * @param float $stepSize Space which can be used for bars + * @param int $symbol Symbol to draw for line + * @param float $axisPosition Position of axis for drawing filled lines + * @return void + */ + public function drawStackedBar( + ezcGraphBoundings $boundings, + ezcGraphContext $context, + ezcGraphColor $color, + ezcGraphCoordinate $start, + ezcGraphCoordinate $position, + $stepSize, + $symbol = ezcGraph::NO_SYMBOL, + $axisPosition = 0. ) + { + // Apply margin + $margin = $stepSize * $this->options->barMargin; + $barWidth = $stepSize - $margin; + $offset = - $stepSize / 2 + $margin / 2; + + if ( $barWidth < 0 ) + { + $offset -= $barWidth = abs( $barWidth ); + } + + $startDepth = $this->options->barMargin; + $midDepth = .5; + $endDepth = 1 - $this->options->barMargin; + + switch ( $symbol ) + { + case ezcGraph::NO_SYMBOL: + case ezcGraph::DIAMOND: + case ezcGraph::BULLET: + case ezcGraph::CIRCLE: + $this->drawRectangularBar( + $context, + $color, + $position, + $barWidth, + $offset, + $start->y, + $startDepth, + $midDepth, + $endDepth + ); + break; + } + } + + /** + * Draw all collected bar elements + * + * Draw all collected bar elements after sorting them depending of their + * position to simulate simple z buffering. + * + * @access protected + * @return void + */ + protected function finishBars() + { + if ( !count( $this->barPostProcessing ) ) + { + return true; + } + + $zIndexArray = array(); + foreach ( $this->barPostProcessing as $key => $barPolygon ) + { + $zIndexArray[$key] = $barPolygon['index']; + } + + array_multisort( + $zIndexArray, SORT_ASC, SORT_NUMERIC, + $this->barPostProcessing + ); + + foreach ( $this->barPostProcessing as $bar ) + { + $this->addElementReference( $bar['context'], + call_user_func_array( + array( $this->driver, $bar['method'] ), + $bar['parameters'] + ) + ); + } + } + + /** + * Draw data line + * + * Draws a line as a data element in a line chart + * + * @param ezcGraphBoundings $boundings Chart boundings + * @param ezcGraphContext $context Context of call + * @param ezcGraphColor $color Color of line + * @param ezcGraphCoordinate $start Starting point + * @param ezcGraphCoordinate $end Ending point + * @param int $dataNumber Number of dataset + * @param int $dataCount Count of datasets in chart + * @param int $symbol Symbol to draw for line + * @param ezcGraphColor $symbolColor Color of the symbol, defaults to linecolor + * @param ezcGraphColor $fillColor Color to fill line with + * @param float $axisPosition Position of axis for drawing filled lines + * @param float $thickness Line thickness + * @return void + */ + public function drawDataLine( + ezcGraphBoundings $boundings, + ezcGraphContext $context, + ezcGraphColor $color, + ezcGraphCoordinate $start, + ezcGraphCoordinate $end, + $dataNumber = 0, + $dataCount = 1, + $symbol = ezcGraph::NO_SYMBOL, + ezcGraphColor $symbolColor = null, + ezcGraphColor $fillColor = null, + $axisPosition = 0., + $thickness = 1. ) + { + // Calculate line width based on options + if ( $this->options->seperateLines ) + { + $startDepth = ( 1 / $dataCount ) * $dataNumber; + $endDepth = ( 1 / $dataCount ) * ( $dataNumber + 1 ); + } + else + { + $startDepth = false; + $endDepth = true; + } + + // Determine Coordinates depending on boundings and data point position + $startCoord = new ezcGraphCoordinate( + $this->dataBoundings->x0 + $this->xAxisSpace + $start->x * ( $this->dataBoundings->x1 - ( $this->dataBoundings->x0 + 2 * $this->xAxisSpace ) ), + $this->dataBoundings->y0 + $this->yAxisSpace + $start->y * ( $this->dataBoundings->y1 - ( $this->dataBoundings->y0 + 2 * $this->yAxisSpace ) ) + ); + $endCoord = new ezcGraphCoordinate( + $this->dataBoundings->x0 + $this->xAxisSpace + $end->x * ( $this->dataBoundings->x1 - ( $this->dataBoundings->x0 + 2 * $this->xAxisSpace ) ), + $this->dataBoundings->y0 + $this->yAxisSpace + $end->y * ( $this->dataBoundings->y1 - ( $this->dataBoundings->y0 + 2 * $this->yAxisSpace ) ) + ); + + // 3D-fy coordinates + $linePolygonPoints = array( + $this->get3dCoordinate( $startCoord, $startDepth ), + $this->get3dCoordinate( $endCoord, $startDepth ), + $this->get3dCoordinate( $endCoord, $endDepth ), + $this->get3dCoordinate( $startCoord, $endDepth ), + ); + + $startAxisCoord = new ezcGraphCoordinate( + $this->dataBoundings->x0 + $this->xAxisSpace + $start->x * ( $this->dataBoundings->x1 - ( $this->dataBoundings->x0 + 2 * $this->xAxisSpace ) ), + $this->dataBoundings->y0 + $this->yAxisSpace + $axisPosition * ( $this->dataBoundings->y1 - ( $this->dataBoundings->y0 + 2 * $this->yAxisSpace ) ) + ); + $endAxisCoord = new ezcGraphCoordinate( + $this->dataBoundings->x0 + $this->xAxisSpace + $end->x * ( $this->dataBoundings->x1 - ( $this->dataBoundings->x0 + 2 * $this->xAxisSpace ) ), + $this->dataBoundings->y0 + $this->yAxisSpace + $axisPosition * ( $this->dataBoundings->y1 - ( $this->dataBoundings->y0 + 2 * $this->yAxisSpace ) ) + ); + + // 3D-fy coordinates + $axisPolygonPoints = array( + $this->get3dCoordinate( $startAxisCoord, $startDepth ), + $this->get3dCoordinate( $endAxisCoord, $startDepth ), + $this->get3dCoordinate( $endAxisCoord, $endDepth ), + $this->get3dCoordinate( $startAxisCoord, $endDepth ), + ); + + // Perhaps fill up line + if ( $fillColor !== null && + $start->x != $end->x ) + { + $startValue = $axisPosition - $start->y; + $endValue = $axisPosition - $end->y; + + if ( ( $startValue == 0 ) || + ( $endValue == 0 ) || + ( $startValue / abs( $startValue ) == $endValue / abs( $endValue ) ) ) + { + // Values have the same sign or are on the axis + $this->driver->drawPolygon( + array( + $linePolygonPoints[0], + $linePolygonPoints[1], + $this->get3dCoordinate( $endAxisCoord, $startDepth ), + $this->get3dCoordinate( $startAxisCoord, $startDepth ), + ), + $fillColor, + true + ); + } + else + { + // values are on differente sides of the axis - split the filled polygon + $startDiff = abs( $axisPosition - $start->y ); + $endDiff = abs( $axisPosition - $end->y ); + + $cuttingPosition = $startDiff / ( $endDiff + $startDiff ); + $cuttingPoint = new ezcGraphCoordinate( + $startCoord->x + ( $endCoord->x - $startCoord->x ) * $cuttingPosition, + $startAxisCoord->y + ); + + $this->driver->drawPolygon( + array( + $this->get3dCoordinate( $startAxisCoord, $startDepth ), + $linePolygonPoints[0], + $this->get3dCoordinate( $cuttingPoint, $startDepth ), + ), + $fillColor, + true + ); + + $this->driver->drawPolygon( + array( + $this->get3dCoordinate( $endAxisCoord, $startDepth ), + $linePolygonPoints[1], + $this->get3dCoordinate( $cuttingPoint, $startDepth ), + ), + $fillColor, + true + ); + } + + // Draw closing foo + $this->driver->drawPolygon( + array( + $linePolygonPoints[2], + $linePolygonPoints[1], + $this->get3dCoordinate( $endAxisCoord, $startDepth ), + $this->get3dCoordinate( $endAxisCoord, $endDepth ), + ), + $fillColor, + true + ); + } + + + // Draw line + $this->driver->drawPolygon( + $linePolygonPoints, + $color, + true, + $thickness + ); + + // Draw polygon border + if ( $this->options->dataBorder > 0 ) + { + $this->driver->drawPolygon( + $linePolygonPoints, + $color->darken( $this->options->dataBorder ), + false, + $thickness + ); + } + + // Draw line symbol + if ( $this->options->showSymbol && + ( $symbol !== ezcGraph::NO_SYMBOL ) ) + { + if ( $symbolColor === null ) + { + $symbolColor = $color; + } + + $this->linePostSymbols[] = array( + 'boundings' => new ezcGraphBoundings( + $linePolygonPoints[2]->x - $this->options->symbolSize / 2, + $linePolygonPoints[2]->y - $this->options->symbolSize / 2, + $linePolygonPoints[2]->x + $this->options->symbolSize / 2, + $linePolygonPoints[2]->y + $this->options->symbolSize / 2 + ), + 'color' => $symbolColor, + 'context' => $context, + 'symbol' => $symbol, + ); + } + } + + /** + * Draws a highlight textbox for a datapoint. + * + * A highlight textbox for line and bar charts means a box with the current + * value in the graph. + * + * @param ezcGraphBoundings $boundings Chart boundings + * @param ezcGraphContext $context Context of call + * @param ezcGraphCoordinate $end Ending point + * @param float $axisPosition Position of axis for drawing filled lines + * @param int $dataNumber Number of dataset + * @param int $dataCount Count of datasets in chart + * @param ezcGraphFontOptions $font Font used for highlight string + * @param string $text Acutual value + * @param int $size Size of highlight text + * @param ezcGraphColor $markLines + * @return void + */ + public function drawDataHighlightText( + ezcGraphBoundings $boundings, + ezcGraphContext $context, + ezcGraphCoordinate $end, + $axisPosition = 0., + $dataNumber = 1, + $dataCount = 1, + ezcGraphFontOptions $font, + $text, + $size, + ezcGraphColor $markLines = null ) + { + $this->driver->options->font = $font; + $width = $this->dataBoundings->width / $dataCount; + + // Calculate line width based on options + if ( $this->options->seperateLines ) + { + $endDepth = ( 1 / $dataCount ) * ( $dataNumber + 1 ); + } + else + { + $endDepth = true; + } + + $dataPoint = new ezcGraphCoordinate( + $this->dataBoundings->x0 + $this->xAxisSpace + $end->x * ( $this->dataBoundings->x1 - ( $this->dataBoundings->x0 + 2 * $this->xAxisSpace ) ), + $this->dataBoundings->y0 + $this->yAxisSpace + $end->y * ( $this->dataBoundings->y1 - ( $this->dataBoundings->y0 + 2 * $this->yAxisSpace ) ) + ); + + if ( $end->y < $axisPosition ) + { + $this->driver->drawTextBox( + $text, + $this->get3dCoordinate( new ezcGraphCoordinate( + $dataPoint->x - $width / 2, + $dataPoint->y - $size - $font->padding - $this->options->symbolSize + ), $endDepth ), + $width * $this->xDepthFactor, + $size, + ezcGraph::CENTER | ezcGraph::BOTTOM + ); + } + else + { + $this->driver->drawTextBox( + $text, + $this->get3dCoordinate( new ezcGraphCoordinate( + $dataPoint->x - $width / 2, + $dataPoint->y + $font->padding + $this->options->symbolSize + ), $endDepth ), + $width * $this->xDepthFactor, + $size, + ezcGraph::CENTER | ezcGraph::TOP + ); + } + } + + /** + * Draw legend + * + * Will draw a legend in the bounding box + * + * @param ezcGraphBoundings $boundings Bounding of legend + * @param ezcGraphChartElementLegend $legend Legend to draw; + * @param int $type Type of legend: Protrait or landscape + * @return void + */ + public function drawLegend( + ezcGraphBoundings $boundings, + ezcGraphChartElementLegend $legend, + $type = ezcGraph::VERTICAL ) + { + $labels = $legend->labels; + + // Calculate boundings of each label + if ( $type & ezcGraph::VERTICAL ) + { + $labelWidth = $boundings->x1 - $boundings->x0; + $labelHeight = min( + ( $boundings->y1 - $boundings->y0 ) / count( $labels ) - $legend->spacing, + $legend->symbolSize + 2 * $legend->padding + ); + } + else + { + $labelWidth = ( $boundings->x1 - $boundings->x0 ) / count( $labels ) - $legend->spacing; + $labelHeight = min( + $boundings->height, + $legend->symbolSize + 2 * $legend->padding + ); + } + + $symbolSize = $labelHeight - 2 * $legend->padding; + + // Draw all labels + $labelPosition = new ezcGraphCoordinate( $boundings->x0, $boundings->y0 ); + foreach ( $labels as $label ) + { + $this->elements['legend_url'][$label['label']] = $label['url']; + + $this->elements['legend'][$label['label']]['symbol'] = $this->drawSymbol( + new ezcGraphBoundings( + $labelPosition->x + $legend->padding, + $labelPosition->y + $legend->padding, + $labelPosition->x + $legend->padding + $symbolSize, + $labelPosition->y + $legend->padding + $symbolSize + ), + $label['color'], + $label['symbol'] + ); + + $this->elements['legend'][$label['label']]['text'] = $this->driver->drawTextBox( + $label['label'], + new ezcGraphCoordinate( + $labelPosition->x + 2 * $legend->padding + $symbolSize, + $labelPosition->y + $legend->padding + ), + $labelWidth - $symbolSize - 3 * $legend->padding, + $labelHeight - 2 * $legend->padding, + ezcGraph::LEFT | ezcGraph::MIDDLE + ); + + $labelPosition->x += ( $type === ezcGraph::VERTICAL ? 0 : $labelWidth + $legend->spacing ); + $labelPosition->y += ( $type === ezcGraph::VERTICAL ? $labelHeight + $legend->spacing : 0 ); + } + } + + /** + * Draw box + * + * Box are wrapping each major chart element and draw border, background + * and title to each chart element. + * + * Optionally a padding and margin for each box can be defined. + * + * @param ezcGraphBoundings $boundings Boundings of the box + * @param ezcGraphColor $background Background color + * @param ezcGraphColor $borderColor Border color + * @param int $borderWidth Border width + * @param int $margin Margin + * @param int $padding Padding + * @param mixed $title Title of the box + * @param int $titleSize Size of title in the box + * @return ezcGraphBoundings Remaining inner boundings + */ + public function drawBox( + ezcGraphBoundings $boundings, + ezcGraphColor $background = null, + ezcGraphColor $borderColor = null, + $borderWidth = 0, + $margin = 0, + $padding = 0, + $title = false, + $titleSize = 16 ) + { + // Apply margin + $boundings->x0 += $margin; + $boundings->y0 += $margin; + $boundings->x1 -= $margin; + $boundings->y1 -= $margin; + + if ( $background instanceof ezcGraphColor ) + { + // Draw box background + $this->driver->drawPolygon( + array( + new ezcGraphCoordinate( $boundings->x0, $boundings->y0 ), + new ezcGraphCoordinate( $boundings->x1, $boundings->y0 ), + new ezcGraphCoordinate( $boundings->x1, $boundings->y1 ), + new ezcGraphCoordinate( $boundings->x0, $boundings->y1 ), + ), + $background, + true + ); + } + + if ( ( $borderColor instanceof ezcGraphColor ) && + ( $borderWidth > 0 ) ) + { + // Draw border + $this->driver->drawPolygon( + array( + new ezcGraphCoordinate( $boundings->x0, $boundings->y0 ), + new ezcGraphCoordinate( $boundings->x1, $boundings->y0 ), + new ezcGraphCoordinate( $boundings->x1, $boundings->y1 ), + new ezcGraphCoordinate( $boundings->x0, $boundings->y1 ), + ), + $borderColor, + false, + $borderWidth + ); + + // Reduce local boundings by borderWidth + $boundings->x0 += $borderWidth; + $boundings->y0 += $borderWidth; + $boundings->x1 -= $borderWidth; + $boundings->y1 -= $borderWidth; + } + + // Apply padding + $boundings->x0 += $padding; + $boundings->y0 += $padding; + $boundings->x1 -= $padding; + $boundings->y1 -= $padding; + + // Add box title + if ( $title !== false ) + { + switch ( $this->options->titlePosition ) + { + case ezcGraph::TOP: + $this->driver->drawTextBox( + $title, + new ezcGraphCoordinate( $boundings->x0, $boundings->y0 ), + $boundings->x1 - $boundings->x0, + $titleSize, + $this->options->titleAlignement + ); + + $boundings->y0 += $titleSize + $padding; + $boundings->y1 -= $titleSize + $padding; + break; + case ezcGraph::BOTTOM: + $this->driver->drawTextBox( + $title, + new ezcGraphCoordinate( $boundings->x0, $boundings->y1 - $titleSize ), + $boundings->x1 - $boundings->x0, + $titleSize, + $this->options->titleAlignement + ); + + $boundings->y1 -= $titleSize + $padding; + break; + } + } + + return $boundings; + } + + /** + * Draw text + * + * Draws the provided text in the boundings + * + * @param ezcGraphBoundings $boundings Boundings of text + * @param string $text Text + * @param int $align Alignement of text + * @param ezcGraphRotation $rotation + * @return void + */ + public function drawText( + ezcGraphBoundings $boundings, + $text, + $align = ezcGraph::LEFT, + ezcGraphRotation $rotation = null ) + { + if ( $this->depth === false ) + { + // We are not 3d for now, wg. rendering normal text boxes like the + // title + $topleft = new ezcGraphCoordinate( + $boundings->x0, + $boundings->y0 + ); + $bottomright = new ezcGraphCoordinate( + $boundings->x1, + $boundings->y1 + ); + } + else + { + // The 3d part started + $topleft = $this->get3dCoordinate( + new ezcGraphCoordinate( + $boundings->x0, + $boundings->y0 + ), false + ); + $bottomright = $this->get3dCoordinate( + new ezcGraphCoordinate( + $boundings->x1, + $boundings->y1 + ), false + ); + + // Also modify rotation accordingly + if ( $rotation !== null ) + { + $rotation = new ezcGraphRotation( + $rotation->getRotation(), + $this->get3dCoordinate( $rotation->getCenter(), false ) + ); + } + } + + $this->driver->drawTextBox( + $text, + $topleft, + $bottomright->x - $topleft->x, + $bottomright->y - $topleft->y, + $align, + $rotation + ); + } + + /** + * Draw grid line + * + * Draw line for the grid in the chart background + * + * + * @param ezcGraphCoordinate $start Start point + * @param ezcGraphCoordinate $end End point + * @param ezcGraphColor $color Color of the grid line + * @return void + */ + public function drawGridLine( ezcGraphCoordinate $start, ezcGraphCoordinate $end, ezcGraphColor $color ) + { + $gridPolygonCoordinates = array( + $this->get3dCoordinate( $start, false ), + $this->get3dCoordinate( $end, false ), + $this->get3dCoordinate( $end, true ), + $this->get3dCoordinate( $start, true ), + ); + + // Draw grid polygon + if ( $this->options->fillGrid === 0 ) + { + $this->driver->drawLine( + $gridPolygonCoordinates[2], + $gridPolygonCoordinates[3], + $color + ); + } + else + { + if ( $this->options->fillGrid === 1 ) + { + $this->driver->drawPolygon( + $gridPolygonCoordinates, + $color, + true + ); + } + else + { + $this->driver->drawPolygon( + $gridPolygonCoordinates, + $color->transparent( $this->options->fillGrid ), + true + ); + } + + // Draw grid lines - scedule some for later to be drawn in front of + // the data + $this->frontLines[] = array( + $gridPolygonCoordinates[0], + $gridPolygonCoordinates[1], + $color, + 1 + ); + + $this->frontLines[] = array( + $gridPolygonCoordinates[1], + $gridPolygonCoordinates[2], + $color, + 1 + ); + + $this->driver->drawLine( + $gridPolygonCoordinates[2], + $gridPolygonCoordinates[3], + $color, + 1 + ); + + $this->frontLines[] = array( + $gridPolygonCoordinates[3], + $gridPolygonCoordinates[0], + $color, + 1 + ); + } + } + + /** + * Draw step line + * + * Draw a step (marker for label position) on a axis. + * + * @param ezcGraphCoordinate $start Start point + * @param ezcGraphCoordinate $end End point + * @param ezcGraphColor $color Color of the grid line + * @return void + */ + public function drawStepLine( ezcGraphCoordinate $start, ezcGraphCoordinate $end, ezcGraphColor $color ) + { + $stepPolygonCoordinates = array( + $this->get3dCoordinate( $start, true ), + $this->get3dCoordinate( $end, true ), + $this->get3dCoordinate( $end, false ), + $this->get3dCoordinate( $start, false ), + ); + + // Draw step polygon + if ( ( $this->options->fillAxis > 0 ) && + ( $this->options->fillAxis < 1 ) ) + { + $this->driver->drawPolygon( + $stepPolygonCoordinates, + $color->transparent( $this->options->fillAxis ), + true + ); + + $this->driver->drawPolygon( + $stepPolygonCoordinates, + $color, + false + ); + } + else + { + $this->driver->drawPolygon( + $stepPolygonCoordinates, + $color, + ! (bool) $this->options->fillAxis + ); + } + } + + /** + * Draw axis + * + * Draws an axis form the provided start point to the end point. A specific + * angle of the axis is not required. + * + * For the labeleing of the axis a sorted array with major steps and an + * array with minor steps is expected, which are build like this: + * array( + * array( + * 'position' => (float), + * 'label' => (string), + * ) + * ) + * where the label is optional. + * + * The label renderer class defines how the labels are rendered. For more + * documentation on this topic have a look at the basic label renderer + * class. + * + * Additionally it can be specified if a major and minor grid are rendered + * by defining a color for them. Teh axis label is used to add a caption + * for the axis. + * + * @param ezcGraphBoundings $boundings Boundings of axis + * @param ezcGraphCoordinate $start Start point of axis + * @param ezcGraphCoordinate $end Endpoint of axis + * @param ezcGraphChartElementAxis $axis Axis to render + * @param ezcGraphAxisLabelRenderer $labelClass Used label renderer + * @return void + */ + public function drawAxis( + ezcGraphBoundings $boundings, + ezcGraphCoordinate $start, + ezcGraphCoordinate $end, + ezcGraphChartElementAxis $axis, + ezcGraphAxisLabelRenderer $labelClass = null ) + { + // Calculate used space for three dimensional effects + if ( $this->depth === false ) + { + $this->depth = min( + ( $boundings->x1 - $boundings->x0 ) * $this->options->depth, + ( $boundings->y1 - $boundings->y0 ) * $this->options->depth + ); + + $this->xDepthFactor = 1 - $this->depth / ( $boundings->x1 - $boundings->x0 ); + $this->yDepthFactor = 1 - $this->depth / ( $boundings->y1 - $boundings->y0 ); + + $this->dataBoundings = clone $boundings; + } + + // Clone boundings to not be affected by internal mofifications + $boundings = clone $boundings; + + switch ( $axis->position ) + { + case ezcGraph::TOP: + case ezcGraph::BOTTOM: + $this->xAxisSpace = ( $this->dataBoundings->x1 - $this->dataBoundings->x0 ) * $axis->axisSpace; + break; + case ezcGraph::LEFT: + case ezcGraph::RIGHT: + $this->yAxisSpace = ( $this->dataBoundings->y1 - $this->dataBoundings->y0 ) * $axis->axisSpace; + break; + } + + // Determine normalized direction + $direction = new ezcGraphVector( + $start->x - $end->x, + $start->y - $end->y + ); + $direction->unify(); + + $start->x += $boundings->x0; + $start->y += $boundings->y0; + $end->x += $boundings->x0; + $end->y += $boundings->y0; + + $axisPolygonCoordinates = array( + $this->get3dCoordinate( $start, true ), + $this->get3dCoordinate( $end, true ), + $this->get3dCoordinate( $end, false ), + $this->get3dCoordinate( $start, false ), + ); + + // Draw axis + if ( ( $this->options->fillAxis > 0 ) && + ( $this->options->fillAxis < 1 ) ) + { + $this->driver->drawPolygon( + $axisPolygonCoordinates, + $axis->border->transparent( $this->options->fillAxis ), + true + ); + } + else + { + $this->driver->drawPolygon( + $axisPolygonCoordinates, + $axis->border, + ! (bool) $this->options->fillAxis + ); + } + + // Draw axis lines - scedule some for later to be drawn in front of + // the data + $this->driver->drawLine( + $axisPolygonCoordinates[0], + $axisPolygonCoordinates[1], + $axis->border, + 1 + ); + + $this->frontLines[] = array( + $axisPolygonCoordinates[1], + $axisPolygonCoordinates[2], + $axis->border, + 1 + ); + + $this->frontLines[] = array( + $axisPolygonCoordinates[2], + $axisPolygonCoordinates[3], + $axis->border, + 1 + ); + + $this->frontLines[] = array( + $axisPolygonCoordinates[3], + $axisPolygonCoordinates[0], + $axis->border, + 1 + ); + + // Draw small arrowhead + $size = max( + $axis->minArrowHeadSize, + min( + $axis->maxArrowHeadSize, + abs( ceil( ( ( $end->x - $start->x ) + ( $end->y - $start->y ) ) * $axis->axisSpace / 4 ) ) + ) + ); + + $orthogonalDirection = clone $direction; + $orthogonalDirection->rotateClockwise(); + + $this->driver->drawPolygon( + array( + $axisPolygonCoordinates[1], + new ezcGraphCoordinate( + $axisPolygonCoordinates[1]->x + - $orthogonalDirection->x * $size / 2 + + $direction->x * $size, + $axisPolygonCoordinates[1]->y + - $orthogonalDirection->y * $size / 2 + + $direction->y * $size + ), + new ezcGraphCoordinate( + $axisPolygonCoordinates[1]->x + + $orthogonalDirection->x * $size / 2 + + $direction->x * $size, + $axisPolygonCoordinates[1]->y + + $orthogonalDirection->y * $size / 2 + + $direction->y * $size + ), + ), + $axis->border, + true + ); + + // Draw axis label + if ( $axis->label !== false ) + { + $width = $this->dataBoundings->x1 - $this->dataBoundings->x0; + switch ( $axis->position ) + { + case ezcGraph::TOP: + $this->driver->drawTextBox( + $axis->label, + new ezcGraphCoordinate( + $axisPolygonCoordinates[2]->x + $axis->labelMargin - $width * ( 1 - $axis->axisSpace * 2 ), + $axisPolygonCoordinates[2]->y - $axis->labelMargin - $axis->labelSize + ), + $width * ( 1 - $axis->axisSpace * 2 ) - $axis->labelMargin, + $axis->labelSize, + ezcGraph::TOP | ezcGraph::RIGHT + ); + break; + case ezcGraph::BOTTOM: + $this->driver->drawTextBox( + $axis->label, + new ezcGraphCoordinate( + $axisPolygonCoordinates[1]->x + $axis->labelMargin, + $axisPolygonCoordinates[1]->y + $axis->labelMargin + ), + $width * ( 1 - $axis->axisSpace * 2 ) - $axis->labelMargin, + $axis->labelSize, + ezcGraph::TOP | ezcGraph::LEFT + ); + break; + case ezcGraph::LEFT: + $this->driver->drawTextBox( + $axis->label, + new ezcGraphCoordinate( + $axisPolygonCoordinates[1]->x - $width, + $axisPolygonCoordinates[1]->y - $axis->labelSize - $axis->labelMargin + ), + $width - $axis->labelMargin, + $axis->labelSize, + ezcGraph::BOTTOM | ezcGraph::RIGHT + ); + break; + case ezcGraph::RIGHT: + $this->driver->drawTextBox( + $axis->label, + new ezcGraphCoordinate( + $axisPolygonCoordinates[1]->x, + $axisPolygonCoordinates[1]->y - $axis->labelSize - $axis->labelMargin + ), + $width - $axis->labelMargin, + $axis->labelSize, + ezcGraph::BOTTOM | ezcGraph::LEFT + ); + break; + } + } + + // Collect axis labels and draw, when all axisSpaces are collected + $this->axisLabels[] = array( + 'object' => $labelClass, + 'boundings' => $boundings, + 'start' => clone $start, + 'end' => clone $end, + 'axis' => $axis, + ); + + if ( $this->xAxisSpace && $this->yAxisSpace ) + { + foreach ( $this->axisLabels as $axisLabel ) + { + // If font should not be synchronized, use font configuration from + // each axis + if ( $this->options->syncAxisFonts === false ) + { + $this->driver->options->font = $axisLabel['axis']->font; + } + + switch ( $axisLabel['axis']->position ) + { + case ezcGraph::RIGHT: + case ezcGraph::LEFT: + $axisLabel['start']->x += $this->xAxisSpace * ( $axisLabel['start'] > $axisLabel['end'] ? -1 : 1 ); + $axisLabel['end']->x -= $this->xAxisSpace * ( $axisLabel['start'] > $axisLabel['end'] ? -1 : 1 ); + break; + case ezcGraph::TOP: + case ezcGraph::BOTTOM: + $axisLabel['start']->y += $this->yAxisSpace * ( $axisLabel['start'] > $axisLabel['end'] ? -1 : 1 ); + $axisLabel['end']->y -= $this->yAxisSpace * ( $axisLabel['start'] > $axisLabel['end'] ? -1 : 1 ); + break; + } + + $axisLabel['object']->renderLabels( + $this, + $axisLabel['boundings'], + $axisLabel['start'], + $axisLabel['end'], + $axisLabel['axis'] + ); + } + } + } + + /** + * Draw background image + * + * Draws a background image at the defined position. If repeat is set the + * background image will be repeated like any texture. + * + * @param ezcGraphBoundings $boundings Boundings for the background image + * @param string $file Filename of background image + * @param int $position Position of background image + * @param int $repeat Type of repetition + * @return void + */ + public function drawBackgroundImage( + ezcGraphBoundings $boundings, + $file, + $position = 48, // ezcGraph::CENTER | ezcGraph::MIDDLE + $repeat = ezcGraph::NO_REPEAT ) + { + $imageData = getimagesize( $file ); + $imageWidth = $imageData[0]; + $imageHeight = $imageData[1]; + + $imageWidth = min( $imageWidth, $boundings->x1 - $boundings->x0 ); + $imageHeight = min( $imageHeight, $boundings->y1 - $boundings->y0 ); + + $imagePosition = new ezcGraphCoordinate( + $boundings->x0, + $boundings->y0 + ); + + // Determine x position + switch ( true ) { + case ( $repeat & ezcGraph::HORIZONTAL ): + // If is repeated on this axis fall back to position zero + case ( $position & ezcGraph::LEFT ): + $imagePosition->x = $boundings->x0; + break; + case ( $position & ezcGraph::RIGHT ): + $imagePosition->x = max( + $boundings->x1 - $imageWidth, + $boundings->x0 + ); + break; + default: + $imagePosition->x = max( + $boundings->x0 + ( $boundings->x1 - $boundings->x0 - $imageWidth ) / 2, + $boundings->x0 + ); + break; + } + + // Determine y position + switch ( true ) { + case ( $repeat & ezcGraph::VERTICAL ): + // If is repeated on this axis fall back to position zero + case ( $position & ezcGraph::TOP ): + $imagePosition->y = $boundings->y0; + break; + case ( $position & ezcGraph::BOTTOM ): + $imagePosition->y = max( + $boundings->y1 - $imageHeight, + $boundings->y0 + ); + break; + default: + $imagePosition->y = max( + $boundings->y0 + ( $boundings->y1 - $boundings->y0 - $imageHeight ) / 2, + $boundings->y0 + ); + break; + } + + // Texturize backround based on position and repetition + $position = new ezcGraphCoordinate( + $imagePosition->x, + $imagePosition->y + ); + + do + { + $position->y = $imagePosition->y; + + do + { + $this->driver->drawImage( + $file, + $position, + $imageWidth, + $imageHeight + ); + + $position->y += $imageHeight; + } + while ( ( $position->y < $boundings->y1 ) && + ( $repeat & ezcGraph::VERTICAL ) ); + + $position->x += $imageWidth; + } + while ( ( $position->x < $boundings->x1 ) && + ( $repeat & ezcGraph::HORIZONTAL ) ); + } + + /** + * Call all postprocessing functions + * + * @return void + */ + protected function finish() + { + $this->finishCirleSectors(); + $this->finishPieSegmentLabels(); + $this->finishBars(); + $this->finishLineSymbols(); + $this->finishFrontLines(); + + return true; + } + + /** + * Reset renderer properties + * + * Reset all renderer properties, which were calculated during the + * rendering process, to offer a clean environment for rerendering. + * + * @return void + */ + protected function resetRenderer() + { + parent::resetRenderer(); + + // Also reset special 3D renderer options + $this->pieSegmentLabels = array( + 0 => array(), + 1 => array(), + ); + $this->pieSegmentBoundings = false; + $this->linePostSymbols = array(); + $this->frontLines = array(); + $this->circleSectors = array(); + $this->barPostProcessing = array(); + $this->depth = false; + $this->xDepthFactor = false; + $this->yDepthFactor = false; + $this->dataBoundings = false; + $this->axisLabels = array(); + } +} + +?> diff --git a/include/ezcomponents/Graph/src/renderer/axis_label_boxed.php b/include/ezcomponents/Graph/src/renderer/axis_label_boxed.php new file mode 100644 index 000000000..392e85820 --- /dev/null +++ b/include/ezcomponents/Graph/src/renderer/axis_label_boxed.php @@ -0,0 +1,227 @@ + + * $chart->xAxis->axisLabelRenderer = new ezcGraphAxisBoxedLabelRenderer(); + * + * + * @version 1.3 + * @package Graph + * @mainclass + */ +class ezcGraphAxisBoxedLabelRenderer extends ezcGraphAxisLabelRenderer +{ + /** + * Store step array for later coordinate modifications + * + * @var array(ezcGraphStep) + */ + protected $steps; + + /** + * Store direction for later coordinate modifications + * + * @var ezcGraphVector + */ + protected $direction; + + /** + * Store coordinate width modifier for later coordinate modifications + * + * @var float + */ + protected $widthModifier; + + /** + * Constructor + * + * @param array $options Default option array + * @return void + * @ignore + */ + public function __construct( array $options = array() ) + { + parent::__construct( $options ); + $this->properties['outerStep'] = true; + } + + /** + * Render Axis labels + * + * Render labels for an axis. + * + * @param ezcGraphRenderer $renderer Renderer used to draw the chart + * @param ezcGraphBoundings $boundings Boundings of the axis + * @param ezcGraphCoordinate $start Axis starting point + * @param ezcGraphCoordinate $end Axis ending point + * @param ezcGraphChartElementAxis $axis Axis instance + * @return void + */ + public function renderLabels( + ezcGraphRenderer $renderer, + ezcGraphBoundings $boundings, + ezcGraphCoordinate $start, + ezcGraphCoordinate $end, + ezcGraphChartElementAxis $axis ) + { + // receive rendering parameters from axis + $steps = $axis->getSteps(); + $this->steps = $steps; + + $axisBoundings = new ezcGraphBoundings( + $start->x, $start->y, + $end->x, $end->y + ); + + // Determine normalized axis direction + $this->direction = new ezcGraphVector( + $start->x - $end->x, + $start->y - $end->y + ); + $this->direction->unify(); + + if ( $this->outerGrid ) + { + $gridBoundings = $boundings; + } + else + { + $gridBoundings = new ezcGraphBoundings( + $boundings->x0 + $renderer->xAxisSpace * abs( $this->direction->y ), + $boundings->y0 + $renderer->yAxisSpace * abs( $this->direction->x ), + $boundings->x1 - $renderer->xAxisSpace * abs( $this->direction->y ), + $boundings->y1 - $renderer->yAxisSpace * abs( $this->direction->x ) + ); + } + + // Determine additional required axis space by boxes + $firstStep = reset( $steps ); + $lastStep = end( $steps ); + + $this->widthModifier = 1 + $firstStep->width / 2 + $lastStep->width / 2; + + // Draw steps and grid + foreach ( $steps as $nr => $step ) + { + $position = new ezcGraphCoordinate( + $start->x + ( $end->x - $start->x ) * ( $step->position + $step->width ) / $this->widthModifier, + $start->y + ( $end->y - $start->y ) * ( $step->position + $step->width ) / $this->widthModifier + ); + + $stepWidth = $step->width / $this->widthModifier; + + $stepSize = new ezcGraphCoordinate( + $axisBoundings->width * $stepWidth, + $axisBoundings->height * $stepWidth + ); + + if ( $this->showLabels ) + { + // Calculate label boundings + switch ( true ) + { + case ( abs( $this->direction->x ) > abs( $this->direction->y ) ) && + ( $this->direction->x <= 0 ): + $labelBoundings = new ezcGraphBoundings( + $position->x - $stepSize->x + $this->labelPadding, + $position->y + $this->labelPadding, + $position->x - $this->labelPadding, + $position->y + $renderer->yAxisSpace - $this->labelPadding + ); + + $alignement = ezcGraph::CENTER | ezcGraph::TOP; + break; + case ( abs( $this->direction->x ) > abs( $this->direction->y ) ) && + ( $this->direction->x > 0 ): + $labelBoundings = new ezcGraphBoundings( + $position->x + $this->labelPadding, + $position->y + $this->labelPadding, + $position->x + $stepSize->x - $this->labelPadding, + $position->y + $renderer->yAxisSpace - $this->labelPadding + ); + + $alignement = ezcGraph::CENTER | ezcGraph::TOP; + break; + case ( $this->direction->y <= 0 ): + $labelBoundings = new ezcGraphBoundings( + $position->x - $renderer->xAxisSpace + $this->labelPadding, + $position->y - $stepSize->y + $this->labelPadding, + $position->x - $this->labelPadding, + $position->y - $this->labelPadding + ); + + $alignement = ezcGraph::MIDDLE | ezcGraph::RIGHT; + break; + case ( $this->direction->y > 0 ): + $labelBoundings = new ezcGraphBoundings( + $position->x - $renderer->xAxisSpace + $this->labelPadding, + $position->y + $this->labelPadding, + $position->x - $this->labelPadding, + $position->y + $stepSize->y - $this->labelPadding + ); + + $alignement = ezcGraph::MIDDLE | ezcGraph::RIGHT; + break; + } + + $renderer->drawText( $labelBoundings, $step->label, $alignement ); + } + + // major grid + if ( $axis->majorGrid ) + { + $this->drawGrid( + $renderer, + $gridBoundings, + $position, + $stepSize, + $axis->majorGrid + ); + } + + // major step + $this->drawStep( + $renderer, + $position, + $this->direction, + $axis->position, + $this->majorStepSize, + $axis->border + ); + } + } + + /** + * Modify chart data position + * + * Optionally additionally modify the coodinate of a data point + * + * @param ezcGraphCoordinate $coordinate Data point coordinate + * @return ezcGraphCoordinate Modified coordinate + */ + public function modifyChartDataPosition( ezcGraphCoordinate $coordinate ) + { + $firstStep = reset( $this->steps ); + $offset = $firstStep->width / 2 / $this->widthModifier; + + return new ezcGraphCoordinate( + $coordinate->x * abs( $this->direction->y ) + + ( $coordinate->x / $this->widthModifier + $offset ) * abs( $this->direction->x ), + $coordinate->y * abs( $this->direction->x ) + + ( $coordinate->y / $this->widthModifier + $offset ) * abs( $this->direction->y ) + ); + } +} +?> diff --git a/include/ezcomponents/Graph/src/renderer/axis_label_centered.php b/include/ezcomponents/Graph/src/renderer/axis_label_centered.php new file mode 100644 index 000000000..ad9809396 --- /dev/null +++ b/include/ezcomponents/Graph/src/renderer/axis_label_centered.php @@ -0,0 +1,275 @@ + + * $chart->xAxis->axisLabelRenderer = new ezcGraphAxisCenteredLabelRenderer(); + * + * + * @property bool $showZeroValue + * Show the value at the zero point of an axis. This value might be + * crossed by the other axis which would result in an unreadable + * label. + * + * @version 1.3 + * @package Graph + * @mainclass + */ +class ezcGraphAxisCenteredLabelRenderer extends ezcGraphAxisLabelRenderer +{ + /** + * Constructor + * + * @param array $options Default option array + * @return void + * @ignore + */ + public function __construct( array $options = array() ) + { + $this->properties['showZeroValue'] = false; + + parent::__construct( $options ); + } + + /** + * __set + * + * @param mixed $propertyName + * @param mixed $propertyValue + * @throws ezcBaseValueException + * If a submitted parameter was out of range or type. + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @return void + * @ignore + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case 'showZeroValue': + if ( !is_bool( $propertyValue ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'bool' ); + } + + $this->properties['showZeroValue'] = (bool) $propertyValue; + break; + default: + return parent::__set( $propertyName, $propertyValue ); + } + } + + /** + * Render Axis labels + * + * Render labels for an axis. + * + * @param ezcGraphRenderer $renderer Renderer used to draw the chart + * @param ezcGraphBoundings $boundings Boundings of the axis + * @param ezcGraphCoordinate $start Axis starting point + * @param ezcGraphCoordinate $end Axis ending point + * @param ezcGraphChartElementAxis $axis Axis instance + * @return void + */ + public function renderLabels( + ezcGraphRenderer $renderer, + ezcGraphBoundings $boundings, + ezcGraphCoordinate $start, + ezcGraphCoordinate $end, + ezcGraphChartElementAxis $axis ) + { + // receive rendering parameters from axis + $steps = $axis->getSteps(); + + $axisBoundings = new ezcGraphBoundings( + $start->x, $start->y, + $end->x, $end->y + ); + + // Determine normalized axis direction + $direction = new ezcGraphVector( + $start->x - $end->x, + $start->y - $end->y + ); + $direction->unify(); + + if ( $this->outerGrid ) + { + $gridBoundings = $boundings; + } + else + { + $gridBoundings = new ezcGraphBoundings( + $boundings->x0 + $renderer->xAxisSpace * abs( $direction->y ), + $boundings->y0 + $renderer->yAxisSpace * abs( $direction->x ), + $boundings->x1 - $renderer->xAxisSpace * abs( $direction->y ), + $boundings->y1 - $renderer->yAxisSpace * abs( $direction->x ) + ); + } + + // Draw steps and grid + foreach ( $steps as $nr => $step ) + { + $position = new ezcGraphCoordinate( + $start->x + ( $end->x - $start->x ) * $step->position, + $start->y + ( $end->y - $start->y ) * $step->position + ); + $stepSize = new ezcGraphCoordinate( + $axisBoundings->width * $step->width, + $axisBoundings->height * $step->width + ); + + if ( ! $step->isZero ) + { + // major grid + if ( $axis->majorGrid ) + { + $this->drawGrid( + $renderer, + $gridBoundings, + $position, + $stepSize, + $axis->majorGrid + ); + } + + // major step + $this->drawStep( + $renderer, + $position, + $direction, + $axis->position, + $this->majorStepSize, + $axis->border + ); + } + + // draw label + if ( $this->showLabels && ( $this->showZeroValue || ! $step->isZero ) ) + { + // Calculate label boundings + if ( abs( $direction->x ) > abs( $direction->y ) ) + { + // Horizontal labels + switch ( true ) + { + case ( $nr === 0 ): + // First label + $labelSize = min( + $renderer->xAxisSpace * 2, + $step->width * $axisBoundings->width + ); + break; + case ( $step->isLast ): + // Last label + $labelSize = min( + $renderer->xAxisSpace * 2, + $steps[$nr - 1]->width * $axisBoundings->width + ); + break; + default: + $labelSize = min( + $step->width * $axisBoundings->width, + $steps[$nr - 1]->width * $axisBoundings->width + ); + break; + } + + $labelBoundings = new ezcGraphBoundings( + $position->x - $labelSize / 2 + $this->labelPadding, + $position->y + $this->labelPadding, + $position->x + $labelSize / 2 - $this->labelPadding, + $position->y + $renderer->yAxisSpace - $this->labelPadding + ); + + $alignement = ezcGraph::CENTER | ezcGraph::TOP; + } + else + { + // Vertical labels + switch ( true ) + { + case ( $nr === 0 ): + // First label + $labelSize = min( + $renderer->yAxisSpace * 2, + $step->width * $axisBoundings->height + ); + break; + case ( $step->isLast ): + // Last label + $labelSize = min( + $renderer->yAxisSpace * 2, + $steps[$nr - 1]->width * $axisBoundings->height + ); + break; + default: + $labelSize = min( + $step->width * $axisBoundings->height, + $steps[$nr - 1]->width * $axisBoundings->height + ); + break; + } + + $labelBoundings = new ezcGraphBoundings( + $position->x - $renderer->xAxisSpace + $this->labelPadding, + $position->y - $labelSize / 2 + $this->labelPadding, + $position->x - $this->labelPadding, + $position->y + $labelSize / 2 - $this->labelPadding + ); + + $alignement = ezcGraph::MIDDLE | ezcGraph::RIGHT; + } + + $renderer->drawText( $labelBoundings, $step->label, $alignement ); + } + + // Iterate over minor steps + if ( !$step->isLast ) + { + foreach ( $step->childs as $minorStep ) + { + $minorStepPosition = new ezcGraphCoordinate( + $start->x + ( $end->x - $start->x ) * $minorStep->position, + $start->y + ( $end->y - $start->y ) * $minorStep->position + ); + $minorStepSize = new ezcGraphCoordinate( + $axisBoundings->width * $minorStep->width, + $axisBoundings->height * $minorStep->width + ); + + if ( $axis->minorGrid ) + { + $this->drawGrid( + $renderer, + $gridBoundings, + $minorStepPosition, + $minorStepSize, + $axis->minorGrid + ); + } + + // major step + $this->drawStep( + $renderer, + $minorStepPosition, + $direction, + $axis->position, + $this->minorStepSize, + $axis->border + ); + } + } + } + } +} +?> diff --git a/include/ezcomponents/Graph/src/renderer/axis_label_exact.php b/include/ezcomponents/Graph/src/renderer/axis_label_exact.php new file mode 100644 index 000000000..9755c24cc --- /dev/null +++ b/include/ezcomponents/Graph/src/renderer/axis_label_exact.php @@ -0,0 +1,279 @@ + + * $chart->xAxis->axisLabelRenderer = new ezcGraphAxisExactLabelRenderer(); + * + * + * @property bool $showLastValue + * Show the last value on the axis, which will be aligned different + * than all other values, to not interfere with the arrow head of + * the axis. + * + * @version 1.3 + * @package Graph + * @mainclass + */ +class ezcGraphAxisExactLabelRenderer extends ezcGraphAxisLabelRenderer +{ + + /** + * Constructor + * + * @param array $options Default option array + * @return void + * @ignore + */ + public function __construct( array $options = array() ) + { + $this->properties['showLastValue'] = true; + + parent::__construct( $options ); + } + + /** + * __set + * + * @param mixed $propertyName + * @param mixed $propertyValue + * @throws ezcBaseValueException + * If a submitted parameter was out of range or type. + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @return void + * @ignore + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case 'showLastValue': + if ( !is_bool( $propertyValue ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'bool' ); + } + + $this->properties['showLastValue'] = (bool) $propertyValue; + break; + default: + return parent::__set( $propertyName, $propertyValue ); + } + } + + /** + * Render Axis labels + * + * Render labels for an axis. + * + * @param ezcGraphRenderer $renderer Renderer used to draw the chart + * @param ezcGraphBoundings $boundings Boundings of the axis + * @param ezcGraphCoordinate $start Axis starting point + * @param ezcGraphCoordinate $end Axis ending point + * @param ezcGraphChartElementAxis $axis Axis instance + * @return void + */ + public function renderLabels( + ezcGraphRenderer $renderer, + ezcGraphBoundings $boundings, + ezcGraphCoordinate $start, + ezcGraphCoordinate $end, + ezcGraphChartElementAxis $axis ) + { + // receive rendering parameters from axis + $steps = $axis->getSteps(); + + $axisBoundings = new ezcGraphBoundings( + $start->x, $start->y, + $end->x, $end->y + ); + + // Determine normalized axis direction + $direction = new ezcGraphVector( + $start->x - $end->x, + $start->y - $end->y + ); + $direction->unify(); + + if ( $this->outerGrid ) + { + $gridBoundings = $boundings; + } + else + { + $gridBoundings = new ezcGraphBoundings( + $boundings->x0 + $renderer->xAxisSpace * abs( $direction->y ), + $boundings->y0 + $renderer->yAxisSpace * abs( $direction->x ), + $boundings->x1 - $renderer->xAxisSpace * abs( $direction->y ), + $boundings->y1 - $renderer->yAxisSpace * abs( $direction->x ) + ); + } + + // Draw steps and grid + foreach ( $steps as $nr => $step ) + { + $position = new ezcGraphCoordinate( + $start->x + ( $end->x - $start->x ) * $step->position, + $start->y + ( $end->y - $start->y ) * $step->position + ); + $stepSize = new ezcGraphCoordinate( + $axisBoundings->width * $step->width, + $axisBoundings->height * $step->width + ); + + if ( ! $step->isZero ) + { + // major grid + if ( $axis->majorGrid ) + { + $this->drawGrid( + $renderer, + $gridBoundings, + $position, + $stepSize, + $axis->majorGrid + ); + } + + // major step + $this->drawStep( + $renderer, + $position, + $direction, + $axis->position, + $this->majorStepSize, + $axis->border + ); + } + + if ( $this->showLabels ) + { + switch ( $axis->position ) + { + case ezcGraph::RIGHT: + case ezcGraph::LEFT: + $labelWidth = $axisBoundings->width * + $steps[$nr - $step->isLast]->width / + ( $this->showLastValue + 1 ); + $labelHeight = $renderer->yAxisSpace; + break; + + case ezcGraph::BOTTOM: + case ezcGraph::TOP: + $labelWidth = $renderer->xAxisSpace; + $labelHeight = $axisBoundings->height * + $steps[$nr - $step->isLast]->width / + ( $this->showLastValue + 1 ); + break; + } + + $showLabel = true; + switch ( true ) + { + case ( !$this->showLastValue && $step->isLast ): + // Skip last step if showLastValue is false + $showLabel = false; + break; + // Draw label at top left of step + case ( ( $axis->position === ezcGraph::BOTTOM ) && + ( !$step->isLast ) ) || + ( ( $axis->position === ezcGraph::TOP ) && + ( $step->isLast ) ): + $labelBoundings = new ezcGraphBoundings( + $position->x - $labelWidth + $this->labelPadding, + $position->y - $labelHeight + $this->labelPadding, + $position->x - $this->labelPadding, + $position->y - $this->labelPadding + ); + $alignement = ezcGraph::RIGHT | ezcGraph::BOTTOM; + break; + // Draw label at bottom right of step + case ( ( $axis->position === ezcGraph::LEFT ) && + ( !$step->isLast ) ) || + ( ( $axis->position === ezcGraph::RIGHT ) && + ( $step->isLast ) ): + $labelBoundings = new ezcGraphBoundings( + $position->x + $this->labelPadding, + $position->y + $this->labelPadding, + $position->x + $labelWidth - $this->labelPadding, + $position->y + $labelHeight - $this->labelPadding + ); + $alignement = ezcGraph::LEFT | ezcGraph::TOP; + break; + // Draw label at bottom left of step + case ( ( $axis->position === ezcGraph::TOP ) && + ( !$step->isLast ) ) || + ( ( $axis->position === ezcGraph::RIGHT ) && + ( !$step->isLast ) ) || + ( ( $axis->position === ezcGraph::BOTTOM ) && + ( $step->isLast ) ) || + ( ( $axis->position === ezcGraph::LEFT ) && + ( $step->isLast ) ): + $labelBoundings = new ezcGraphBoundings( + $position->x - $labelWidth + $this->labelPadding, + $position->y + $this->labelPadding, + $position->x - $this->labelPadding, + $position->y + $labelHeight - $this->labelPadding + ); + $alignement = ezcGraph::RIGHT | ezcGraph::TOP; + break; + } + + if ( $showLabel ) + { + $renderer->drawText( + $labelBoundings, + $step->label, + $alignement + ); + } + } + + if ( !$step->isLast ) + { + // Iterate over minor steps + foreach ( $step->childs as $minorStep ) + { + $minorStepPosition = new ezcGraphCoordinate( + $start->x + ( $end->x - $start->x ) * $minorStep->position, + $start->y + ( $end->y - $start->y ) * $minorStep->position + ); + $minorStepSize = new ezcGraphCoordinate( + $axisBoundings->width * $minorStep->width, + $axisBoundings->height * $minorStep->width + ); + + if ( $axis->minorGrid ) + { + $this->drawGrid( + $renderer, + $gridBoundings, + $minorStepPosition, + $minorStepSize, + $axis->minorGrid + ); + } + + // major step + $this->drawStep( + $renderer, + $minorStepPosition, + $direction, + $axis->position, + $this->minorStepSize, + $axis->border + ); + } + } + } + } +} +?> diff --git a/include/ezcomponents/Graph/src/renderer/axis_label_none.php b/include/ezcomponents/Graph/src/renderer/axis_label_none.php new file mode 100644 index 000000000..d1928f651 --- /dev/null +++ b/include/ezcomponents/Graph/src/renderer/axis_label_none.php @@ -0,0 +1,44 @@ + + * $chart->xAxis->axisLabelRenderer = new ezcGraphAxisNoLabelRenderer(); + * + * + * @version 1.3 + * @package Graph + */ +class ezcGraphAxisNoLabelRenderer extends ezcGraphAxisLabelRenderer +{ + /** + * Render Axis labels + * + * Render labels for an axis. + * + * @param ezcGraphRenderer $renderer Renderer used to draw the chart + * @param ezcGraphBoundings $boundings Boundings of the axis + * @param ezcGraphCoordinate $start Axis starting point + * @param ezcGraphCoordinate $end Axis ending point + * @param ezcGraphChartElementAxis $axis Axis instance + * @return void + */ + public function renderLabels( + ezcGraphRenderer $renderer, + ezcGraphBoundings $boundings, + ezcGraphCoordinate $start, + ezcGraphCoordinate $end, + ezcGraphChartElementAxis $axis ) + { + return true; + } +} +?> diff --git a/include/ezcomponents/Graph/src/renderer/axis_label_radar.php b/include/ezcomponents/Graph/src/renderer/axis_label_radar.php new file mode 100644 index 000000000..d8720e4d9 --- /dev/null +++ b/include/ezcomponents/Graph/src/renderer/axis_label_radar.php @@ -0,0 +1,322 @@ + + * $chart->xAxis->axisLabelRenderer = new ezcGraphAxisRadarLabelRenderer(); + * + * + * @property float $lastStep + * Position of last step on the axis to calculate the grid. + * + * @version 1.3 + * @package Graph + * @mainclass + */ +class ezcGraphAxisRadarLabelRenderer extends ezcGraphAxisLabelRenderer +{ + /** + * Constructor + * + * @param array $options Default option array + * @return void + * @ignore + */ + public function __construct( array $options = array() ) + { + $this->properties['lastStep'] = null; + + parent::__construct( $options ); + } + + /** + * __set + * + * @param mixed $propertyName + * @param mixed $propertyValue + * @throws ezcBaseValueException + * If a submitted parameter was out of range or type. + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @return void + * @ignore + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case 'lastStep': + if ( !is_null( $propertyValue ) && + ( !is_float( $propertyValue ) || + ( $propertyValue < 0 ) || + ( $propertyValue > 1 ) ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, '0 <= float <= 1' ); + } + + $this->properties['lastStep'] = $propertyValue; + break; + default: + return parent::__set( $propertyName, $propertyValue ); + } + } + + /** + * Render Axis labels + * + * Render labels for an axis. + * + * @param ezcGraphRenderer $renderer Renderer used to draw the chart + * @param ezcGraphBoundings $boundings Boundings of the axis + * @param ezcGraphCoordinate $start Axis starting point + * @param ezcGraphCoordinate $end Axis ending point + * @param ezcGraphChartElementAxis $axis Axis instance + * @return void + */ + public function renderLabels( + ezcGraphRenderer $renderer, + ezcGraphBoundings $boundings, + ezcGraphCoordinate $start, + ezcGraphCoordinate $end, + ezcGraphChartElementAxis $axis ) + { + // receive rendering parameters from axis + $steps = $axis->getSteps(); + + $axisBoundings = new ezcGraphBoundings( + $start->x, $start->y, + $end->x, $end->y + ); + + // Determine normalized axis direction + $direction = new ezcGraphVector( + $start->x - $end->x, + $start->y - $end->y + ); + $direction->unify(); + + // Draw steps and grid + foreach ( $steps as $nr => $step ) + { + $position = new ezcGraphCoordinate( + $start->x + ( $end->x - $start->x ) * $step->position, + $start->y + ( $end->y - $start->y ) * $step->position + ); + $stepSize = new ezcGraphCoordinate( + $axisBoundings->width * $step->width, + $axisBoundings->height * $step->width + ); + + // Draw major grid + if ( ( $this->lastStep !== null ) && $axis->majorGrid ) + { + $this->drawGrid( + $renderer, + $boundings, + $position, + $stepSize, + $axis->majorGrid, + $step->position + ); + } + + // major step + $this->drawStep( + $renderer, + $position, + $direction, + $axis->position, + $this->majorStepSize, + $axis->border + ); + + // draw label + if ( $this->showLabels && ( $this->lastStep === null ) ) + { + // Calculate label boundings + if ( abs( $direction->x ) > abs( $direction->y ) ) + { + // Horizontal labels + switch ( true ) + { + case ( $nr === 0 ): + // First label + $labelSize = min( + $renderer->xAxisSpace * 2, + $step->width * $axisBoundings->width + ); + break; + case ( $step->isLast ): + // Last label + $labelSize = min( + $renderer->xAxisSpace * 2, + $steps[$nr - 1]->width * $axisBoundings->width + ); + break; + default: + $labelSize = min( + $step->width * $axisBoundings->width, + $steps[$nr - 1]->width * $axisBoundings->width + ); + break; + } + + $labelBoundings = new ezcGraphBoundings( + $position->x - $labelSize / 2 + $this->labelPadding, + $position->y + $this->labelPadding, + $position->x + $labelSize / 2 - $this->labelPadding, + $position->y + $renderer->yAxisSpace - $this->labelPadding + ); + + $alignement = ezcGraph::CENTER | ezcGraph::TOP; + } + else + { + // Vertical labels + switch ( true ) + { + case ( $nr === 0 ): + // First label + $labelSize = min( + $renderer->yAxisSpace * 2, + $step->width * $axisBoundings->height + ); + break; + case ( $step->isLast ): + // Last label + $labelSize = min( + $renderer->yAxisSpace * 2, + $steps[$nr - 1]->width * $axisBoundings->height + ); + break; + default: + $labelSize = min( + $step->width * $axisBoundings->height, + $steps[$nr - 1]->width * $axisBoundings->height + ); + break; + } + + $labelBoundings = new ezcGraphBoundings( + $position->x - $renderer->xAxisSpace + $this->labelPadding, + $position->y - $labelSize / 2 + $this->labelPadding, + $position->x - $this->labelPadding, + $position->y + $labelSize / 2 - $this->labelPadding + ); + + $alignement = ezcGraph::MIDDLE | ezcGraph::RIGHT; + } + + $renderer->drawText( $labelBoundings, $step->label, $alignement ); + } + + // Iterate over minor steps + if ( !$step->isLast ) + { + foreach ( $step->childs as $minorStep ) + { + $minorStepPosition = new ezcGraphCoordinate( + $start->x + ( $end->x - $start->x ) * $minorStep->position, + $start->y + ( $end->y - $start->y ) * $minorStep->position + ); + $minorStepSize = new ezcGraphCoordinate( + $axisBoundings->width * $minorStep->width, + $axisBoundings->height * $minorStep->width + ); + + if ( ( $this->lastStep !== null ) && $axis->minorGrid ) + { + $this->drawGrid( + $renderer, + $boundings, + $minorStepPosition, + $minorStepSize, + $axis->minorGrid, + $minorStep->position + ); + } + + // major step + $this->drawStep( + $renderer, + $minorStepPosition, + $direction, + $axis->position, + $this->minorStepSize, + $axis->border + ); + } + } + } + } + + /** + * Draw grid + * + * Draws a grid line at the current position + * + * @param ezcGraphRenderer $renderer Renderer to draw the grid with + * @param ezcGraphBoundings $boundings Boundings of axis + * @param ezcGraphCoordinate $position Position of step + * @param ezcGraphCoordinate $direction Direction of axis + * @param ezcGraphColor $color Color of axis + * @param int $stepPosition + * @return void + */ + protected function drawGrid( ezcGraphRenderer $renderer, ezcGraphBoundings $boundings, ezcGraphCoordinate $position, ezcGraphCoordinate $direction, ezcGraphColor $color, $stepPosition = null ) + { + // Calculate position on last axis + $start = new ezcGraphCoordinate( + $boundings->x0 + $width = ( $boundings->width / 2 ), + $boundings->y0 + $height = ( $boundings->height / 2 ) + ); + + $lastAngle = $this->lastStep * 2 * M_PI; + $end = new ezcGraphCoordinate( + $start->x + sin( $lastAngle ) * $width, + $start->y - cos( $lastAngle ) * $height + ); + + $direction = new ezcGraphVector( + $end->x - $start->x, + $end->y - $start->y + ); + $direction->unify(); + + // Convert elipse to circle for correct angle calculation + $direction->y *= ( $renderer->xAxisSpace / $renderer->yAxisSpace ); + $angle = $direction->angle( new ezcGraphVector( 0, 1 ) ); + + $movement = new ezcGraphVector( + sin( $angle ) * $renderer->xAxisSpace + * ( $direction->x < 0 ? -1 : 1 ), + cos( $angle ) * $renderer->yAxisSpace + ); + + $start->x += $movement->x; + $start->y += $movement->y; + $end->x -= $movement->x; + $end->y -= $movement->y; + + $lastPosition = new ezcGraphCoordinate( + $start->x + ( $end->x - $start->x ) * $stepPosition, + $start->y + ( $end->y - $start->y ) * $stepPosition + ); + + $renderer->drawGridLine( + $position, + $lastPosition, + $color + ); + } +} +?> diff --git a/include/ezcomponents/Graph/src/renderer/axis_label_rotated.php b/include/ezcomponents/Graph/src/renderer/axis_label_rotated.php new file mode 100644 index 000000000..017e1e2b1 --- /dev/null +++ b/include/ezcomponents/Graph/src/renderer/axis_label_rotated.php @@ -0,0 +1,428 @@ + + * $chart->xAxis->axisLabelRenderer = new ezcGraphAxisRotatedLabelRenderer(); + * + * // Define angle manually in degree + * $chart->xAxis->axisLabelRenderer->angle = 45; + * + * // Increase axis space + * $chart->xAxis->axisSpace = .2; + * + * + * @property float $angle + * Angle of labels on axis in degrees. + * + * @version 1.3 + * @package Graph + * @mainclass + */ +class ezcGraphAxisRotatedLabelRenderer extends ezcGraphAxisLabelRenderer +{ + /** + * Store step array for later coordinate modifications + * + * @var array(ezcGraphStep) + */ + protected $steps; + + /** + * Store direction for later coordinate modifications + * + * @var ezcGraphVector + */ + protected $direction; + + /** + * Store coordinate width modifier for later coordinate modifications + * + * @var float + */ + protected $widthModifier; + + /** + * Store coordinate offset for later coordinate modifications + * + * @var float + */ + protected $offset; + + /** + * Constructor + * + * @param array $options Default option array + * @return void + * @ignore + */ + public function __construct( array $options = array() ) + { + parent::__construct( $options ); + $this->properties['angle'] = null; + } + + /** + * __set + * + * @param mixed $propertyName + * @param mixed $propertyValue + * @throws ezcBaseValueException + * If a submitted parameter was out of range or type. + * @throws ezcBasePropertyNotFoundException + * If a the value for the property options is not an instance of + * @return void + * @ignore + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case 'angle': + if ( !is_numeric( $propertyValue ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, '0 <= float < 360' ); + } + + $reducement = (int) ( $propertyValue - $propertyValue % 360 ); + $this->properties['angle'] = (float) $propertyValue - $reducement; + break; + default: + return parent::__set( $propertyName, $propertyValue ); + } + } + + /** + * Render Axis labels + * + * Render labels for an axis. + * + * @param ezcGraphRenderer $renderer Renderer used to draw the chart + * @param ezcGraphBoundings $boundings Boundings of the axis + * @param ezcGraphCoordinate $start Axis starting point + * @param ezcGraphCoordinate $end Axis ending point + * @param ezcGraphChartElementAxis $axis Axis instance + * @return void + */ + public function renderLabels( + ezcGraphRenderer $renderer, + ezcGraphBoundings $boundings, + ezcGraphCoordinate $start, + ezcGraphCoordinate $end, + ezcGraphChartElementAxis $axis ) + { + // receive rendering parameters from axis + $steps = $axis->getSteps(); + $this->steps = $steps; + + $axisBoundings = new ezcGraphBoundings( + $start->x, $start->y, + $end->x, $end->y + ); + + // Determine normalized axis direction + $this->direction = new ezcGraphVector( + $end->x - $start->x, + $end->y - $start->y + ); + $this->direction->unify(); + $axisAngle = -$this->direction->angle( new ezcGraphVector( 1, 0 ) ); + + if ( $this->outerGrid ) + { + $gridBoundings = $boundings; + } + else + { + $gridBoundings = new ezcGraphBoundings( + $boundings->x0 + $renderer->xAxisSpace, + $boundings->y0 + $renderer->yAxisSpace, + $boundings->x1 - $renderer->xAxisSpace, + $boundings->y1 - $renderer->yAxisSpace + ); + } + + // Determine optimal angle if none specified + if ( $this->angle === null ) + { + $minimumStepWidth = null; + foreach ( $steps as $nr => $step ) + { + if ( ( $minimumStepWidth === null ) || + ( $step->width < $minimumStepWidth ) ) + { + $minimumStepWidth = $step->width; + } + } + + $width = abs( + $axisBoundings->width * $minimumStepWidth * $this->direction->x + + $axisBoundings->height * $minimumStepWidth * $this->direction->y + ); + $height = abs( + $renderer->yAxisSpace * $this->direction->x + + $renderer->xAxisSpace * $this->direction->y + ); + + $length = sqrt( pow( $width, 2 ) + pow( $height, 2 ) ); + $this->angle = rad2deg( acos( $height / $length ) ); + } + + // Determine additional required axis space by boxes + $firstStep = reset( $steps ); + $lastStep = end( $steps ); + + $textAngle = $axisAngle + + deg2rad( $this->angle ) + + ( $axis->position & ( ezcGraph::TOP | ezcGraph::BOTTOM ) ? deg2rad( 270 ) : deg2rad( 90 ) ); + + // Ensure angle between 0 and 360 degrees + $degTextAngle = rad2deg( $textAngle ); + while ( $degTextAngle < 0 ) + { + $degTextAngle += 360.; + } + + $this->offset = + ( $this->angle < 0 ? -1 : 1 ) * + ( $axis->position & ( ezcGraph::TOP | ezcGraph::LEFT ) ? 1 : -1 ) * + ( 1 - cos( deg2rad( $this->angle * 2 ) ) ); + + $axisSpaceFactor = abs( + ( $this->direction->x == 0 ? 0 : + $this->direction->x * $renderer->yAxisSpace / $axisBoundings->width ) + + ( $this->direction->y == 0 ? 0 : + $this->direction->y * $renderer->xAxisSpace / $axisBoundings->height ) + ); + + $start = new ezcGraphCoordinate( + $start->x + max( 0., $axisSpaceFactor * $this->offset ) * ( $end->x - $start->x ), + $start->y + max( 0., $axisSpaceFactor * $this->offset ) * ( $end->y - $start->y ) + ); + $end = new ezcGraphCoordinate( + $end->x + min( 0., $axisSpaceFactor * $this->offset ) * ( $end->x - $start->x ), + $end->y + min( 0., $axisSpaceFactor * $this->offset ) * ( $end->y - $start->y ) + ); + + $labelLength = sqrt( + pow( + $renderer->xAxisSpace * $this->direction->y + + $axisSpaceFactor * $this->offset * ( $end->x - $start->x ), + 2 ) + + pow( + $renderer->yAxisSpace * $this->direction->x + + $axisSpaceFactor * $this->offset * ( $end->y - $start->y ), + 2 ) + ); + + $this->offset *= $axisSpaceFactor; + + // Draw steps and grid + foreach ( $steps as $nr => $step ) + { + $position = new ezcGraphCoordinate( + $start->x + ( $end->x - $start->x ) * $step->position * abs( $this->direction->x ), + $start->y + ( $end->y - $start->y ) * $step->position * abs( $this->direction->y ) + ); + + $stepSize = new ezcGraphCoordinate( + ( $end->x - $start->x ) * $step->width, + ( $end->y - $start->y ) * $step->width + ); + + // Calculate label boundings + switch ( true ) + { + case ( $nr === 0 ): + $labelSize = min( + abs( + $renderer->xAxisSpace * 2 * $this->direction->x + + $renderer->yAxisSpace * 2 * $this->direction->y ), + abs( + $step->width * $axisBoundings->width * $this->direction->x + + $step->width * $axisBoundings->height * $this->direction->y ) + ); + break; + case ( $step->isLast ): + $labelSize = min( + abs( + $renderer->xAxisSpace * 2 * $this->direction->x + + $renderer->yAxisSpace * 2 * $this->direction->y ), + abs( + $steps[$nr - 1]->width * $axisBoundings->width * $this->direction->x + + $steps[$nr - 1]->width * $axisBoundings->height * $this->direction->y ) + ); + break; + default: + $labelSize = min( + abs( + $step->width * $axisBoundings->width * $this->direction->x + + $step->width * $axisBoundings->height * $this->direction->y ), + abs( + $steps[$nr - 1]->width * $axisBoundings->width * $this->direction->x + + $steps[$nr - 1]->width * $axisBoundings->height * $this->direction->y ) + ); + break; + } + + $labelSize = $labelSize * cos( deg2rad( $this->angle ) ); + $lengthReducement = min( + abs( tan( deg2rad( $this->angle ) ) * ( $labelSize / 2 ) ), + abs( $labelLength / 2 ) + ); + + switch ( true ) + { + case ( ( ( $degTextAngle >= 0 ) && + ( $degTextAngle < 90 ) && + ( ( $axis->position === ezcGraph::LEFT ) || + ( $axis->position === ezcGraph::RIGHT ) + ) + ) || + ( ( $degTextAngle >= 270 ) && + ( $degTextAngle < 360 ) && + ( ( $axis->position === ezcGraph::TOP ) || + ( $axis->position === ezcGraph::BOTTOM ) + ) + ) + ): + $labelBoundings = new ezcGraphBoundings( + $position->x, + $position->y, + $position->x + abs( $labelLength ) - $lengthReducement, + $position->y + $labelSize + ); + $labelAlignement = ezcGraph::LEFT | ezcGraph::TOP; + $labelRotation = $degTextAngle; + break; + case ( ( ( $degTextAngle >= 90 ) && + ( $degTextAngle < 180 ) && + ( ( $axis->position === ezcGraph::LEFT ) || + ( $axis->position === ezcGraph::RIGHT ) + ) + ) || + ( ( $degTextAngle >= 180 ) && + ( $degTextAngle < 270 ) && + ( ( $axis->position === ezcGraph::TOP ) || + ( $axis->position === ezcGraph::BOTTOM ) + ) + ) + ): + $labelBoundings = new ezcGraphBoundings( + $position->x - abs( $labelLength ) + $lengthReducement, + $position->y, + $position->x, + $position->y + $labelSize + ); + $labelAlignement = ezcGraph::RIGHT | ezcGraph::TOP; + $labelRotation = $degTextAngle - 180; + break; + case ( ( ( $degTextAngle >= 180 ) && + ( $degTextAngle < 270 ) && + ( ( $axis->position === ezcGraph::LEFT ) || + ( $axis->position === ezcGraph::RIGHT ) + ) + ) || + ( ( $degTextAngle >= 90 ) && + ( $degTextAngle < 180 ) && + ( ( $axis->position === ezcGraph::TOP ) || + ( $axis->position === ezcGraph::BOTTOM ) + ) + ) + ): + $labelBoundings = new ezcGraphBoundings( + $position->x - abs( $labelLength ) + $lengthReducement, + $position->y - $labelSize, + $position->x, + $position->y + ); + $labelAlignement = ezcGraph::RIGHT | ezcGraph::BOTTOM; + $labelRotation = $degTextAngle - 180; + break; + case ( ( ( $degTextAngle >= 270 ) && + ( $degTextAngle < 360 ) && + ( ( $axis->position === ezcGraph::LEFT ) || + ( $axis->position === ezcGraph::RIGHT ) + ) + ) || + ( ( $degTextAngle >= 0 ) && + ( $degTextAngle < 90 ) && + ( ( $axis->position === ezcGraph::TOP ) || + ( $axis->position === ezcGraph::BOTTOM ) + ) + ) + ): + $labelBoundings = new ezcGraphBoundings( + $position->x, + $position->y + $labelSize, + $position->x + abs( $labelLength ) - $lengthReducement, + $position->y + ); + $labelAlignement = ezcGraph::LEFT | ezcGraph::BOTTOM; + $labelRotation = $degTextAngle; + break; + } + + $renderer->drawText( + $labelBoundings, + $step->label, + $labelAlignement, + new ezcGraphRotation( + $labelRotation, + $position + ) + ); + + // major grid + if ( $axis->majorGrid ) + { + $this->drawGrid( + $renderer, + $gridBoundings, + $position, + $stepSize, + $axis->majorGrid + ); + } + + // major step + $this->drawStep( + $renderer, + $position, + $this->direction, + $axis->position, + $this->majorStepSize, + $axis->border + ); + } + } + + /** + * Modify chart data position + * + * Optionally additionally modify the coodinate of a data point + * + * @param ezcGraphCoordinate $coordinate Data point coordinate + * @return ezcGraphCoordinate Modified coordinate + */ + public function modifyChartDataPosition( ezcGraphCoordinate $coordinate ) + { + return new ezcGraphCoordinate( + $coordinate->x * abs( $this->direction->y ) + + ( $coordinate->x * ( 1 - abs( $this->offset ) ) + max( 0, $this->offset ) ) * abs( $this->direction->x ), + $coordinate->y * abs( $this->direction->x ) + + ( $coordinate->y * ( 1 - abs( $this->offset ) ) + max( 0, $this->offset ) ) * abs( $this->direction->y ) + ); + } +} +?> diff --git a/include/ezcomponents/Graph/src/structs/context.php b/include/ezcomponents/Graph/src/structs/context.php new file mode 100644 index 000000000..d3fae208c --- /dev/null +++ b/include/ezcomponents/Graph/src/structs/context.php @@ -0,0 +1,76 @@ +dataset = $dataset; + $this->datapoint = $datapoint; + $this->url = $url; + } + + /** + * __set_state + * + * @param array $properties Struct properties + * @return void + * @ignore + */ + public function __set_state( array $properties ) + { + $this->dataset = (string) $properties['dataset']; + $this->datapoint = (string) $properties['datapoint']; + + // Check to keep BC + // @TODO: Remvove unnesecary check on next major version + if ( array_key_exists( 'url', $properties ) ) + { + $this->url = (string) $properties['url']; + } + } +} + +?> diff --git a/include/ezcomponents/Graph/src/structs/coordinate.php b/include/ezcomponents/Graph/src/structs/coordinate.php new file mode 100644 index 000000000..ac1d5b9b3 --- /dev/null +++ b/include/ezcomponents/Graph/src/structs/coordinate.php @@ -0,0 +1,70 @@ +x = $x; + $this->y = $y; + } + + /** + * __set_state + * + * @param array $properties Struct properties + * @return void + * @ignore + */ + public function __set_state( array $properties ) + { + $this->x = $properties['x']; + $this->y = $properties['y']; + } + + /** + * Returns simple string representation of coordinate + * + * @return string + * @ignore + */ + public function __toString() + { + return sprintf( '( %.2f, %.2f )', $this->x, $this->y ); + } +} + +?> diff --git a/include/ezcomponents/Graph/src/structs/step.php b/include/ezcomponents/Graph/src/structs/step.php new file mode 100644 index 000000000..7d17845a4 --- /dev/null +++ b/include/ezcomponents/Graph/src/structs/step.php @@ -0,0 +1,99 @@ +position = (float) $position; + $this->width = (float) $width; + $this->label = $label; + $this->childs = $childs; + $this->isZero = (bool) $isZero; + $this->isLast = (bool) $isLast; + } + + /** + * __set_state + * + * @param array $properties Struct properties + * @return void + * @ignore + */ + public function __set_state( array $properties ) + { + $this->position = $properties['position']; + $this->width = $properties['width']; + $this->label = $properties['label']; + $this->childs = $properties['childs']; + $this->isZero = $properties['isZero']; + $this->isLast = $properties['isLast']; + } +} + +?> diff --git a/include/ezcomponents/Graph/src/tools.php b/include/ezcomponents/Graph/src/tools.php new file mode 100644 index 000000000..5bc403c0c --- /dev/null +++ b/include/ezcomponents/Graph/src/tools.php @@ -0,0 +1,183 @@ +driver instanceof ezcGraphGdDriver ) ) + { + throw new ezcGraphToolsIncompatibleDriverException( $chart->driver, 'ezcGraphGdDriver' ); + } + + $elements = $chart->renderer->getElementReferences(); + + if ( !count( $elements ) ) + { + throw new ezcGraphToolsNotRenderedException( $chart ); + } + + $imageMap = sprintf( "\n", $name ); + + // Iterate over legends elements + if ( isset( $elements['legend'] ) ) + { + foreach ( $elements['legend'] as $objectName => $polygones ) + { + $url = $elements['legend_url'][$objectName]; + + if ( empty( $url ) ) + { + continue; + } + + foreach ( $polygones as $shape => $polygone ) + { + $coordinateString = ''; + foreach ( $polygone as $coordinate ) + { + $coordinateString .= sprintf( '%d,%d,', $coordinate->x, $coordinate->y ); + } + + $imageMap .= sprintf( "\t\"%s\"\n", + substr( $coordinateString, 0, -1 ), + $url, + $objectName + ); + } + } + } + + // Iterate over data + foreach ( $elements['data'] as $dataset => $datapoints ) + { + foreach ( $datapoints as $datapoint => $polygones ) + { + $url = $chart->data[$dataset]->url[$datapoint]; + + if ( empty( $url ) ) + { + continue; + } + + foreach ( $polygones as $polygon ) + { + $coordinateString = ''; + foreach ( $polygon as $coordinate ) + { + $coordinateString .= sprintf( '%d,%d,', $coordinate->x, $coordinate->y ); + } + + $imageMap .= sprintf( "\t\"%s\"\n", + substr( $coordinateString, 0, -1 ), + $url, + $datapoint + ); + } + } + } + + return $imageMap . "\n"; + } + + /** + * Add links to clickable SVG elements in a chart with SVG driver. + * + * @param ezcGraphChart $chart + * @return void + */ + public static function linkSvgElements( ezcGraphChart $chart ) + { + if ( ! ( $chart->driver instanceof ezcGraphSvgDriver ) ) + { + throw new ezcGraphToolsIncompatibleDriverException( $chart->driver, 'ezcGraphSvgDriver' ); + } + + $fileName = $chart->getRenderedFile(); + + if ( !$fileName ) + { + throw new ezcGraphToolsNotRenderedException( $chart ); + } + + $dom = new DOMDocument(); + $dom->load( $fileName ); + $xpath = new DomXPath( $dom ); + + $elements = $chart->renderer->getElementReferences(); + + // Link chart elements + foreach ( $elements['data'] as $dataset => $datapoints ) + { + foreach ( $datapoints as $datapoint => $ids ) + { + $url = $chart->data[$dataset]->url[$datapoint]; + + if ( empty( $url ) ) + { + continue; + } + + foreach ( $ids as $id ) + { + $element = $xpath->query( '//*[@id = \'' . $id . '\']' )->item( 0 ); + + $element->setAttribute( 'style', $element->getAttribute( 'style' ) . ' cursor: ' . $chart->driver->options->linkCursor . ';' ); + $element->setAttribute( 'onclick', "top.location = '{$url}'" ); + } + } + } + + // Link legend elements + if ( isset( $elements['legend'] ) ) + { + foreach ( $elements['legend'] as $objectName => $ids ) + { + $url = $elements['legend_url'][$objectName]; + + if ( empty( $url ) ) + { + continue; + } + + foreach ( $ids as $id ) + { + $element = $xpath->query( '//*[@id = \'' . $id . '\']' )->item( 0 ); + + $element->setAttribute( 'style', $element->getAttribute( 'style' ) . ' cursor: ' . $chart->driver->options->linkCursor . ';' ); + $element->setAttribute( 'onclick', "top.location = '{$url}'" ); + } + } + } + + $dom->save( $fileName ); + } +} + +?> diff --git a/include/ezcomponents/GraphDatabaseTiein/CREDITS b/include/ezcomponents/GraphDatabaseTiein/CREDITS new file mode 100644 index 000000000..2cc9fc273 --- /dev/null +++ b/include/ezcomponents/GraphDatabaseTiein/CREDITS @@ -0,0 +1,16 @@ +CREDITS +======= + +eZ Components team +------------------ + +- Sergey Alexeev +- Sebastian Bergmann +- Jan Borsodi +- Raymond Bosman +- Frederik Holljen +- Kore Nordmann +- Derick Rethans +- Vadym Savchuk +- Tobias Schlitt +- Alexandru Stanoi diff --git a/include/ezcomponents/GraphDatabaseTiein/ChangeLog b/include/ezcomponents/GraphDatabaseTiein/ChangeLog new file mode 100644 index 000000000..402744c3f --- /dev/null +++ b/include/ezcomponents/GraphDatabaseTiein/ChangeLog @@ -0,0 +1,17 @@ +1.0 - Monday 02 July 2007 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes. + + +1.0rc1 - Monday 25 June 2007 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Documentation updates and fixes. + + +1.0beta1 - Monday 07 May 2007 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Implemented feature #9405: Allow creation of datasets directly from PDO + statements. diff --git a/include/ezcomponents/GraphDatabaseTiein/DEPS b/include/ezcomponents/GraphDatabaseTiein/DEPS new file mode 100644 index 000000000..759b60d1c --- /dev/null +++ b/include/ezcomponents/GraphDatabaseTiein/DEPS @@ -0,0 +1 @@ +Graph: 1.1 diff --git a/include/ezcomponents/GraphDatabaseTiein/DESCRIPTION b/include/ezcomponents/GraphDatabaseTiein/DESCRIPTION new file mode 100644 index 000000000..0a1e4009c --- /dev/null +++ b/include/ezcomponents/GraphDatabaseTiein/DESCRIPTION @@ -0,0 +1,2 @@ +The GraphDatabaseTiein provides functionality to directly use PDO statements +as basis for ezcGraph Datasets. diff --git a/include/ezcomponents/GraphDatabaseTiein/TODO b/include/ezcomponents/GraphDatabaseTiein/TODO new file mode 100644 index 000000000..d82dbbb34 --- /dev/null +++ b/include/ezcomponents/GraphDatabaseTiein/TODO @@ -0,0 +1,3 @@ +TODO +==== + diff --git a/include/ezcomponents/GraphDatabaseTiein/design/class_diagram.png b/include/ezcomponents/GraphDatabaseTiein/design/class_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..4ac03cdf8c5d5b466d0f4d12d257855a42e38391 GIT binary patch literal 3721 zcmai%XHXMZ*T;d-1cD+E1ePvUsSyYS2wh$2uqx7PD4~TSt3afKL=dTw&;>;!RX`LB zy@>&YrI!FEN|#QAkSFiX?0(vr_sj3zIdjgLbLXD>zjIQpEUp7Ngg6)&7=Sl#7~3!~ zFoEg&e0BhxGX44c^aX5XW@mCnqYVuWVK5kPZ}0m0dNVUK5{U!`gNuucVK5j9g~H?U zVq#)0E-s6Ui}WBGjh1-vw3xnQ470JYWzZ*2c{4C@Gv72eu#3cQI;G{lQQ&HewqM+( zxjY0)#Fo5OBMtcsIQv&}FiQtYJc^~E4KtHyXTMnaUdAI$GdW0TN&Z1W6NPN>V>>xG zUzHU>&ZZP={lZYI{6^wG4p*=kK3LZ_tPS5G1dpL9ePZhQVXl=0{D+$?@Uxj~5D_%8 zGJh9tXsvBa@HF@@LRsLw<<3dc=`R~lDOa(Avz5h_F+U=1^~Xl6)oN_6dAzx^MV6I1 zfW1en&NG-e2<%)O#B}eT*ZEy_gWvx95c&alXT5eaO~$47-L|m|32o#@DZpHr_vsCs z2x_pEA)~2+AGO}(d{7XBKU21~(8Q(6!P!$uVwFW}n;{4GIJX=ytMhuy6?!JB zz-`R57NgkVZv z%=5)pN`HMi1Zlj}a}FT_oi zI}w403!ZiWEu#q|$2i@*RHhE&H_^I6zQ(gMOnLZ1#CjM0P~9ImsVE|+hj}B!GTs;Jl;7eOw`d^Q}+2VpLGgzoAylw`8l7ll^fl=1EuHU_k#S6=UyuQX- zM#No98>64sKq623i!wjpPSjcOBy@nyi;^^F&QLbB*MU>4xzbbN7`dmat_QEM)5~b~ zqjF`p1kH#j^!K}q6Z3NXI%WLto{4%T-5s&I6Tm}8rj?P~XCj(i)HS!2qyX`zx9u|0 zxN^XV;S?q7t_^mn?ql?~N9(WD;7pv~q~SO;-(_J4$6kwxb+3updJggAbHBceCs)d~ zGOR=}#R2Xzad`hHK(%@?fj?@Tzga8g!y`b|OItjdi+kjE173}*dP7GAo_3bhN_nM@ zqR;*9GkIUUrT1(JD(_FrMF1hTicTtXdNcNyek)$0$c!~oFNgWEflc!}x<`2)&Lm{q z(vvM>e-<~jaxY;z^I|~(x|1=NqHSas=S08afa%kytfArK)LSI3oMKa51F*Rdm1U(} z279t;oxD)Q`0nofSpVBg&Qb)GwF+@(ZH|?>4<<->*W(c4gKe*}_PR_-Ntmoe_-%%! z?*%fdVk_CqHGbQ(500o@`0(+dPI>7-!IFDECP7ZYy{HOF=FRx^@>+Rp&@*e+wU2uF zLAzu3ph~=OZ+!7i@mvBWlit6l<-2`_lQnTjQ>`qz#vog#A zFv$$`FP%^_=h1Y%Nq66`#116U8DJ}ViDafq8crw+qnqOXi-$$vzxLc{5lfPm#R&m7 z&5nHDsN9fgSqwaiZr+i#qCcbU;n~wkr7;{4q)YN7484jI&s^Tcz5Xtp3+2uRJD#oY z`OQ#*&buQwB+_o&n`eqJ{hC1$t%k0D#6Lo^(u#%?UP}Vt##iJjYODZ%KnG3)tO!@N zY#TGauW-BN^?hlF(xRqhBk{UBDerq!&#JPlPD);clGMfi*yQyG{qBcavQZR$rhmY^ z({jMcRpeoyWkgCApfM?<4r;UC4`+PU5Z8S8AfBVW%!?3=CZhQ}bwq;~X66Dd?8d>7 zRl>}5?IQm9>wC4{waBEw^W+-!*qUJnmhkuvxK6Qi`zZtWJn$=rSZl_T-(c;?in~$< zWd|nF{N`l1jEwBMsC6iu>yePbs!^w|TE28Bcj~KN_?#qqBiRs45*Dx)rxj z1-cWk1`_=%?y2{eaM)Mt0eAGK!57*ckB)w!#0D{mx?P)GqCde&3W;T;vAlpR+IiU0 zpW=xt;E;NvTo3NdOAdaBWDS^p*!XP-oC!W#8^m<2IL$I20%k54%zAP)>PH4bJFI8< zE&~&zX1^H;U`Lx)e@6CU))86G0eKY%8Y-rbDxkDx4V6o{obrqe`(T-OvC%)`z(E1T zXsNF#1`_%TEFa&*$#>Woa8W0kDdU2G@FBZ92wPemdQb$;#{qxM(1t`!E%86LNA{+3Hswqc z(MzhjAeC#C&G!UU4I+P8zYb+X^ zmsf4?(Em_3)LH2jDyOro&VMcJ$(;FWk9ko%m^^Ao-J86>BeaU8F#2m(D<-YJ^=c-f z9eRS*6QM_G7d}~#f-e%H=9@1NT0EpH!=V$A8LS`kZi%RQ{ic1l6U{DutO2sP`!!SJZ=nU*>JQAGDSb+82qhDb<>6*?4DSN>1ZRZZW5z>A*bjQ$ z6A|Bx&HZ1`u*h$^zvjKk+_Lg)N_`t4=@oKtP?_5tyw$Y&(v3dJw-O$m(D<6A>}u&Yr`vjckFb|Ev0_&dgA0b z;^6N7=&eJ>EVfQq=eSz~q9dZUNCahrX+i_ho9c{P?L)aii!I`l8kA2FH_)S+Muio4}prN!8iqQ$9jur{Z6+Dz3B@8=~xi#{VbgjsVS z;G5+mMMBh;Xnh(unRX!vU;)<=a(~3$wD7e2vVrE*`Gb|1q-3gIOspluD4kY%6cheX zuXcYjnVN8^t#ITE?3j5Wqy33woy9dNdkD zV@hMz>2GMSp)t_xL0#$F-FQYfKv%z?D9K_=^Uo>VYI=6a^Enw^+A%9RQHe5Lk zY(fMOa82fhWTdnx3r}89V8P>dHmvU?!Zr6#eX$>bT3uUBPhZr3E^3SgI%0SsJ3;zd zdtINJelFn4rNfLCQRvz$OmoIA!sYmi8Yfmg3{@5$ z=2iM%3|Vp7os7b?!eL2;3x6j{#5di4=(va3FQR_?6@jej50is~u=X3*6`~p@(>oWL zO0aaT8N|?!2EzV1t>H8QDGwOC?;!@C;TN8QZlpOkQVr` z|6Mst4vhElR}4~y^I!g2Ajeu0(T78ZnM1bhSt2nZx8Nl_&T2+04yaUvWH_|d24IOfq^>3QEDh%US`0IP4|%D znO5Uz-GKoUOJ}mlmyo;vme)mhn`oiZ-gy4)-FLT@-)HcrSXj<(uJUzD3R+tO4q>i# z>yq?DQGZx2x4qK1-v^Cqow4Y7w^uFis;H`8o?*z>*pJbqr>Ey{N)1t)v88fM=ymL~ z#v{DH9c@g z>TeZf>;a0ejde2uwJ!2W9%>v`Pn7e}A(6EG6LUDef`ZkK4xb?}_Tnb&25N__R-4k| z|EeUmJ|gFQ5~kB?N{uU&CyRsE7Ib5h=YN5Vii$dVzIKhu;2O$R$A&n&$I+|4ZCG8X z+`%9qQ0XQAd@=Ozy7bwNTeB=NTHxi!G_$>mirU8Z{!sV(%l(xyS_of)ySOo}dL@N# zA-1r@MDBJRJr%?Vo#Vv58(x|`L_{Y~wYTcI&Cc6nbGqjC@_Ig(guVn^l5%nk$jHb` z-gB}xEzSfJZIuv;m`$4}j}UHdH_uCK7ceVsyZmxlp#|b)zXGFCP?lUd^K6>Y{0cME zK6FAw3;2^@By)Sy#8E5_>)i5prd81A8@l0w)hg9(h-v)6WnsyF_jq6Bbk6(ayhYV< zD(FWtcz1bb5RX8v#o;pyHbQJn!dNS}Je0|&8jocdumV!n)`XwBgj?Is$OGO%-CtJp zcy$<37MYtvMBoaf`LqNFTcDkeD$%vY7hrphYv+;E*GSf&!FgBCHBj@d68DMr?yn{`O(rs+vM&}l^_ifMZh~AYfOCJ zed)M2SI8+LpT1RgyJ9*v9KDB2ByMd@-*K`y(5Pi&a4jKYZ|7uYZ_C}(H*X&@VmHehU-&=!t$F(ucVBokon};g z^ifaSwxQBTV*S3UTYDD=ks`J%$DH4|8M-K)Nvl3T!)wU2IIV>Wlwv$y_@oPBs~RFG zxXG~!+G2m6bf{0!{jIB0QB#xj_PLI1fc(~|FVL2oCp9q$-jFlBuhD*iu_Jg(2la5< zr_c0Xe5?n12Lg!i^gRxS=&J}im**>1!Q8gL*I5)$B8Aki=aNKnxUBC;wNAy#b`$M32d?0PB>?Oj|<{zj7R;}MP#!y-#R z$Bu0Co$r0QdvNKT=_}}KQ&m$VgOd!0T3TKXi3ow{?CL^;Ff}zz&&W`u!h}HV@S&nf z2z%-lY31XGM@As!U?75^lo$wpmE+>&%~PS#)UL_RRq~*Z8`{Ii3k?r%D$mFuC=dy) zsi_G<*(NpL$9s#sJ2I5%3VGtAqa$#Q&c%@r8FJyx_1JM{K5F23U7g@9@9bLk^l$4= z3t4Gn_mmUU+zTPXKryyH(GXYM$Kz!A$`wzysBa3Xe*5-ABqv)!g>(Pg#2%5KJH<+q zvc$vHLEkxTEgvh#dUI0e&^!BlO^)#2PvDU5zr zyG}osjI^|*MUpL^1}aAvmz{k|BIEmE`9Fu(OJ19j6w5BO{*W)nCuv9@tqm|pILdK( zd3j-w_a?xGG__w^(Iszlads4|m;)R2N4C)AnyP|=K7%8>CFJwt&H7Jb*Sr~veGok{ zXgVMm*4MIr?yYTp@#`Rl(ACXsJwF%$IqqUNr^oAJ--GS?S{9cR#+6e&SWocp_dX>@ z0+k!I5#$vad3c7LsNWqW@oAB zb2!f&(PGRNY8p3RWyv`)rq?;A#qm5*kz8|rYrtx-(D>cL((?ZDOwo(?u3nS!GZmb? zy!^|22QgCxCXd@5ldwM|SZSy~4f3{AQ>^!ggUk=t$C0uWd9D*gRxcYe4>$YP_WTei zuC5evxD$Rp-h*Q!Q2J}mPpFj2lBb!Y1Y7LEWGNxSL z-hMGKHLXIYrR9Z1aYd1G%g_H6lMzRj(9+bjv9lv?U~pK{z_6kWmeh5HIWo#1XA38} z0uLWuWIgCZS>_^p^#_LW@uT}|b(Dr=yp-{ zbM!VxfytrQF4ODAy}Mf^g~Oe+=O>c!@k1ov^%CFG^3vewFln!jn`{&2%f2&mUPx4yB;_{KZYqa!15 z&i?71o?Jdw+7EeB`Hlm25PvP$&G%EBB98*3jWgHhW@q0PC3i!q`%B>dY#psb(^75* zKwCz}riQi^q%66t!v6jcm{>S@lV+bGjgi`P<%jPt0V>0GGXccvxG^fdVzrX@3b`0v2|d zmWC@SUc^|HT!)NoACqXdyEi@| z@*T6wX8vj=yqXO#9)kJk z^rL3IF8-QtpraR{zLY7tt-phPd5UZNAzI?iofJ>k_tkQ^qT|&-QIL`|NvFlvrl#W+ z`|VC5UnvRreF6%I%NoIDyHcG$x}5~Q2l(f=lhr`^vena(0L>aoD`17qOo1SSiJ-yi5*cogJR~R$3hMd{{qwB!&f#$_nj(vU4@7qJ3H1 zTtnlL_>Um&|JKIWFE!Ny9UX(q?hImxddTb_UeLFa8R-Qy#@xBXqKXPwp}Zmh-*cxA zwYGj#R8&Y5PHPa9l$BXKa;(OKRbZ*94vpCRZtvA!OI><*2Bquu!mZ|g_2~-?($1l6 zgVgrzDr-1@OFiquPTD``40=7EzQ2oR_BY`r=-#2!eb z)9b>~^M>l2cHFIcn7$qbwe>Bp$4v;xy9aR>oTSWioiv{c7Z;a&{P%ApPkt%uc1oia7tzt8Hg5wf1;giW2(qwn+0zkjf61*uVfw?H^&EIbqWKI*(ZdY^+Deyy+~r;?=YR?HXJxiej|#1` zYt+ea%?)^qIgZhzbnTmCK}l%~i*UwB_V1hMTuyht`>LJ-M80ogtlzVAIJn2YMj;d+CFg$kyS!+#!*b>g^mH zHu}-X?#_4HAfB3S1tio?rdbbX7uCm0f<^J@Y3~ zW0oA!`W@uXn0u<0xCSRPd11cYfh?lyc=C$Hs6; zE;^rOo4j+KP6|JARN1}?H#;8>2Ym>NS68XNdUl0JKs3AdAg<6D32=9WtSP&X(zyN3 zg!_BW;@)imz1j7UW@g!UO}_o%gjXc+OTM9FmN&wHnu#sWLghYd`{D~!G(TIKxiSUR z+42psB%dd;goMOR3)kg*&kn&ZXylI`%uxWui5YiwwqM^WV!b+@`}x~uxm35OzwS!~ zr-G)YxR~*KNXVDpDmzc)Hsv;rx}-^-%5NYUM^_ghL6fS-UH&E4TOI6e03xR>6Qs%S zB_OsOxXa5KKsLZ2!WQwo-zc%Qb9FQvYes^=#Ky8;`}67O_!y7%!KCwP`6GuD9Jqr| zR7`#o?eoLG(`>A6*%>z0PvpLS&Arma6q_wy9o&rO>kL`%fwXgV-K}A)pK6e=m`ye4 zqqLNi`f9wt;Yx1$B*w6lvha9#>U1(6BS+Zd?s*PNr&pakHN`Spx+r;?IXQJbW5Ir6 zbNuM_GE|!qb9Py#cfKj_`K{{8TWSVVEM{W^{R)N*@+A^J2=ukr*VkM;JW6V6QGtO7 zV9~;FL=`_X3KA3B+Qv(hUu%}d*GiPBY0V>!)lfqgDEW8k3srEgt!3x_{*7DEh7NWJ zILZ4UF)B<4FJ7nr#_N9TX-A0Un6c)JM`Z{)Ob>o^dk7tX_*S>0TyMSFMawu2yVkdx z)iW{o69JRz`-#!?>Din*owm%fk!+u z?2hLx&7AI#*VFZ}Um-uup&p{9{+#(W*EEjK9m3Q1IkMoiBRnpTtmecwM1m+CsdJ!2 z(75YqSF@JY`NG<2;Q{Nk?Yf`5LS0EyT279muC5Lm_B|Q_K|n?Z{rc`n_tz{VL5@Yb&pG@?W@A>?%W@C z_y^KXTPK=lXziWt%`aP-^CYzL4^?R}8=D(9PEKs<+T{uhkz1BVlRe((3Qw;b3mNONQJLi^*H-x3%9w0s1GC|Lvt)s0#gNaQ$C_OUF z6iVt3Stif$O0Rt}*JiQ|1Ay<3=p_2Cxj8;Abv3o~3rpMo)D`^NltSa;Fiu;~X+R0d zH#K5;EeJv+;_|!eb^L8Pv&1vYSNRUWD%RI+^`erJ9y1nZt37?W41u26v5!o+h)X=~ zJRMJsP@bNi5Q$|^KcWmi$)>TSeEErTdF{$;XIEL6n;RPnn(pS8XZQUXF%Scw>w-r@ z+9?yO*f`kep4_Co^Ey-q3!tQ=IsD_?a370s>=(V3+ij$n+NpX$wS?B{9r?^5((j{> zgq8p#&&t(k&NdlxJ>E2&2t8S^LIxvRJmm}oYe7P(E z@-}&?uLW|-5-PVuNv)J0lcKxyNyyn#0D5zDk&v$mUOQQF>F9(rv8P+Yo`)jwM{iAjem?1-k=06d!V16V zRExS(xTW(6rktuX`waUIqz)=HD8NDNhqKDs+OlnGBR9k@QmI^>$%_;__lxvSIq*G>QntG=7(ok7gkZhrvGpx5&~MZJx#{J@!lfM%U0O~r4v!kwq@ z)1bI%^tmqj3YD;<3|r3HlIA*6)_k#<_Hejln1D%+O&umw{&lwSP$!$o<)4sMn&a6Z z3C=U2uEp^Q!^rBvDqQ6i(1sY45u2AtmY}6Vr-*~BYp$QUF&#@5cK(VqF`6+^bE%tM z+8VKNtJA(IS29y=IA=37X@XQ^czR(%vcT9Kh%R>wKYh%;DtRWFoGzZI;_7gH!dBiXc-5x=Ppmu!W+$v4BHUA~7S$%fhKwem-R1|NOoSB&kefJpW z#t`b`?cqqlk@)^{Cs%<=feQ1D>00&f$Xm|1zPK$L_n${Z&na8TDw>z452DCG1XRBBN2iknlpFLjNccP2_x2LW-$4jE!!%;S zV@Zi1QdGPOsebX!WUrZwSn9APez-k$9Jvt2N!yPGkm7pKyL@0`(>G`BeNu}v3bs7!O7H)4_FANKL_agi<4 z2Xi)OH+K#MGDi6d8JBUh+VnOUPUea|CmtsrenK9${qP1(=hXfg8UGi^B(_U7)1IA) z#^-vi6fOfk2tW~lMbl^zw2B+*O*?Im7FV9&wWYJT{ue;9wy`1N?EJOman@<9C9Q+IIoLptQSJ6M3&DpF|1fR7>RI{Hhg7m@+a}< z&s-q`nI5wuet-Y|-8eXywRjB(3>X?87iLHTqJu0bmskl{@#^tfcfVew*n9-u?Ii8I z9t>L?MbuFheW`T)Vs`;89PA$Tx3O6cv(Kfh{!zZDwDj{QW=Kv>*K%SWXx^5aV_!2A zP`;PkPobdS!(8m-s+ViFys`n#LF0OI%5oWr$LY*qyP7ASh{45+Gb3qkm$QY~1zU!@tB&@0-W9rNr zJtAlpcM`@F13-O$swi)!9zgf@cEXU*$fTni=Blb6(0U%KQw69-Ea6CB5Q5Mb$O$aJ zGN;J4w%tJ$TNb;Yj?K~ks}grJgS&qpbeuY=wRzNp$;V%s#wfn*M&|zh{S+v(Rj4tB}r&`lZ1SI2?z-Q44$;8n_pZc3nRUM|Nci%efx0#!a|VG^Mj1s zRe4Md=*b*zmbj&5WcKhE>Xz%TOCm|&-~#-bi&Kxb*osGJ|IE$g6_xa4&*aP;{IRUt zbLP3a=81rTQvM>pMoKIC-_V#GSr@XA1L_g#whKwk7nNpG9ybG}W__h*0|zAkPM^V6 z9(?FKJX*VJ^0Q zPn>^#;q3m3;Uo#m{VaNt%A7H`su7`0@ufiNe9U$A5|H3^hu>KX4)g{Y{TO6{b z^LY2?wt@#!s@oE!B_6$T7aE6+Ok=s^xQjSz`-13fO+Pa;^Yk=g+j{-4TkSB52csvv zqP722P%Aov)nMrxhj)8IDn5IFY=2ZnOES;BOVQI>P6uG?epOcfw@E3loTuja{O6O? z3GR6CSk_yM`)frYhOy%wndw8*EC;2Sm@_3kKVhQ=Prdbk9AL?K$`Y47eb#%6rr&C8 zV^dR=Q{MnIEDVU2VE}WuJf671S3Q(@Zo39Dw-OaOS*B8b;-Z$T z-Fr70k>HPBwE+qd+kb>DKA-8>eynAam@|I?`D$EF4*E{-AK=oCm%D3OoCXzQm1DWR zwwT&HZhFVY9%#}^`os)kTm{0PY7uLl@hxadeixPI*K0(E5V(uCNg z9hD*CuT+#@+6b-V%p9Oh=oTC}1Wf@I0>gxlig+E83z@@1+?6ec8aWT|0NwP?2tk31 zl*hxs4!(a4J*?=kY~J0uoi4JVxjFUj2UmKAcB9YU^>J$ULgl$DneTegeRwJ{CiLE4 z<_Kh@Uq7SP4V(~BDEV3A(!^JUPIV{q3r(}tN}3+W@eqkQYS;N70kxOg>{??+n=50w zq^+|LWGqQLCeyfBd(bHz?WJ+MY2Ll^l+@jdswm%PLJh2-K?pHnG zNkt(iXV6flxJBWXL5Tu;b72`7^FO3X1u@#dHD|5IwF!4s5P9 z4L;?RJ{chac#<^Eos=FRS4h?@fhi}qlR&UcN~Tbx5|S&a=>fCQ)C9!G^CM;XKXswg zim1?}WX+P#7B`_&MamL9cXyH!peOPrc#3;GO(8dj;rDc+?8yEPaMwhwr@H16=ZTCR zCPJ@1>iP6TMl3vcPC#FZx%=T3Ax=g_M5L}7lr&@%zl{^)L>gS1EGl>W80R=3uNbQ? zWGqDu(+268fS`_olCG^|=iuBwIRu}O2PN%E?t<_>Ks%~5NB&L#x6J$9&JYxy}0m-<#k$J9}wk&t@FY9B>z(V5lSAfFZ8kOzhpQd>n~(Eq z96tr9o7O;7-C>jwuzu1ljuQSLPB@6Ae;P1E4i_l#`Jp^6<~@oi>gf8=CdP(6=vE|D zYJ(Ujfti5x^(AQV^*fQfK8MHic2MSBiz3z0ozqO%>o+$DDlBOrn@E6&9Ec*!lSzUL zV4OBp)lic5&_?fbe~-Dllg6&hDF3eKOB(!p+IL^9?7TQ}h}d{~-@4;6sv1%@(Zg=2 zDvhT3YHb_X>R^t;5;O}#Mcojw6o76VnW(=@u&A`{c`Qdlzt?Rdo(PWYh_fvApTB#R z(a|Bax3`}!iND%Ii&UC?uv#=i=l0zCT<{)eP=2D@jA>(MKdK~2qGz7|JNnmH1)*9@ z(qAU;-lIt!GOXaI_&e~*_J4xtAtfyjhjbi>X({89sQFQAB@-1*q`TUF3>Dg+ zA%l0iYv5<&9hbCpcu2%vn6NF${=E6cGz&E?P1p25TGTRG+C76AlMFi!(brLxv7mvz z2NLs-`qX@)iqMd?6ug%QC2C{ea{`1>aD+okQt zm~kVFD1Irpa0I5deix-A_kk4PYH8AdLt!|9wsl)xIyGSE;j08!{#@pt*c}*t&1^}6 zpVwL-WcDzp?N&?GfXRj*7tv^8i%8-Bsr;U6q!uYaY-04UDN{WuAH-j0O{Hq-LE2){ z!+_K(s4tDrzfN8;y6&u=TB^LEthHG|9-7(4%FmQu^RnV&II+1pT7(5+kM7WW76b?Q zt8=kWHI}$FAKwQT2}79^jMCR3%lHSV6c()pQUnbA6@`L?jGRQyDbhD9cdz}#l=`wg z%NtwjLMf{%MXAc&-NzE=&nW%VzP;U>chr)dXJZ^kNn3H`+!4p^W*qX)v*q7S=zOEe zw`EB;a-bZ7)I!D}5Yybu!^g+>@3~LF{eX?v5FK=W8ng&^^;kT)?#0T zTq>YtNC^3aii<%@goOy zeO4+D{d?oObSdf`5&QRTq&y%Btxf1Z`tqt9XRH;mGRtPTbEegM30rx+%kpZ@ycN`* zEq9zKEU2;CrtuJUF4USUx6b;5*w!VaC}rPrfDITQ=YG2OLNYpI5 z#M>l>&ATCGuh$;AU(4<&!1i+)YhAurxj;&_RZqy9@;r#~WWPod&3DeG)o#T*uAuAl zNuG~2NzAs5maqhn-&KXXb^`nvKeOD#5tbRkNQvom7>-psLc+sY(*znuFVEzA^_i4( z6#Mq|kkK927zuRJ;g5+zwHYkGE3sJO5RI4rczCa*q5Rdx{*y;wyKqq>*O?wcO<7s1 z#Ri*gy-I^(_Mh$w(y*Pe9cK?-{4wJsbX+wr;*hO5UWeaHDC$j#1}FE8gNFqys9k3I z(g$&|=*~@M&M@P~m^FuX*c0@t1NTSY5n&7$DgRa4V>QuGl$PoF_JFQiE8lI#?126N z__svzCQ)%wNscRL_OA)JUD8+DJSIUGN9`00M81w}RA4!wj(|^QhmI5v1ngQug6dy$ zw!3>5eS*NNHkZ@)_MzyW|MT9gH;|Nn!G# zdqg3Mje2$7!u>ncq@e5C?Etenn z??Fh)%?9!DGiF-JNHs%ekq)u>d@1pwzPQrC>&NV z=|4?YDUVkHZAnH(`vJ!kN8}5>Z=CAPjFCzGXc?g51JbZQ1WcN39W@z+$w=?b)JTN8 zIRg7Y^1R!_&9ODwZ)V00zpyZba8yxV->1-aZx5*j<5%VKFbHaTdI@ve`vU7`$NNlJ zqORrTI$|Ah!L*MkSBkd2_foy7z}pZfLyv2J7@R! zvLG5Ju4F~#B=$Q|3OJ?jl!22WOL8_bEH&JKiU3YW!_}9-CEtlswZ|pweLOrP6B7s% z|8Ht){n`G3nqS%f5doMAR;BdrbF5r1NkdJZvXiR}hVnGw`d4opq!E`kon?E4f6Cv~ z0`l6>iPdX_Y}z%>9G-|`JIxM4aK=W$50PAiYQ_S_o`_QFkd0<|luYB-Oa87gR8T5! zie|T^>YnrsGN%SfC?EG3eQp}hD(h2cB>pjJwxMmpeCWDAG)lYsvgnbgRP<8FK`QX@ zmjH18xG`vG*6RIq1es|aepA&fZ#ofh#4-Dxuqq*6>G{3}q9l6%0EE|x4TD!z5p%kd z@cMfquPb;U5{2dEkr6ZK4aF}~I!x%WYPGFYbe!fji_`O8s#?xgdG9hDB}fB?mP)J@ z#?fwSOsoCB70ZJ<;BKkD+1yrpKM34B0daA_={MZVuN$;a zm6i?h$zmll8|&-iz!>x?ZfJ0PsBSO3UN>Ak&s@F3^=L^w zZf}ZU&(qYQhp$;u)T~G_U&2+ngdrh6XUbU2wP^t}L(JTN8kOcgkH8p9i%kNA)Q1NT zrRY9~lfQURA_4aHuGUTP|55nBhgXXubqSlx|E?ew!`e2&+TA=n32Muj>NdBb7nSmS zBKmeECTghgCmUh%57Y-`)kxj(1q&QhF-p{MDd>?C(>B$|pP22^Y6Hrv7hf86W2bXony(#J^gTAmEHFLV3XxJcsWxxc3Og;4WT z?12GDN{YHm*dI4S991klSq~UF1G+_kl}g&$tWFa&_3Q_4-=zz@)ArGCULHQ;goWL? z9GVUqv0OG@P7Y`b8o`0S5OHrV+FH+geW}SvtxU(#zPzR7qZUVb&&UX$l+?)JRuQ*j z3ZH$zjMpBZMF546$eAYkE{n&V^v%(#=hG4yKv9GR;o)>TenB2yaNFYYD(mg-UDAEN z%!wm~9|%;82c267AOryF^>S`95Ah?2d}3?qJbc$sLgCEw@L;=ds2| zi@yKGPEBD`l!yOTq1o8LSh%{!X}v%B4yY-5^eLzaVo#ZpniA>;`PxD2CHw*TOrt~2 z)$;=x#@f4>Wv=gBb0~xnW-L{^NvoRHWR#q%q=9L=g|-F)pdsEN4#N`o)*kSaxN-F$ zX=-dNlAYLB^tIhvI5 z{f@NA-a;Ful2ZaiskDh(!NhNy`T%Zkzo*G$K+-Rj1jEVx~^vJH=iq z5t9sH2HnUjm6*wP{$@smQ->YrKfrn_LH2ShQiGFF!cE}oe@{%DU#(~`?YF|_uCDt8Z|cj{*aKeSq{AXd7jxb9LTXW3DOq^+SI_cdp5p- z;_kgZ0@xu-MFAi!n#iVgcPHuUFGghm&HtPA!1CA(DPvP~v}<_lx`qZfJvz5PxA#d? zzR?B-`n}t=rq92cBz$Ki;tE|EpoQrp!>+ROAT()@19HLb;annAo-e#hU%&4s@!HYR zXc229x2lDOg`I21MgCj)%O^lL)2v{P5YfNt^h9xt>1WM@vQB(j>A zcFgpX!|(DkN{WJz_m;1@&CQ7q9*1#t^^M89?d9cB|Nd!a8)rU3_zD84S5i*u{pbfp zVDlIp8Uwy*)U0G7AUXW5sMzh7lo{H@ zDxYg<0o|I!?hiQ0-V=0B&t56FOVg#gRk9aSv$L}~bDU8~U(auDNU56?=gG;_-b-k> z?;8vLJoTNIlC(q3;0@BEpBNn{Cs`Yw;w&^aip`Aa16~CS_2*v4UCFO9rt{Z3D$9Ye zNLzz3c~(zWADFA`5nE4qX04Y-byy35ZCn5P79ST^$V6=%>$-tkz3&IG@zAloTSaaM z{9BG%NoZ&|85`F(=~Ab)i7!d%V<-35oF=ka!@&0d@$GpZhHp{Q+mkyzG<0*!6}x6H zA!!e5c{A4e+9U8YbQ!>}(!vHgR|3VJuE6U~4Vtr&kvPEif?6l4H3Yx0d2F~|^5?H* z%*gTC^>ttQ!qj@!?Tg55c?>9p)t0vtQ%UShB!0m2GlUYSry%)F((I8)l-B8B9?i2r z#3A?gc={(`K#G8J#7Y|n1&e}?yC-jEh8u-E+f!x9hVP_FPd)HmGE|DBTAnR{#1c0o zEjc{Z0#5CTX!gca`^r8f7hV|k%=I!?MMu~~5fWM2^Jp7^jfb9G9ODJaC-&x!e{?1_ zxxpxaJF;v@e_V9lszc(xwp7e6_&};`%+Xt{{NgUT%8gspuY0mAnS-s5f)7>uH5 z;C0F?F2-k+M*-#x5^C-skFvy^z_E5>Mn-uLF-{&=6k>ikAWKL@5hg{sySe?B9y>)U z|0sstcJaN$JC(@>k=NyU5cskvnk8I8vIqh2Q+#t<>NIaa?rg07RO6+~vy5SXVrZ;q z^>i3J^{Mq12l&E5T09p=PCpkfGf(ly z-PBQscTdla?pts~zB}B%qU1P&N0q1LMRRO-Ek<<4VvO5EPEfV}=Skx$j-A+)B%r=6Dg!?nW(H3GBcz2KV6u zCEch){r16ubVVkJ___ZwGJ0ajB+jm`Ncs2>QEtVNWb!7nXDqmV=@S1YLz6y;a^BUH zLJQ^(WiMM%AB!QaD?Rdm_W%A)9hTDKz>*mkiHkPPzX8p?v+D-RrJ3-@XOMt zABps2!HedEzV>LBqsm5H(S26mlq}E{4)JCu#B`>ACPMl*5K&vm*tGc6A>1}DBqEMi zQ7$;Dg_34kY7HL)tT7Ibj?}b_eKRvyU@S?cxZm;JyC*F=x;N)NKptIPUH$;nOw;nD z9`m{?s;Y`*t+b7K7tL+#{jQ#O-9DK5O+TkHM-oPgwH^8IrT2Uj4!OA+E6B#i#!CAU z{t@LRRIX&R;NH=FW1-2~WX5V37_;4g*>J_j`;$RVnf&O|vNpG#!+mO`T;cAm_ajJ* z?$)zy3M#$n_lzvw2S(z{PI+P}A~__0!w2XrT2N!;sc8cBW0oHY+?%m9kxr{CW&Rrs zGSg{7iQ=55^Q<1cx|ko|>roAm1~>0Qr+=&5EU_E%06hW{!j_Q{jQKD;A`^5EP5O&f zv<^;q`otUsws~IHGMO%emw{TC&V%t~b)_xEX%QNj0U&Bp-V7vk<;N#G!=wAt`L|Gy zw*@r0;WIuoN0_7O0(CQwz_N@3cEiS13a-ix%}J{vex8kmw-6Dh3ESH&6=*)D5Wjal zH9g%;6O9)Zu)0r)0#lk?@oJMJC6KL#EVRH(lWf{lH5~^-CamcyBR3}R-QC$!jeN~% zCnS;Yov_Fk5s1s9&%n+UgOs}H`ypZ2e{fKe$N4~1*GJ&|{2XxJ-90^kyXXNUI=&o< zn;pl6%F#B1M(-lKP!>0DD@mF1&*#Iar7;!Rj4+&3xeeLyP|?sJnn=Fg@#DW2mob1z zl=Dh~fP0ra^n)Z$1K~%opl6Dt=>Sc5b~rsCf}!+O5y=b6pP}Yv^5yc#nA;*aIf;zd zkGh0pK7j$L!I2R%MnM$bru6J={oGuSY=wC=?AfW%m2}XTSGf%-83jamnl6jY4Z^Kx zJ_%r9CCFx2>HZ_e#ufqQ@X=DbA$2T7R_9h|LtU~y$95rq#~)Unu>aP8ODdGSb2Yt~r*kzrJzZPMZ)*zC`l#0+&)w>adQQ2l z@UH~!kSMeznv-6nkn=jJeu`) zuYt){DgwAYp2O@Tu(03V-=h-{M5G-ijLDw*-q|BCYU|(L*j54S^T`LsH!lcr`?FH& zaruiAzo+lp=DNka2ow)n=Mi~8ZelED&X+L9GZV|ia^uGO8+pwFYw{WpN z=XJjz4q>wVimJb{^YJ5lbU7Lt_9SOd&)WLc9@Xt1ByfYMXLe3q8ryz$ zRm%V@RAO3Pr}6~5XNZ|pyvuQS>89YFO1l&9-7%)%-;B*FoOL_qyqU2?Qn8HqZCPwr zRRXL9HGluAY@QMeIYkqJ2b@#gaZwtlo0)lavhd{r*~8Ows!5p=$XxU@cz-Gw4L*I^ zL-L@IOBRwIb_aBll;Nl_@70aS*z%Td0^uAH`bBukpJEQLkvc#QoGo$*}L8vC%MnHj~9 zJtw;FFl>spuw7DAqq|4_K~iPrYF?9&d3|cheN$OVY3heGif$;h;^AR8<_%s)biA{GEv9uUZ+Tu2692iuY$x)`n|&CT~fb$sD_JJxwDhFCn>w5=ZJCr0t2DO z$H#paqpsfw?umLUV6psJ_!IWc*fF}7wkU9}Ct_@jWn)wRx|f{@nA%3|zKNwb;SnvD zN=ZxWP5m4<{r>yGj@pKEH6mLj^;V7z4sFs%BrW5six*#CjDw1y>W?3$aS43McX925 zTL|xXgV%Sq-8FooZzz6Nqq14w@u$v~P*)h~_HrDl-ssQCLN&#&eqjq3>h$|DSHxPM zx%=F4H>AIsZB6x_5PuSgRFK|rW8s-LQ4uG*6K$J$z^mUqG_+65zqfF=`+WrV`)1f5 zvjZ@(B9Wt(_h`?FjD}{iKKUK5B*a?*Rp;G1I7XUWePcenm6MRT4^77X)E5)C+;-GP&56m5L*%=6EZ>trwEr}}vkH|9BsL!anhv|XssqLZyp-^@-PD-UkX zs95pcd3IMible8tlSNhY5NzQ`m`5(7Lf_5ceMaEcppgRs;bMmb zmQGE$m)#>g{@v-XRQ%e2m+T(vg6EV-63@}^GYX<|?;&5G`Fr|_d*fqqN@~_3 zNkr<0j}T^{33cDJdy~Y2NOI z;joaMxkslS3Xj`}#G?@Wui(Q?Da;k0S5`}t0qg^Y`u-dusi{Y3=L4|?n7eu@)5S2w zT2q7k=Jv1N#?)+W8N=^%z=%2c^8yX?NG-c_tEi}FS5|r=B{!sDq(F-RtO3F1M$z-b z$MlL0B4LIGT-k!Ix*`R0E(&EDdqjlpxn<(HXR-Jf?ZEO9KjndUY~s8$(h+}E<`iuI ztZ%J_WN6zIeflFBZe|f?QN7x80MonE-EZ+(@3ILdBMOp;`uEoB+)B#8fa2WiEB9RH z!dM2I>GWf}jK7i%RT5nMmo3`iiI332!lI~XDhjCYF;T_PAkomal@x3ghE=m~Gk%$$ z?3l%loq$*zJ&j(@I5Och*VLqXaKEXF&d9KgmJ+OR@6gMdcr^Uwyh-@*JT>6;t=B4a znnOFdu8>tU(oa1~Dc^;%710>tD+@DSB%iaNmoZMU5qg!^QP^(YB2lTL8f7)z$LRpC z3X!kwq?9KPO`izq2(b0u)lAh&H9y^3LqQQ3 zU8G(4Xn(d=^7?{OGFR^Ups;%T6SnE#-=W+2wz|2E`Fdks^zi)azG>!m@u{u^9rotR z;|V2pxUrM9>~7}j%0S0!P5O(1p#1Bm29d|z1RehgE}so&jAVR;&dt|=E{KlS$2o#3 zqbgRCqlb^aqrx9{OjU$V4i46%eP37y2rs+Df1!xYIpdtL!Xfdd_GWL(1L#;?u*c!!MV9(-bW;xMQ>c^ykjAKuu{9FgT zZA9u(uB~sTqP$F>-!Xr;$KJ8+&g+jcBJW|7AIU=!80FfvX-{@BJhhB5HdM|(7KuUc z<5H!L(!=X45e;3ic^D;uQX{h0GK?-{hbC1FY$UHTQsb_sBO9qsHq`;o;koYV<^|Tw z!hF45Z}m9BNB4ZiQ~SB?|21}&L2)%fqb3BGK!D&9V0m$e;1GfbcXto&4haOeu)*De z2MzAJ5Zq;v;LftRa}VEl@BdpxK~ZcK=X6g`Pj^4vL)P@XYRp;GM&8R&&4QUSEafK8 z9EyA^aL?69C-b8?1yPRT(6iOn)}a@6oj`?!7u|2;Xxn{wsb-|r0P*@%Dj*TIS!w*7 zToBKnDJF8KGjJ#5)H$mgCtZ-~v1+Z`?5j9dL($-H-X($Kwm6S!cNDa-g)eY@ROfvL zd;a&RSt6_=^KMn(Xwj&CnlNK)hJ~^+ zAGDFLw%m(IQ*$=v_wN;lMBDWLS}F?;1yANa+!_17eQxs^3J#H&7D!8wnY-c<7f*&O zr+o^2Yi=UXx6bD`B*y>gnC548HjSsFLs3C#(o~e|!)^D^v{?ooriaC09@*ME-8 zpwDR*QBqn}%)?tXhT+w02AmtP#$p>a@=!@mVa=#busLyZ^p7+dW8u?p<4%ho6thfM zp)+H_rSFC`lK0Ekue$R<h0D}vn)22}iGVdjwWP7Fxj|qNlZ>Yy*uOMwsInWGtHGXP9x`P_Lag!k1#49FIL*;UtW0g#&aZZu?m2)}ji2$zcA-)=e1Sw6m8R>#us|D#F3sI;sVnGx9;T2g=g z`YCK`?%hU?Q$3fRKMiYH*_W{l@o(>mNLVf9?U>=-nL`3!d1_PSA3IjykxR{b&MwGMb;e#m+9HJ21NLnYGWO zb5=GK>WSkdz5jW2y8M^Wa@TU`a|EZ)^u0=OPF>)z%%J8xIO{;AG=aof#dv2r89!kc zTZr?JZeJNcMUgq(tX4zB9!Kg}f;JWBoEG}DJ5HZ7-{wl#F09IG&h8C=X!LSdQ#Z^? zASBl2ORhXQF^$))^JERWh5iKEOG0nmcAW=oBg6J{LovMpz1*%m;=HJ?X}gH*4SA|5cx4JDuM*+38;9}Xup)bUtI zY>J09y_Lq^>Dc;HY}D{}50B#8P&8>NDeP8U546|R*OQ!I_%1tY{ni}@)Kk-5laPHv zN!oy;MB}l&9rDiFEugaVX`kAF4IA)iH{(I;MHxYVfl^o3?m7Gra4l1tad|CeQAImD znY*ciK3r_0q2q^}PRgRA)TmUFy0*4+fw4lKN2-ffw1mUiCV!7dQXPn9sCxaPAQV%MHX0EF@mgfR79BKmg{Vebr z{3Ws3DFuQ}ZAmr-uHOC5dK8A|92>Y=Q34NQIA53V{bEsuAJk$uL8eC-Xd3i(X zwWGon4m9-iKJnw_H8$eNfzd)gUASLQOs`1z*fJJp3+p5`H2mkr)SqJH6KlNe!?$f| znc04XwKJ9$Yr2)~{DlDw5}4NiTRT!aEgDG~Jz3qJ@brYMEc}QgDAanhy>fl}uQwhc zGT(7ueO)P&Bl{PGqL)`YAll@8e30n%r?Kn5#C;>fF;~$oeZ&u5#VH zoEJC*EJ$*M!`YUUv)AN!>GEN%IVZoR3{O*&SX&zc?hlVSkPtqv+U36=vCMS#H`A(I zdt4VcSX#YAS!}Z9F0xhA(fJBJ-Y7S|3$7cThGK$F&Q?yAZ4pGQa7nCC8e5k1DDR z1iCe(kb&_S)}(fhwx$M#4s&p}lxQhbio|KjYv1<7By4G2UGWVU$Ip|1eB9u33xHo$b?x6I<8{V8ey>|T^pI$L`C+=@gnVc#K$YI zH4+Dv2x{r^RnVXKhQ9n_Z@>A}ahYY;bb`v~+6V64JK0}PkfGX~QCG5hY7-a>?Ed(} zuCn#p&t%H+wH%*h_~wBQhZ7qZ1P{d&g;02{jwb)s2PS~ja`WyiTC)w`Qtymq_y1IW zew{NuOy<-sVQ0r|Zih+_zWv*u;&PD?E>uTabiNd1WIcOOuaM6F?Kn2};k=oM|7wpm z%SdVe@;oCw!{>BeM#pohw8?;NNl371cXdtR=W1Ksh9M~#+3ks@_Rd4*&;R0zTj@Ec z&Aw2cD`qsF-H|y}TOA87EeYK`zQ*A+ec*p1X3yE*FO})Kp~lv}p`Yn@l_m_I5liK> zZs6|hVy=43$XRirR~EkGKoEO?k1C`Ir#+bb0Gb-%fD*T$Db{o97&0`%4}&?kx2$5X zOeTAfg)fR_ULMqEeLLlLNgHLiV71MX8I=zEA&-ENP*sQjAvKX8DjydO=@okCnzE)c zd){i`(NN%BEdQf)j28F6$K{W&&p>Hk&+Ru!?UT5tG+m%YqYZmq`GXB5)%JhZzyFs~ zmCw*rR$jAVzUNnx6=^um`TT&m%APjtm*H^d`yLl7-$$hNQl$DgMvakCGa{YoYGRO9 zU}uvID%Sh;a#DM7Mf)Nw|Ka?Y;$h7NKeFF|SeiT@Lb&+}i5ATJ21JbJJcSOKo?jau zh$X9GiLM(L4w+UK>0h+oEE?^LA+}}}ifvr;NvWyl^*^7A&T`CsNtbMVN4JM|WC4)i zKNmlK{~@!pkVv-FUvyF=+mXdeS;6y%>+MP9siF={*4cri{Zjogz=JPU%r@~C;vvsbnj6Uy-quKeOiZt9+I2gtmsjcY)KyvZ zbLa->zQxbi#@4}n=R%TTa(1ORuIRtNe?Mp4&PHQkQoItjm=xdIzAdd<8^{mEyjjxj zJR(j6BOxOrk0_AU)z$}+LCMI_x3=N4?17^42wH9TqIFiI&P=Jk!jynT4@9$f_RuQ{ z4#AUKT3Y_+sIk4B67XJvhcX^NR(j%+0Wi?~ONqVDFHTnN) zslVtR#Xw5q$#_UPeOaP^Seog4;QCPJP&W`YZLho6Fv?~xSY29cUzqoa(}3?^qLUev zAyCX!6}@KGC3w7QJ6G%ceJdf&^K^5v^cG>$Ym`{{F@P@SrDx^XI7J%jvceg5Zv z%bS6)D!@il;X3SP!}B+C8Y^*7j*z6exW2~62>k(y+%R5?o?VMCZxL+GQ&yItOYs;k z6my(%O1sb}q=wR1=>9R^taVsURy3-8m1C<%02!^A(M)#YvUr?02E4MB3~IK7<=nVY zS1YS|WX3=E?Zk3qPeg0^7Fj$*pu&VsCZ!E0YDbdFW!S2_j0|ip`P7=Kp+AD1BkyhR z`{%-Lt zR@;ceJeA*b;SOxVb6ft{uhG)RS{Bel46&p|{>xc>sDJ(pN7%#OZ>uwzhW7!gUWp=a~N-(gN6_W`k{D7kH?y6sb+3N&Tuc-az4 zqOyGKJIW!Rk_U&5~qwSVv;>n6*MlHoP*sI~tYTe$J4Aa}ES;CmaLvFDO`nAP%x z*zJt=>Mho=i3HewPxGA+C6yr`^sRrw#qpHQcN?l38WI@hpb@){<9}^`Lg5v8Pr3VT z#=`i$D&R>p$(X*ZYeNe93A|yp>F2dDTfJ05l6eCx27;LHxVYj%gTD_bHo(Alx-tyZecA99?!>Qt&U1r`S=2>bY9WF#!J4yQ^LRxOA==C)c`?T<6jxlhvi2~CE(pgMf?qT zUq?}zcb1+~Hl&trptCL;4yz~#T-P`_{Lkenj6HBBWkaGrf}SR>?~*Tz3>}cM0r37? zAkE+NpUat(vhkMa_lra>L|BFqdl7oOxMCy)St%i(MWOJUT>jLZT;~N(vp6@Y0WA>A zyNz_k5!O7v_ZuN9lvqfXzR?z*?<63pzmJ$oi`4?+res}Du!nA4P*Ujp_SjQ&SS>r0 z#DwcjisKYT<;I$);z)KLLWBz6D77ox+e=(2W)16R__HpC49|Ac>C7b+3KA3+@#CVo zQX@(J_}Q(t7im4sgWu6DD$A!^gg(ij#S-@WFmiXR_ieZimJlW6LyUMrHH*qS6-|51 z0r#Ok-pEw43q-VgYVxltDtX1g*I;3*WM27Tj}{$hYb!NO67z6R+;y?R!QR$6(H9YO zbpAf?`RV>=MJ0kQvxTl4e(awN)Nk)mKYc_JAQ2RV@+gAhA(6P%EG&kQILYdK)e2c8 z{dvxU$?yDoEwpd?%yde(XWH1(QP|$et5+LfxHNu0Ntk$zmmo|$_;YVqdqMO4v|&kY z-9j#(4b3n{ZKCg>>`-`2%y%U4caU7X!Akr*SE8o@W%yf}Z)^_7sEXuyQ zwz3@;_kULE7AWQGpeWV4*D7_J8FF$ZZ7CBN8hSicZOBxl-+eKNPR#(0xXBYkc)VpY zyu~vN#c)8zYr)abl}O+v&{Y%$z0=i7phKo(#07(dXjB;(33^OIl=XV!v*=Jr5EJfF z?nEW}Xaj^i&2EFZB-`G#%KFQ&7dXq$O87DJ1g zR4uVJUGn}`_SIHU4>Oe&<}onU7J}Is2|i}iDPO22@XY`zgT6JXpVUn+uLPTPS z3nOJ}nKa+PiD^*wu|?-j&3*`b<##!@q+$hXxn|x6k;Es5E6=p!9lgqT%6?B@is-vP z?mMs4Rw+y%HSBoG{SZ2WA|!z|7=xvDI5n+0CMw76r-J25k#oDc53L@O_4p;jP?!(? z1S|;1|+@+y&8j zpG@O%zgeJ3HSi@cXC)0^4-$qPp;>^|Xdk_)DbdgVm=(WC1+;JTzsBFoxe#$NA4~g> znU)mCvasAWa!7@fI6aP3V3t=Bi+J(cdDZE=8&1Xn-o~pRduXOx)bd}(?AUR)KA}at zrw4h3CKiS4GwDI_dq!KjG~2le|Kek;bXXGO9M57|}n4K82GGZD6;%y9xNVe`Q+`2ep2qN1VOYn_Z2FT;46L|5>JL@FWc z#YBlV*d;hvBGEu~)GmwSo>#D3{wmUGE@|@V8o#yPFd;amj^pOcS zOccg5%~}UT?*33q623R3hwQjm;Wvl4Sn~PQs#D)3scp2?*B;q0?UeFq|76)a(RvAf z;pu>6yKkKnP~^{O@GgX&Re zOT6wle`=ZAexlQzNA^ircx{dnL>-}s)s-Kg_{Vp<&)5Lp-7srQ|K{`zH0tkB?O9GO z*e0Udsc6#e`++K(0b4kE5zt#X@C47h6nTkh1K^0xqgb$HgeF^I>lZ8V4)S*H{;KD? zn!9D`M1QSU`i8O@-W*Jjp}tt{LxBJp6GT;<2G7qWwaw84&@G4n_TAcl>B}lD zvLz^)z4@(X21g?kG_u~G8K1_t9Zx6!a?v5v(#Tm0<2+#N_#|BWgD#Y@KicPUyD<`i z{iS?>yTQVDienzkhsn0=crEj&icIwykez2VP|KnCvT?!#FWE6cAZ?kiwafh}aj4|Q zbh&f!;VJ>fxy05HY(GFW{%d{3@Q)YYYv-dQx6H$RS6ij;j3~Gm(jhm@Z)2jm87x#j zMkTrsESSI2f!;BR*8dmQkrXZFLbs0+x7P?xfC3e21)A`j$yXxIAo z`XMNgiG|Bqo^w~0Mu;N$1p@*sQ6ZpX#c-h`BPH5AE>M*nQMvKlTuW1F`x^Dn`{Jg{ z=$5iDiEq)6Xw9GllFNZUHRMLbHP#w2|MWDbSn%5yC&1WQz;&bw; zD1{uT=Cje`Q6T&qY%W$KW^ju+pYgc#7N&w1zw^(0(KK&VejzW9qjj^E08)-2#>c)r z>)Qr;exHNTzGLEK%bg1m*D-=7vNdxKKoVv0KjbFVdt$%^-oU(*iCO5Yk5an4G73h? z=Xz0l64mrC9_=k7J1FVIx!It}(6LA^N3!l5VGq5ruJ)ELd9)?-+d^d~u-R}9W|M!h zSfgd0t*7$G83HHVN2#PA{(zPxpdj8qh+NSlueufyQS{3zcS?D|ln{g|*>jBik=as& zHc2sH64iYF^Pj+=bs&Iq*D70wx1Oa9(5pDVnrO4bhqlhS3>*zd_It1}i{`^P?FH=! zekoq1z^E??sV@n{4Wy<-2D7$hC*x(JiU+la{saTTKCG&)yb}{a4lG~}PhlLY8fo$@ zJ!BjRK)WIUwhfX0T;>nPaPbh(TJ)850m7CbDD&lsN~ z$r)|ZDz)3a3>401>i!l!v$EoY@a%<4KB$un3{o>QG5IPB0>c+bgVH>0J@S9ocNg61 za;+-}_FxNl?q8SG?iALAjoFF1YxoTCCy=jrUlW~GniZ~o+O4;+(aB~2+nXZ$RiEDp zIL}Dtx0qneE(vEp&&y*;-qrm6zA%dPGg_9OxXA2GJgnNd7*iJ)ZCQzEkMp|YGfp4F(#6R1-%^RGwBkyG_N z(WF!2x2xFc^TY9b>=#FJ+P?p^4&tOeJH7S4@fUpv?36V`7sUmXKm|O>XAqv8G>xje z2=)7Q*@z@~C&x#~zp)Q7%xS$92faS7#}0q49L1B9Ob7fduBPr(`ppSsIr-F_Ua8GQ zQ|$G=xiTBx3BP`l)p)01YGCpT)?O2LJgN`mWF*5TtR`p7`2+86Z5hiYTmHhXH!pqr zQ*pXcrO_fxa(;X^4DB_gNkE${Q3A?tkwl`~?FZ`FAaX@X3dUEu!kb8O z*{+r5U_W8UHY0Y?oN+l*bR?>mbsiwy5Fr`aZ?@N>WPW7W0DV?s4rEwYYagi;436q? zdGLc4R5q^FygV^ZG^zEq0=&R#oTEf`1EbtMkWJbkP54 znB_91B{L$LM2DXuVCaD_-HeOV-68Yxj$lR_RWnWs!}&<*0(S`MqKQa|II%r2S`YVv zfV=!o_F+}nX!Q)2OlVa)xsV55jZ-o+>sVv4_2ggpKp{T1|Y`pyt}gxC!! z!87R{tV2qYikJoc=Ywusc703;BnSLK2@*Sh_;!POf&FFEa8siJpGm7B<{t{amS#VU zp(n|mev6A>&w#GM-MS;|UY?WEAS|ms9@ZVPwMj#{zksL45V5Qu@tb7fc4Z-ZkTU1L ze{A^;&M4cJLlxe3bc)B&OiHa%8IG!mpF0L!P2e=8YlBAUu{XshVWj)lfJ`4hmCgDgaybKsS9I!H zs}=#wIHEc8oRi4G0kMET3Zx~B7MKJu2}v4NEZVS2NJPIo>E%0~)GG70yF zh2UMjzkWy4zr4_G*c5F)K&WhO@BBe1!%wHvR;2Zl(6pK+KO&7hmm7q2{SX zpO>M*zTmpcH{^jWDe%w9&`i|U zAr&&H44`wf<<^=6(~|Eaf=>b>-tGiHzKA|tny0MbP?aVD$TNPD42zOWsfqm!pGVVQ z(M1fVWl{OZT+m>FktDUbHw)EWg9~PObx6pNT>VM z)beL}KYT4oiKu4IdNdb0q}qM72;cnYF=PLO;tdp{@ifVvbv2v*2*!usV?pLl!7;I3U`H_xV*uD8Eu`-^WTNg%AZ zp+*s1U`HzMwk8qn36Y2!!e(W)m@wq7`S(y(k}N8J!?P7E-AttU4*wIns4#GL6Lq(T zjuBg=GE#DyafWy=zqi`s>08ZT^v3C(bHk7gYg)kb$@a&1*xtI2Lc764zr%=xateNe z?xFEc2uvuG7Jn;8#lo<2j_behA~uWE zqBIFv_YF9In5hY|w5x!0Mn}R2a|#hF{33@f0$d^8J3igx65$5;* zm_KU1>yf4kBk8Yp$Kt-NcHc;jGaZP~9}2fM(L+f;=q^Tvw_=>y-QN5`)G&}VGo_hC zOE^Wyd*WE%LogMQ^jcFglLpB%gyG}rsuAl8CLt%$tAVv+i);sL6^w(ZfaI@tyXZh{ zc|l1qzk|e-ohu6)Drz5!g<@-`6*Ik8RIrqfvz8KkwGG6 za=iZlMa(`7g2PxC8EOxNnZdzFZCXFx0f{^gGtQm_4%7CWYDyYB>^w+8h@oA$G(O2; zI1z6AFr;tlcBGu2vXh?bC33=6oK^wiu-OToB*RwE$+@|(qUKZ{TRb4IPc@2+j|K)L zNRGSEkfmV!3kj4=5GRRbmTsjd3C1N@!I~!5my)rkeYBz*U)pmFqOx>o5wu%xLO-^#J-C-;Ayl&I^7GK3TMSmCI0yLX{Q ze3$IfS7;7mneDdKKq<;)ioDRE=~0=^kL}*0r6aGc;Lnz6QMtIdsQ#Uo-O&*^FgvSi zXjrGc&jM}GZT_M-cSkZ^?0R_I`7a~IDA!wBUzZj~N8V7xe*X`|(V|Kd9X(D#g1ETA)-#rfbCRSE@Z(KYSGC4$dYY@tq zxZR|8;QMW-Q_LD#F{Vp1j3kGxt*y4plOr>XKe?D*_nC378rNe~L55@Yr^Ai|e;*1S z^4b5@(dI15JUipsy-fEwWEf;GY$@x}wT6BeZ$HI@P`D+!orE1jUpgmq`1kuvJ0Ui> z1u;md1Yi(dtQk?5X)XhXW22v}1~@`NfjiDNJ+&xu{!9&*y|=bP@{iepdq3&oJEtPC zRdI$@DbQ;C=u=LWg!;0#29;C?2Ge!oN45mf5cNjqTPfU5agr=tFk&T6nI(}eh&eBp1P{`R59-q}V8e3Qz3401( z>m+OxqGp=3A<)#UamXmzvHD_%_cq=(orkwkMdgQbAP3q<7OPVLHsSJ{!+N7v-6eq9 zH8!RMAdQ+yNn;f7uC9;L;a@dSF+0~fp)deH***RJcQ|wJ=m2IozNsuSioE-rQ#W2b zrZ-SpoSEoRVX6CY3Tbp+DlK+iEgl+W~U@5ici9N_Kvo1Mn>~=Q`vkRN=DHTE)6jc?l9W5{pyYy{7E*2ZoqvFO| z)o%u)!tPl|S${9P50CTT_Td9qi15`sqcppd1(gy0QVMVWO9-DsAgN?{+5J^sdV1R4)2`;`4lFTNN7^?8+$By$RBKBJ<6y; zLF^=u90|^kAC|U~>$2@iQZ$U+vbSVqWheDH>*u#XofVi?t5lem_ia9tS{5+ zmwln^CB*7uR}@10@SDx1i;ZaSr(Y?zhnvdz5cdv`%la4cXC#X|17`RvG3T@_8OQ;D z;#+m5@GytCURMRl2QllP8 zvDYLUrs+VjOK{^yYO|9wNtidK?Kn7bw=L+dj%7H`+k%am;d7A<0$?BkO25jl-m#7L zZ^`{EEv?)hDyA$hFDHwim+;XQh{~@nutl9NQW_UL0a%)z6qZ|2uQ75Z5dk5w4$ou3 zlg?{O;1;j_ql1ls45#g@oYj%UA$;`kUW3zLn7U0Sujq4}g&!Xuc}{FLfKk+f2%Y!6 zA>UDYfJyZM-tEAM@p+NuhdOBU;Z+X&GMas>N1ko7v{Ot%W8T&d_Rmi{2-5r}PX*15 zp!Cmbhv?JOQD@W924lRvme^btMM_g;Wzyryd$+&U&~~}1oeqBtbZi``g0;v0hLQs5o@M7_uT%kZ6tr+TK7a>6{MNSe)X)r=(2WkwaP4Li zf*dC&w|_!68i<;bagx|yNm0YnI#T-1)mH*c5imIDS`-1Ii4lKGa^MA`DSLc2R@T%6 z`W?}cg1@7DYK^r|W-&S{Y@C8kabF48*KD!^IEe_rq?S4@NC)(OKwx4X0QeETH$oTx zD$Ic^oseZHYQDF%Nt%0XOqu&Ulom%y=6knOR(4)}VS5^Qr&H8#==Fe=!o2b0w%f^+}$+u;~EZo;9DmyyLKzbh?X zket}hfww9pJz^Y1!p__*bOw zz16+;+WGcZic072ZvfN@HWW+kbB$1LHWaRWN`v0lHK4`*J@P39k`Oue+xB) z=fkndz#rSz#{f4VoqTF6exO8&*L-DATA`87tS%{<`n526AlG{fFAgWDI;W@WjXt=*xEKd+QDM`9 zk0F?#T$X2JB%OhJ{raAfiHUT(Q3015tMX~}65wiF7W;`T?d4(O9~v6MLU05lJjgyc zFLTPM0(XoJZ<|euVdXdWx zNin>UKBuU>JY&NG^;@FA^R;!h<=qS;Kyz>V@huOocs;}v?Pvu)cZI}#)k*IE$gdEn zlDdZ|j?zqeoQDYZ2Ib?*9u5po5NLh=2m&!0N?Jh9iJ9J`VgSdQ{@qK<)V%_@n6$*o zLJiP+vX%H#*?r_Z;ks%Y;A!|zQVYIH5*Y&|k*T=&)JR9#Pi2G8kTE64_Tx8|k7JE8 zmjXb5WY-b&8o(<2ugjRFA0AnU%>a@|A)Dvz*Zt`tym*MM!(lGKtw9?AB6rX<8fTRM zWZ(L!Urs)r3cmd9Bc)VmC_r{{&~cD_9S^$V?!%&Omf3)n78VlcuqQBSSS&{Vc~9+G zaM?9i3H_SSfP|PfUsu(c( z>1g28{fy~E9HCJ7&#m&U31%e8!N*5m8Yc>@UWECnScKd{O8IGs+& z0rE7Z{@Eu-FnYM^j!m>GrM4FD>84nw`5$+VG#GRebQ<4h<|6vsd>+}4)$veYbq?rc z8({Ve8yi!m$DVjPpGQ|_Vkt5_R-u7DMCJ1p+eeng=Ur6KNFPnbUlnKhV$`H|<2c@N zqO$6IwbXx^Y(yN^O%Hxjvg{{T;(y`~yxGhUxZJ|`-d#!3X&9}Mq1w;vY;OlH7V*n* zGB~SWdHRprTETic*|$hR32o4}ID5msjwM?24FPjeolkAD}!t^M2K5$?}gF zQwD+MJFhf%Q#X}f0Q>bzmQ1nu;wLx@FghDpNv6F;qr%UC%^y@)k{}|TW&o#6>#=)+ z)j|?6pfM=LI3TuYhwzPvH%EPw&#+dJa>m^^NAEft*ySW5kiQ6NFMn#43m6CH ze_JXBFb{J9vi&US_5mR5R!R8Y%i%#N13+a(wYI~A>H2yl6%`ii!9L#0j$K7<6*F>v zNr{QoHtUE7WTbm1C+ij5O1r@33>={k=YH=-=RA`G>&qtnFK`XYf?8)R$qRk8WnQd3WYoj1Q}dXP9I3zlTy>6&wZ?ky}1jo7L;pPdae3{vs*;0Rrq5a^mc zhAGA{vJWqHb!YN;U?{&dIGpL*sBXq8$?WP8gr=&-qNmp}IYNS7NJVuVP>=OC@B z`J(JJF|VoI;buQCZV|t!pb&iug zw-w&7fZ%Tk*6czna-okKm45uY72Kst+>h4;oOp)sanY`*Q-bbE+4!G@A$I(@i>pl` zRF7L$fdRYhq7yzqCIUG9npE*SFN=Qr_#W540&qqE+85jo)O3O0(XN2_8WH%*0`vd- g=>PWzHlAPmdQ`1DLg*5J%We_mq?9BpKbZvoA5pfW)Bpeg literal 0 HcmV?d00001 diff --git a/include/ezcomponents/GraphDatabaseTiein/docs/img/tutorial_simple.svg.png b/include/ezcomponents/GraphDatabaseTiein/docs/img/tutorial_simple.svg.png new file mode 100644 index 0000000000000000000000000000000000000000..db8d6e5b054349a2cc0d41c91d23899b77f9438e GIT binary patch literal 28631 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 z zjR-YZo;nmCwrcekRHv~8gkgK2i~GL8xr!1wBP*KckUo~2<0m~s4M<)Dm9|8Nlv?i$ z_pS@**Dp2YD2MZ#KlFlA{X_hr&M*@qGK_aR$y_-a^{tP zrU@7DulQ2xtbF!~6*SZ+gR;L0RUY~FUNgvN>R^VkrcUe{hr2c*)8^D))x5hUHwA)K z=f*~ncniLTTk?8}E@9~624Vg9A#}N6CwC^CNjK%{K+ZEQgW)#6UmPwQOc}SwqDhlw z&#msrU;h$;#otgW`t0d`m!lqMQVU!6T>B2FU)$Te_7{^z$H&KsET;MI z+Lfeqiok(W5Ohd|ymsOfwsP^hqhj<2u@B}|J-H1_LR-@{!;%(Xwx zmQ1uWm(&8$YVDOydu(Xcd*fPcxP29Q8}Zq!4A{rF$5SxhgB+4Kh=DV4J5*lREB2XuImsA&G(-QD>6 zW%~fA+NSNUpXsx*Z|ttAiQU&1inf)NeX}iC!5P|qVgqpRBYJX3ThE`qX@b*!Id|Sk zO~_cJ9QnejX9*N0EaFOBH~{I6k^ zQ7A}8=g@p^i9Q_sl0}AojI+csLk2<+afax5WVLJ~gxvzjn8oqUp=&;}I(> zOGoNYY-ZCwL1K{{UY9Iu9;|}yJT%-XR=9I!=48)(4URk1D&=bez_{Ps>^vv(gST>d zJm&OxhT2~&eD|HYT@$&*az?!^g`sZTp}wVs18@V>V0_?#&shI?#|XsP8Rt&J?=mJ$5pdeT;7&rzcW~V ztU_tdI@KrL**OmFj!>*p?=4gmOD86nY<*yeoX;dOx~8lI))_vop}XF-{eo5(*xD9^!e?hFeX9_2{xUyzOzwY7@YK?3l!yGf6qWaI+Ng9!$& zscS(VpLN&j*5lQ;O_EO44$ID&lAvQO+7OLL}?>f6Aq@=`h6|$6zK_Dd`B-rWk zo~Dx=G+R89{QZS5x8Z?{;`~NQ`@P)xC!Xtvvh-ggTh&feyLj5+YU{P|rww)&_zI5@_OM3@D(YV${$y#+pj6bBJTXycD1 z1P5m3JlUk-X&vK#`93Iuc^Qqmjl)f8ptb>l85Ws<$!$9Ucmvq(?(V3lXjCe72oNBK zkA;KvFSbxU73z>vIAacjcpr9tZVSO?v)VZjlYf49H&e){s1!evDs{N^xu_9i1?G-i z$>EEfuplim+7^UuO-*K-`#{1E^w93@ozQQsB5?LMjr#I#f%Ic4cWeyK1^%?N8NOQ> zRo)|aJvhK(tM-0_WV4(Xkd&nE`h~nzJqDw1s8nSZ8N-44UU|Zc6K1l`@yp?_8b;@p~i>?qUsuv?_e?MA6$E_RC9^&}7NZO&GlqjmbJWn4 zEf-N(qz46e>+`-EU*usOpZFtC4+{TuyCo7M;=_(!GA~*mDA@>;#h>*!zG-3X;dj zx0P7qsOa$X7b#61yFvL06{zRJ1LS>aG=%DvxBoSFo3>Nc=RMyJt(b3EFVb<9me;tq6w#Qi92sgXLS%mc%xK7@SKa1#~~) z-f7a#egKTns5^+h(fNeSU>=3S4C|@Pbslj z{RQ@5@jxwj5L86_=k7wx)vbD*8_+JH7%MCL(c$s=!bpi2qu>ns#)0_*B7`XDTCQ-* zdyRHS7^NC@e?TpsF4YR1q@#m|dEY)_l)y2S|0-}4|E0le3xi+wjR1nWHUxOx(O`xk zp`IO>`iWR6>&k6-K-MSC=h^MA+yY^H*Odtm*W&Mmg5bDTc$MMVg3qRNc}~8Zz|#FE z#A9Y4&vLOPrlcqW;~E4zL8gDwj36V?zqC|zEG;47S6iFtxJ0gky?r{|5fCb5Q~9Kx z*h=N8zf)ea61>8#MdTS><#BM#E0$@h-QsifFW%rb+6^Hu-fPy%|4mHLr3FTdQ;+NG9M!}W5aq$Pw6bc%b&K4}mpvLzN=qw!`3PoM zKAq=KrUwUG<3+bA6?slYhKF~}imD8u;-N|gTqa}kgJ3mgQ9PKSKnWG*`X~)yY@GZy zw7uPzm}Iu=?DS;>U=$G0{0E%fp-B2ezK3? z8^lL^K1mQE2Ga{v8hI?ey}hn07ow%gV0NhcRp^%vr}GZT7b78v#iz^u3u@I{QIN6L zlE%M`ek-0)Dp!tUTnhtLrVsdzuaEASz-u0$(Bg`UDQ->)i3r|#eSr|P?*?mN(GSf%wjYI7-sl49aU?tyr(DZFH0ci&K(^?@D2xE_5PjAPHVrI zyi(zF$*z#78%$u}BQU%1=xqoL7}ewiBcM1HFX~Z2X0+2Tp8x%I~)w6>+2hUbKE&S9cFJds0)(r;fLQ3 zri$}N@sMz*DTtY(v8#7CF+T-eqNDr)xaBX%G#<`4PVMwjkn5Y=nUB?MQOHhIdNvD= z4Hz>0V?h3u$(ilp>d0C8ESEGdQ{Ti90D&< zx&#u8e^Wlw#TvhY4aDBz3~+;4wvx4$a4@wYK>8EB$80dWoDi`B(g+?NF9*!F3~s2r zJQlO-F?4CcazXULx$S6RasvsIf}*Ob+HA4_SoqNS3K6vGbxC?9xGaZsWGF5>n>Pb#KmW?PyqtdKv>QQ4huY{ccEG3ib-rLDG@BzbgGek?J!7^bbvIX>y+Qwmr=L(F&kthHr`w(L4U%$}EPAa*9FW=*jldc`kIKG( z9NL&J*GK>fVCOSlA75WSAe5`NdcdJXMFCtwz|5=&V6q~4MBmU-3iBS_WP=`WSa|pa z@`uf#4WZhtd=tY8%N}zjb98_=%+o^t0ils4Z4OS(iL02hhIqP>Ae-Lt0$aG5?1C;6cdHH;k-WQNp zp#V@0gt|#k3zPV6U?Kj+pd;$pJ^4<03YqtULLx-vml3EC@?>$*sxFrb~_WcT9KZ^wTYZ(Jt|8Qu=FSYHEN_vc1o= z$<*ywK>}AuNT~E=>mZb%WBGlk&S3!A=U7x%8wqJ?!;4L_#>M%n?Yln6mv@?j8=22I02o4;-mt16J>1Z{^ugj(1Tvx(4TT+N-HjH(k3{bj! z^*-(aS*XenMsPXla1t=yBHyDGm>FrFk{7Voh#ol2aso2QxcP#bjgdgm$T@iN!+Y%v zp8O~&~Sl3jmtUE*`j&yL@5g!(x^z;z^I;_OjoGrbtF|eD=sI95G zLqp_=n$6_CK_BUSE0Bz=4hwiCJI8Zt>qW{}9xX0rx^SQV_~&AN)@-87^3r0Rp#h{-M^clVjotOI8Z0V>R|HdMLjBl7_92tag!3F#C1w2GGO`rbdl~s%Bf@5H-x5{+ zVNKliWqnlrLecMJtTa8_3%H?ayTX4ADJ$o~6X!XI33#b(c|eP7&djtS8!GPTlTmhL zsi)V;{Qc7%LJ4*jf`6}2qN!BB>my2nXV%4eOK>R7y@-DdrF;8Ng$!cU;7_4zv>3vf zZVI&2g@~eTJ8P1a1)G0jO`=fk!{&#iK1p2LSu>(Y-8rjoK!Sw{1oh@;m%(dK9Q^;y z!-vL~jdRwWbr7}PyCEWz5WJY6{RiLDp8DYS*=WXG+ZYG)os|!n{XLVE%<4PFBj*CR zuqMGY7)G8^$u554RB)`9n=qwE`Rz+yR8aU)2yIZqy(lnRdcO33FZi9z6}!9{5-b@d zW4^;nnNWIjZxp`a175Fo9ZU{g!f|*q$#^ zjT+{R`U!%Ggyf>lD@|L((gp?*0*AbigX-rvB2}?V_tt5=k9S4TGevN2ng9JnzMX~S z((4oQbOKO;e+PB&Ja=Z+(i0%vyxvcuhG;(H0jM_wipP^4HFhC@20vJy_jY?L){T0x1IhUbuod zixT5oM+6J{!GEac;-?2>0_ewjiJo$@6NQm@3Rw!dbqx#zrVR-1>AK+dl1S}#lXAT<2^-| z0gwsurS@d6Tl0*EG-E73k>hd*b0o1*E^>wW=lMPunt_{blzJIi?8Ik2!L#_)Nu=F21Bd4+VAJ~Q8P z3K}Ifw@Nd7c9jf#kta`9{$9a_?|uoPf%&&JKWk6~N?u%{lIHTX3F7HHFGIGdisVRE z)#j}pM;pw7KC~s7q$6LZVGoGv{$cb@({3rAyoeSI=%qtEF=N4-`h!z)A zKWz2iw}qDwRGF!ZRYxH|7NzBJfGbJd)CD@xm zeQIp2=lYeR1arkuJpNW$FX~@#i~AY(Y_~PJoS^(BEUdlA%Bsbq{Yk079ap{Z9LwLq z)M^y6hEn&p1aY?SUz)`gBU5``G>b^WlbN%7^F2Sx#kVNd4CSq>l5s&5DmG&PPO&%D zqXPi8(taZt?N%ta*5X+%e_g0ILywp+-S*H-eW{$?*tp$>1f#q{(TbKgb#&c2r2nU` zuMDfQ`MyR%x=WCfZj_Kt>68|bloq5rB?P3qMLcv$gQPTvZVufc-G_(z55MbrKfWLM zz;$yEGkfOVvuEwK*8pJjHwnkVC@Lz-`tgo#ndd@14wviWRC-PA7j1aeOnGO7pk8C{ zL>(QQm4ezR^K|tU;Df!Gn0TF+57;dRn@x)?BDeQI`XH>=-SzQV#-e|X@EOh6*U|vA zx{nOcT@#CDeP3de>j{#0q`;@l&7m`_QlWVWJxkZf3WH&Os@5d=mqqSf=35$<%ffF< zmXPL}u2)5mH0SxJu^x0Z&CC*dsaQGf zjumqyGq^p6dKwW4Za=KgP7>LQH}@6Ips@AdUw+O}-&Wga^_bbTIFz|^4V;1HMt(!Z zlf1Tb9c|gonJ;&^x+hr|-9rQan$R3|md{2iB}i)r1mMU@k5yhzN8BUf<9kpT+k9v^ z<+>|@pWV$_JzK~c<7%%oegD{2X4w8Uj|l1LO9j?TA!O3lA1*tiHEWdtCubMt5|3^D zI&7c$?_@NbF~E2D3J^Ot`XFd%MbOn}_f8%jbZ2Au|E5bd^IRX|z9OMHkm)c>ay>c` z8y@dVpKalUt(lsJguyJCj501Tyu5C9FBz_LeRc=)1pjkS5s4a`fmd)EEk7Mpbo-U?D34Py1M#l7f@?|P+gcQ zKZX+}H8e1R`pxx1^Mq)z{-ZIOrFuBlSp)Roz?eDF6tv868r?U*SS8uCGXy>iCunCF-KRcprq2;q^j zeIHENFWR*4?_n)&!jqOmn>hjYq9vnQ(LL6@8tq@!ApPwRuM?2&xnU zyK%_Q91LURyEbux{B(rvbmS$|B2r-^Z$4x| z`G#@tiz^1<>nd2!4Ek3$W^`W294B{@2P&F~jY&EhnrOK~Qb%JwLsn&X#$k>>gUcqeXTRYr(+^pVi zsdxO7Is(?gEGk!J=T525^}*jf^bOC?|7rQ(f5JwHOz~A{{o@ucgs;+>FMSJb_#yh| z{Ah?@&=rnmW5b~9@o#E5|us6|?pOUZG_iLt zg#bg*)9v4dR3$n#x@ix;Qd5%k{;M+eQm?!5FiiUzuZ?-y<9wY`vg^eUy<+D?3JL@8 z+Z*D&{syOEhXy!{fKlqL(D~sRwe`XuVsPTEd---^|A7ht2n3Ko#-$IM&ZjW2^L6CW z{Iz|(z6|jIP$x>35GDw-=Bi{(ut*0%0T5A195!e;Jx;L?EWcB(vz^A^i+@Ut6;1+O zf>2p|gUzvaH7;jomw_QDt$2Ij9U`PPAh5YvxT1oS1}0|GV81XzYV0d%zWIvEYt!_H z@7aLxzhmF>cadT)@ZAmBe~5hSzdcMDLs*ONyIFWExUJM`*BuWOY*CRnD!7(Pe%Iq) zX2(j@cXu*slJfqbvM8A}QJ82%{e3s95=BnS`H_<&-$+3<_dVVVJjYvXhYj~(Ly*aq zoJNeSbBNYgaeNPBW%rN)koD_}y#a$7`_|3orP+uP%7stzN)T^Hyz^z_aMi-Ch(5X8 z@gg$rBJtyZlQ$%hp*m|EHcKT8)1|0L^|-lj%RAF=Mks=UgV3<642N%lJ+S_*RE~{$ z-o%y)xc!F(YKcW|r>qhFEYFht&W8Ts9=#lGH<+uo7iLXP0Kx3~;g*cAugJSFF>B-g z*H$ARe?dNd_;V52{NFO<>R@|&DUVVK)Ac#QsQ%nr(abng&c^y>Rap(XtK-OjQr8DJ>c3FkNlTl&(n?v4Ls#b>iyd`EVu+J(Kio6!3S`{HRE4i1@20KeBL= zV`K!{k&1s}V+nI0(I%+oqS(y0qFQZ|8yvCO`CjHbQ{6VQU#aTuj;6Y^{ZH}u$F;C< zl(6O7%)MC$1p9^hS0W-=DI5k9jZTovtLm7$-FLR@cbm`ZUt}QF)mXT!D$Z%U>`?brvCu$r$vnDN6V?;Zx;z>=ZAdr~uoi zq9clwh2+YdXL1dTxcwK^n%4%iW2ED$>3^%I$Ny#Q6L)%ev*RB77wvPxjwMP6nfBhdZ6P76 z{}I;CL!NtHtj(AylgyhxlBj9*y*?R_0wNV95n{lTp}KN+9z`N3ONpay<$J1XO;UWlBBt0WUp;(fCWbB? zY#o6pIN3mVL(~-=XP|tbpQ8h!c)E==_%e9}sjKNzfAzt|XE#NEY0?J_4@ea)UI!Y%(3pLzrX%S%Vy{4Ow+V19o2cyYGWvL(ysU-n^n(c$k=mh z$sHTi4Dm)f^C}cS5B)A0UuZ+>eyrPs*|2>Q6B2aZ)1AexHUHq<2l<8G)Ph)QIh;Wu zOr>p}>4hm~4kE!QZ_mxG!;+fabFMvaVghVthi!BP?Mp`4qUn*{CFm1UZHBJj_*udKqo;af9NK=$66Dejp^`X54|(EOa0UMia5X5Gw#cK-ePz)N&jL~L?lOiWjQChfq275@BuCMeubyuXx-`YeFd3{ z#5l*jf>Hi2Q*j_LPE%%#$q5Jgc;0}m=J;w^N4)H3$ISNhXr*HAzzH}V#mLBvv$ink zkO9{o(LKml1s)w$yB0a`}Rpjo6Xon&yefmd%f+@H=fx+VqY5m*Yw=rR9bEV zX(`Zhhr{*z-n4m($`!c#L@LfW{pfy+SAZ3S218kkq984=O0C|Ms&YCk3iw5y-#w$IP)+-Oe$_-LP= zqG_L3(BSwmo7sAmh;9dYwRQ`{ruY&G4-*PUNYC)!q-Bf*8aotnY_`d{v$MC$zU&d- zR73<_uZRZHdv5QO>Cq$WtofGh=nhnww=C5yqBQnZbu5KsArM@A979tD~(}5T| zq^|MLbH5GoM*=T6b0sRw_UD&{w%{(g7*IdM9E^Hlbv{#mcU)(42S4O)X%)2@Zy_`0 zyiI934(Q0#ER0L}F=9}&Yys3uJbji9<&?HG3w4+c8tmm#ETrB^efhv`xf>@LdNhlH zT{W7iOmW?beSN!%6nxkK!ba0}khfOT4tONEX@9e|onX(sGzl$T>!9waL*2(+GWg)3 zf*yk8R&6m8EiUsuQh-rxGNos5Qei;3&|LzLd^(#Q<+r*#hBCLzwnV+54M{#rD;Q}s zJi8)BI$0P|fZH z&YasG%GO^!^blMRu>|DwmzC|%hhY4>y9Mf&`;m{fGi643ZOM)yGv;&|iq7F=DAP%tM zb&8=|&v`n<41 zjGX=nN@OFzr+T(xmD4*soO~?~?|&ALVW9#|ufb_LsboJz{f2m#tuXRk+^Zxw!p?xE>NK1mU@mELCzTUrkJr>1aZ@R-fLFKB-on%#W$`%71E0+umz zFqVP>u{$^#qFZBNK~p1cLD4mV$Hbp_CeVYmU%A$Gs0zTwc8R+?+^df6G=*%|HAU-j zNw(G1E?Jbap}N0He*?yz=UwreP^!;MtXW<)R@~MS#yaK^eAI%M}&w~_C8v>)qTjvK z1aEFxxI?&)ybryMg<=E0)ySwsJf+g+f3ew=ilN&lf^jV^zN*<`T~@~ITVExSWX|x8 zzK2LR9ee61v;O25qtlfA&z^8;*y+O?C-|bxSrp2qft`3}yR!l0vVtX{kB>-^ulLRu zY%^=HfDH<5ZI9cLY<9grQQIn+CpmpoPW?V;#Hq{!*voSmys~l(rtcZmA%4PFOdlme z3EI806=3O+KJqSBVR{Afir9>rUu(LGPFSUt406}?-_wO$!C+bi-qn^gxc#lb4)+8YY%hn*oR^^ywsfv-#_KNh6P$N|;Zta%>YcE+*c`M8={#nz0MYAv<6AQIi z8zGS5tQY#osmLG{jZvo)DplBBlFB^xE@njW&vKBY)po*+V!f#W^+RP#+p>s=(k|j44RIAUCS&^YQ+oZ4oGc#|kQK{A6g@881LZLoI&Gil z>n900^PZNnCfU?4uUz*+r==bJ2pS*i$;McScBkv(gP=c%=$&14xZOxJ+$P+#44GFmoaRq#dd36aTHMBO8`E|dh z$T1lZZ|$=~8gwLy6uFaj8zfmC5s1jEu-+^TmWHb zV;%nA!m&bQl04)a_U>#m=}P&Bfz5~w$MJpp+kt))*fm>tgkY#@Vg8_BHrZSyE<&mQ zLo$!mXhK4U;+>2^Wqhj99oG-4>j`gp=FcV9)=*gZyUl%zYF830Axst_%m{rp9m=PH z#e3p>whfyO&^?XPa|7Px#2m z&j)%&#;S{bhbOgSaGoD8Q=oeb_ar1DlD@9Ee)f};VVNz9?{Xsi68cy4w7% z`u9AV#iVIuD$b+-x%PNujh@*jI*ZF|+Jx1gwiMyvc@D=v%2wd~On`!b~!{wubD6jS^mNsgLI z^4|OM$xHv-Z2N4pia?>31h^X#B+oQTS1f2E2!2FUbD6k80?Tx&13-t z20>a{b^>Cc3lOxCwJte9d`cC`ukj?q83>NscI>9ZnWQDqmn1X4#vVWz+q^?F?nKJz$o>y` z%~ZEE6o+aowYJuEyQKkWlc}C}mE-^=Pqo~8QQm`R>zv)^!`E!`DtriWfG679&JVIK zGqo&Xu@oCpzKAdwtiM`7quiR8l~Rb5uV8V(fej6z;Nw_R(YVb=fbxMYvd@*npti%D z8%7AQB#7z#f6PP#Dlhr#9Y`sNx)=2voX#$6j56+6Z*gT$;1IfadUR6Kg#hnF*=SFY zhw?W#XX>Kziu&6{ZMhmuH`n5p=_hU|{hBGlUKOd&ayxz0I0bFlE^I|t<=^Vr*S;h zg5$pp6(1rP7LEQXq~l$`7V|bOuX$H|lI70u-x;;;c#$NMs}MFwotk$UKc39d(K$4h z$HwA{)f&QY2~s{Bt~K{X>d`5JhAE>cbJ`D?|RibrCknD?DEe}3T@|5a5Rj!c_` zd6;oQql=Xiy3ntZY_qcI5B6T0|2^>Qq-GF*CtEKdOpsfaP#%}VIN2}_0S!*zp-VH9 z`Ys}#;GQrDt4B$Nyc|?WIK@2q+b7xq%he(W+uoLJ!&{{OC{i%csv%77rFk4jFwpPv zG*V4(N^a@TH0)cckk|Be673Q1tEdt|^pHJuCfW3sVOB;RxZJ@jyLYG&`hP__taT$EpT86ci zZqMT-LY()SawippKgp0-RkL!yFuqOd{CFwU1+1d~WEG7*StKBr_5DMIH5vb^*~grlgDLV z!2bBtn=Eeks|A@8Se_^4J8<9OkfTx_GYejhA zb0?(Elv&3oiyViIqcIGdg>-juZ^#Wx<|VqhUad_xr3Ds_9Z`dy31xZ)@Zw zpKRN|nA=7No%r~U`-Mh#nsL$VAxpYoBl{3W8q`X>0oWQE1I=Ms)M*0XJ_*L?=exNJ zbnV#Pj=HkP!-A~KKo1Uajq(d>29uv~@{(|RRIf>|I|h5Rcg7v0UH;gfM+;mAEs~ zBQj(Uj)LK}>uwL2ZtRl1od6c|kO$qG@T{KIlEo%hTIBp3N*3{f!|^mQx!=MvAx1Bk z!ruTTo!hCoOoZDJOYOpY_~|7{_6=gz?Bln?R;Re#OGVJRRQ3y&FGpP=wB;X=1m zYi_B~<-WJEkg31`!eV(17Pd0W#>SQJeAC$uEAz_NmhZAD6C7i^>Hp9mFuFYB^5af} zjK^zz=E!y95>MQ(CaxwhCsLdf>yu8kvGoD3N9p0UuSh}u4BwoDic4E8VE}X*`Puu@ zT3>E|QQYf*6wGGxYR;6L4OWF`RFVW=o)P3OB~ciCadMXrHSbwS*^Ak|<&89&XHJkq zp_Qcxa?H+F-%q<5c%elldzZ=lJ_UkPqQhh7KPVmiSFt2i_!>TD7Lo_iQBJpA_V<57 zNq*&GDaZPxs*F*uaau1eL^EVsG>_e}^z0#{D_Zo3Q}|5cNg1akO#eWuKXge) z)&95RiWVP6{-@;)XlP{d8}6^qrakR17%}qc_x25@p3+&3*TLcl0&sKffZM|RZZrJDf?fae ztza*^?`Ne(6h(Q9gFHvo>Y;iVM# zjW;KACa{)K4-?m@@i;sLZ(}Br=hF^wJSb_1Dz|+g?%}HB))X@!wzKWn;7kd&p zXzTCS5qb)%%lgqdzg=SjE(XXo$~6MIZUB06h3hB5yH>JN6nzmRxK;|w=-Y{Y)r0|l ziD`s@dA{S`G1XBG;onYs&smb#o`%LU(EsLSaD>5b`BB(vAWI)@}0Od(P3Sex2V$flU&zQ1#2=1DR-&FAiaFWhtQHEFaXh9GZRMhjcLBceF zQwy-kB)L3Ui-Fg2=mp?az#ne6MsQ@9`@r5LS(Hahhx^8?8_oS-PBNLb&Erl8G9Ip9 zF8im8jsE=XYk zMzUYHZ-MB%Yc*58~qy^70GMq5G4bKmr)8ST8ZWzYEYM z@D+lN4F8N(*zZf7Mthl3_-mISoczm+u&&cj@vXyxv7QelLdHQ-uEqMzryMT~fbCW+ z`GB%x2;lhi{O6U#m%m^yix?CnRdMliUq8Qtgnluc9l7Kcuhx(JNeT{6d{H}_^DEaMg2V6DJkKB+%0SJH<-)v21Ev2bD)A^ zvholNBq(!WE-RlN|AtH5-niU92Xs^I&09rP)!xBD!azWq7zd}_mR6C2(d&QX(Um}D znL(+&04M><7zLcJ%M`TpMN;eBhp-QZe48>~`5Jt%5D-}M@IWEvoaAn=|7x)M{&sx- zA}`-!@lL#e;_2%SStubUR|IwIMb0-!ci)Y!uYc-I_8!c)Vn+516$~4^PFJ>DXiDq| zEP?+A2aJf0idG-8`#Ff~zcHL-MHz4J=Uig^Pg>6t74`-}!HCb&ZhC89wmpt4`847M z!~;6av)A@e^W`j|&|4ul^B(9l!ix#4i#<2-$`%n&EnyflZTp$h=53~+^Ti8Ojtt`Y z!fD&BvmK#yJw3aHszlCfw_dv{led`&;euY@S65A>Y;~BnH;ZYV{F+_S9aI9c!HSI! zi&@>;8gLmE8xH6b8D7bJusG>>Hstq+wEVbA2hzOHK-Dnanue6q!%HZI6NVBVYw>ez z^0C}^KJG`076C(DUBN)6mIzkwUXFLmQuf)au^DOg_*gA&yN(R>48dp|5-~kO=sX&o2%Qc5eU; z`gHsk1KD(5S`w{ooR7_9id=`7^NCVI)tb z)X}nyCl=sFuYt%F$nCuZ!roXm&u@|8fo*E;W+z(w%!i69OxJ7|@5*OOqC7iy`+nF_iObN83;AWQo%0`E_5n zYQJ{CKaO@9jqb6lKk1uyE7G#<6}d;QW=~Ab32SKBF?@^~q^$yT8$ytnnHr{;&&u26 z7s@`EHnjax%%cJ1a`g0IS2vNL$y5r2{bToaO_#!9cCslJQ~YyQ{{CV*rFHKo>h#M& z(supm$gX)l^yK&l6WCz_=&qgG-y&)01iM4q9KX|``7>f*TKhUTC$iqCJD^=@RMg?(P!l?rxOs2I+33ySuyV8~$s3to7vSy6?WZ zGiT1(d!Ic9$w-U9f5iR>fk5EJLFHP-&{^3Ur5y8M zLm-3@F+l-&=hVX`Cwuv+`L?wcNkgW+=9^`)_rGD3cL{@o-~Y|Ftx&&m?bhTgQz~oL zIq@S3953>oyp(o5;f+a`e0qjK5d1F~_Dgw2jdBR5-8JV4XVOrLhht22HOn3{lmL=1 z^G&pUJuwn^D@+$9=sTgPAt&J~jJ}7ZqHl-l2- z;1_NbVJh$I_16dYVLVTdA?~+lb#3b7yI-!nt1XZ>rJ|x9rT8F#DNYmwV?;tj6HCvh(!-wN zHFTe$G`6rXIDdsBU0%k~d~7t)lsavGwAtRYowYo^Ng@agN%fyjS~XgHc`^T_y&79;*AtHeUv=lc45v&w)V^~Wc!G|PX-e+eIx z%gd?Lcv7(Pu!HMzyyn?e$013n2E%3b<9dfLvIVh^K5v&@ zPu`Vg@MqAsJje6J1v?Ze;W|k@Aof(54v(Utp=V8*HrRJKYr0=krn~JK%+GT<@9~!r zvBxvpJaXV`Rwiyyd+83-9~htPwoOj@V#$^1pEchQ#`HUHq}@=K$_@^5d9wh|H1 z#O|c44jfoDf78|`yx18QDx0}z7s;?@;ERf%Mwdh*<9Xigbarz&n|3=HTVC!Dt6PF? zgZs`OR8Rmr+H~qg^Kwm{$xr!Ge@;GavFIy1=l|!=dx_(}343y7nT3tX-&=2kFNbJc zU0rQ#9Chd1tn@4lST6|>*0R4u2U-iOs;SM@7}2Yi`1^F|o}XW++?R>KpVU=XpAX;g zS2~X^@w{Bd5JsJLv#&%&Cl5%B@`eTc#Tn$gOU=vhiYnuOfYBnL-`_u=q@g0>pa}Hs zB9Zr?LWz+DYd}U!3Qv+c*TWJA3xattbClkCK=+|&Aehm;VC7baZv zCo>b`y_4Y?jbquIW|Z!p`U4qRloSQx^Y-2C`UYZoO$~^UNQ{>Y?BnC(p$zr}5dzh( zmYVqNEA`%#F?6i4CMFiF)#OL~&VixD=6uhqc;*)7#^$Ekb#)ksPEOBvZ740b_uMV_ zhr|$lVPQ1%I2olC?Le3A?`Fz%HmD&OOT)2ZF*3E3CKgAn+w=^p2>o3@;O zLP8XwVbE6>gfQzi@z%o0$;oq-9?%Pp$Ln=VZl~AhZTdPI5m~#1tJ7Y#UPh0%4-%CfGlMrc6gp#DfcIP)G2VB1-tdzAVAx9E-l`@neRU{UxV|{Uk-_%K|so?*2X#$y*4b6Z@gLML|IkF_$TtO~n`q z87cEs@Sse=7D0c(-eT=38KfsX+~E8Vs`B}0uXVYT_DC_7I;$Jm_V#wH zlDw>}YR@B%m2lp>X6XRoqVD$PWou1lIXR!VPv2cFKKl9e;(JEEZvLADkD=K9gv!-< zv(w8{4wIxXwc1MEDO0qM@9~e1C)ruDW%|B9cxu|rp@BeecxdT%c6GI$N>v$3=7ab9 zYBNyT+}zBRMx3$7(N}txoED{J#Xs_ws!OT3aDL}|##B^{7ZedbZ&lLd zGAXvz(<2eVr%W4~q^8>l9wdv2N$AZTUU0sxAXjdF{QIoxtI3pEq47udVrypQEF&SE zn1=<;8%&9$j!nPG3O{PhGh1Z$&GK+o7m25GOSFFv+40|p5xIB;3be$;L>Vv`W#c}Z z6X*}O7sn|tIfae!pq!mfUeKSdaa&=UQu#1oc5TqC6&FmJdM-S18|LOJtEi@16A%*< zXA=?6Rynn11^i2Ieuy00^7Z@hZuMj*q#y}v&`VWHUGfv8VrtqAAfovP2yn^#|c`@ zt*axiad7Z|THv1FJKXP>n#1xwPRGAK=I2;V)J)f$oSd{_^6E0u(P^)yrZXD&EdlBj zq^)-$#=oa0=DIjqlq3`nulG9b@9xnNtNBZg$Ra`SwYAgMHcn~p@KoHn9+v=2hc*%` z@>=NT=4Pew*}L7J0|Qh;v_sDOL0&rg`u5{Yh;%I(Ui?oqb;}O)bac`H0c=MF;4_dw z2MKMZj_p%e77<%*pUyF!&#$vc zx@f)Re%xpUn?uxLZD*79yE?SITn5yn+v?Ji;-+ZwbeDJ#JVV37VxxWQ`$gNB_(2+s z1|Ks#&pt0W9_k1O9UVe12YZylJlg`?m@dlHTs7&1WH= zv&##0w}}#UE*)G83p^<3_trOfbvC`(-B3`sS1TcvOuuC*l{ERbs*n8$Q|W>dxg|I> zrdVrO*x0UGBfU$);4Mq({DqCY*P~^NOG-Xe3qkDd?W5C^gq)n%*L1R+>;J+#x3;wW z^zRWC7P@5DKd|RwszTVAhHzz<-64I7@H4Zf#+}x;G z$UiI2+SuZ@x6!GJieOJKy8A?hJ$1f}MTsn=$(yobVI@sYv9Ip#ikeHJ_1JO_57TaL zZjDVZOB-7=Jd5Cyf9xQ16(d0wK!RE`4}!%MsZ{&}o}*(8;Tw`~NTMj%Jl89ZXKTF~ z@J^UMgz8;_C|KE@TZs1dM(%lROGOrS5#8bji4yYkMepqaxpA7-w z8WacXljwlc^UKX}HH_%Q)B!I|H&g>PXn+R0$J&1mFF0EFmej2t9tx@oe>e;3w|8{F zitdX);)eOOn~~;l^8D_xT=(-0Z6lnMlF~lT{@yMJm)H2hiI?bCT_zjOw z(%$3&Vug4llPu~w93kH8ffT@zL9*{3R{s(xe##HS6#LV3GkxGc10dliVq!{y<{NZS zdjP-!0XG~7Ns^&Z2>NOpWYk=O16rODn8a?cM^IGbSlc%2M-B*}>Bu6OS- zP=b8HWUWuJFK^eduNc0xJ2SF@ z;urf=;;nE=D?A)LAyd~6pgO%~7C2ZkHnLzaM%jr8SUC9h+dgdc7_#u4lu`cfmC=N_ zq8aO_j)gmiPGJZaH#cLnctv%2TgT$!snv0DQfN>JH+EgzXHa0@>E6%q6Rh*o^8_ds zZGe%jZ!esXwPx-XpTrTubogn@5E%V2&_{4iOHTs8fr9oa2H^2c^NL*hK3IxUMu5ruru^XttSg1J6nN0zIsbA`?kY8V~8+7HVKHA03 z@HG*OmyprW*tgN-=TU2 zWCRa<{QBz`{KFBqb>u6Vot~b~m#2FB=ziDhaRYf8ENVF)hikeze&D(9ib+gK0bu-B zOb+oV?^TzW-lTDj``HzH(|IdPvxknp9vmaI2$c6Nt{htl<<88tO^6JujRDMf=WjNN@;4Q9O<(tDrp z2qB8`@&5BEAeJ~!$0OZ0l+`jk&u@RpQ*|#5JIIWb$xwu=ah?c1IJ>x}kJ*%z6qnal za$SY*L{_MWrLv<9{7hH&izHa zM8aGheHU`_?tW(IS*KfERW(lCX?RL7e4k(=Iw51UkhN7;$8vy{eI+oYirKX}UBm6V zQg4Q?!{?WZ^-@h@a{4WD8W?5+St0T_v&#jGK|42X1b`c7c0LQ>7$HCdK-snE0Y-BcKvCsM6+s1#mf#3B{ zo}Xrw7qksb1OPdZEr?q4Fd`=(pr&GEi{Cih)StC9HTAD739CG}rNf%wR|u`DV&3{3 z*P90NkWM{jw5XiZ)Eu5bHbJp6ohYd2de@;Q?l+ybwI_?+H8Vrs@+Puo4x&U!CMTyE z@5X~D(8$b}Jne(l)6 zP#MQN6XJz}5@TX%3E(K27J(JdqK1jF`R~$}^y0%#f7Sl{K!$Zxl)a-PgPRjKSVV3v zY8wrWchIOPDo+>lc3w811_j2!2TX34EcEvcywV*E)NddIK@fS%6XS}!w(EFXFD6kV za6ZuS-Au~1Jb7}W$HzZDj6IWDc{DYHMEp~ZYJ z-EcO|t#WZezvy}JwX;GaHO=`c?uB{M7UVEJVFC@r&0}s$z4nfUxk?A_nc-IKIPvZs zEssu(x|M;Wy2VfbIZ7iS@||;_h8N4vPEB=lpLlhp)h%^&;9x+kXDsTNUV8k@7b;@r zn2kP7mw+8uul-3C1&A#qB&0SR>>0JSY~Y(-sriij+S;)=&`6}i!_61&aNw-ey%mcL zc8+-$-Sp#E_LH#-%}mcOPYD@0=d9JeytHi3FQ8M+03wB!qz8fsSY!PafH$kFGpCJT zp;uuews+;ZIM8+y8IDoDC7u5J_vS)->oeN;^4QO+m`ruFe8R#KFapdSrnm>w&#HnUv-#0%YzlOcY{Z90{}w zwHJ>Q5)J0(B#@6G!9Va+y7mw!@-+MF_-V-L`7=OBGu@5D`uCjhH&$yhThYakN#71$ zh>^Zav7Ihe8+{ch`g;l9{RiYxphc`5ZMkgDKJ^n(bEio3gfe!itIK{hxBtEN$dwlE zc3dA9sW(l|nGwf+(0_cMS0xhWSMWIb{x$OEGFgfT^@WvHRkJ6q5P9T_rXCx0CTt!W z8XA$XkVinxK*>n#8`_%)cNvXa&4hS98{mQZ=zl~NmwbQk-^$aPRzj;2_gJ`*Mx*-mkl>TTsuy#AUICIrsa)1<#!Ss~_Z z=t3V}bm>K$ABND|4W@-KFf!^$s^hNd==i7W0F?_P-6a}B%O%bXeNhr10}l_6&8^R; zecuonJoZ2TvMKtYU}EvEm^iUn8WK^ZDR1J0uu&h`$gpst<-WRxNP)1vMhq}P`h z#1!^2W#8M|BmF{&%*@P8)X`~Td7RO9I_sAQ_SV+t&$F|$nG9^($vBp;f{6ZgXbx-k z^0FoZ_*p=5w`aH8rD1M;^p~uX|3<_{rDxiF1Q6pw?1dOk`sE z?usi5KQhZPA08d$msx2~C1=bvSwK^_JbYBcNm)ZUDK=kf`GprSGj`CL!r+V^iFmFF zjZ3RnUb!gzeNJETgm%N9vZWI*o)88D_8W>#%_qze4*x}i7;-Gva1CQJ*X8aTm5>I9 zdGlorg^pc9=tuPks|b*3FwJ$*SKz!$g1C>-*ET6ycff5Pom@Upg&j}6e-E$)S(G3h z(!|q?l_M;pI`0Q^Hcp1XvDN-_V5D)n{GY58Xi6(mu?oiAcaPaIF{SLRhlHwbS6iJ zx3n)8j|w1&+Rn~bER4XqI=+6ZzwOP=28?Vh2G$uP; zjqNI`9pqPC4#Ts0XIss^^)%O0cc~=miUlC zrP6JX8P>Ki(zj&3z6Bf2m<7Ama;1Neo~Jitl(+jluINqQ@Tdq~%vlGsL=s@2+@1>t z94$FH@0OR-L&JHKN$6~}0--4HhFk46(D;MR=I4@B?JVilffnH}O7v|v;>Q(snE!mE zDo~up_Ur)?(lwfC%?&P#Kyh~%z{2dFc;aEMes`2E zUAsjIf?`IM>l}!Hp!`-pz938q))XL{uvtk(;#-cC@GwIJ0Oyw!K#aLF2QClIh>1Xo z0339DVTN6M09^tOF4m%irH%qnItFugMT*`1<6MP;uJMk?-4^jJ%F#VNynwh0R9IH( zGn)$Sdt;~PIwsU+P5xU93V@|w?|a?eo3Va)IOKCs`o3*w5)Bnqk0trpG5S1M{HxC| zSVZ`&?8*Td=@LcI9ujgkrT_>L600DOf{kmhy3;)5#`sr!B}Z$OUlq!OUga!$Ukt0#T1=$Na?k$hM6=a%(13hd1Ytl?FJ2`d$rB+ zL_W=3nM)L|Z-|iT(x7_r!}y%mHIqd5!8jI@yp5bIkIIgJM-zO9>}_yhYg5I(^|Pqc zpVCwSiH?vyh+l->ItSNiqQsK8NCyt$B#Ef4rN~S9UaAu}31oq{QG&wd_dUYra35W6 zenmL%{4zM?NAp_bLkWtd4Jl~Pn?jFB_<{(oBk`XRRK$vuTwWgV^-FlT*bn}6KiNwk_^Pfk z5e2FH>dU^La3?TO7|FRbc~FwXB{=pC_=S~Wfnrt#=VN{UDtKb!q)<{&5iwHUg$}x^ z^{!j+`Vae+Vb?CP(MJ9Xz!4qz-~4j$5(R~7UtibOH#Q<+W4kME8Qs5xSW_A%{J$5V zX?qE+2KQ~-qF@him5;NT1Gc@QHqVC0*R=Dj**>+LslA@B>O8He8t^vD;Y3!k%p6T9BhGKq}7&A|b+* zJa0+}u0>lfdQcLGh1?7wtS3Afpvl+3TUq-MrX~oYAb--A)kF7f?zZ}KGCryC!8`4b zk6P)c)v3=(|6A`~WHEgxGgHgl^54F{VwXunt`dbE)6i zx8dhq0Nh~+Bw_NIQ&!tJToui1UCG2}A8^4Z6GkuY^PDX|sx5d!vdI>mIKz>@g94?a zj|y%c)32|rqN1y($GqFyGQRUgd?C8eYWbaa!B?;nzg*0uYG0$q=cg!92dqj;y{*H) zkmCLa_JL(=$XA|{B&6-G1+%XCLm$FRFe4n4AoA8z%XWGXy)vhY-XwYzAhHfGnTw&l zZZjlsfgj^B`&iMQp+-9#q%V|Yk)7O^zHU=)f=0LsuA^I;1bK~KEV7*8kvBNyCT6M} z7UBfWye)OQUi0~X8$f*%%$an*pkcp)0DVQvs?dJpM@T)>G+u+`z_~{E|JJWl>^03# z>=`RieXno+`*7PUz{}fgT+@rVf3UlY8+|LC5Yxbq%6qbYF`2UWqwXrgFyr%303{6>G^KZK%M?T$j(pDAlU;dxWV-h*5R#1!WswQ zxw8v%>j2P?l$uoDJnjCgs5mu%2t#wPo*4F%d;-zPFNng~3qT=jO%2f0->e>N zeAD#&BGe7qt@WU1!@$h?D(i&_e^b2HdHeP)1oQ{Uxp#IGYSig^d*Ye0@sP}Lk%S6pOcz45Y42*2LV~5(y&zv|0d9Trkff^+^!U&ql zl9Hig#`omxG-dfDBpivS|B$GtA`n*Pil&s+RFLtp#a)C*AqJo0d_O?LODuYAYj1b5 zw$oRT-Kr@^QFL8)}&vP%Y4I`ub z(-I;sN9=!ccFc4mBeS#0Ia8){RZax_rH?`7|BxWr!b0UQZ33VTR^`6+y{o(D(+(;8 zsxJP3{EEmO%aNg~n_0bUHaq-)CL6gtf|D_rZQ|(ocrr#+^FR<^l@B+~{xg6|1j4|* z0~|Ifc))afI4!I~9pQ3@kIiZ+9JGRf63refN422bYQl`#8_~HkI#cd(aE*5;#@SX< zwdqGoon z>gQO*8ydNuhV@}!YWiROZ6QI1MY&e+6fkfjyXkpsdmdt2x5IHc`DueGM*7Wq3k;lG z6D6X`SHPxVhZj>U?2hG1m@dSzLtdvVqBZDs_hh{$6*CiyKcK;P;;G#31n4I(v7YjV z3er74&F7I~jzGJoN=W>>&6WqZ_&nrTlVsAlf{+E>!okC@Z+PWQxv7G8D^k&V4I=5ZuLbYBw2 zC5qG%DO$m^L}cE3f|Az?^m=_D!!F3R$AR~_23qhRZ@!CBTW-oocUlLK!eGQ^?<06h zlwch*bU}r7{EHO(JcQ`!H`Nfaf&HwttnoJ%sjPoi6%!FGowZ`)l!biF=YM&7ze}qU z{YPxUU4zwR8Q5!ctGn zOIny8{RYZCvQ;VDPTb#~jK)mDPciro+*fG^llExQvdy1^pv2Xf_IAw#iK2*N2F}Vq zwksQkL%|+Tx8KeRt{Sg}6fA!Hr}w2!C~roWsOmo=)~{tsIWrQwQ})?Y1u_RLERJ!6 zG0FcX6@=uRK8I;+#Zp&|?aE)~b2G%KA#ZXZFej1HwU#-Fj8cA zW2vZ|G#Ky@4@%xA+J-1tCFs_n>GhfZ1Gm%+M9&TfRAG20WuO1_l(1^>NYQG3NB(F| z!pM}Tzs?n`r&#zM@~ih2SK!yrrNn5JZXU6!u+&{K z4y=Ta350ijn9WF-ShzIh5-V8#sv}1=Y0C)lKexKz&MoorkmOq(BV=1*Seu^+UGL{m@w6l2<{D0T zvc@lE#*;_Z{F@JHH3Z6XQ8D27Q-?en7GDsWiaQzEnD$ogc4KmNvJT~= zWk3DV7L`LlIWd>B_Ed6Eai-c%J4Vki_HZvykJGV|HE{qaY3Ga@9ISQK=6$~>$2{)c zIB$2IrIa0ez@S<`trclmHat5tvoJIl5~}g{`Ut$9%B;JdQp>@OoAJ++j%ZOU?npR( z)H$j2ox@atGI>FLzeQr^yhnGV205>l)&*IkP(P%dD$IrRTXAXD(T* z)3EuT>A=xuCGmzaIyhp(T9n#!yGqIhK+yOhxbBtV{Yk&@HA5@^lxD06-KDX;D>MZs z>-r`?dbS<8sY$8)Joubnc!BWMy))e?{VLnBd=~5h2R9WtyAr1J=TYKe<*W`m*)#C! z1Qlp<4XoDdtqK0$L?VJ?eGE~~Qz%MI$h#(j&$31qIhU}L7Iz@(2RCSbnUFIT{ z)&hR4c$u6${haY^O%EV*{~4!yTeO1_66`O{w~+W<qJ7;A=Dk9n<+0a{9B$+14d2zZvi>q~!WBbw>H!>hmg$iK;yBS)YO^_mOV z?0Q|!j^}YL&$Yyf&6FD*-bP5?hHLlQbmGmwFR791c3Oa&OVH>|m1wHBvZP?j$#U7$ zFJvHME9WkJV9|d6vpD2wN;7M zc@jZ3Dg9wlqqkZX`MJi;stMjmKma-;tu?ZeACLR^kG~yrKpJ>#s*7cPhdn%cq~zTk z2OC4Ik%+tJqq(Am!==7Fbp8wHmO+QK$Izi~Yt_qIEJtIfw_#di0oM~42X z6leSO8<4C&IRz4@Ya+J(nL3@Cc7IeaaXzk9PBnkNXB?NA*p)}C!{5|ia+1IPqkFIx zlu&>uJ^qkyRh`997FLJi26H`R5F0_e#>ZAapMq#ML=_ev8jZe=$R4Rt+SNPfBg)SW zf}mS|>?MESH%*n!8d#<~kI#*j_*61_?Dh5=yn5`fqqz?Wkr%c)HP6)cm=- zkg1#N{YKfgzeKgIH)KK8t0Ah+DsRc%4(&RAVB+31OdpKBiGxo=Q*@9~ z&iS3&0L_m9Cww=Dyk-%Q7jx%L79zMzX`MXOu%YJ`+yC&uvZ<3QaEzP7hp6z4q&4Y`xX2{sy6XMnJ2FgN^F`3P!@iu zFG=e-aOdXQ5;c_somPA^gfbDLCBb0PF`y$KpGi0Naxb+q+|jU6mQ6uv`P>1+vJ`uHT0qy zB9&S1z+d3d`Y-Q@r0e-3-Gz(ye+xmPq?H%BMnyFZjCwwJSg41Anurc1OK6I&&WAdtVeioQe_yfSc{im9(*i_EY%As|$lXYVnj4@retad=FHghCs&l zQew;Gb7qC9|7{`4f&qLHaL9x)^+ z)>X`%QzM}O+3h;G0{DpGR#w;!fENQ1mKdqzC)~lVHVF!|VMDvMBKPP!)RUv8WC;&T zZQ)dcXUq6byzNX`$HF^Lqc5#S(@YO2^ytF~SkY12cpg%lY$t?S_adsU)D>)wJri91 z2j7<4+80G0yXii?!u9pLS^tZ+S%QM&zV(~)6VYRJfk*#_#LFRlRY?k^u6iA-KbXf1 zqsgi{dc!SDo_yoRe6z&ESFU(l7L;hU_=GiMjw?33? zPTYU^-qS$8X}#fCDan_ou+%wUY^Gexm~11^E*WM=KCptYclYn3`&*SiCGM495dYbo z93s8teb&rz$t#SKH9(nzSEI0y5G1H@V#4Ig9mSXbl_P>K(P}_k z(eB~lw*Nut7Zwss@9S%XLes+jQF=lS4(G%io)=|`)cUR`^qxlg-}wgo-6a9LHO|qp zsmir(*t}*N^}6yD6YGnoww0L2)^GAH_tz(+Tw*8fZJ$WAdi>LuE)Ri9Rhd#NyOb^@ zwWAZu8|SPnw4sC5joX`dRvs+ugZ5((=@}dj683iDQ}5BJTk;3ipYJ>uG#Or(Zy>gM zoVI%J4Gl50Zl;;P2z-rP(tmqIX47zk0yHv;nh^5VEjQUl_t`56Omrw_W_LQJE@y2E z&*KCqiv!uSr*PeC{pm~gzlveIkK zh{!kuB;{W~xVlIMe%RXDaL^cqsB5U_7nb&PF5$_cqNd{Eo?c#JZc~UL_zn3WJq*HD zw5DP`rW9V&*d}}C{Jt||n`|DP*D|k&lh)6Ei5tRXg~ee``4T4bXY69|nQ8ivb}jm! z9DA};J~pK#?|%t}egoH^#N%KujTabW=2mq$KU$@Xb#Z8f#0a%TjnsJ|EvfirfnJtN zX~Q3b|D-zS=8{0moM&+v=h;mX}5(SCU_0vT>3f2)Z0DQx>YeQ5jKG+MK!2p~$dym9u0 z*!>psVe)UM@Hkn3plYt~A2fvWy+~A@wiBi{!zVxiO*lH|f?FeWA_}fkaA zyZ?-XLk&28;)F@uXr0tojCtTftjBxb>aE88H;BHEEYFpHs;2w*oZ%QP<$rlf0P0t; z)OOE}Culm5KVRF3k}~}}u&%w#DXDuSVrNAnx+}w~XR$6Qr}RG8R)PvU4wp(?FuSIU zxDuJTA$+Ra0}L)}tT0kSiXlpEO&8xsv#h7rkVfD-LGO=s&%kWZn+fy4sOb)d*C0Q= zv?k^yhEu{YGCkP0vHJ|ing-{HzC9F-H%QYXJ2fd}s>2*dN?Simfr*pbwgOjuk1!CI zlsHggvR9fbF(sZLE+*ynrPh!x-@$bL9^0DX>UTj-e6AvMVvM9_1`4q|z6Lm=?=C*NtE;D0)KuVA z+5xAQ9Gv3FP)s{}Y|Hr@+z*uhZCxJrXOHd*r4T!ooS=Wq6p#_TB^xIFfVl8H2anwKXHlae}|uQ8Gdzfxjis_LVr zz&yVwUa0p2{Y|-(TlUyEC0mLwI^f%^8NNhSRtA6J1>VoC1FKeoal6Z_s|wd6`bGPP zH223j3?Ov&9s$McJx~~9T3R&0!7r>F3ODqb*JTEHF0_4FqH%}t2`lMX~B01>#QuJSNL zOw3Kcmd&7ML^?0>N{C7em(66!*G6kaBK{|A_~LPRa6rn-{LUL3-&2h%*|k?iiHUiW zpI@9=^CzkzOS+58sa#(Zlef9Ksfz4ZUW;h%ggctmldQ0!396Dm7PD0ohC#Owc!I1k zV^JxwcbUI`$M)n3LlE%qT)^0Vs4jbzoQY8y*I>`jFZ2x`L@-iwha4Z5zL}9#Ru;9B zfCEVlp$9t+WKChYU($La_V~bh*>Aw7Y%vb)HF|x8_ zrmXKqV$#w)d@w^kF_Mwoc$F3v76Ahm-!^kjUQNvulAfzD7gbzvdb;JeP_KWctRy5? zUWNl7?(971uC5A{YYc%W(h(!W{rU6jVIsG6o9Pu94Y^KmWD8-TbH6h9qbWDGa-AnJ zFepMjJOHme1sFwfaq41|J1|gGR8)|0lBUfkV~Y<^M~eLcM$U5J88S6BEwIYZtEvjg zY=fZ0Oi)nKWS7+?3?y>}2L~JHTM<3W5Sf@H>F;dIDkw+^=pdt`Z-a9YcB?Wx;NgJ{ zKWl97^x}G5+Z|oY~11q(YXDmJzxFukj^ctX(P;xTortEzgZr;}UK`KC)&{u2{= zZ%g9r>QZ^K`o(mAKfjD0MbG;s3KMSk;3y}%Hhw*uhzW6LeQiH9sDN@Vzz$4Nc4q#q zXs9&sO>&S4(;iG)t!jTo+4^HZv9MrbYEDMOl2|`AFH5bHf-mzn{FJo667< ze}C^9%Kg{+5+O@5uPug(#6jFKcWPW&!&W^sP9g4{?xNQ!5=(GCJL&k zP^M{UOtMbODPxMe3X}2iE%)gQSJ&26Sw4L@{}@tUQ{A=Po_^bfwr_esQMCIaG21&B z@&t{VUs#yiP>?hoj_~#EJ5ljLLUwwLFkuN5mG^&0N%eQO*4H;f{Tev;R8%JAmE`2r zeN4hA2jUg44;Q|BcH>(SBAmUDN~R12usq|{l8jGIhKhwSwm52H2K3uF z+I}sY*w8)pElOiX7cc}iTU~SWP?uOrd`HV!@sh~?%||acBYZpshYzP(hQo)6te%QEEU`)8)x2q6xUEiMuNgX;t4FNuV|dyGX4W>C=j1WD55VU zUwpeh{e=3;q))a$^6e#&K`QOPFBdcc={FD5>^JEr563BPD>uhZ?9G}1x{;|+f8he? zKz%@m3VA;Tc`qICu5~41aFPP;eHH{onn{D2;5J3D4Yf&Y>U+x7x;N=o1pzJx1(LAMCT4(axhE$H(7>D(T~ zIQO4@HFla}2-Pl>-nwY9cMocMpWzfF7(8#WX||LmuLTs;<9ERr{s zJtmmbFON!JUrsfYO7<~k%v(1z)fW?k?$@u}T(V*x@4{9T5y?+SKPNb{1=y{LV<&BJRqArKh9*Z&v5*2Y2-vF-<>jI__N z-?xQ=lRuO;J>3qMyyO)=cwkxu%E5_HMiGb0=1pl2t9+tcgnPe##w;4oT3PbCOxVaY z=w+LNL~VvOwljEj8Z1u-m2BW#c>Tf10(~+(3JS_gYxVuprlapY1RNr9l5Fxzu}Ze? zX+Mll4fF*+U7ULzF20eefr5ceymusIJ$hCCD|70aKLqC1f@NGc1J|l92~;93!l|V#l3On+_w}%AdWaB*{h4b;~WEQppHA6>o;{a-CMsH zu!tAtG&SVDEib!6g(UsNO3IfXC}&EkszZT+`c}w`f-1T{#Y~iDbo%hLxp}-MXhGZT zMjjKL>MJ?@RKsy~g@1m%J+V0c)zDQn;UVq(=Ch2N8ww<6tZnPp2S>G)If_}}a~Gzb zw;NclO{;!Wpkt9gezdJ^qC(*@T%OgpwXXh6#<4#2Ja{!VLGlB!f5;30w;mI=%Pr!K z!yeBFVaZ4|WOWWh^LKfEpioFcIo-iR`Qz~1!tBFFgmbfIlV(|dV^zyiU+(Z6jcSu1 zn#-VKso~LmnETamGTnt&q5Z{GGHX^NFz$t9V`xA5hsi6={97C!`b{}Oq$zZGxj76}sqBfpTi~WtX}I4A+-!)bKf819%g#<@ zHKKb!#D$^07$eWHEpEgvn~?x9CV1bN4IXbxX{XBO0{zEkiAF|uN4J&SbVWxYGq=-` zp^~)pZXNQ4{!gity7ID2LW%|QXFIOWVRot2Qf@2$qIYjhNQmCZ`s3Kp)91jxzJV}8pwjvA)3(g?_PYJlZXf9gqpQt16L9<+o!}I z`BUr5&a-!-$^IYc=hW($&$d$c1Twr*$Il*yvVb04XquD%|J!x5IJRH>LTdoIn* zP279W-3%Hi-VXL-)z!TF!7|FrD|q%#U5|t=gq=U^X3e^FG&Q&I;`7gj<=bsG{<`!% zYERZN>e><98i51;IbVMD4@Qm{Mj(JFPGreDOL_Q#`&qW~qb~C`8Vy^&-@)3fjU>37 zOq=>dMB%{B==FNmWqr%XfB&4mDZQEe_+z5T?G92nO9Gi(Mj#M4XPMh>`7Lv2&ETy? z^YM62g*HQ7iuCK-hc{lG$AVYpGWe=1`DX1pQRN2$0p`5&8so=ZFG}3~WL+IE&3%<; zpPq`Ui!a)@-+Y5t=FDW;)F)ZKYIVf=I%BulcJ^Y zoRoycV&QZkKwFzXEL=7IhOx|hX(o%`c#SBTjGVmi&70lj&f6yP@~jtGvS$~$)U*4KM*I%3ZmO0e6k)YW;;ntv%_vs%M;%tt~X5MbWx3&==M z3x(+-p}yY3^qF&*GU+jTCnue=tl4D5E7D8%405@g*w`3uzHvOIhYm+9FFHD!9*K#J z9W$B(MQ4BU$z(DN1|2?;=0)o2>InqenKfrFUw-v9+rHlsQTWu?*vS6ELT1gGOJ06H zD^`6%)zM>TE&ogQ8JpF1QTwA5&XOQDHU@=4#oyk2pTp(ljJ<9Q5L|UqcDS7Tet$O~ zEMJM)Y^JKJiXRIKdGw(NMAKhfQo@cOcH{N>_;AH4h7BDO(HH!8Teh%kcOIpshxl;C zD(<*-BF!z$%$fHZug{yqhK-vzQG1fMwl=nG-Ntj%o)WDt%U69wQSm{X4hJ8uSVjMS zeYo=S%eyV_FEeMO*K66iD~FxCau_{w1o18xPd)QIFFf}Q$4{JKbM{s&77N>V?BK@V zj1#Rc`TGjU+p`yw(a5gcTqcaWJ|cNvfAddTTAK0u+sNLwohg%pA<++(uOvAsiD5$r zGk@WmBqjBt@IVoEn~fNI_pS&2IsN+fVfKvaKyVaMT2{uep+mYYZ^F2-Oc)pZNO*O@ zB1T<%4KAmHoV-2k%E{%A4?oDtk3K=G(NJAeL++lvytQz?D0KmNf7uEw77OkpM<_mc zkjalfDw^yICF+$)Th<7<~ zAE~1BP$_Y74*I6_7De9~YHLqY>HhcmNj-WbM6~3#yrP2o`ct8FYX9Jgt!0M~(q2Rp%|^T{d>-R`DLha_YpXw$?%A^kCZmz!k`j9L z?8#|@b6P&1kIanp&~GOOt$sg+g+(-Y8%Q6JipgY(NS?>z;XqLd3Wc2X^t4cD&VA%4 zI-LfK*-UXs2}i1q(I=%hE@$_j+qtN#^U&PVgd diff --git a/include/ezcomponents/GraphDatabaseTiein/docs/tutorial/tutorial_insert_data.php b/include/ezcomponents/GraphDatabaseTiein/docs/tutorial/tutorial_insert_data.php new file mode 100644 index 000000000..9a65bf164 --- /dev/null +++ b/include/ezcomponents/GraphDatabaseTiein/docs/tutorial/tutorial_insert_data.php @@ -0,0 +1,19 @@ +exec( 'CREATE TABLE browser_hits ( id INT, browser VARCHAR(255), hits INT )' ); + +// Insert some data +$db->exec( "INSERT INTO browser_hits VALUES ( NULL, 'Firefox', 2567 )" ); +$db->exec( "INSERT INTO browser_hits VALUES ( NULL, 'Opera', 543 )" ); +$db->exec( "INSERT INTO browser_hits VALUES ( NULL, 'Safari', 23 )" ); +$db->exec( "INSERT INTO browser_hits VALUES ( NULL, 'Konquror', 812 )" ); +$db->exec( "INSERT INTO browser_hits VALUES ( NULL, 'Lynx', 431 )" ); +$db->exec( "INSERT INTO browser_hits VALUES ( NULL, 'wget', 912 )" ); + +?> diff --git a/include/ezcomponents/GraphDatabaseTiein/docs/tutorial/tutorial_multiple.php b/include/ezcomponents/GraphDatabaseTiein/docs/tutorial/tutorial_multiple.php new file mode 100644 index 000000000..5e9cd95d2 --- /dev/null +++ b/include/ezcomponents/GraphDatabaseTiein/docs/tutorial/tutorial_multiple.php @@ -0,0 +1,45 @@ +createSelectQuery(); +$query + ->select( '*' ) + ->from( 'browser_hits' ); +$statement = $query->prepare(); +$statement->execute(); + +// Create chart from data +$chart = new ezcGraphPieChart(); +$chart->title = 'Browser statistics'; +$chart->legend = false; + +$chart->data['browsers'] = new ezcGraphDatabaseDataSet( + $statement, + array( + ezcGraph::KEY => 'browser', + ezcGraph::VALUE => 'hits', + ) +); + +// Some graph output formatting +$chart->renderer = new ezcGraphRenderer3d(); + +$chart->renderer->options->pieChartGleam = .3; +$chart->renderer->options->pieChartGleamColor = '#FFFFFF'; +$chart->renderer->options->dataBorder = false; + +$chart->renderer->options->pieChartShadowSize = 5; +$chart->renderer->options->pieChartShadowColor = '#000000'; + +$chart->renderer->options->pieChartSymbolColor = '#55575388'; + +$chart->renderer->options->pieChartHeight = 5; +$chart->renderer->options->pieChartRotation = .8; + +// Render +$chart->render( 400, 150, 'tutorial_multiple.svg' ); + +?> diff --git a/include/ezcomponents/GraphDatabaseTiein/docs/tutorial/tutorial_simple.php b/include/ezcomponents/GraphDatabaseTiein/docs/tutorial/tutorial_simple.php new file mode 100644 index 000000000..c735d3edf --- /dev/null +++ b/include/ezcomponents/GraphDatabaseTiein/docs/tutorial/tutorial_simple.php @@ -0,0 +1,22 @@ +createSelectQuery(); +$query + ->select( 'browser', 'hits' ) + ->from( 'browser_hits' ); +$statement = $query->prepare(); +$statement->execute(); + +// Create chart from data +$chart = new ezcGraphPieChart(); +$chart->title = 'Browser statistics'; + +$chart->data['browsers'] = new ezcGraphDatabaseDataSet( $statement ); + +$chart->render( 400, 200, 'tutorial_simple.svg' ); + +?> diff --git a/include/ezcomponents/GraphDatabaseTiein/docs/tutorial/tutorial_single.php b/include/ezcomponents/GraphDatabaseTiein/docs/tutorial/tutorial_single.php new file mode 100644 index 000000000..4d00ddc54 --- /dev/null +++ b/include/ezcomponents/GraphDatabaseTiein/docs/tutorial/tutorial_single.php @@ -0,0 +1,26 @@ +createSelectQuery(); +$query + ->select( 'hits' ) + ->from( 'browser_hits' ); +$statement = $query->prepare(); +$statement->execute(); + +// Create chart from data +$chart = new ezcGraphLineChart(); +$chart->title = 'Browser statistics'; +$chart->options->fillLines = 220; + +$chart->data['browsers'] = new ezcGraphDatabaseDataSet( $statement ); +$chart->data['average'] = new ezcGraphDataSetAveragePolynom( + $chart->data['browsers'] +); + +$chart->render( 400, 150, 'tutorial_single.svg' ); + +?> diff --git a/include/ezcomponents/GraphDatabaseTiein/src/dataset.php b/include/ezcomponents/GraphDatabaseTiein/src/dataset.php new file mode 100644 index 000000000..bb3914a6b --- /dev/null +++ b/include/ezcomponents/GraphDatabaseTiein/src/dataset.php @@ -0,0 +1,139 @@ + 'row name', + * ezcGraph::VALUE => 'row name', + * ); + * + * @param PDOStatement $statement + * @param array $definition + * @return ezcGraphDatabase + */ + public function __construct( PDOStatement $statement, array $definition = null ) + { + parent::__construct(); + + $this->data = array(); + $this->createFromPdo( $statement, $definition ); + } + + /** + * Create dataset from PDO statement + * + * This methods uses the values from a PDOStatement to fill up the data + * sets data. + * + * If the definition array is empty a single column will be used as values, + * with two columns the first column will be used for the keys and the + * second for the data set values. + * + * You may define the name of the rows used for keys and values by using + * an array like: + * array ( + * ezcGraph::KEY => 'row name', + * ezcGraph::VALUE => 'row name', + * ); + * + * @param PDOStatement $statement + * @param array $definition + * @return void + */ + protected function createFromPdo( PDOStatement $statement, array $definition = null ) + { + $count = 0; + + if ( $definition === null ) + { + while ( $row = $statement->fetch( PDO::FETCH_NUM ) ) + { + ++$count; + + switch ( count( $row ) ) + { + case 1: + $this->data[] = $row[0]; + break; + case 2: + $this->data[$row[0]] = $row[1]; + break; + default: + throw new ezcGraphDatabaseTooManyColumnsException( $row ); + } + } + } + else + { + while ( $row = $statement->fetch( PDO::FETCH_NAMED ) ) + { + ++$count; + + if ( !array_key_exists( $definition[ezcGraph::VALUE], $row ) ) + { + throw new ezcGraphDatabaseMissingColumnException( $definition[ezcGraph::VALUE] ); + } + + $value = $row[$definition[ezcGraph::VALUE]]; + + if ( array_key_exists( ezcGraph::KEY, $definition ) ) + { + if ( !array_key_exists( $definition[ezcGraph::KEY], $row ) ) + { + throw new ezcGraphDatabaseMissingColumnException( $definition[ezcGraph::KEY] ); + } + + $this->data[$row[$definition[ezcGraph::KEY]]] = $value; + } + else + { + $this->data[] = $value; + } + } + } + + // Empty result set + if ( $count <= 0 ) + { + throw new ezcGraphDatabaseStatementNotExecutedException( $statement ); + } + } + + /** + * Returns the number of elements in this dataset + * + * @return int + */ + public function count() + { + return count( $this->data ); + } +} + +?> diff --git a/include/ezcomponents/GraphDatabaseTiein/src/exceptions/exception.php b/include/ezcomponents/GraphDatabaseTiein/src/exceptions/exception.php new file mode 100644 index 000000000..307f0d8a1 --- /dev/null +++ b/include/ezcomponents/GraphDatabaseTiein/src/exceptions/exception.php @@ -0,0 +1,20 @@ + diff --git a/include/ezcomponents/GraphDatabaseTiein/src/exceptions/missing_column.php b/include/ezcomponents/GraphDatabaseTiein/src/exceptions/missing_column.php new file mode 100644 index 000000000..f22153870 --- /dev/null +++ b/include/ezcomponents/GraphDatabaseTiein/src/exceptions/missing_column.php @@ -0,0 +1,31 @@ + diff --git a/include/ezcomponents/GraphDatabaseTiein/src/exceptions/statement_not_executed.php b/include/ezcomponents/GraphDatabaseTiein/src/exceptions/statement_not_executed.php new file mode 100644 index 000000000..0ce708952 --- /dev/null +++ b/include/ezcomponents/GraphDatabaseTiein/src/exceptions/statement_not_executed.php @@ -0,0 +1,31 @@ + diff --git a/include/ezcomponents/GraphDatabaseTiein/src/exceptions/too_many_columns.php b/include/ezcomponents/GraphDatabaseTiein/src/exceptions/too_many_columns.php new file mode 100644 index 000000000..216e23141 --- /dev/null +++ b/include/ezcomponents/GraphDatabaseTiein/src/exceptions/too_many_columns.php @@ -0,0 +1,33 @@ + diff --git a/include/ezcomponents/GraphDatabaseTiein/tests/dataset_pdo_test.php b/include/ezcomponents/GraphDatabaseTiein/tests/dataset_pdo_test.php new file mode 100644 index 000000000..04dd74ca6 --- /dev/null +++ b/include/ezcomponents/GraphDatabaseTiein/tests/dataset_pdo_test.php @@ -0,0 +1,374 @@ +tempDir = $this->createTempDir( __CLASS__ . sprintf( '_%03d_', ++$i ) ) . '/'; + $this->basePath = dirname( __FILE__ ) . '/data/'; + + // Try to build up database connection + try + { + $db = ezcDbInstance::get(); + } + catch ( Exception $e ) + { + $this->markTestSkipped( 'Database connection required for PDO statement tests.' ); + } + + $this->q = new ezcQueryInsert( $db ); + try + { + $db->exec( 'DROP TABLE graph_pdo_test' ); + } + catch ( Exception $e ) {} // eat + + // Create test table + $db->exec( 'CREATE TABLE graph_pdo_test ( id INT, browser VARCHAR(255), hits INT )' ); + + // Insert some data + $db->exec( "INSERT INTO graph_pdo_test VALUES ( '', 'Firefox', 2567 )" ); + $db->exec( "INSERT INTO graph_pdo_test VALUES ( '', 'Opera', 543 )" ); + $db->exec( "INSERT INTO graph_pdo_test VALUES ( '', 'Safari', 23 )" ); + $db->exec( "INSERT INTO graph_pdo_test VALUES ( '', 'Konquror', 812 )" ); + $db->exec( "INSERT INTO graph_pdo_test VALUES ( '', 'Lynx', 431 )" ); + $db->exec( "INSERT INTO graph_pdo_test VALUES ( '', 'wget', 912 )" ); + } + + protected function tearDown() + { + if ( !$this->hasFailed() ) + { + $this->removeTempDir(); + } + + $db = ezcDbInstance::get(); + $db->exec( 'DROP TABLE graph_pdo_test' ); + } + + public function testAutomaticDataSetUsage() + { + $db = ezcDbInstance::get(); + + $statement = $db->prepare( 'SELECT browser, hits FROM graph_pdo_test' ); + $statement->execute(); + + $dataset = new ezcGraphDatabaseDataSet( $statement ); + + $dataSetArray = array( + 'Firefox' => 2567, + 'Opera' => 543, + 'Safari' => 23, + 'Konquror' => 812, + 'Lynx' => 431, + 'wget' => 912, + ); + + $count = 0; + foreach ( $dataset as $key => $value ) + { + list( $compareKey, $compareValue ) = each( $dataSetArray ); + + $this->assertEquals( + $compareKey, + $key, + 'Unexpected key for dataset value.' + ); + + $this->assertEquals( + $compareValue, + $value, + 'Unexpected value for dataset.' + ); + + ++$count; + } + + $this->assertEquals( + $count, + count( $dataSetArray ), + 'Too few datasets found.' + ); + } + + public function testAutomaticDataSetUsageSingleColumn() + { + $db = ezcDbInstance::get(); + + $statement = $db->prepare( 'SELECT hits FROM graph_pdo_test' ); + $statement->execute(); + + $dataset = new ezcGraphDatabaseDataSet( $statement ); + + $dataSetArray = array( + 'Firefox' => 2567, + 'Opera' => 543, + 'Safari' => 23, + 'Konquror' => 812, + 'Lynx' => 431, + 'wget' => 912, + ); + + $count = 0; + foreach ( $dataset as $key => $value ) + { + list( $compareKey, $compareValue ) = each( $dataSetArray ); + + $this->assertEquals( + $count, + $key, + 'Unexpected key for dataset value.' + ); + + $this->assertEquals( + $compareValue, + $value, + 'Unexpected value for dataset.' + ); + + ++$count; + } + + $this->assertEquals( + $count, + count( $dataSetArray ), + 'Too few datasets found.' + ); + } + + public function testAutomaticDataSetUsageTooManyRows() + { + $db = ezcDbInstance::get(); + + $statement = $db->prepare( 'SELECT * FROM graph_pdo_test' ); + $statement->execute(); + + try + { + $dataset = new ezcGraphDatabaseDataSet( $statement ); + } + catch ( ezcGraphDatabaseTooManyColumnsException $e ) + { + return true; + } + + $this->fail( 'Expected ezcGraphDatabaseTooManyColumnsException.' ); + } + + public function testSpecifiedDataSetUsage() + { + $db = ezcDbInstance::get(); + + $statement = $db->prepare( 'SELECT * FROM graph_pdo_test' ); + $statement->execute(); + + $dataset = new ezcGraphDatabaseDataSet( + $statement, + array( + ezcGraph::KEY => 'browser', + ezcGraph::VALUE => 'hits', + ) + ); + + $dataSetArray = array( + 'Firefox' => 2567, + 'Opera' => 543, + 'Safari' => 23, + 'Konquror' => 812, + 'Lynx' => 431, + 'wget' => 912, + ); + + $count = 0; + foreach ( $dataset as $key => $value ) + { + list( $compareKey, $compareValue ) = each( $dataSetArray ); + + $this->assertEquals( + $compareKey, + $key, + 'Unexpected key for dataset value.' + ); + + $this->assertEquals( + $compareValue, + $value, + 'Unexpected value for dataset.' + ); + + ++$count; + } + + $this->assertEquals( + $count, + count( $dataSetArray ), + 'Too few datasets found.' + ); + } + + public function testSpecifiedDataSetUsageSingleColumn() + { + $db = ezcDbInstance::get(); + + $statement = $db->prepare( 'SELECT * FROM graph_pdo_test' ); + $statement->execute(); + + $dataset = new ezcGraphDatabaseDataSet( + $statement, + array( + ezcGraph::VALUE => 'hits', + ) + ); + + $dataSetArray = array( + 'Firefox' => 2567, + 'Opera' => 543, + 'Safari' => 23, + 'Konquror' => 812, + 'Lynx' => 431, + 'wget' => 912, + ); + + $count = 0; + foreach ( $dataset as $key => $value ) + { + list( $compareKey, $compareValue ) = each( $dataSetArray ); + + $this->assertEquals( + $count, + $key, + 'Unexpected key for dataset value.' + ); + + $this->assertEquals( + $compareValue, + $value, + 'Unexpected value for dataset.' + ); + + ++$count; + } + + $this->assertEquals( + $count, + count( $dataSetArray ), + 'Too few datasets found.' + ); + } + + public function testSpecifiedDataSetUsageBrokenKey() + { + $db = ezcDbInstance::get(); + + $statement = $db->prepare( 'SELECT * FROM graph_pdo_test' ); + $statement->execute(); + + try + { + $dataset = new ezcGraphDatabaseDataSet( + $statement, + array( + ezcGraph::KEY => 'nonexistant', + ezcGraph::VALUE => 'hits', + ) + ); + } + catch ( ezcGraphDatabaseMissingColumnException $e ) + { + return true; + } + + $this->fail( 'Expected ezcGraphDatabaseMissingColumnException.' ); + } + + public function testSpecifiedDataSetUsageBrokenValue() + { + $db = ezcDbInstance::get(); + + $statement = $db->prepare( 'SELECT * FROM graph_pdo_test' ); + $statement->execute(); + + try + { + $dataset = new ezcGraphDatabaseDataSet( + $statement, + array( + ezcGraph::VALUE => 'nonexistant', + ) + ); + } + catch ( ezcGraphDatabaseMissingColumnException $e ) + { + return true; + } + + $this->fail( 'Expected ezcGraphDatabaseMissingColumnException.' ); + } + + public function testNonExceutedQuery() + { + $db = ezcDbInstance::get(); + + $statement = $db->prepare( 'SELECT browser, hits FROM graph_pdo_test' ); + + try + { + $dataset = new ezcGraphDatabaseDataSet( $statement ); + } + catch ( ezcGraphDatabaseStatementNotExecutedException $e ) + { + return true; + } + + $this->fail( 'Expected ezcGraphDatabaseStatementNotExecutedException.' ); + } + + public function testDataSetCount() + { + $db = ezcDbInstance::get(); + + $statement = $db->prepare( 'SELECT * FROM graph_pdo_test' ); + $statement->execute(); + + $dataset = new ezcGraphDatabaseDataSet( + $statement, + array( + ezcGraph::VALUE => 'hits', + ) + ); + + $this->assertEquals( + count( $dataset ), + 6, + 'Wrong data set item count returned' + ); + } +} + +?> diff --git a/include/ezcomponents/GraphDatabaseTiein/tests/suite.php b/include/ezcomponents/GraphDatabaseTiein/tests/suite.php new file mode 100644 index 000000000..89727f66c --- /dev/null +++ b/include/ezcomponents/GraphDatabaseTiein/tests/suite.php @@ -0,0 +1,31 @@ +setName( 'GraphDatabaseTiein' ); + + $this->addTest( ezcGraphDatabaseTest::suite() ); + } + + public static function suite() + { + return new ezcGraphDatabaseTieinSuite; + } +} +?> diff --git a/include/ezcomponents/ImageAnalysis/CREDITS b/include/ezcomponents/ImageAnalysis/CREDITS new file mode 100644 index 000000000..2cc9fc273 --- /dev/null +++ b/include/ezcomponents/ImageAnalysis/CREDITS @@ -0,0 +1,16 @@ +CREDITS +======= + +eZ Components team +------------------ + +- Sergey Alexeev +- Sebastian Bergmann +- Jan Borsodi +- Raymond Bosman +- Frederik Holljen +- Kore Nordmann +- Derick Rethans +- Vadym Savchuk +- Tobias Schlitt +- Alexandru Stanoi diff --git a/include/ezcomponents/ImageAnalysis/ChangeLog b/include/ezcomponents/ImageAnalysis/ChangeLog new file mode 100644 index 000000000..9f454674c --- /dev/null +++ b/include/ezcomponents/ImageAnalysis/ChangeLog @@ -0,0 +1,113 @@ +1.1.3 - Monday 05 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed bug #12638: ezcImageAnalyzerImagemagickHandler::checkImagemagick + method missing SunOS in switch. + + +1.1.2 - Monday 02 July 2007 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Documentation updates and fixes. + + +1.1.1 - Monday 25 June 2007 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Documentation updates and fixes. + + +1.1 - Monday 18 December 2006 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #9493: Convert < and > in exception messages to ' and ' for + Cache, ConsoleTools, ImageAnalysis, ImageConversion, PersistentObject, + PersistentObjectDatabaseSchemaTiein. +- Fixed issue #9819: Let all components deal with the ezcBaseAutoloadException + properly. + + +1.1beta1 - Monday 20 November 2006 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #9013: SVG not detected in + ezcImageImagemagickBaseHandler::determineTypes(). + + +1.0.1 - Monday 27 February 2006 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed unreported bug: ezcImageAnalyzerImagemagickHandler threw old exception + style in isAvailable() if the operating system is not supported. + + +1.0 - Monday 30 January 2006 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed bug #7606: Fatal error without exif-extension. Exif information is + only provided when extension is available. + + +1.0rc1 - Monday 16 January 2006 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Added ezcImageAnalyzerHandler class (abstract base class for all handlers). +- Added ezcImageAnalyzerPhpHandler (implementation of the original + ImageAnalysis functionality in this handler). +- Added ezcImageAnalyzerImagemagickHandler (still to implement, will use + ImageMagick's "identify" binary to analyze a file). +- Implemented automatic choosing and loading of a feasible handler in + ezcImageAnalyzer. +- Added static getHandlerClasses() and setHandlerClasses() methods on + ezcImageAnalyzer to manipulate the handler classes. +- Added ezcImageAnalyzerData struct to store the data gathered by an + ezcImageAnalyzerHandler class. + +- Changed exception behavior. All errors will now throw a different exception + class. +- Changed ImageAnalysis to be able to use multiple handlers (to be capable of + analyzing more formats). +- Changed ezcImageAnalyzer so that the data provided it provides is now + accessed through $analyzer->data->value instead of $analyzer->value. + + +1.0beta2 - Friday 23 December 2005 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +ezcImageAnalyzer +================ + +- Changed class so that all information is available through overloaded + properties. +- Changed analyzeGeneric() to use getimagesize() which does not rely on any + PHP extensions. +- Changed the GIF scanning code to the one currently used in eZ publish 3.x, + this scans each GIF block properly and looks for interesting information. + The GIF analyzer will now in addition set the properties: + + * width + * height + * mode + * transparencyType + * comment + * commentList + * colorCount + +- Changed method names: + + * processBasics() to analyzeType(). + * processExif() to analyzeExif(). + +- Added hasThumbnail property which reports whether the image has thumbnails + available. + +- Removed the methods getData(), getExtra(), getMime(). This data can now be + accessed through properties instead. + +- Fixed property list for GIFs, and made sure 'size' is set. + + +1.0beta1 - Thursday 24 November 2005 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Initial release of this package. diff --git a/include/ezcomponents/ImageAnalysis/DESCRIPTION b/include/ezcomponents/ImageAnalysis/DESCRIPTION new file mode 100644 index 000000000..eadaeb820 --- /dev/null +++ b/include/ezcomponents/ImageAnalysis/DESCRIPTION @@ -0,0 +1,3 @@ +This class allows you to analyse image files in different ways. At least the +MIME type of the file is returned. In some cases (JPEG, TIFF and GIF) +additional information is gathered as well. diff --git a/include/ezcomponents/ImageAnalysis/design/class_diagram.png b/include/ezcomponents/ImageAnalysis/design/class_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..1d24145bbd408d742673eefb528b87c92ba14c07 GIT binary patch literal 21927 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ϓ}A61VH|E2(_$6VNWxI7EQ$F{aJ+1_O?B%sR-lVM;t;38?s&c z-c!fu%!oi__{&ZvSm--ME>OTXIz>>c&pDjc4A zgHMvVqZQg&19QqpC6}=0IWD6o4b?s$Ypf}p^%_?qXvI1;-m9?jOa~O<4d^yF78<7{ zr`<9hrG0}ONeWD|a2Wo4s+LroulDi)=x3=ag3jn-T^#!!Xo4`SFFsE~9AASo)QgG# zWtGyEM3=q-D}SQ)IQ{_;`i+Uw4Ky9*k*}B*zyrGQQvBZkH01x-cyTdgq+9E~RasOs z%Vhujb^cG&M5pEoTv+r1FSK;=JVJaS&Z8CESL!Dt&gilQeg;5JHdZdyuh7v`+MWem z#tS;T%-0nj97NIHHs#BUwxjvop`gcCr<)R0?E3B*Mz>8zTOf#HMg)v zpj?a{7)U3z%h>)VdLHQjj1AB}#3!uE;+t7OI0V~Af!ZIEBto~s?W+jlgB_wGj-z|g zlW)~i>#x&ObU2@m5d{-IPowUJ0O#J2Xz;l15^B)3P4zx2llQ17cC}8s|9!m} zmbJuU6n__^$(VLoq!ky5i9T>*#&x@`iJ7Jb>Vrzv=n> z%5x)%HQrY>Ee=R|_Y+!Q?1G;csvzgB-efW$S9QGwbb5RA>y4o$N2>nn+4z{XzJtCG zaFf&*+1Pt~MBZyR##&UjR#s}pu>LUvLNyZ*2Y11BvTlOx)p^42%*1SQt6x&Pi47t= zb|kYoXW6hOPT{IndFU#ov2wmTUBQ9%`|;?!S?6Dm7-n}y7BMkwCow}}za(rIn?ikG z_-Kkvn0GT|q~($MuMM!&M64T-_uovWM+4fA1QI4P@H1aB1=$PPBNqr^d)t`d}gX5lO0YkftUFTZQ6Z(l+soi?{=k@|LTPLFg2XMR?Z7NHHoHL^ePS|~% zFzXs_Nx{%63RnEGE1xB+Ap^9bxu_)QSco9g)0Q-J0Vc|nN|wzcC>z<1YL|(o07GB# zbnVd_hZBBmqZr zzX|@c??Pn!3#FlbfitveAs+&FjE%bH6~~UCZOu9<>_T-S1kfJ^J8@_8{*+ zMuNpeDXr-HZG^F1jnM6e5tHa~r^{d_qC8q+vAR1Ys$C*;X9zd@!sq#_0SI&-7&WQU zD+vzv;o7fF5)PcUxpEkBk4+G)+7WH@CQqt(Rv#FtR(@^Gd^9d{Cb#%>T!zHxddYPU`y@S&O zYuE44!HA^3$%@5}6vK<_WyvH78P9Ca_1`F;g~wY zXf|Oy9iB>2_56mI=y1n_PRq#WGZ!(klWIbk&-9=qxbeCW@@KsMljqRoBFFKaouHZ+ ze*3^I*v9KSGeJy+`}L~0AGZ6J{ubhb)A(v`OFY^x*V=H!0Bp@17LM&(>gZd}Z8by) zE-d?8S5iD2f!8(_ z#Ktft$b5pv+3q|=6d553@y@tG!3%8`aCwA<__{HVwFTPar4R|&o}CBW<5TH}t6uV} za++RE#8mGKA89vRRQa`QUbdE#8~NohYPnqSVvOzJ`!53zta9)2EB&bBJ=&om_$}P( zan6D$XL(SC}#I)c)Pjco^a{=IQ)JR93sA8 zT=VStqvueI%5`mFi>6Sfyp7kNAs*|9Y00pad;F9dJcSG?BL-PHF}JQ4^s0gr_w$e3 ze31!#A3%;jNO!fk6_gR=M#4Me6IhmY=FJT3>wJjCSPZ`exuMRDAFzl#+ObI0nNDrJ z?e4=>>ZBPRtFj#a$buk?4^$RTnD7^BXMJl00W*nB%V~UngTSjs&;ZWxgbW(gJWUFC z{~c1G#@)3|Cg^YsxT zjpP8CcbW<;82?v?BLo=07agg<8IHWBfiT}qWVMy4q^>eAF@RPkgCNF4148_4`wRiD z5wLFB>b_El9GXs_f`<@w8lZazQlA25?$>I$@>b0X>Hm}jQCYsauQ0TTyx26WN)0>) zR6~J`0BAQAV0gQ>dQ)Q^k%zsfVv7kn^6pWHwh#*U=kdHw03`{qC;s+E%VT|^f{35B zT{0a!vrJyZ$JM5aD;<2Hq%4XrxV7H;LB25z zkC5PxtN1WD2SXTQ$fWp8Y{YHmfp#~WMPC;b-ZC4V9~+*P9LBr?c0zANoek>(fbUB{ zbMwY_Kn2NCnZdMB%!{f|LEW7PNVYzk8|QbmPN!{D`I8_lSww9H>L_oT4ZmP4q++bJ zzbW&keep418phb&=)d_V2B(?gDBM7#JZMu@6g4=bZ~jMF+N*j+>jnXJG5yn7Q|>Pu z?*Ok`st#n4e{)ZQ+ZP`I9iBNPXZ>Rf1YG|7-0z&R@F3`1<2h>WQ#&H%Hco>K5aTyA zjR!zC{I*N~*EP{^dkl7g_GdH3C6`^g(Tf6jO2m`}m?PfMkQ`RuH9ATSTS73@UfI{u zq>55H9s~8Fst9eG@U1>AINGj`qHG^F|2}zFfZht2Se%&Gw%f>CRr+BUs8@Nu?uHJ@ zZY`LQDy71lYPXh=g6YE@&W_bKmEIG8=xvs3NeFr!-i@)BP{*pEE8xkF5j`KJMje|) z6A&8!>lnx>jqwE!9_-nupu_JQn%|sr@p0jAod`H2qy>Iz2-imiTX)%u(DJ#!P6vO% z6ft0RKe5$C0|&g0M<>;TyPhdV448)BSqwjoa21z?U^ z2@fR^oZ#Q-i(}7BLdV>-n>&CRGtN6-*)Pe45c^KgX;Wlo!K!>f76VRM$tjh1W-yoy@$DWyMrO zaY#FBCea(F>x6}R_{x5fCvwCm68DkmC|58Q1l`mhzrUnu?u~wFP{|G$8owxGT-bI| zwW(yM{$!|d`IuKfy4K!seB9{_c#Ggw;j6U^+v~HUdrmVXf)}&t|Qoc@cq-xfXdWiU^8I<7O)v0S@(N0 zVChNlemjh7)OBk ze(&SI^n+TZLnv)_6ahenSX#s@yp*oK4!oToKInh0FQhatzrRf|n5R#FFG+GwgATPO z0W9Ru^^ZyeJ$y|GhfN*M0D2+f_+O5j8b|>LW&tVx;~47q9DqWu-*^vlh zeEsBU@jOu)>QS0O%b7=rH;-!li4(F=1J$461As#>SC&`y--b_L`pEh4B3guqL&M?9 zfD_Tv?D^YiD55mw7O6*wGmjGe1N>mbeh~H|1i=u^_*5o^_n_Sp zX7-Hi0N`xo?YpD9IaJdCo%@63eDewmaO~;kht*n}lc}AAf)$QFxnncn5Qb=5-XBJH zqZFcn>ZvN*8F0XeZYJul!>X0a*wX_(>i&|jj@;VZF(Luf^j8=b#pm~p8(*}{vL;`(6~Yx7M>%rCoqiEV0UykmS$yHzJ(WzW9Kc0t4(lp;1M?o=Jl#x)zq&;S%-whpzZ(xLWiU9w@6Kn%&7e9wPn6a9 z7hXb1r>;iEgwnYkAEM=%CqETIQg{%`mAEMl90GGN0DAaFW&v4#$ZcUozS(vEHh$EB5U0nRU~IE>~5% zKwm~5ZQqs+xCgTqN6Zef!g1XIM_x*3?L-{94 z<6<$H^h00sjoEY_s&a`|eNx&q2MYH<+GZ4E7*RO4XPD$ej5ye+a?WW#Fem*I`F1w7 zEq3cb(_+KtXHwHd6mZIwH;cjul#+StJ7oR9pfxx+?t__&RaA2-IOHjN@P} z$A6G8Q^hohh=_)i@Ld1`DgrgWa{wv_1Nqs1K|X*AOk_?<0Z?>_x~XrqU4`<77M<~G zFe<@?zPb+_Yz>f?MVywXcijK_IT=$1sSl$R7aCNZnUR$=InzNEfx@f zBf#-LsluUCZhKveMK2?Ds_50GrHI$#B|gyr>DU+cj+b(Z1A5MOwAaO%AR=vS_5PzV zv8|O!#*fT;?HNA|Ulk8mlW9C{-@{IaZK7*|k1Zs$b|0b)+{%l9CCBS~d|a~%{U9IV z-mdkD3bjA{_KaroFVqE{t-t)VHc8c)Mj~n&wE91?E&XdXVbam+I^iREDxFxoZCC3C z|60I~F0WmZ0-wIhlOZvx_YQC@*ujvLXLuw|l8rx`Ye@pF_CS@eHc{ zH@%&3G;p3>Zbf9_vWU*kqMC&!9<8p)|4Uqd2Tx+iEjBhoAWtfg3?zc>uN6AaeVvi<}x^dJsbq>j+?kGT>YbErI{4Mqs;w}60)Kja|S9<-2FqV{48$Ns+7 zsoZHu5(9hqV|+gU@BT%p5a-}9t$4w7W`Yg){~Ejx)Si1YPz3}E;O_wv2sCI8%DU_I zg#=a`02RO~!w*8^=bSoQiy^;X0hqVxAI7ucf2PrC07gOeLJe#jpHYdPzC#UD3an!< zr4=}bO?!1JO7%QF-Pfk*Kiy75sglqS0=4CHFE72p14Owp&gIL%JbsKgp;f|}?_yF- zz(C24=yjZ>mk6oMS5^QNZudWk;FC+2uVDcarZ&Co?IjNCOY!H9>>htHDFppex~v=S zn>6_)iucNPto08;5B6((=PM9*Ufv%|eCXsN6cT@SGnM!XB(Wp00ItwL{kxOb%d0j( zJ0KwghDxp#O=?pD*nE$Y&2K`ADKfU1RR3yt*{Kqd|1H}VdDYyu@e`xhJ?^>l63mx6 z_Nx>7q)r!+4MmhGZ2h8C(uh=52Y^>1yG$jnb3=*0zq!vQa&WhvgAEq-WV|Tu@#Y$I(oCg^lUcgsf6O;g&3`N ztLD0%g8|DQg&-jvBdr-3o}91yxmVdd3_7g1>Glw_d2s?wit8CZSJ0fi75^Iv<>KJ3 zob;VbpKAJLrq$)6wV?e=w8{44g!OY*1blSQ7~tjc)|cb}GBtG^9kCrBb2(e2B3E-w z(f0Z4&$Q(EgHGcdZsd3E&zjeNtFKNGZ`uh^Ed1EL#>$grU@chrIct50Df4czc2`hC zMXNp+aB7gp*Y*}TjLkdY_Y$b(BBB9OzUBPHjm(>9 zhF_fZ{&;NBP@5h^x!4LN#ov)M2$e2k<}2LadCis~Wsziub2X@*u?rJb4$K?F zw-T?t2*Wj-(941#=YUS`ixg*Vg)*Fk@B6r* z?MdFCCq-r}TpL0!FpWB$5>4o{UQS7faSBMkQ$3VaZlB&1vJmiM(SHFB+qO0G-@Kng zJ!F>UOT$2!!RBm|tJK4v5q$mEsNq+$!RfmNQc}9{Gx&$GWgiQ4><5!DUpX7wV`x6Xak9zHU z@s1aF{zmaqg0yJJnhDW6qVJnQ9Zb1I~DswMEPn4&Fb&&l$A2J~d%+$Q@k zx?6;~eg*T1eAfxa!tRvT4y_frM^yiVB?1}yok1Q>49gYmo0#TJ1dRybgaG1;08MK! z`8DcGn8@0!_be@hYKz-5CQ-n~f)+zdg6)*tYI8oCPEw2m6dH-FcSQ%yCaXPrKp`=Be0d+j-V)>+1^}8ds2c5&;@sKAg9#bV0z-i+7 z2?IeGBzY|Jfi*6G{8kQRP9w=1^IkGlmyaEO-%;oz%okAHaImTqJJ|ZnRLeTgdQ3O< zaMnOE*KHAJew5Ufdc_YzKJ?ajrEI@Rb2o^w()40?B01RlaFn`AQz7&#iR{UfH{w;7zGYdvmjl){ae_7SLrw(VnLes2u zJW%6oPm(B)1L?*)JNAXk{(}DwB47?3leam?$PB}xsQ6tnFsLL`3A|&EnI3`K7~-nA z??0N$PtEE+>QAg$A6}UvTT=kr2$Glu5khZiA9Yj@h8Z?_ ztv85`{DjDc`z(H(?v!vipgHUMBNV$>KB)cw)N%FkOz(TVt6trcLPyf+dP-r1xUA!O zxi#r5qZ5s4L=-m?x|2AIJC6$N$c^au;RlRtUW zAF}5sVF#p-%Ho3Q6C-n#Sc(p1x?}&wo;+%UN0U|2bIeS2joKECb3sp zl<>UnepEHRzjlZ=D>I~>nr5|Wo>*Lm-bMX!fhjyQkbnp5$0u_>v^8JzoVDu6-^!S_ zFZstlI~gX)asmFiv1YFWBfAE~*OTubHMR`QyjXpNs;9Ez2f%$o_?8JHm`-n=yD@7D zHs(Z8XZ|EX#kES9%LII$bD9F=*cJP=C6Bw+#bcL zJobe{GiT@>vPfF>9!FFqdpYPhOvlai({T^r5a@{KZaf^^iSSn(Kpo0yz6tk%c})yl zD4ae8iExRn4DRsh9r)g-oKu!{ugpr2Og9ja>;VFjWp%fVw?>(UeD+n&p7eeu98DYP z(pRG)LqAj;BbgL3>#lUt^s`NecA^h#>h-bUGbx9q1~KW^E(uB1^RCDwtaz?r8aH~; zSI>ICz{tl_*4B1p#J52_D!t3whN)MVU|X^SOEn#x!lvkGx^*e+QAtLpqZ}Wh14s1= zOcvA0Oo1tEPt&6;+q=j64)UD)Hg}GcJDl|^?0cTsnR%%gHS(TOto=4Z+N@sMh%BmA z=Y=B7Dt}-ggJ64Xxx))$EF6^^GHN-OUTXTE9E3>phpN6719pSvo&a?3;pnt>=gu zX!fqUQyQG^%DZgVTut35wl}BxU%=T3UGLqAyBjrUqqLDX@U|D(bT*|O>M`V-6||8v zPr)L*Ph^N54%TL}DHlS*1w<#{?M;YD7{LqMN5q&%~FpK^x}Npu3ouOuyIVJx5QpJ3aF1cK3uMV14sGo#f z>e_q}7GMK)0_M_t`IC<5#!rgg*7Yk$z=ikg_2PHGg%gTGm2dsoCZ{uEcTRW$+V<-O z1QE^a9j8-Yi}#Dc%i`91zy!RiO>}#Qioix;?B`_u-2utE)D|T zJ94v|9PKys3KYzrzDiQf4n<%a?4O8oaO3wR{m%x=JSQSx(ceICe@e<{;6DiC^}V!% zVlpn5XyirZRA2>O09N zYYKdLUvoPgh;x4~Q7pc%Xl~+N3nCu7`IwQ?3yVw?=Hwn95X9uPv$4-UofwAkC8;x?rU@Df!z7~j_T{9ezm*`*G>g|xenfmLq5)QSinH&9)h+1P) z%%QTs2VZZOkd=nNk=kml`Cl>MW9$|cppPT382Igg^n~{PH?BbHLFAI||0(@@>7eH% z4<55f`cm|_A%6P|;YkJr^gZ4&2U=a6yoio42Owdne+oy)KrWyA1~1-(YhHq_-aLzN zR_$N!6TB_m(Y^x(Er%9)RZ|-Gx!ntWQf#}<>dj<%Ra=?`0e1%{a)Cj-lX;sRzLZ=@WqOc7ZjcFH9NNdfo}8% dxlCs@5~$tVRmS3e0jX2hpbmMsFb)P>{SW+;SKt5u literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageAnalysis/design/imageanalysis.png b/include/ezcomponents/ImageAnalysis/design/imageanalysis.png new file mode 100644 index 0000000000000000000000000000000000000000..51cadb00ed0246c1a19c57ad0193f809933b3e41 GIT binary patch literal 3306 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 Uo}0lXj2i|pF}SXe)pd#f7jV2x(f|Me literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageAnalysis/design/imageanalysis.xml b/include/ezcomponents/ImageAnalysis/design/imageanalysis.xml new file mode 100644 index 000000000..e2501d95b --- /dev/null +++ b/include/ezcomponents/ImageAnalysis/design/imageanalysis.xml @@ -0,0 +1,379 @@ + + + + + Enterprise Architect + 2.5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Package + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/include/ezcomponents/ImageAnalysis/docs/example.php b/include/ezcomponents/ImageAnalysis/docs/example.php new file mode 100644 index 000000000..6a00081bb --- /dev/null +++ b/include/ezcomponents/ImageAnalysis/docs/example.php @@ -0,0 +1,32 @@ +mime == 'image/tiff' || $image->mime == 'image/jpeg' ) +{ + // Analyzation of further image data is done during access of the data + echo 'Photo taken on '.date( 'Y/m/d, H:i', $image->data->date ).".\n"; +} +elseif ( $mime !== false ) +{ + echo "Format was detected as {$mime}.\n"; +} +else +{ + echo "Unknown photo format.\n"; +} + +?> diff --git a/include/ezcomponents/ImageAnalysis/docs/img/imageanalysis_example_01.jpg b/include/ezcomponents/ImageAnalysis/docs/img/imageanalysis_example_01.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5561c23f62a2c67fe2010855c765335bc634fb6b GIT binary patch literal 17018 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 AJpcdz literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageAnalysis/docs/img/imageanalysis_example_02.jpg b/include/ezcomponents/ImageAnalysis/docs/img/imageanalysis_example_02.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b13ab10aa8d2682e2ff71bb4d19157405759275a GIT binary patch literal 25984 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 BOUVEL literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageAnalysis/docs/img/imageanalysis_example_03.jpg b/include/ezcomponents/ImageAnalysis/docs/img/imageanalysis_example_03.jpg new file mode 100644 index 0000000000000000000000000000000000000000..963c35c9452c941034e450bf828be74530ce7bb1 GIT binary patch literal 26365 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%0Dp0Cm@JkVNPYd|30G?T-zyUcq@X`+-RK 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 Q(4M=L@IMbK8WLy!*~$Y~5&!@I literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageAnalysis/docs/toby.jpg b/include/ezcomponents/ImageAnalysis/docs/toby.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a632ae0f73c1dfa848fc319972b2a5a2b875b5fa GIT binary patch literal 76383 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 + +Extracting further data +----------------------- + +Aside from the MIME type, ImageAnalysis can extract other image information. +The following example demonstrates this: + +.. include:: tutorial_example_02.php + :literal: + +The example is basically the same as the first one, except that more data is requested +from ezcImageAnalyzer (lines 8 to 11). The analysis of additional data +begins on line 9. After that, the data is cached in the ezcImageAnalyzer object. + +The width, height and size values are available for every analyzable image. +A comment is not always available. If an image property is not available, the +output will be some sensible default value (such as n/a). (Note that the +availability of some data also depends on the availability of PHP's Exif +extension.) + +The example image and printed output is shown below: + +.. image:: img/imageanalysis_example_02.jpg + +:: + + Image data: + MIME type: image/jpeg + Width: 380 px + Height: 285 px + Filesize: 25984 b + Comment: n/a + + +Configuring handlers +-------------------- + +Like ezcImageConverter, ezcImageAnalyzer is based on handler classes, which +allow it to utilize different back-ends for image analysis. The currently +implemented handlers are: + +ezcImageAnalyzerPhpHandler + This uses PHP's getimagesize() function (which does not require the GD + extension!) and can optionally use PHP's Exif extension. + +ezcImageAnalyzerImagemagickHandler + Here `ImageMagick`_'s "identify" program is used. + +Both handlers are activated by default and are capable of determining if their +preconditions are fulfilled. + +You might need to configure a handler, if for example the path to the +ImageMagick_ "identify" binary is not available in the $PATH environment +variable. The following example shows how this is possible and what else can be +configured for the handlers: + +.. _ImageMagick: http://www.imagemagick.org/script/index.php + +.. include:: tutorial_example_03.php + :literal: + +Basically, the code is the same as in example 2, except that ezcImageAnalyzer +is being configured to only use its ImageMagick handler and +not the PHP handler. In addition, the location of the "identify" binary is +explicitly set. See the results below: + +.. image:: img/imageanalysis_example_03.jpg + +:: + + Image data: + MIME type: image/jpeg + Width: 320 px + Height: 240 px + Filesize: 26365 b + Comment: San Francisco airport, October 2005. + +More information +================ + +For more information, see the ezcImageAnalyzer API documentation. + + +.. + Local Variables: + mode: rst + fill-column: 79 + End: + vim: et syn=rst tw=79 diff --git a/include/ezcomponents/ImageAnalysis/docs/tutorial_autoload.php b/include/ezcomponents/ImageAnalysis/docs/tutorial_autoload.php new file mode 100644 index 000000000..66b1dcf1e --- /dev/null +++ b/include/ezcomponents/ImageAnalysis/docs/tutorial_autoload.php @@ -0,0 +1,20 @@ + diff --git a/include/ezcomponents/ImageAnalysis/docs/tutorial_example_01.php b/include/ezcomponents/ImageAnalysis/docs/tutorial_example_01.php new file mode 100644 index 000000000..ca23110b6 --- /dev/null +++ b/include/ezcomponents/ImageAnalysis/docs/tutorial_example_01.php @@ -0,0 +1,8 @@ +mime}>.\n"; +?> diff --git a/include/ezcomponents/ImageAnalysis/docs/tutorial_example_02.php b/include/ezcomponents/ImageAnalysis/docs/tutorial_example_02.php new file mode 100644 index 000000000..52c4fec23 --- /dev/null +++ b/include/ezcomponents/ImageAnalysis/docs/tutorial_example_02.php @@ -0,0 +1,15 @@ +mime}\n"; +echo "Width:\t\t{$image->data->width} px\n"; +echo "Height:\t\t{$image->data->height} px\n"; +echo "Filesize:\t{$image->data->size} b\n"; + +$comment = ( $image->data->comment == '' ) ? 'n/a' : $image->data->comment; +echo "Comment:\t{$comment}\n"; +?> diff --git a/include/ezcomponents/ImageAnalysis/docs/tutorial_example_03.php b/include/ezcomponents/ImageAnalysis/docs/tutorial_example_03.php new file mode 100644 index 000000000..109786042 --- /dev/null +++ b/include/ezcomponents/ImageAnalysis/docs/tutorial_example_03.php @@ -0,0 +1,21 @@ + array( 'binary' => '/usr/bin/identify' ), + ) +); + +$image = new ezcImageAnalyzer( $tutorialPath.'/img/imageanalysis_example_03.jpg' ); + +echo "Image data:\n"; +echo "MIME type:\t{$image->mime}\n"; +echo "Width:\t\t{$image->data->width} px\n"; +echo "Height:\t\t{$image->data->height} px\n"; +echo "Filesize:\t{$image->data->size} b\n"; + +$comment = ( $image->data->comment == '' ) ? 'n/a' : $image->data->comment; +echo "Comment:\t{$comment}\n"; +?> diff --git a/include/ezcomponents/ImageAnalysis/src/analyzer.php b/include/ezcomponents/ImageAnalysis/src/analyzer.php new file mode 100644 index 000000000..da1538938 --- /dev/null +++ b/include/ezcomponents/ImageAnalysis/src/analyzer.php @@ -0,0 +1,354 @@ + + * // Analyzation of the MIME type is done during creation. + * $image = new ezcImageAnalyzer( dirname( __FILE__ ).'/toby.jpg' ); + * + * if ( $image->mime == 'image/tiff' || $image->mime == 'image/jpeg' ) + * { + * // Analyzation of further image data is done during access of the data + * echo 'Photo taken on '.date( 'Y/m/d, H:i', $image->data->date ).".\n"; + * } + * elseif ( $mime !== false ) + * { + * echo "Format was detected as {$mime}.\n"; + * } + * else + * { + * echo "Unknown photo format.\n"; + * } + * + * + * If you want to manipulate the handlers used by ezcImageAnalyzer, you can do + * this globally like this: + * + * // Retreive the predefined handler classes + * $originalHandlers = ezcImageAnalyzer::getHandlerClasses(); + * foreach ( $handlerClasses as $id => $handlerClass ) + * { + * // Unset the ezcImageAnalyzerPhpHandler (do not use that anymore!) + * if ( $handlerClass === 'ezcImageAnalyzerPhpHandler' ) + * { + * unset( $handlerClasses[$id] ); + * } + * } + * // Set the new collection of handler classes. + * ezcImageAnalyzer::setHandlerClasses( $handlerClasses ); + * + * // Somewhere else in the code... This now tries to use your handler in the + * // first place + * $image = new ezcImageAnalyzer( '/var/cache/images/toby.jpg' ); + * + * + * Or you can define your own handler classes to be used (beware, those must + * either be already loaded or load automatically on access). + * + * // Define your onw handler class to be used in the first place and fall back on + * // ImageMagick, if necessary. + * $handlerClasses = array( 'MyOwnHandlerClass', 'ezcImageAnalyzerImagemagickHandler' ); + * ezcImageAnalyzer::setHandlerClasses( $handlerClasses ); + * + * // Somewehre else in the code... This now tries to use your handler in the + * // first place + * $image = new ezcImageAnalyzer( '/var/cache/images/toby.jpg' ); + * + * + * @property-read string $mime + * The MIME type of the image. + * @property-read ezcImageAnalyzerData $data + * Extended data about the image. + * + * @package ImageAnalysis + * @version 1.1.3 + */ +class ezcImageAnalyzer +{ + /** + * The path of the file to analyze. + * + * @var string + */ + protected $filePath; + + /** + * Determines whether the image file has been analyzed or not. + * This is used internally. + * + * @var bool + */ + protected $isAnalyzed; + + /** + * Container to hold the properties + * + * @var array(string=>mixed) + */ + protected $properties; + + /** + * Collection of known handler classes. Classes are ordered by priority. + * + * @var array(string=>mixed) + */ + protected static $knownHandlers = array( + 'ezcImageAnalyzerPhpHandler' => array(), + 'ezcImageAnalyzerImagemagickHandler' => array(), + ); + + /** + * Available handler classes and their options. + * + * @var array + */ + protected static $availableHandlers; + + /** + * Create an image analyzer for the specified file. + * + * @throws ezcBaseFilePermissionException + * If image file is not readable. + * @throws ezcBaseFileNotFoundException + * If image file does not exist. + * @throws ezcImageAnalyzerFileNotProcessableException + * If the file could not be processed. + * @param string $file The file to analyze. + */ + public function __construct( $file ) + { + if ( !file_exists( $file ) || !is_file( $file ) ) + { + throw new ezcBaseFileNotFoundException( $file ); + } + if ( !is_readable( $file ) ) + { + throw new ezcBaseFilePermissionException( $file, ezcBaseFileException::READ ); + } + $this->filePath = $file; + $this->isAnalyzed = false; + + $this->checkHandlers(); + + $this->analyzeType(); + } + + /** + * Check all known handlers for availability. + * + * This method checks all registered handler classes for if the they are + * available (using {@link ezcImageAnalyzerHandler::isAvailable()}). + * + * @throws ezcImageAnalyzerInvalidHandlerException + * If a registered handler class does not exist + * or does not inherit from {@link ezcImageAnalyzerHandler}. + */ + protected function checkHandlers() + { + if ( isset( ezcImageAnalyzer::$availableHandlers ) && is_array( ezcImageAnalyzer::$availableHandlers ) ) + { + return; + } + ezcImageAnalyzer::$availableHandlers = array(); + foreach ( ezcImageAnalyzer::$knownHandlers as $handlerClass => $options ) + { + if ( !ezcBaseFeatures::classExists( $handlerClass ) || !is_subclass_of( $handlerClass, 'ezcImageAnalyzerHandler' ) ) + { + throw new ezcImageAnalyzerInvalidHandlerException( $handlerClass ); + } + $handler = new $handlerClass( $options ); + if ( $handler->isAvailable() ) + { + ezcImageAnalyzer::$availableHandlers[] = clone( $handler ); + } + } + } + + /** + * Returns an array of known handler classes. + * + * This method returns an array of available handler classes. The array is + * indexed by the handler names, which are assigned to an array of options + * set for this handler. + * + * @return array(string=>array(string=>string)) Handlers and options. + */ + public static function getHandlerClasses() + { + return ezcImageAnalyzer::$knownHandlers; + } + + /** + * Set the array of known handlers. + * + * Sets the available handlers. The array submitted must be indexed by + * the handler classes names (attention: handler classes must extend + * ezcImageAnalyzerHandler), assigned to an array of options for this + * handler. Most handlers don't have any options. Which options a handler + * may accept depends on the handler implementation. + * + * @param array(string=>array(string=>string)) $handlerClasses Handlers + * and options. + */ + public static function setHandlerClasses( array $handlerClasses ) + { + ezcImageAnalyzer::$knownHandlers = $handlerClasses; + ezcImageAnalyzer::$availableHandlers = null; + } + + /** + * Sets the property $name to $value. + * + * @throws ezcBasePropertyNotFoundException + * If the property does not exist. + * @throws ezcBasePropertyPermissionException + * If the property cannot be modified. + * @param string $name + * @param mixed $value + * @ignore + */ + public function __set( $name, $value ) + { + switch ( $name ) + { + case 'mime': + case 'data': + throw new ezcBasePropertyPermissionException( $name, ezcBasePropertyPermissionException::READ ); + default: + throw new ezcBasePropertyNotFoundException( $name ); + } + } + + /** + * Returns the property $name. + * + * @throws ezcBasePropertyNotFoundException + * If the property does not exist. + * @param string $name Name of the property to access. + * @return mixed Value of the desired property. + * @ignore + */ + public function __get( $name ) + { + switch ( $name ) + { + case 'mime': + return $this->properties['mime']; + case 'data': + if ( !$this->isAnalyzed ) + { + $this->analyzeImage(); + } + return $this->properties[$name]; + default: + throw new ezcBasePropertyNotFoundException( $name ); + } + } + + /** + * Checks if the property $name exist and returns the result. + * + * @param string $name + * @return bool + * @ignore + */ + public function __isset( $name ) + { + switch ( $name ) + { + case 'mime': + case 'data': + return true; + default: + return false; + } + } + + /** + * Analyze the image file's MIME type. + * This method triggers a handler to analyze the MIME type of the given image file. + * + * @throws ezcImageAnalyzerFileNotProcessableException + * If the no handler is capable to analyze the given image file. + */ + public function analyzeType() + { + if ( !is_array( ezcImageAnalyzer::$availableHandlers ) ) + { + $this->checkHandlers(); + } + foreach ( ezcImageAnalyzer::$availableHandlers as $handler ) + { + if ( ( $mime = $handler->analyzeType( $this->filePath ) ) !== false ) + { + $this->properties['mime'] = $mime; + return; + } + } + throw new ezcImageAnalyzerFileNotProcessableException( $this->filePath, "Could not determine MIME type of file." ); + } + + /** + * Analyze the image file. + * + * This method triggers a handler to analyze the given image file for more data. + * + * @throws ezcImageAnalyzerFileNotProcessableException + * If the no handler is capable to analyze the given image file. + * @throws ezcBaseFileIoException + * If an error occurs while the file is read. + */ + public function analyzeImage() + { + if ( !is_array( ezcImageAnalyzer::$availableHandlers ) ) + { + $this->checkHandlers(); + } + if ( !isset( $this->properties['mime'] ) ) + { + $this->analyzeType(); + } + foreach ( ezcImageAnalyzer::$availableHandlers as $handler ) + { + if ( $handler->canAnalyze( $this->properties['mime'] ) ) + { + $this->properties['data'] = $handler->analyzeImage( $this->filePath ); + $this->isAnalyzed = true; + return; + } + } + throw new ezcImageAnalyzerFileNotProcessableException( $this->filePath, "No handler found to analyze MIME type '{$this->mime}'." ); + } +} +?> diff --git a/include/ezcomponents/ImageAnalysis/src/exceptions/exception.php b/include/ezcomponents/ImageAnalysis/src/exceptions/exception.php new file mode 100644 index 000000000..c68f4385d --- /dev/null +++ b/include/ezcomponents/ImageAnalysis/src/exceptions/exception.php @@ -0,0 +1,20 @@ + diff --git a/include/ezcomponents/ImageAnalysis/src/exceptions/file_not_processable.php b/include/ezcomponents/ImageAnalysis/src/exceptions/file_not_processable.php new file mode 100644 index 000000000..f83343dd0 --- /dev/null +++ b/include/ezcomponents/ImageAnalysis/src/exceptions/file_not_processable.php @@ -0,0 +1,37 @@ + diff --git a/include/ezcomponents/ImageAnalysis/src/exceptions/invalid_handler.php b/include/ezcomponents/ImageAnalysis/src/exceptions/invalid_handler.php new file mode 100644 index 000000000..9c49ced8f --- /dev/null +++ b/include/ezcomponents/ImageAnalysis/src/exceptions/invalid_handler.php @@ -0,0 +1,31 @@ + diff --git a/include/ezcomponents/ImageAnalysis/src/handlers/imagemagick.php b/include/ezcomponents/ImageAnalysis/src/handlers/imagemagick.php new file mode 100644 index 000000000..b8efe96b1 --- /dev/null +++ b/include/ezcomponents/ImageAnalysis/src/handlers/imagemagick.php @@ -0,0 +1,637 @@ +string) + */ + protected $mimeMap = array( + 'bmp' => 'image/bmp', + 'bmp2' => 'image/bmp', + 'bmp3' => 'image/bmp', + 'cur' => 'image/x-win-bitmap', + 'dcx' => 'image/dcx', + 'epdf' => 'application/pdf', + 'epi' => 'application/postscript', + 'eps' => 'application/postscript', + 'eps2' => 'application/postscript', + 'eps3' => 'application/postscript', + 'epsf' => 'application/postscript', + 'epsi' => 'application/postscript', + 'ept' => 'application/postscript', + 'ept2' => 'application/postscript', + 'ept3' => 'application/postscript', + 'fax' => 'image/g3fax', + 'fits' => 'image/x-fits', + 'g3' => 'image/g3fax', + 'gif' => 'image/gif', + 'gif87' => 'image/gif', + 'icb' => 'application/x-icb', + 'ico' => 'image/x-win-bitmap', + 'icon' => 'image/x-win-bitmap', + 'jng' => 'image/jng', + 'jpeg' => 'image/jpeg', + 'jpg' => 'image/jpeg', + 'm2v' => 'video/mpeg2', + 'miff' => 'application/x-mif', + 'mng' => 'video/mng', + 'mpeg' => 'video/mpeg', + 'mpg' => 'video/mpeg', + 'otb' => 'image/x-otb', + 'p7' => 'image/x-xv', + 'palm' => 'image/x-palm', + 'pbm' => 'image/pbm', + 'pcd' => 'image/pcd', + 'pcds' => 'image/pcd', + 'pcl' => 'application/pcl', + 'pct' => 'image/pict', + 'pcx' => 'image/x-pcx', + 'pdb' => 'application/vnd.palm', + 'pdf' => 'application/pdf', + 'pgm' => 'image/x-pgm', + 'picon' => 'image/xpm', + 'pict' => 'image/pict', + 'pjpeg' => 'image/pjpeg', + 'png' => 'image/png', + 'png24' => 'image/png', + 'png32' => 'image/png', + 'png8' => 'image/png', + 'pnm' => 'image/pbm', + 'ppm' => 'image/x-ppm', + 'ps' => 'application/postscript', + 'psd' => 'image/x-photoshop', + 'ptif' => 'image/x-ptiff', + 'ras' => 'image/ras', + 'sgi' => 'image/sgi', + 'sun' => 'image/ras', + 'svg' => 'image/svg+xml', + 'svgz' => 'image/svg', + 'text' => 'text/plain', + 'tga' => 'image/tga', + 'tif' => 'image/tiff', + 'tiff' => 'image/tiff', + 'txt' => 'text/plain', + 'vda' => 'image/vda', + 'viff' => 'image/x-viff', + 'vst' => 'image/vst', + 'wbmp' => 'image/vnd.wap.wbmp', + 'xbm' => 'image/x-xbitmap', + 'xpm' => 'image/x-xbitmap', + 'xv' => 'image/x-viff', + 'xwd' => 'image/xwd', + ); + + /** + * MIME types this handler is capable to read. + * + * This array holds an extract of the + * {@link ezcImageAnalyzerHandler::$mimeMap}, listing all MIME types this + * handler is capable to analyze. The map is indexed by the MIME type, + * assigned to boolean true, to speed up hash lookups. + * + * @var array(string=>bool) + */ + protected $mimeTypes = array( + 'application/pcl' => true, + 'application/pdf' => true, + 'application/postscript' => true, + 'application/vnd.palm' => true, + 'application/x-icb' => true, + 'application/x-mif' => true, + 'image/dcx' => true, + 'image/g3fax' => true, + 'image/gif' => true, + 'image/jng' => true, + 'image/jpeg' => true, + 'image/pbm' => true, + 'image/pcd' => true, + 'image/pict' => true, + 'image/pjpeg' => true, + 'image/png' => true, + 'image/ras' => true, + 'image/sgi' => true, + 'image/svg' => true, + 'image/tga' => true, + 'image/tiff' => true, + 'image/vda' => true, + 'image/vnd.wap.wbmp' => true, + 'image/vst' => true, + 'image/x-fits' => true, + 'image/x-ms-bmp' => true, + 'image/x-otb' => true, + 'image/x-palm' => true, + 'image/x-pcx' => true, + 'image/x-pgm' => true, + 'image/x-photoshop' => true, + 'image/x-ppm' => true, + 'image/x-ptiff' => true, + 'image/x-viff' => true, + 'image/x-win-bitmap' => true, + 'image/x-xbitmap' => true, + 'image/x-xv' => true, + 'image/xpm' => true, + 'image/xwd' => true, + 'text/plain' => true, + 'video/mng' => true, + 'video/mpeg' => true, + 'video/mpeg2' => true, + ); + + /** + * Analyzes the image type. + * This method analyzes image data to determine the MIME type. This method + * returns the MIME type of the file to analyze in lowercase letters (e.g. + * "image/jpeg") or false, if the images MIME type could not be determined. + * + * For a list of image types this handler will be able to analyze, see + * {@link ezcImageAnalyzerImagemagickHandler}. + * + * @param string $file The file to analyze. + * @return string|bool The MIME type if analyzation suceeded or false. + */ + public function analyzeType( $file ) + { + $parameters = '-format ' . escapeshellarg( '%m|' ) . ' ' . escapeshellarg( $file ); + $res = ezcImageAnalyzerImagemagickHandler::runCommand( $parameters, $outputString, $errorString ); + if ( $res !== 0 || $errorString !== '' ) + { + return false; + } + $identifiers = explode( '|', strtolower( $outputString ), 2 ); + if ( !isset( $this->mimeMap[$identifiers[0]] ) ) + { + return false; + } + return $this->mimeMap[$identifiers[0]]; + } + + /** + * Analyze the image for detailed information. + * + * This may return various information about the image, depending on it's + * type. All information is collected in the struct + * {@link ezcImageAnalyzerData}. At least the + * {@link ezcImageAnalyzerData::$mime} attribute is always available, if the + * image type can be analyzed at all. Additionally this handler will always + * set the {@link ezcImageAnalyzerData::$width}, + * {@link ezcImageAnalyzerData::$height} and + * {@link ezcImageAnalyzerData::$size} attributes. For detailes information + * on the additional data returned, see {@link ezcImageAnalyzerImagemagickHandler}. + * + * @todo Why does ImageMagick return the wrong file size on TIFF with comments? + * @todo Check for translucent transparency. + * + * @throws ezcImageAnalyzerFileNotProcessableException + * If image file can not be processed. + * @param string $file The file to analyze. + * @return ezcImageAnalyzerData + */ + public function analyzeImage( $file ) + { + // Example strings returned here: + // JPEG (Exif without comment): + // string(45) "[JPEG|76383|399|600|8|59428|DirectClassRGB|]*" + // -------------------------------- + // TIFF (Exif with comment): + // string(79) "[TIFF|108125|399|600|8|113524|DirectClassRGB|A simple comment in a TIFF file.]*" + // -------------------------------- + // PNG: + // string(46) "[PNG|5420|160|120|8|254|DirectClassRGBMatte|]*" + // -------------------------------- + // GIF (Animated): + // string(168) "[GIF|4100|80|50|8|38|PseudoClassRGB|]*[GIF|4100|80|50|8|21|PseudoClassRGB|]*[GIF|4100|80|50|8|17|PseudoClassRGB|Copyright 1996 DeMorgan Industries Corp. + // + // Animated Cog]*" + // -------------------------------- + + $command = '-format ' . escapeshellarg( '[%m|%b|%w|%h|%k|%r|%c]*' ) . ' ' . escapeshellarg( $file ); + + // Execute ImageMagick + $return = $this->runCommand( $command, $outputString, $errorString ); + if ( $return !== 0 || $errorString !== '' ) + { + throw new ezcImageAnalyzerFileNotProcessableException( $file, "ImageMagick error: '{$errorString}'." ); + } + + $dataStruct = new ezcImageAnalyzerData(); + + $rawDataArr = explode( '*', $outputString ); + if ( sizeof( $rawDataArr ) === 1 ) + { + throw new ezcImageAnalyzerFileNotProcessableException( $file, "ImageMagick did not return correct formated string." ); + } + + // Unset last (empty) element + unset( $rawDataArr[count( $rawDataArr ) - 1] ); + + if ( sizeof( $rawDataArr ) > 1 ) + { + $dataStruct->isAnimated = true; + } + foreach ( $rawDataArr as $id => $rawData ) + { + $parsedData = explode( '|', substr( $rawData, 1, -1 ) ); + $dataStruct->mime = $this->mimeMap[strtolower( $parsedData[0] )]; + + $dataStruct->size = filesize( $file ); + + $dataStruct->width = max( (int) $parsedData[2], $dataStruct->width ); + $dataStruct->height = max( (int) $parsedData[3], $dataStruct->height ); + + $dataStruct->isColor = $parsedData[4] > 2 ? true : false; + + $dataStruct->transparencyType = self::TRANSPARENCY_OPAQUE; + if ( strpos( $parsedData[5], 'RGBMatte' ) !== FALSE ) + { + $dataStruct->transparencyType = self::TRANSPARENCY_TRANSPARENT; + } + + if ( $parsedData[6] !== '' ) + { + if ( $dataStruct->isAnimated && $id > 0 ) + { + $dataStruct->commentList[] = $parsedData[6]; + } + else + { + $dataStruct->comment = $parsedData[6]; + $dataStruct->commentList = array( $parsedData[6] ); + } + } + + if ( $dataStruct->mime === 'image/jpeg' || $dataStruct->mime === 'image/tiff' ) + { + $this->analyzeExif( $dataStruct, $file ); + } + } + return $dataStruct; + } + + /** + * Analyze Exif data contained in JPEG and TIFF images. + * + * This method analyzes the Exif data contained in JPEG and TIFF images, + * using ImageMagick's "identify" binary. + * + * This method tries to provide the EXIF data in a format as close as + * possible to the format returned by ext/EXIF {@link http://php.net/exif}. + * + * @param ezcImageAnalyzerData $data The data object to fill. + * @param string $file The file to analyze. + */ + protected function analyzeExif( ezcImageAnalyzerData $data, $file ) + { + $tagMap = array( + "IFD0" => array( + "ImageDescription", + "Make", + "Model", + "Orientation", + "XResolution", + "YResolution", + "ResolutionUnit", + "Software", + "DateTime", + "YCbCrPositioning", + "Exif_IFD_Pointer", + "Copyright", + "UserComment", + ), + + "EXIF" => array( + "ExposureTime", + "FNumber", + "ExposureProgram", + "ISOSpeedRatings", + "ExifVersion", + "DateTimeOriginal", + "DateTimeDigitized", + "ComponentsConfiguration", + "BrightnessValue", + "ExposureBiasValue", + "MaxApertureValue", + "MeteringMode", + "LightSource", + "Flash", + "FocalLength", + // ImageMagick does not grab this correct, therefore not supported + // "SubjectLocation", + "MakerNote", + "UserComment", + "FlashPixVersion", + "ColorSpace", + "ExifImageWidth", + "ExifImageLength", + "InteroperabilityOffset", + "FileSource", + "SceneType", + "CustomRendered", + "ExposureMode", + "WhiteBalance", + "DigitalZoomRatio", + "FocalLengthIn35mmFilm", + "SceneCaptureType", + "GainControl", + "Contrast", + "Saturation", + "Sharpness", + "SubjectDistanceRange", + ), + "INTEROP" => array( + "InterOperabilityIndex", + "InterOperabilityVersion" + ) + ); + + // Retreive exif data + $command = '-format ' . escapeshellarg( "%[EXIF:*]" ) . ' ' . escapeshellarg( $file ); + $return = $this->runCommand( $command, $outputString, $errorString, false ); + if ( $return !== 0 || $errorString !== '' ) + { + throw new ezcImageAnalyzerFileNotProcessableException( $file, "ImageMagick error: '{$errorString}'." ); + } + + // The following is done in 2 steps to ensure the same array order as ext/exif provides. + + // Pre-process data + $rawData = explode( "\n", $outputString ); + $dataArr = array(); + foreach ( $rawData as $dataString ) + { + $dataParts = explode( "=", $dataString, 2 ); + if ( sizeof( $dataParts ) === 2 ) + { + $dataArr[$dataParts[0]] = substr( $dataParts[1], -1, 1 ) === "." ? substr( $dataParts[1], 0, -1 ) : $dataParts[1]; + } + } + // Some post-processing is needed because ext/exif has some different tag names + if ( isset( $dataArr["ExifOffset"] ) ) + { + $dataArr["Exif_IFD_Pointer"] = $dataArr["ExifOffset"]; + } + if ( isset( $dataArr["InteroperabilityIndex"] ) ) + { + $dataArr["InterOperabilityIndex"] = $dataArr["InteroperabilityIndex"]; + } + if ( isset( $dataArr["InteroperabilityVersion"] ) ) + { + $dataArr["InterOperabilityVersion"] = $dataArr["InteroperabilityVersion"]; + } + if ( isset( $dataArr["Artist"] ) ) + { + $dataArr["Author"] = $dataArr["Artist"]; + } + + // Assign data to tags + $exifArr = array(); + foreach ( $tagMap as $section => $tags ) + { + foreach ( $tags as $tag ) + { + if ( isset( $dataArr[$tag] ) ) + { + // Correct types + switch ( true ) + { + case ( ctype_digit( $dataArr[$tag] ) && stripos( $tag, "version" ) === false ): + $exifArr[$section][$tag] = (int)$dataArr[$tag]; + break; + case ( is_numeric( $dataArr[$tag] ) && stripos( $tag, "version" ) === false ): + $exifArr[$section][$tag] = (float)$dataArr[$tag]; + break; + default: + $exifArr[$section][$tag] = $dataArr[$tag]; + break; + } + } + } + } + + // Retreive additional data for computation + $imageData = getimagesize( $file ); + + $colorCount = 0; + $command = '-format ' . escapeshellarg( '%k' ) . ' ' . escapeshellarg( $file ); + $return = $this->runCommand( $command, $colorCount, $errorString ); + if ( $return !== 0 || $errorString !== '' ) + { + throw new ezcImageAnalyzerFileNotProcessableException( $file, "ImageMagick error: '{$errorString}'." ); + } + + // Compute additional section ext/EXIF provides + $additionsArr = array(); + $addtionsArr["FILE"]["FileName"] = basename( $file ); + $addtionsArr["FILE"]["FileDateTime"] = filemtime( $file ); + $addtionsArr["FILE"]["FileSize"] = filesize( $file ); + $addtionsArr["FILE"]["FileType"] = $imageData[2]; + $addtionsArr["FILE"]["MimeType"] = $data->mime; + $addtionsArr["FILE"]["SectionsFound"] = + ( isset( $exifArr["EXIF"] ) || isset( $exifArr["IFD0"] ) ? "ANY_TAG, " : "" ) + . implode( ", ", array_keys( $exifArr ) ); + + $addtionsArr["COMPUTED"]["html"] = "width=\"{$data->width}\" height=\"{$data->height}\""; + $addtionsArr["COMPUTED"]["Height"] = $data->height; + $addtionsArr["COMPUTED"]["Width"] = $data->width; + $addtionsArr["COMPUTED"]["IsColor"] = ( $colorCount < 3 ) ? 0 : 1; + + // @todo Implement if possible! + // $addtionsArr["COMPUTED"]["ByteOrderMotorola"] = null; + + $fNumberParts = isset( $exifArr["EXIF"]["FNumber"] ) ? explode( "/", $exifArr["EXIF"]["FNumber"] ) : null; + if ( sizeof( $fNumberParts ) === 2 ) + { + $addtionsArr["COMPUTED"]["ApertureFNumber"] = sprintf( "f/%.1f", $fNumberParts[0] / $fNumberParts[1] ); + } + // ImageMagick resturns "..." for not set comments + if ( isset( $exifArr["EXIF"]["UserComment"] ) ) + { + $addtionsArr["COMPUTED"]["UserComment"] = preg_match( "/^\.*$/", $exifArr["EXIF"]["UserComment"] ) === false ? $exifArr["EXIF"]["UserComment"] : null; + // @todo Maybe we can determine that somehow? + // $addtionsArr["COMPUTED"]["UserCommentEncoding"] = "UNDEFINED"; + } + + // Not available through ImageMagick + // $addtionsArr["COMPUTED"]["Thumbnail.FileType"] = null + // $addtionsArr["COMPUTED"]["Thumbnail.MimeType"] = null + + // Merge arrays (done here, to have consistent key order) + $data->exif = array_merge( $addtionsArr, $exifArr ); + } + + /** + * Returns if the handler can analyze a given MIME type. + * + * This method returns if the driver is capable of analyzing a given MIME + * type. This method should be called before trying to actually analyze an + * image using the drivers {@link ezcImageAnalyzerHandler::analyzeImage()} + * method. + * + * @param string $mime The MIME type to check for. + * @return bool True if the handler is able to analyze the MIME type. + */ + public function canAnalyze( $mime ) + { + return isset( $this->mimeTypes[strtolower( $mime )] ); + } + + /** + * Checks wether the GD handler is available on the system. + * + * Returns if PHP's {@link getimagesize()} function is available. + * + * @return bool True is the handler is available. + */ + public function isAvailable() + { + if ( !isset( $this->isAvailable ) ) + { + $this->isAvailable = $this->checkImagemagick(); + } + return $this->isAvailable; + } + + /** + * Checks the availability of ImageMagick on the system. + * + * @return bool + */ + protected function checkImagemagick() + { + if ( !isset( $this->options['binary'] ) ) + { + switch ( PHP_OS ) + { + case 'Linux': + case 'Unix': + case 'FreeBSD': + case 'MacOS': + case 'Darwin': + case 'SunOS': + $this->binary = 'identify'; + break; + case 'Windows': + case 'WINNT': + case 'WIN32': + $this->binary = 'identify.exe'; + break; + default: + throw new ezcImageAnalyzerInvalidHandlerException( 'ezcImageAnalyzerImagemagickHandler' ); + break; + } + } + else + { + $this->binary = $this->options['binary']; + } + + return ezcBaseFeatures::hasImageIdentify(); + } + + /** + * Run the binary registered in ezcImageAnalyzerImagemagickHandler::$binary. + * + * This method executes the ImageMagick binary using the applied parameter + * string. It returns the return value of the command. The output printed + * to STDOUT and ERROUT is available through the $stdOut and $errOut + * parameters. + * + * @param string $parameters The parameters for the binary to execute. + * @param string $stdOut The standard output. + * @param string $errOut The error output. + * @param bool $stripNewlines Wether to strip the newlines from STDOUT. + * @return int The return value of the command (0 on success). + */ + protected function runCommand( $parameters, &$stdOut, &$errOut, $stripNewlines = true ) + { + $command = escapeshellcmd( $this->binary ) . ( $parameters !== '' ? ' ' . $parameters : '' ); + // Prepare to run ImageMagick command + $descriptors = array( + array( 'pipe', 'r' ), + array( 'pipe', 'w' ), + array( 'pipe', 'w' ), + ); + + // Open ImageMagick process + $process = proc_open( $command, $descriptors, $pipes ); + + // Close STDIN pipe + fclose( $pipes[0] ); + + // Read STDOUT + $stdOut = ''; + do + { + $stdOut .= ( $stripNewlines === true ) ? rtrim( fgets( $pipes[1], 1024), "\n" ) : fgets( $pipes[1], 1024 ); + } while ( !feof( $pipes[1] ) ); + + // Read STDERR + $errOut = ''; + do + { + $errOut .= rtrim( fgets( $pipes[2], 1024), "\n" ); + } while ( !feof( $pipes[2] ) ); + + // Wait for process to terminate and store return value + return proc_close( $process ); + } +} +?> diff --git a/include/ezcomponents/ImageAnalysis/src/handlers/php.php b/include/ezcomponents/ImageAnalysis/src/handlers/php.php new file mode 100644 index 000000000..8b1c8650e --- /dev/null +++ b/include/ezcomponents/ImageAnalysis/src/handlers/php.php @@ -0,0 +1,458 @@ +width = $data[0]; + $dataStruct->height = $data[1]; + $dataStruct->mime = image_type_to_mime_type( $data[2] ); + $dataStruct->size = filesize( $file ); + + if ( ( $dataStruct->mime === 'image/jpeg' || $dataStruct->mime === 'image/tiff' ) + && ezcBaseFeatures::hasFunction( 'exif_read_data') + ) + { + $this->analyzeExif( $file, $dataStruct ); + } + elseif ( $dataStruct->mime === 'image/gif' ) + { + $this->analyzeGif( $file, $dataStruct ); + } + + return $dataStruct; + } + + /** + * Returns if the handler can analyze a given MIME type. + * + * This method returns if the driver is capable of analyzing a given MIME + * type. This method should be called before trying to actually analyze an + * image using the drivers {@link self::analyzeImage()} method. + * + * @param string $mime The MIME type to check for. + * @return bool True if the handler is able to analyze the MIME type. + */ + public function canAnalyze( $mime ) + { + switch ( $mime ) + { + case 'image/gif': + case 'image/jpeg': + case 'image/png': + case 'image/psd': + case 'image/bmp': + case 'image/tiff': + case 'image/tiff': + case 'image/jp2': + case 'application/x-shockwave-flash': + case 'image/iff': + case 'image/vnd.wap.wbmp': + case 'image/xbm': + return true; + } + return false; + } + + /** + * Checks wether the GD handler is available on the system. + * + * Returns if PHP's {@link getimagesize()} function is available. + * + * @return bool True is the handler is available. + */ + public function isAvailable() + { + return ezcBaseFeatures::hasFunction( 'getimagesize' ); + } + + /** + * Analyze EXIF enabled file format for EXIF data entries. + * + * The image file is analyzed by calling exif_read_data and placing the + * result in self::exif. In addition it fills in extra properties from + * the EXIF data for easy and uniform access. + * + * @param string $file The file to analyze. + * @param ezcImageAnalyzerData $dataStruct The data struct to fill. + * @return ezcImageAnalyzerData The filled data struct. + */ + private function analyzeExif( $file, ezcImageAnalyzerData $dataStruct ) + { + $dataStruct->exif = exif_read_data( $file, "COMPUTED,FILE", true, false ); + + // Section "COMPUTED" + if ( isset( $dataStruct->exif['COMPUTED']['Width'] ) && isset( $dataStruct->exif['COMPUTED']['Height'] ) ) + { + $dataStruct->width = $dataStruct->exif['COMPUTED']['Width']; + $dataStruct->height = $dataStruct->exif['COMPUTED']['Height']; + } + if ( isset( $dataStruct->exif['COMPUTED']['IsColor'] ) ) + { + $dataStruct->isColor = $dataStruct->exif['COMPUTED']['IsColor'] == 1; + } + if ( isset( $dataStruct->exif['COMPUTED']['UserComment'] ) ) + { + $dataStruct->comment = $dataStruct->exif['COMPUTED']['UserComment']; + $dataStruct->commentList = array( $dataStruct->comment ); + } + if ( isset( $dataStruct->exif['COMPUTED']['Copyright'] ) ) + { + $dataStruct->copyright = $dataStruct->exif['COMPUTED']['Copyright']; + } + + // Section THUMBNAIL + $dataStruct->hasThumbnail = isset( $dataStruct->exif['THUMBNAIL'] ); + + // Section "FILE" + if ( isset( $dataStruct->exif['FILE']['FileSize'] ) ) + { + $dataStruct->size = $dataStruct->exif['FILE']['FileSize']; + } + if ( isset( $dataStruct->exif['FILE']['FileDateTime'] ) ) + { + $dataStruct->date = $dataStruct->exif['FILE']['FileDateTime']; + } + + // EXIF based image are never animated. + $dataStruct->isAnimated = false; + + return $dataStruct; + } + + /** + * Analyze GIF files for detailed information. + * + * The GIF file is analyzed by scanning for frame entries, if more than one + * is found it is assumed to be animated. + * It also extracts other information such as image width and height, color + * count, image mode, transparency type and comments. + * + * @throws ezcBaseFileIoException + * If image file could not be read. + * @throws ezcImageAnalyzerFileNotProcessableException + * If image file can not be processed. + * @param string $file The file to analyze. + * @param ezcImageAnalyzerData $dataStruct The data struct to fill. + * @return ezcImageAnalyzerData The filled data struct. + */ + private function analyzeGif( $file, ezcImageAnalyzerData $dataStruct ) + { + if ( ( $fp = fopen( $file, 'rb' ) ) === false ) + { + throw new ezcBaseFileIoException( $file, ezcBaseFileException::READ ); + } + + // Read GIF header + $magic = fread( $fp, 6 ); + $offset = 6; + if ( $magic != 'GIF87a' && + $magic != 'GIF89a' ) + { + throw new ezcImageAnalyzerFileNotProcessableException( $file, 'Not a valid GIF image file' ); + } + + $info = array(); + + $version = substr( $magic, 3 ); + $frames = 0; + // Gifs are always indexed + $dataStruct->mode = self::MODE_INDEXED; + $dataStruct->commentList = array(); + $dataStruct->transparencyType = self::TRANSPARENCY_OPAQUE; + + // Read Logical Screen Descriptor + $data = unpack( "v1width/v1height/C1bitfield/C1index/C1ration", fread( $fp, 7 ) ); + $offset += 7; + + $lsdFields = $data['bitfield']; + $globalColorCount = 0; + $globalColorTableSize = 0; + if ( $lsdFields >> 7 ) + { + // Extract 3 bits for color count + $globalColorCount = ( 1 << ( ( $lsdFields & 0x07 ) + 1) ); + // Each color entry is RGB ie. 3 bytes + $globalColorTableSize = $globalColorCount * 3; + } + + $dataStruct->colorCount = $globalColorCount; + $dataStruct->width = $data['width']; + $dataStruct->height = $data['height']; + + if ( $globalColorTableSize ) + { + // Skip the color table, we don't need the data + fseek( $fp, $globalColorTableSize, SEEK_CUR ); + $offset += $globalColorTableSize; + } + + $done = false; + // Iterate over all blocks and extract information + while ( !$done ) + { + $data = fread( $fp, 1 ); + $offset += 1; + $blockType = ord( $data[0] ); + + if ( $blockType == 0x21 ) // Extension Introducer + { + $data .= fread( $fp, 1 ); + $offset += 1; + $extensionLabel = ord( $data[1] ); + + if ( $extensionLabel == 0xf9 ) // Graphical Control Extension + { + $data = unpack( "C1blocksize/C1bitfield/v1delay/C1index/C1term", fread( $fp, 5 + 1 ) ); + $gceFlags = $data['bitfield'];//ord( $data[1] ); + // $animationTimer is currently not in use. + /* $animationTimer = $data['delay']; */ + + // Check bit 0 + if ( $gceFlags & 0x01 ) + { + $dataStruct->transparencyType = self::TRANSPARENCY_TRANSPARENT; + } + $offset += 5 + 1; + } + else if ( $extensionLabel == 0xff ) // Application Extension + { + $data = fread( $fp, 12 ); + $offset += 12; + + $dataBlockDone = false; + while ( !$dataBlockDone ) + { + $data = unpack( "C1blocksize", fread( $fp, 1 ) ); + $offset += 1; + $blockBytes = $data['blocksize']; + + if ( $blockBytes ) + { + // Skip application data, we don't need the data + fseek( $fp, $blockBytes, SEEK_CUR ); + $offset += $blockBytes; + } + else + { + $dataBlockDone = true; + } + } + } + else if ( $extensionLabel == 0xfe ) // Comment Extension + { + $commentBlockDone = false; + $comment = false; + + while ( !$commentBlockDone ) + { + $data = unpack( "C1blocksize", fread( $fp, 1 ) ); + $offset += 1; + $blockBytes = $data['blocksize']; + + if ( $blockBytes ) + { + // Append current block to comment + $data = fread( $fp, $blockBytes ); + $comment .= $data; + $offset += $blockBytes; + } + else + { + $commentBlockDone = true; + } + } + if ( $comment ) + { + if ( $dataStruct->comment === null ) + { + $dataStruct->comment = $comment; + } + $dataStruct->commentList[] = $comment; + } + } + else + { + throw new ezcImageAnalyzerFileNotProcessableException( $file, "Invalid extension label 0x" . hexdec( $extensionLabel ) . " in GIF image." ); + } + } + else if ( $blockType == 0x2c ) // Image Descriptor + { + ++$frames; + $data .= fread( $fp, 9 ); + $data = unpack( "C1separator/v1leftpos/v1toppos/v1width/v1height/C1bitfield", $data ); + $localColorTableSize = 0; + $localColorCount = 0; + $idFields = $data['bitfield']; + if ( $idFields >> 7 ) // Local Color Table + { + // Extract 3 bits for color count + $localColorCount = ( 1 << ( ( $idFields & 0x07 ) + 1) ); + // Each color entry is RGB ie. 3 bytes + $localColorTableSize = $localColorCount * 3; + } + if ( $localColorCount > $globalColorCount ) + { + $dataStruct->colorCount = $localColorCount; + } + + if ( $localColorTableSize ) + { + // Skip the color table, we don't need the data + fseek( $fp, $localColorTableSize, SEEK_CUR ); + $offset += $localColorTableSize; + } + + $lzwCodeSize = fread( $fp, 1 ); // LZW Minimum Code Size, currently unused + $offset += 1; + + $dataBlockDone = false; + while ( !$dataBlockDone ) + { + $data = unpack( "C1blocksize", fread( $fp, 1 ) ); + $offset += 1; + $blockBytes = $data['blocksize']; + + if ( $blockBytes ) + { + // Skip image data, we don't need the data + fseek( $fp, $blockBytes, SEEK_CUR ); + $offset += $blockBytes; + } + else + { + $dataBlockDone = true; + } + } + } + else if ( $blockType == 0x3b ) // Trailer, end of stream + { + $done = true; + } + else + { + throw new ezcImageAnalyzerFileNotProcessableException( $file, "Invalid block type 0x" . hexdec( $blockType ) . " in GIF image." ); + } + if ( feof( $fp ) ) + { + break; + } + } + $dataStruct->isAnimated = $frames > 1; + + return $dataStruct; + } +} +?> diff --git a/include/ezcomponents/ImageAnalysis/src/interfaces/handler.php b/include/ezcomponents/ImageAnalysis/src/interfaces/handler.php new file mode 100644 index 000000000..c7aeadafd --- /dev/null +++ b/include/ezcomponents/ImageAnalysis/src/interfaces/handler.php @@ -0,0 +1,131 @@ +mixed) + */ + protected $options = array(); + + /** + * Create an ezcImageAnalyzerHandler to analyze a file. + * + * The constructor can optionally receive an array of options. Which + * options are utilized by the handler depends on it's implementation. + * To determine this, please refer to the specific handler. + * + * @throws ezcImageAnalyzerException + * If the handler is not able to work. + * @param array $options Possible options for the handler. + */ + public function __construct( array $options = array() ) + { + $this->options = $options; + } + + /** + * Checks wether the given handler is available for analyzing images. + * + * Each ezcImageAnalyzerHandler must implement this method in order to + * check if the handler is available on the system. The method has to + * return true, if the handle is currently available to analyze images + * (e.g. if the GD extension is available, for the + * {@link ezcImageAnalyzerPhpHandler}). + * + * @return bool True if the handler is available. + */ + abstract public function isAvailable(); + + /** + * Analyzes the image type. + * + * This method analyzes image data to determine the MIME type. Each + * ezcImageAnalyzerHandler must at least be capable of performing this + * operation on a file. This method has to return the MIME type of the + * file to analyze in lowercase letters (e.g. "image/jpeg") or false, if + * the images MIME type could not be determined. + * + * @param string $file The file to analyze. + * @return string|bool The MIME type if analyzation suceeded or false. + */ + abstract public function analyzeType( $file ); + + /** + * Analyze the image for detailed information. + * + * This may return various information about the image, depending on it's + * type and the implemented facilities of the handler. All information is + * collected in the struct {@link ezcImageAnalyzerData}. Which information + * is set about an image in the returned data struct, depends on the image + * type and the capabilities of the handler. At least the + * {@link ezcImageAnalyzerData::$mime} attribute must be set. Most handlers + * also provide additional information like the image dimensions and the size + * of the image file. + * + * @throws ezcImageAnalyzerFileNotProcessableException + * If image file can not be processed. + * @param string $file The file to analyze. + * @return ezcImageAnalyzerData + */ + abstract public function analyzeImage( $file ); + + /** + * Returns if the handler can analyze a given MIME type. + * + * This method returns if the driver is capable of analyzing a given MIME + * type. This method should be called before trying to actually analyze an + * image using the drivers {@link self::analyzeImage()} method. + * + * @param string $mime The MIME type to check for. + * @return bool True if the handler is able to analyze the MIME type. + */ + abstract public function canAnalyze( $mime ); +} +?> diff --git a/include/ezcomponents/ImageAnalysis/src/structs/analyzer_data.php b/include/ezcomponents/ImageAnalysis/src/structs/analyzer_data.php new file mode 100644 index 000000000..743065907 --- /dev/null +++ b/include/ezcomponents/ImageAnalysis/src/structs/analyzer_data.php @@ -0,0 +1,221 @@ + + * $analyzer = new ezcImageAnalyzer( 'myfile.jpg' ); + * echo $analyzer->data->size; + * + * + * @see ezcImageAnalyzer + * @see ezcImageAnalyzerHandler + * + * @package ImageAnalysis + * @version 1.1.3 + */ +class ezcImageAnalyzerData extends ezcBaseStruct +{ + /** + * Detected MIME type for the image. + * + * @var string + */ + public $mime; + + /** + * EXIF information retrieved from image. + * + * This will only be filled in for images which supports EXIF entries, + * currently they are: + * - image/jpeg + * - image/tiff + * + * @link http://php.net/manual/en/function.exif-read-data.php + * + * @var array(string=>string) + */ + public $exif = array(); + + /** + * Width of image in pixels. + * + * @var int + */ + public $width = 0; + + /** + * Height of image in pixels. + * + * @var int + */ + public $height = 0; + + /** + * Size of image file in bytes. + * + * @var int + */ + public $size = 0; + + /** + * The image mode. + * + * Can be one of: + * - ezcImageAnalyzerHandler::MODE_INDEXED - Image is built with a palette and consists of + * indexed values per pixel. + * - ezcImageAnalyzerHandler::MODE_TRUECOLOR - Image consists of RGB value per pixel. + * + * @var int + */ + public $mode = ezcImageAnalyzerHandler::MODE_TRUECOLOR; + + /** + * Type of transparency in image. + * + * Can be one of: + * - ezcImageAnalyzerHandler::TRANSPARENCY_OPAQUE - No parts of image is transparent. + * - ezcImageAnalyzerHandler::TRANSPARENCY_TRANSPARENT - Selected palette entries are + * completely see-through. + * - ezcImageAnalyzerHandler::TRANSPARENCY_TRANSLUCENT - Transparency determined pixel per + * pixel with a fuzzy value. + * + * @var int + */ + public $transparencyType; + + /** + * Does the image have colors? + * + * @var bool + */ + public $isColor = true; + + /** + * Number of colors in image. + * + * @var int + */ + public $colorCount = 0; + + /** + * First inline comment for the image. + * + * @var string + */ + public $comment = null; + + /** + * List of inline comments for the image. + * + * @var array(string) + */ + public $commentList = array(); + + /** + * Copyright text for the image. + * + * @var string + */ + public $copyright = null; + + /** + * The date when the picture was taken as UNIX timestamp. + * + * @var int + */ + public $date; + + /** + * Does the image have a thumbnail? + * + * @var bool + */ + public $hasThumbnail = false; + + /** + * Is the image animated? + * + * @var bool + */ + public $isAnimated = false; + + /** + * Create a new instance of ezcImageAnalyzerData. + * + * Create a new instance of ezcImageAnalyzerData to be used with + * {@link ezcImageAnalyzer} objects. + * + * @see ezcImageAnalyzer::analyzeImage() + * @see ezcImageAnalyzerHandler::analyzeImage() + * + * @param string $mime {@link ezcImageAnalyzerData::$mime} + * @param array $exif {@link ezcImageAnalyzerData::$exif} + * @param int $width {@link ezcImageAnalyzerData::$width} + * @param int $height {@link ezcImageAnalyzerData::$height} + * @param int $size {@link ezcImageAnalyzerData::$size} + * @param int $mode {@link ezcImageAnalyzerData::$mode} + * @param int $transparencyType {@link ezcImageAnalyzerData::$transparencyType} + * @param bool $isColor {@link ezcImageAnalyzerData::$isColor} + * @param int $colorCount {@link ezcImageAnalyzerData::$colorCount} + * @param string $comment {@link ezcImageAnalyzerData::$comment} + * @param array $commentList {@link ezcImageAnalyzerData::$commentList} + * @param string $copyright {@link ezcImageAnalyzerData::$copyright} + * @param int $date {@link ezcImageAnalyzerData::$date} + * @param bool $hasThumbnail {@link ezcImageAnalyzerData::$hasThumbnail} + * @param bool $isAnimated {@link ezcImageAnalyzerData::$isAnimated} + */ + public function __construct( + $mime = null, + $exif = array(), + $width = 0, + $height = 0, + $size = 0, + $mode = ezcImageAnalyzerHandler::MODE_TRUECOLOR, + $transparencyType = null, + $isColor = true, + $colorCount = 0, + $comment = null, + $commentList = array(), + $copyright = null, + $date = null, + $hasThumbnail = false, + $isAnimated = false + ) + { + $this->mime = $mime; + $this->exif = $exif; + $this->width = $width; + $this->height = $height; + $this->size = $size; + $this->mode = $mode; + $this->transparencyType = $transparencyType; + $this->isColor = $isColor; + $this->colorCount = $colorCount; + $this->comment = $comment; + $this->commentList = $commentList; + $this->copyright = $copyright; + $this->date = $date; + $this->hasThumbnail = $hasThumbnail; + $this->isAnimated = $isAnimated; + } +} +?> diff --git a/include/ezcomponents/ImageAnalysis/tests/analyzer_test.php b/include/ezcomponents/ImageAnalysis/tests/analyzer_test.php new file mode 100644 index 000000000..2a7012a29 --- /dev/null +++ b/include/ezcomponents/ImageAnalysis/tests/analyzer_test.php @@ -0,0 +1,818 @@ + 'jpeg_exif.jpg', + 'noexif_jpeg' => 'jpeg_noexif.jpg', + 'exif_tiff' => 'tiff_exif.tiff', + 'noexif_tiff' => 'tiff_noexif.tiff', + 'animated_gif' => 'gif_animated.gif', + 'noanimated_gif' => 'gif_nonanimated.gif', + 'noanimated_png' => 'png_nonanimated.png', + 'svg' => 'svg.svg', + ); + + public static function suite() + { + return new PHPUnit_Framework_TestSuite( "ezcImageAnalysisAnalyzerTest" ); + } + + protected function setUp() + { + if ( !ezcBaseFeatures::hasExtensionSupport( 'exif' ) ) + { + $this->markTestSkipped( 'ext/exif is required to run this test.' ); + } + + $this->basePath = dirname( __FILE__ ) . '/data/'; + } + + public function testPhpHandlerGetMimeJpegExif() + { + $file = $this->basePath . $this->testFiles['exif_jpeg']; + $analyzer = $this->getAnalyzerPhpHandler( $file ); + $this->assertSame( + 'image/jpeg', + $analyzer->mime, + 'MIME-Type was not determined correctly for JPEG.' + ); + } + + public function testImagemagickHandlerGetMimeJpegExif() + { + $file = $this->basePath . $this->testFiles['exif_jpeg']; + $analyzer = $this->getAnalyzerImagemagickHandler( $file ); + $this->assertSame( + 'image/jpeg', + $analyzer->mime, + 'MIME-Type was not determined correctly for JPEG.' + ); + } + + public function testPhpHandlerGetMimeJpegNoexif() + { + $file = $this->basePath . $this->testFiles['noexif_jpeg']; + $analyzer = $this->getAnalyzerPhpHandler( $file ); + $this->assertSame( + 'image/jpeg', + $analyzer->mime, + 'MIME-Type was not determined correctly for JPEG.' + ); + } + + public function testImagemagickHandlerGetMimeJpegNoexif() + { + $file = $this->basePath . $this->testFiles['noexif_jpeg']; + $analyzer = $this->getAnalyzerImagemagickHandler( $file ); + $this->assertSame( + 'image/jpeg', + $analyzer->mime, + 'MIME-Type was not determined correctly for JPEG.' + ); + } + + public function testPhpHandlerGetMimeTiffExif() + { + $file = $this->basePath . $this->testFiles['exif_tiff']; + $analyzer = $this->getAnalyzerPhpHandler( $file ); + $this->assertSame( + 'image/tiff', + $analyzer->mime, + 'MIME-Type was not determined correctly for TIFF.' + ); + } + + public function testImagemagickHandlerGetMimeTiffExif() + { + $file = $this->basePath . $this->testFiles['exif_tiff']; + $analyzer = $this->getAnalyzerImagemagickHandler( $file ); + $this->assertSame( + 'image/tiff', + $analyzer->mime, + 'MIME-Type was not determined correctly for TIFF.' + ); + } + + public function testPhpHandlerGetMimeTiffNoexif() + { + $file = $this->basePath . $this->testFiles['noexif_tiff']; + $analyzer = $this->getAnalyzerPhpHandler( $file ); + $this->assertSame( + 'image/tiff', + $analyzer->mime, + 'MIME-Type was not determined correctly for TIFF.' + ); + } + + public function testImagemagickHandlerGetMimeTiffNoexif() + { + $file = $this->basePath . $this->testFiles['noexif_tiff']; + $analyzer = $this->getAnalyzerImagemagickHandler( $file ); + $this->assertSame( + 'image/tiff', + $analyzer->mime, + 'MIME-Type was not determined correctly for TIFF.' + ); + } + + public function testPhpHandlerGetMimeGifNonanimated() + { + $file = $this->basePath . $this->testFiles['noanimated_gif']; + $analyzer = $this->getAnalyzerPhpHandler( $file ); + $this->assertSame( + 'image/gif', + $analyzer->mime, + 'MIME-Type was not determined correctly for GIF.' + ); + } + + public function testImagemagickHandlerGetMimeGifNonanimated() + { + $file = $this->basePath . $this->testFiles['noanimated_gif']; + $analyzer = $this->getAnalyzerImagemagickHandler( $file ); + $this->assertSame( + 'image/gif', + $analyzer->mime, + 'MIME-Type was not determined correctly for GIF.' + ); + } + + public function testPhpHandlerGetMimeGifAnimated() + { + $file = $this->basePath . $this->testFiles['animated_gif']; + $analyzer = $this->getAnalyzerPhpHandler( $file ); + $this->assertSame( + 'image/gif', + $analyzer->mime, + 'MIME-Type was not determined correctly for GIF.' + ); + } + + public function testImagemagickHandlerGetMimeGifAnimated() + { + $file = $this->basePath . $this->testFiles['animated_gif']; + $analyzer = $this->getAnalyzerImagemagickHandler( $file ); + $this->assertSame( + 'image/gif', + $analyzer->mime, + 'MIME-Type was not determined correctly for GIF.' + ); + } + + public function testPhpHandlerGetMimePngNonanimated() + { + $file = $this->basePath . $this->testFiles['noanimated_png']; + $analyzer = $this->getAnalyzerPhpHandler( $file ); + $this->assertSame( + 'image/png', + $analyzer->mime, + 'MIME-Type was not determined correctly for PNG.' + ); + } + + public function testImagemagickHandlerGetMimePngNonanimated() + { + $file = $this->basePath . $this->testFiles['noanimated_png']; + $analyzer = $this->getAnalyzerImagemagickHandler( $file ); + $this->assertSame( + 'image/png', + $analyzer->mime, + 'MIME-Type was not determined correctly for PNG.' + ); + } + + public function testPhpHandlerJpegExifReportsDetails() + { + $file = $this->basePath . $this->testFiles['exif_jpeg']; + $analyzer = $this->getAnalyzerPhpHandler( $file ); + $this->assertSame( + 399, + $analyzer->data->width, + ' not extracted correctly for JPEG.' + ); + $this->assertSame( + 600, + $analyzer->data->height, + ' not extracted correctly for JPEG.' + ); + $this->assertSame( + true, + $analyzer->data->isColor, + ' not extracted correctly for JPEG.' + ); + $this->assertSame( + ' ', + $analyzer->data->comment, + ' not extracted correctly for JPEG.' + ); + $this->assertSame( + 76383, + $analyzer->data->size, + ' not extracted correctly for JPEG.' + ); + $this->assertSame( + false, + $analyzer->data->isAnimated, + ' not extracted correctly for JPEG.' + ); + $this->assertSame( + true, + $analyzer->data->hasThumbnail, + ' not extracted correctly for JPEG.' + ); + } + + public function testImagemagickHandlerJpegExifReportsDetails() + { + $file = $this->basePath . $this->testFiles['exif_jpeg']; + $analyzer = $this->getAnalyzerImagemagickHandler( $file ); + $this->assertSame( + 399, + $analyzer->data->width, + ' not extracted correctly for JPEG.' + ); + $this->assertSame( + 600, + $analyzer->data->height, + ' not extracted correctly for JPEG.' + ); + $this->assertSame( + true, + $analyzer->data->isColor, + ' not extracted correctly for JPEG.' + ); + // @FIXME: update test case, as soon as Exif works here. + $this->assertSame( + null, + $analyzer->data->comment, + ' not extracted correctly for JPEG.' + ); + $this->assertSame( + 76383, + $analyzer->data->size, + ' not extracted correctly for JPEG.' + ); + $this->assertSame( + false, + $analyzer->data->isAnimated, + ' not extracted correctly for JPEG.' + ); + // @FIXME: update test case, as soon as Exif works here. + /* + $this->assertSame( + true, + $analyzer->data->hasThumbnail, + ' not extracted correctly for JPEG.' + ); + */ + } + + public function testPhpHandlerJpegNoexifReportsDetails() + { + $file = $this->basePath . $this->testFiles['noexif_jpeg']; + $analyzer = $this->getAnalyzerPhpHandler( $file ); + $this->assertSame( + 399, + $analyzer->data->width, + ' not extracted correctly for JPEG.' + ); + $this->assertSame( + 600, + $analyzer->data->height, + ' not extracted correctly for JPEG.' + ); + $this->assertSame( + true, + $analyzer->data->isColor, + ' not extracted correctly for JPEG.' + ); + $this->assertSame( + null, + $analyzer->data->comment, + ' not extracted correctly for JPEG.' + ); + $this->assertSame( + 68802, + $analyzer->data->size, + ' not extracted correctly for JPEG.' + ); + $this->assertSame( + false, + $analyzer->data->isAnimated, + ' not extracted correctly for JPEG.' + ); + $this->assertSame( + false, + $analyzer->data->hasThumbnail, + ' not extracted correctly for JPEG.' + ); + } + + public function testImagemagickHandlerJpegNoexifReportsDetails() + { + $file = $this->basePath . $this->testFiles['noexif_jpeg']; + $analyzer = $this->getAnalyzerImagemagickHandler( $file ); + $this->assertSame( + 399, + $analyzer->data->width, + ' not extracted correctly for JPEG.' + ); + $this->assertSame( + 600, + $analyzer->data->height, + ' not extracted correctly for JPEG.' + ); + $this->assertSame( + true, + $analyzer->data->isColor, + ' not extracted correctly for JPEG.' + ); + $this->assertSame( + null, + $analyzer->data->comment, + ' not extracted correctly for JPEG.' + ); + $this->assertSame( + 68802, + $analyzer->data->size, + ' not extracted correctly for JPEG.' + ); + $this->assertSame( + false, + $analyzer->data->isAnimated, + ' not extracted correctly for JPEG.' + ); + $this->assertSame( + false, + $analyzer->data->hasThumbnail, + ' not extracted correctly for JPEG.' + ); + } + + public function testPhpHandlerTiffExifReportsDetails() + { + $file = $this->basePath . $this->testFiles['exif_tiff']; + $analyzer = $this->getAnalyzerPhpHandler( $file ); + $this->assertSame( + 399, + $analyzer->data->width, + ' not extracted correctly for TIFF.' + ); + $this->assertSame( + 600, + $analyzer->data->height, + ' not extracted correctly for TIFF.' + ); + $this->assertSame( + true, + $analyzer->data->isColor, + ' not extracted correctly for TIFF.' + ); + $this->assertSame( + null, + $analyzer->data->comment, + ' not extracted correctly for TIFF.' + ); + $this->assertSame( + 108125, + $analyzer->data->size, + ' not extracted correctly for TIFF.' + ); + $this->assertSame( + false, + $analyzer->data->isAnimated, + ' not extracted correctly for TIFF.' + ); + $this->assertSame( + false, + $analyzer->data->hasThumbnail, + ' not extracted correctly for TIFF.' + ); + } + + public function testImagemagickHandlerTiffExifReportsDetails() + { + $file = $this->basePath . $this->testFiles['exif_tiff']; + $analyzer = $this->getAnalyzerImagemagickHandler( $file ); + $this->assertSame( + 399, + $analyzer->data->width, + ' not extracted correctly for TIFF.' + ); + $this->assertSame( + 600, + $analyzer->data->height, + ' not extracted correctly for TIFF.' + ); + $this->assertSame( + true, + $analyzer->data->isColor, + ' not extracted correctly for TIFF.' + ); + // FIXME: Exif does not show comment, but ImageMagick does!!! + $this->assertSame( + 'A simple comment in a TIFF file.', + $analyzer->data->comment, + ' not extracted correctly for TIFF.' + ); + $this->assertSame( + 108125, + $analyzer->data->size, + ' not extracted correctly for TIFF.' + ); + $this->assertSame( + false, + $analyzer->data->isAnimated, + ' not extracted correctly for TIFF.' + ); + $this->assertSame( + false, + $analyzer->data->hasThumbnail, + ' not extracted correctly for TIFF.' + ); + } + + public function testPhpHandlerTiffNoexifReportsDetails() + { + $file = $this->basePath . $this->testFiles['noexif_tiff']; + $analyzer = $this->getAnalyzerPhpHandler( $file ); + $this->assertSame( + 399, + $analyzer->data->width, + ' not extracted correctly for TIFF.' + ); + $this->assertSame( + 600, + $analyzer->data->height, + ' not extracted correctly for TIFF.' + ); + $this->assertSame( + true, + $analyzer->data->isColor, + ' not extracted correctly for TIFF.' + ); + $this->assertSame( + null, + $analyzer->data->comment, + ' not extracted correctly for TIFF.' + ); + $this->assertSame( + 108043, + $analyzer->data->size, + ' not extracted correctly for TIFF.' + ); + $this->assertSame( + false, + $analyzer->data->isAnimated, + ' not extracted correctly for TIFF.' + ); + $this->assertSame( + false, + $analyzer->data->hasThumbnail, + ' not extracted correctly for TIFF.' + ); + } + + public function testImagemagickHandlerTiffNoexifReportsDetails() + { + $file = $this->basePath . $this->testFiles['noexif_tiff']; + $analyzer = $this->getAnalyzerImagemagickHandler( $file ); + $this->assertSame( + 399, + $analyzer->data->width, + ' not extracted correctly for TIFF.' + ); + $this->assertSame( + 600, + $analyzer->data->height, + ' not extracted correctly for TIFF.' + ); + $this->assertSame( + true, + $analyzer->data->isColor, + ' not extracted correctly for TIFF.' + ); + $this->assertSame( + null, + $analyzer->data->comment, + ' not extracted correctly for TIFF.' + ); + $this->assertSame( + 108043, + $analyzer->data->size, + ' not extracted correctly for TIFF.' + ); + $this->assertSame( + false, + $analyzer->data->isAnimated, + ' not extracted correctly for TIFF.' + ); + $this->assertSame( + false, + $analyzer->data->hasThumbnail, + ' not extracted correctly for TIFF.' + ); + } + + public function testPhpHandlerPngReportsDetails() + { + $file = $this->basePath . $this->testFiles['noanimated_png']; + $analyzer = $this->getAnalyzerPhpHandler( $file ); + $this->assertSame( + 160, + $analyzer->data->width, + ' not extracted correctly for PNG.' + ); + $this->assertSame( + 120, + $analyzer->data->height, + ' not extracted correctly for PNG.' + ); + $this->assertSame( + 5420, + $analyzer->data->size, + ' not extracted correctly for PNG.' + ); + } + + public function testImagemagickHandlerPngReportsDetails() + { + $file = $this->basePath . $this->testFiles['noanimated_png']; + $analyzer = $this->getAnalyzerImagemagickHandler( $file ); + $this->assertSame( + 160, + $analyzer->data->width, + ' not extracted correctly for PNG.' + ); + $this->assertSame( + 120, + $analyzer->data->height, + ' not extracted correctly for PNG.' + ); + $this->assertSame( + 5420, + $analyzer->data->size, + ' not extracted correctly for PNG.' + ); + } + + public function testPhpHandlerAnimatedGifReportsAnimated() + { + $file = $this->basePath . $this->testFiles['animated_gif']; + $analyzer = $this->getAnalyzerPhpHandler( $file ); + $this->assertSame( + true, + $analyzer->data->isAnimated, + ' not extracted correctly for GIF.' + ); + } + + public function testImagemagickHandlerAnimatedGifReportsAnimated() + { + $file = $this->basePath . $this->testFiles['animated_gif']; + $analyzer = $this->getAnalyzerImagemagickHandler( $file ); + $this->assertSame( + true, + $analyzer->data->isAnimated, + ' not extracted correctly for GIF.' + ); + } + + public function testPhpHandlerNoexifJpegReportsNotAnimated() + { + $file = $this->basePath . $this->testFiles['noexif_jpeg']; + $analyzer = $this->getAnalyzerPhpHandler( $file ); + $this->assertSame( + false, + $analyzer->data->isAnimated, + ' no extracted correctly for JPEG.' + ); + } + + public function testImagemagickHandlerNoexifJpegReportsNotAnimated() + { + $file = $this->basePath . $this->testFiles['noexif_jpeg']; + $analyzer = $this->getAnalyzerImagemagickHandler( $file ); + $this->assertSame( + false, + $analyzer->data->isAnimated, + ' no extracted correctly for JPEG.' + ); + } + + public function testPhpHandlerNonanimatedGifReportsNotAnimated() + { + $file = $this->basePath . $this->testFiles['noanimated_gif']; + $analyzer = $this->getAnalyzerPhpHandler( $file ); + $this->assertSame( + false, + $analyzer->data->isAnimated, + ' not extracted correctly for GIF.' + ); + } + + public function testImagemagickHandlerNonanimatedGifReportsNotAnimated() + { + $file = $this->basePath . $this->testFiles['noanimated_gif']; + $analyzer = $this->getAnalyzerImagemagickHandler( $file ); + $this->assertSame( + false, + $analyzer->data->isAnimated, + ' not extracted correctly for GIF.' + ); + } + + public function testPhpHandlerExifJpegReportsNotAnimated() + { + $file = $this->basePath . $this->testFiles['exif_jpeg']; + + // Test Php handler + $analyzer = $this->getAnalyzerPhpHandler( $file ); + $this->assertSame( + false, + $analyzer->data->isAnimated, + ' not extracted correctly for JPEG.' + ); + } + + public function testImagemagickHandlerExifJpegReportsNotAnimated() + { + $file = $this->basePath . $this->testFiles['exif_jpeg']; + + // Test ImageMagick handler + $analyzer = $this->getAnalyzerImageMagickHandler( $file ); + $this->assertSame( + false, + $analyzer->data->isAnimated, + ' not extracted correctly for JPEG.' + ); + } + + public function testSvgMimeType() + { + $file = $this->basePath . $this->testFiles['svg']; + $analyzer = $this->getAnalyzerImageMagickHandler( $file ); + $this->assertEquals( + "image/svg+xml", + $analyzer->mime, + ' not extracted correctly for SVG.' + ); + } + + public function testAnalyzerGeneralNotProcessable() + { + + } + + protected function getAnalyzerPhpHandler( $file ) + { + ezcImageAnalyzer::setHandlerClasses( array( 'ezcImageAnalyzerPhpHandler' => array() ) ); + return new ezcImageAnalyzer( $file ); + } + + protected function getAnalyzerImageMagickHandler( $file ) + { + ezcImageAnalyzer::setHandlerClasses( array( 'ezcImageAnalyzerImagemagickHandler' => array() ) ); + return new ezcImageAnalyzer( $file ); + } + + public function testPropertiesGetInvalid() + { + $file = $this->basePath . $this->testFiles['svg']; + $analyzer = $this->getAnalyzerImageMagickHandler( $file ); + try + { + $analyzer->no_such_property; + $this->fail( 'Expected exception was not thrown.' ); + } + catch ( ezcBasePropertyNotFoundException $e ) + { + $expected = "No such property name 'no_such_property'."; + $this->assertEquals( $expected, $e->getMessage() ); + } + } + + public function testPropertiesSetDenied() + { + $file = $this->basePath . $this->testFiles['svg']; + $analyzer = $this->getAnalyzerImageMagickHandler( $file ); + try + { + $analyzer->mime = 'some value'; + $this->fail( 'Expected exception was not thrown.' ); + } + catch ( ezcBasePropertyPermissionException $e ) + { + $expected = "The property 'mime' is read-only."; + $this->assertEquals( $expected, $e->getMessage() ); + } + } + + public function testPropertiesSetInvalid() + { + $file = $this->basePath . $this->testFiles['svg']; + $analyzer = $this->getAnalyzerImageMagickHandler( $file ); + try + { + $analyzer->no_such_property = 'some value'; + $this->fail( 'Expected exception was not thrown.' ); + } + catch ( ezcBasePropertyNotFoundException $e ) + { + $expected = "No such property name 'no_such_property'."; + $this->assertEquals( $expected, $e->getMessage() ); + } + } + + public function testImagemagickHandlerNonExistentFile() + { + $fileName = $this->basePath . "no_such_file.svg"; + try + { + $analyzer = $this->getAnalyzerImageMagickHandler( $fileName ); + $this->fail( 'Expected exception was not thrown' ); + } + catch ( ezcBaseFileNotFoundException $e ) + { + $expected = "The file '{$fileName}' could not be found."; + $this->assertEquals( $expected, $e->getMessage() ); + } + } + + public function testImagemagickHandlerUnreadableFile() + { + $tempDir = $this->createTempDir( 'ezcImageAnalysisAnalyzerTest' ); + $fileName = $tempDir . "/test-unreadable.svg"; + $fileHandle = fopen( $fileName, "wb" ); + fwrite( $fileHandle, "some contents" ); + fclose( $fileHandle ); + chmod( $fileName, 0 ); + + try + { + $analyzer = $this->getAnalyzerImageMagickHandler( $fileName ); + $this->fail( 'Expected exception was not thrown' ); + } + catch ( ezcBaseFilePermissionException $e ) + { + $this->removeTempDir(); + $expected = "The file '{$fileName}' can not be opened for reading."; + $this->assertEquals( $expected, $e->getMessage() ); + } + } + + public function testImagemagickHandlerNotProcessableFile() + { + $tempDir = $this->createTempDir( 'ezcImageAnalysisAnalyzerTest' ); + $fileName = $tempDir . "/test-unreadable.svg"; + $fileHandle = fopen( $fileName, "wb" ); + fwrite( $fileHandle, "some contents" ); + fclose( $fileHandle ); + + try + { + $analyzer = $this->getAnalyzerImageMagickHandler( $fileName ); + $this->fail( 'Expected exception was not thrown' ); + } + catch ( ezcImageAnalyzerFileNotProcessableException $e ) + { + $this->removeTempDir(); + $expected = "Could not process file '{$fileName}'. Reason: Could not determine MIME type of file.."; + $this->assertEquals( $expected, $e->getMessage() ); + } + } + + public function testGetHandlerClasses() + { + ezcImageAnalyzer::getHandlerClasses(); + } + + public function testIsSet() + { + $file = $this->basePath . $this->testFiles['svg']; + $analyzer = $this->getAnalyzerImageMagickHandler( $file ); + $this->assertEquals( true, isset( $analyzer->mime ) ); + $this->assertEquals( true, isset( $analyzer->data ) ); + $this->assertEquals( false, isset( $analyzer->no_such_property ) ); + } +} +?> diff --git a/include/ezcomponents/ImageAnalysis/tests/data/gif_animated.gif b/include/ezcomponents/ImageAnalysis/tests/data/gif_animated.gif new file mode 100644 index 0000000000000000000000000000000000000000..4f59d06c08d1d4d281a5619cbf4e99667cba70a5 GIT binary patch literal 4100 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 A@c;k- literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageAnalysis/tests/data/gif_nonanimated.gif b/include/ezcomponents/ImageAnalysis/tests/data/gif_nonanimated.gif new file mode 100644 index 0000000000000000000000000000000000000000..4bb071b58d2cca19d8b60e8c11e59270a320f554 GIT binary patch literal 5849 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

~SF7cu9xeo`c>8akjq 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�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 W5~b{HB5Sh%0000 + + + + + + + + image/svg+xml + + + + + + + + diff --git a/include/ezcomponents/ImageAnalysis/tests/data/tiff_exif.tiff b/include/ezcomponents/ImageAnalysis/tests/data/tiff_exif.tiff new file mode 100644 index 0000000000000000000000000000000000000000..789bff35ba179eadb8851183ef1d58fe1565e70f GIT binary patch literal 108125 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageAnalysis/tests/data/tiff_noexif.tiff b/include/ezcomponents/ImageAnalysis/tests/data/tiff_noexif.tiff new file mode 100644 index 0000000000000000000000000000000000000000..379b4a80ea81bbd16d4e77ba7ea149eee07c25e4 GIT binary patch literal 108043 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 KW%29si+=z>I}-i? literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageAnalysis/tests/suite.php b/include/ezcomponents/ImageAnalysis/tests/suite.php new file mode 100644 index 000000000..f150d1890 --- /dev/null +++ b/include/ezcomponents/ImageAnalysis/tests/suite.php @@ -0,0 +1,37 @@ +setName( "ImageAnalysis" ); + $this->addTest( ezcImageAnalysisAnalyzerTest::suite() ); + } + + public static function suite() + { + return new ezcImageAnalysisSuite( "ezcImageAnalysisSuite" ); + } +} +?> diff --git a/include/ezcomponents/ImageConversion/CREDITS b/include/ezcomponents/ImageConversion/CREDITS new file mode 100644 index 000000000..2cc9fc273 --- /dev/null +++ b/include/ezcomponents/ImageConversion/CREDITS @@ -0,0 +1,16 @@ +CREDITS +======= + +eZ Components team +------------------ + +- Sergey Alexeev +- Sebastian Bergmann +- Jan Borsodi +- Raymond Bosman +- Frederik Holljen +- Kore Nordmann +- Derick Rethans +- Vadym Savchuk +- Tobias Schlitt +- Alexandru Stanoi diff --git a/include/ezcomponents/ImageConversion/ChangeLog b/include/ezcomponents/ImageConversion/ChangeLog new file mode 100644 index 000000000..2fcdc9179 --- /dev/null +++ b/include/ezcomponents/ImageConversion/ChangeLog @@ -0,0 +1,279 @@ +1.3.5 - Monday 16 June 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #13134: Fixed array_splice() call in + ezcImageTransformation->addFilter(). + + +1.3.4 - Monday 05 May 2008 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #12592: New thumbnail filter. Documentation about the scale() + filter has been added to the thumbnail filters. +- Fixed issue #12667: ezcImageConverter doesn't pass saveOptions to + ezcImageTransformation. +- Fixed issue #12671: Unhandled exception in ezcImageTransformation. Checks to + avoid double throwing of exceptions have been introduced. Additional + parameter checks are performed. + + +1.3.3 - Monday 17 December 2007 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #12166: Undefined attribute in ezcImageImagemagickBaseHandler. + + +1.3.2 - Wednesday 05 December 2007 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #12126: ImageConversion test is incorrect. +- Fixed issue #12160: Conversion of transparent backgrounds does not work on + certain systems. +- Fixed issue #12171: Monochrome colorspace conversion does not work on some + systems with the ImageMagick handler. + + +1.3.1 - Wednesday 28 November 2007 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #11029: Converting transparent PNG to JPG cause an strange + effect. A new option $transparencyReplacementColor has been introduced to + ezcImageSaveOptions, which will be utilized if a potentially tranparent + image is converted to a format that does not support a transparent + background. + + +1.3 - Monday 02 July 2007 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #11030: The GD-Handler's watermarkPercent() calculates + incorrectly. The placement and size of the watermark are now calculated + correctly. +- Documentation updates and fixes. + + +1.3rc1 - Monday 25 June 2007 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #10949: Rename PHP error if file already exists. If rename() + fails on Windows systems, the temporary files are cleaned up properly now. +- Documentation updates and fixes. + + +1.3beta2 - Thursday 31 May 2007 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed exception messages. +- Updated documentation for ezcImageThumbnailFilters. + + +1.3beta1 - Monday 07 May 2007 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Implemented feature #8589: JPEG quality transform for ImageConversion. A new + option class ezcImageSaveOptions supports setting a quality indicator for + JPEG and a compression indicator for PNG images. +- Implemented feature #9564: Watermark (and perhaps other filters) should + allow image placements from opposite corners. Crop filters support negative + offsets now, too. + + +1.2 - Monday 18 December 2006 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed issue #9493: Convert < and > in exception messages to ' and ' for + Cache, ConsoleTools, ImageAnalysis, ImageConversion, PersistentObject, + PersistentObjectDatabaseSchemaTiein. +- Fixed issue #9520: ImageConversion test fails. +- Fixed issue #9521: Watermark tests needs some tuning. +- Fixed issue #9563: watermarkAbsolute filters requires width and height options. +- Fixed issue #9819: Let all components deal with the ezcBaseAutoloadException + properly. + + +1.2beta1 - Monday 20 November 2006 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Added feature #9236: Added two new filters for adding watermarks to images. +- Fixed issue #8892: Handler / Converter destruction should remove all temp + files. +- Fixed issue #9012: Problems with open_basedir. +- Fixed issue #9013: SVG not detected in + ezcImageImagemagickBaseHandler::determineTypes(). +- Fixed issue #9014: ezcImageTransformationException doesn't accept + ezcImageAnalyzerException as argument. +- Fixed issue #9440: GD scale/crop filters loose transparency. + + +1.1.2 - Monday 09 October 2006 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed bug #8958: GD crop filter calculates width and height incorrect. +- Fixed bug #8959: GD and ImageMagick crop filters behave differently. The GD + driver now behaves like the ImageMagick driver and reduces the crop + dimensions, if they are larger than the source image dimensions. + + +1.1.1 - Monday 28 August 2006 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed bug #8712: The x and y parameters for cropping where handled as + coordinates and not as offsets. +- Refactored to use new ezcBaseStruct and properties approach. + + +1.1 - Monday 12 June 2006 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes at all. + + +1.1rc1 - Monday 29 May 2006 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- No changes at all. + + +1.1beta1 - Wednesday 19 April 2006 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Added checks for file names that could cause potential security issues. + File names containing one of ', " or $ will be rejected to load/save with an + ezcImageFileNameInvalidException. (See + http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=345238). +- Refactored internal filter handling to make ezcImageHandler classes + publically available. +- Fixed bug #8137: ImageConversion - ezcImageTransformation fails on + processing Multiple images in 1 request. + + +1.0.1 - Thursday 23 February 2006 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed unreported bug: ezcImageTransformation::setFilters() threw old style + exceptions on an invalid filter class. Now throws the correct + ezcBaseSettingValueException. +- Added checks for file names that could cause potential security issues. File + names containing one of the three characters ' " or $ will be rejected to + load/save with an ezcImageFileNameInvalidException. (See + http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=345238). + + +1.0 - Monday 30 January 2006 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Fixed unreported bug: ezcImageTransformation will cause an error, if no + filters are submitted, but only a MIME type conversion is set. +- Fixed unreported bug: ImageAnalysis and ImageConversion used different + MIME types for PSD files. +- Fixed unreported bug: Missing sanity checks for file existance and + reabability in ezcImageTransformation::transform(). + + +1.0rc1 - Monday 16 January 2006 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Added more MIME types to ezcImageImagemagickHandler to be able to + transform more formats. +- Added option for ezcImageImagemagickHandler to allow the explicit setting of + ImageMagick's "convert" binary. + +- Changed exception behavior. All errors will now throw a different exception + class. +- Changed OS detection of ezcImageImagemagickHandler to better detect Windows + versions. +- Changed behavior of ezcImageGeometryFilters::scale() to its + original purpose. The scale() filter now allows scaling of images to fit + into a certain rectengular box. The former behavior is still available + throug the scaleExact() filter. +- Changed execution of ImageMagick binary from exec() to proc_open(). This + avoids nasty error output on the console if something fails. Errors from + STDERR are now caught and used in the thrown exception for analysis. + +- Fixed bug #7640: "createTransformation aspect ratio scaling". + The ImageMagick driver now does correct scaling, maintaining aspect ratio. +- Fixed unreported bug, that $name attribute in ezcImageMethodcallHandler is + private, but accessed by it's derived classes for error reporting. +- Fixed unreported bug in crop filter code of ezcImageImagemagickHandler, that + caused the crop to always start at the coordinates 0, 0. + + +1.0beta2 - Friday 23 December 2005 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Added struct for ezcImageConverter settings: ezcImageConverterSettings. +- Added new method getIdentifier() to handler classes which returns + a lowercase version of the name. The convert class uses this instead of + lowercasing the name manually. +- Added ezcImageFilter struct to keep the filter name and + options. This replaces the associative arrays and separate parameters used + throughout the various classes (mostly ezcImageTransformation). + +- Changed settings handling in ezcImageConverter to new struct + ezcImageConverterSettings. +- Changed ezcImageHandler objects to get their $name and $identifier in + their constructor. +- Changed ezcImageHandlers not to automagically find the correct class name for + a filter. Instead the ezcImageFilters object is now created by the specific + ezcImageHandler class. + +- Changed functions to properties: + + * ezcImageHandler::getName() to property 'name'. + * ezcImageHandler::getIdentifier() to property 'identifier'. + +- Changed class names: + + * ezcImageHandlerGd to ezcImageGdHandler. + * ezcImageHandlerShell to ezcImageShellHandler. + * ezcImageFiltersGd to ezcImageGdFilters. + * ezcImageFiltersShell to ezcImageShellFilters. + * ezcImageFiltersInterfaceEffect to ezcImageEffectFilters. + * ezcImageFiltersInterfaceGeomtry to ezcImageGeometryFilters. + * ezcImageFiltersInterfaceColorspace to ezcImageColorspaceFilters. + * ezcImageShellHandler to ezcImageImagemagickHandler. + * ezcImageShellFilters to ezcImageImagemagickFilters. + +- Changed function names: + + * ezcImageHandler::listFilters() to getFilterNames(). + +- Changed ezcImageTransformation::transform() to throw a catch-all exception + instead of all inherited ones. The catch-all exception stores the source + exception in it's 'parent' property. +- Changed visibility of filter handling classes to private. + The code for the filter handling needs to more work before + becoming public. Any references to the filter classes from public + classes are also removed. This marks the GD and Imagemagick handlers as + private. +- Changed ezcImageHandler::listFilters() to use the getFilters() method on + the filter object to get filter list. + +- Changed the way on how handlers can be referenced. The class names which are + passed in ezcImageConverterSettings are now stored in the + ezcImageHandlerSettings class: + + * Added a reference name setting which are used by the converter + and handler. This allows the developer to reference the handler + with a simple name. + * Add a settings array which can be used by the handler as configuration. + +- Removed 'identifier' from ezcImageHandler and uses class name of handler + for lookup in ezcImageConverter::applyFilter(). +- Removed generation from class names out of values in + ezcImageConverterSettings. Instead they should now pass the full class name + to the converter. This removes the need to prefix custom made handler + classes with ezcImageHandler. +- Removed all the special code from the abstract class ezcImageHandler and + added them to ezcImageMethodcallHandler. The main handler class is now much + cleaner and exposes less special functions and properties to the public. + + * Updated GD and ImageMagick handlers to extends the new class. + +- Fixed createTransformation() to return the transformation object. + + +1.0beta1 - Thursday 24 November 2005 +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Initial release of this package. diff --git a/include/ezcomponents/ImageConversion/DEPS b/include/ezcomponents/ImageConversion/DEPS new file mode 100644 index 000000000..000647061 --- /dev/null +++ b/include/ezcomponents/ImageConversion/DEPS @@ -0,0 +1 @@ +ImageAnalysis: 1.1.3 diff --git a/include/ezcomponents/ImageConversion/DESCRIPTION b/include/ezcomponents/ImageConversion/DESCRIPTION new file mode 100644 index 000000000..4bd987631 --- /dev/null +++ b/include/ezcomponents/ImageConversion/DESCRIPTION @@ -0,0 +1,2 @@ +A set of classes to apply different filters on images, such as colour changes, +resizing and special effects. diff --git a/include/ezcomponents/ImageConversion/TODO b/include/ezcomponents/ImageConversion/TODO new file mode 100644 index 000000000..f2a0f47f8 --- /dev/null +++ b/include/ezcomponents/ImageConversion/TODO @@ -0,0 +1 @@ +- Optimization of colorspace conversions in GD handler as described here http://lists.ez.no/pipermail/components/2005-December/000819.html. diff --git a/include/ezcomponents/ImageConversion/design/class_diagram.png b/include/ezcomponents/ImageConversion/design/class_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..8f641419fcecc269d3b5a1511ee29ee560cab257 GIT binary patch literal 119211 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 MifXqrZW{Xj7bI0(lK=n! literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/design/design.htm b/include/ezcomponents/ImageConversion/design/design.htm new file mode 100644 index 000000000..d851ef49d --- /dev/null +++ b/include/ezcomponents/ImageConversion/design/design.htm @@ -0,0 +1,157 @@ + + + + + + +eZ publish Enterprise Component: ImageConversion, Design + + + +

eZ publish Enterprise Component: ImageConversion, Design

+
+
+

Introduction

+

Find more info about the requirenments on which this design is based on in the +requirenments.txt.

+
+
+

Design description

+
+

ezcImageManager

+

The main class of the component is the ezcImageManager, which implements a +singleton pattern, because only 1 manager is needed for all actions performed. +The ezcImageManager dispatches the actions performed on images, holds the +ezcImageHandler's (which actually perform the actions) and manages / defines +the ezcImageTransformations which hold conversions and ezcImageFilter's.

+

Since 1 filter/conversion can be performed by several ezcImageHandler's, the +manager has a preference list, to determine, which ezcImageHandler to take for +a conversion.

+
+
+

ezcImageHandler

+

This interface defines how the abstraction class for an image handler looks +like. ezcImageHandler's utilize a given backend to perform conversion and +filtering (using ezcImageFilter's). A ezcImageHandler knows by hisself, which +filters he implements. The manager will ask it for supported filters to get an +overview, which filters exist.

+

To avoid reopening an image file for every operation the ezcImageHandler has +load()/save() methods. An image must be saved before another ezcImageHandler +can perform his actions on it.

+
+
+

ezcImageFilter

+

This class implements a storage container for filters to keep them better +consistant than an array could do. Filters are created by the ezcImageManager +or directly through a ezcImageHandler. An ezcImageFilter knows, to which +handler he belongs and dispatches itself to the right handler, when applied.

+
+
+

ezcImageTransformation

+

ezcImageTransformation's abstract MIME types to allow the easy combination of +conversions and filters which are necessary to get a desired image type. +For conversions only the target MIME type is necessary. Beside that, +ezcImageTransformation's have a reference, which either points to another ezcImageTransformation +or to the special reference __original__ which is the image itself.

+

If a ezcImageTransformation references another one, which does not exist, yet, it will +be created, too. This enables one to create a chain of ezcImageTransformation's which +will be processed.

+

ezcImageTransformation's will be created on the fly, when the user requests them and not +during startup of the manager. A created ezcImageTransformation will be cached in the +manager for possible later use. Same applies to the filters utilized by the +ezcImageTransformation.

+
+

Example 1

+ ++++ + + + + + + + + + + + + + + +
Transformation:Preview
Reference:__original__
MIME:

image/JPEG

+

image/PNG

+
Filters:scale 400x400
+
+
+

Example 2

+ ++++ + + + + + + + + + + + + + + +
Transformation:Thumbnail
Reference:Preview
MIME:

image/JPEG

+

image/PNG

+
Filters:

scale 100x100

+

colorspace grey

+
+

Will scale down the image to 100x100 pixels and convert it to greyscale.

+
+
+

Example 3

+ ++++ + + + + + + + + + + + + + + +
Transformation:OldPhotos
Reference:original
MIME:image/JPEG
Filters:

colorspace grey

+

border 3

+
+

Will convert the inserted image to image/JPEG, reduce the colorspace to +greyscale and add a border of 3 pixel.

+
+

^L

+

Local Variables: +mode: rst +indent-tabs-mode: nil +sentence-end-double-space: t +fill-column: 70 +End: +vim: et syn=rst tw=78 wrap

+
+
+
+
+
+ + diff --git a/include/ezcomponents/ImageConversion/design/design.txt b/include/ezcomponents/ImageConversion/design/design.txt new file mode 100644 index 000000000..d1a182282 --- /dev/null +++ b/include/ezcomponents/ImageConversion/design/design.txt @@ -0,0 +1,218 @@ +eZ publish Enterprise Component: ImageConversion, Design +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Introduction +============ + +Purpose of ImageConversion package +---------------------------------- + +The ImageConversion package will be utilized to convert existing images +in different ways: + +- Conversion between MIME types (e.g. image/BMP -> image/JPEG,...) +- Resizing image files (e.g. scaling, cropping,...) +- Filtering image content (e.g. change of color pallet, add noise,...) + +Current implementation +---------------------- + +Currently the described functionality is implemented utilizing the following +classes, inside the library lib/ezimage/: + +eZImageManager + Controller for the other classes utilized in this library. Handles + configuration, dispatches the necessary action to the different classes. + +eZImageHandler + Baseclass for image handlers. Provides common methods between image + handlers and defines a common API. + +eZImageGDHandler + Image handler implementation for ext/GD2. Extends eZImageHandler. + +eZImageShellHandler + Image handler implementation for Image Magick. Extends eZImageHandler. + +General notes +------------- + +The idea behind the design chosen for this class is definitly the right one, +but it could have been much more modulized to gain a more clean code layout +and more flexibillities. Beside that, the user interface seems pretty unclear +and needs some general revision. + +Requirenments +============= + +Design goals +------------ + +Several goals have to be kept in mind while re-designing the implemented +functionality: + +- Do not reduce possibilities, but enhance them. +- Create a more clean user interface and enhance usabillity. +- Raise flexibillity regarding backends and filter definition. +- Keep the code fast. + +Detailed requirenments +---------------------- + +The ImageConversion component allows to deal with quite complex image +conversions in an easy to use ways. Beside that it handles automatic +conversions, if necessary, like converting incoming image formats to a range +of range of wanted output formats. This paragraph tries to summarize, what +exactly has to be done by ImageConversion: + +Conversion between image formats + In general, ImageConversion should be able to convert images between MIME + types utilizing it's backends. Conversions must be globally defineable to + allow forcing of conversions (like for GIF -> PNG). Since some image + formats have special cases, in which a conversion is not possible (like + animated GIF), it must be possible to define exceptions for conversion. + Beside the global conversion, it has to be possible, to convert images + explicitly. Format conversions can ba parameterized (like the compression + factor for JPEG, the colorpallet for GIF,...). The conversions possible + depend on the image handlers available. + + +Filtering of image contents + Filtering of images can have a lot of incarnation in this case: + + Geometry manipulation + down/up only, keep/change ratio, with/height only,... + + + Attribute manipulation (was: colorspace) + transform color space, change quality,... + + + Content manipulation + adding noise, swirrling, adding borders... + + + Which filters are available depends highly on the available image + handlers, their version and maybe other factors in respect to them (PHP + version,...). + + Every filter can have a variaty of options and settings to influence its + behaviour. Options and settings maybe completly different between filters. + + +Definition of image formats + To reduce the overhead of manually defining, which filters have to be + applied to an image to achieve a certain goal (like "create a + thumbnail", "create a preview", "make it look like an old photo",...), the + definition of different image formats should be allowed. A format + definition can include all of the above stated transformations. + + Beside that, it has to be possible to define, that a format is based on + another format (like a thumbnail should be created from a preview, to + reduce conversion ammount). If a format references another format, this + reference format will be created first (if it does not exist) and + conversion to the target format will take place afterwards. This allows to + define a tree of format conversions. Every node of the tree should be + saved for later utilization. + + Currently, this formats are called aliases. + +Design +====== + +ezcImageConverter +----------------- + +The main class of the component is the ezcImageConverter, which dispatches the +actions performed on images, holds the ezcImageHandler's (which actually perform +the actions) and manages / defines the ezcImageTransformations which hold +conversions and filters. + +Since 1 filter/conversion can be performed by several ezcImageHandler's, the +manager has a preference list, to determine, which ezcImageHandler to take for +a conversion. + +ezcImageHandler +--------------- + +This interface defines how the abstraction class for an image handler looks +like. ezcImageHandler's utilize a given backend to perform conversion and +filtering (using ezcImageFilter's). A ezcImageHandler knows by hisself, which +filters he implements. The manager will ask it for supported filters to get an +overview, which filters exist. + +To avoid reopening an image file for every operation the ezcImageHandler has +load()/save() methods. An image must be saved before another ezcImageHandler +can perform his actions on it. + +ezcImageFilters +--------------- + +[[[------UPDATE NEEDED HERE!--------]]] + +This class implements a storage container for filters to keep them better +consistant than an array could do. Filters are created by the ezcImageManager +or directly through a ezcImageHandler. An ezcImageFilter knows, to which +handler he belongs and dispatches itself to the right handler, when applied. + +ezcImageTransformation +---------------------- + +ezcImageTransformation's abstract image types to allow the easy combination of +conversions between MIME types and filters which are necessary to get a desired image type. +For conversions only the target MIME type is necessary. + +ezcImageTransformation's will be created on the fly, when the user requests them and not +during startup of the manager. A created ezcImageTransformation will be cached in the +manager for possible later use. Same applies to the filters utilized by the +ezcImageTransformation. + +Example 1 +^^^^^^^^^ + +====================== ======================= +Transformation: Preview +MIME: image/JPEG + + image/PNG +Filters: scale 400x400 +====================== ======================= + +Example 2 +^^^^^^^^^ + +====================== ======================= +Transformation: Thumbnail +MIME: image/JPEG + + image/PNG +Filters: scale 100x100 + + colorspace grey +====================== ======================= + +Will scale down the image to 100x100 pixels and convert it to greyscale. + +Example 3 +^^^^^^^^^ + +====================== ======================= +Transformation: OldPhotos +MIME: image/JPEG +Filters: colorspace grey + + border 3 +====================== ======================= + +Will convert the inserted image to image/JPEG, reduce the colorspace to +greyscale and add a border of 3 pixel. + +^L +.. +Local Variables: +mode: rst +indent-tabs-mode: nil +sentence-end-double-space: t +fill-column: 79 +End: +vim: et syn=rst tw=79 wrap diff --git a/include/ezcomponents/ImageConversion/design/image.png b/include/ezcomponents/ImageConversion/design/image.png new file mode 100644 index 0000000000000000000000000000000000000000..a287acfc4661710b24005824310c7417c1e93d35 GIT binary patch literal 13618 zcmb8WcUTkM+CCal1c`t(C{;v6YCw7y5J3-*?0gOXlBhz3NpNuO<+GJ^_u_2ndggb>^ z$xxed%IhHdK`j|h`x{Sy!KXRq22S-Cz|A_&E+G9qdJXA3Q`+mLe034E2E0r1t|e>H zD8-w=#IDK^3YD-1L0~9&WPDTh1`#%Z0~_$*O65)M(G=h-_5x*aICDJSe)}Vcup_Cx zyhZ*DnZ!h#=2~*YcM4cd4;JvHx(-($Y(}!7#4C}_K^=mI^PP6MGj>#*oQ~Dx}v)pH$ z=5{KUTUMO=N=Ck#x+HSKOH6UNcIyg~ftH&~^8UQurChMjg|r9jmdGSr@5a4U4PvA6 z+7j+K>JgQFzhL9$9Jy1Y(QQvbdfU?3tNB4^_8b zkojL9>1LTW5ldO|p**1lRSlk>fc>Ac7d!fIuQ=gc!HxJvF40csWCV1Rf%xRHbz@5> z6`$_1SzOJTi3Ex7)H*D*%smlv=efDveeYS?oHv&%{SKDoqtHK=?k~CE*gH}BM}q#| z-uAvYFV7>7XWeTa_X*?n;T(f7gL^%QHc`t+iwl@wT9;(uwODpy zdnE{wV0cYI%-0a10~lpwZ`<~5o2UtKq_&bkEMgW^a-;Ht>2qfEcL`ZC$GiO-8iH?M z?j$Qhh%{rX`vg-4Ul~C2ZuYdzxvc6IpqTiOy{p^kAcRGlsB4YuqLH#{feRX8p;G|G zYIPoWw7Rgbnq3Yf0QY#(KX!T6lCwYJDl;mU%U{%{7rXv|m~pRDuSl1~%f~n!>ryiB z1Uu0SSznYXkEBaum&1xiam1+|8f0M)(3%Iq>{6ryiEX=0#Z_A2@Xla3&Q++4?lOo2 zHjog6HC6ne1X9LGfN@c&oyS8mvf^vf&+NYR&%4d@IH;os9k;{C1h3?4iQJ;9MOV%*J1DfX{b@#)4DZWILlcTlTvcWFSOha#nP^!WDub65D6{PR zDJlmq6qG#0i(0Z{W54E(r*%?*t`(diZ%3DZ&h?F37(dOD3ly5ECpe_B39hX4U$W{y zVGE-xq*A8L!_5kDRY78xQYPJwohC=wva}WRQ^+XepE`GbU^eXBud_6n2{kXgDUsG* zOQ++Xujhm~M42lcH9AcX<5=s}MqOP%x%Gu?Q^n@lj{K=jPQ0;s{F~sJh|oG$^WTIs zgHjvUUJOIZVQWaRLJdSYH%KOpLDbxM$1Nf8+ar_B&_LW>){^P`XYG4n2iK6&BF_{~ z%{!u_>t0_&1ykytPL`~QY6*NjJcycIQm^E%wwDx+r?E1|C8QHMN!!{jhmK>{2iw!>+_lQ<~ed?e zsX{KN(7l$2liRE;UY!%!!)5gXsOdm37`zB@U%ZsTtJ?(@iCKMsnEjRDksJn%)5s>v49`@?! zn|bipw)h$9w=jB_cM*7L)JE>`q5UR8tfOXV) zXC8Ma!u^8PNd$lI%>qS*Adi_S|7e12C~J zzt{vtBLbcww#R<&XrBM->O~DLe!^$>_IeL3UiHykdieO z3UFuSzTS=5C@0H*&nzI-p>4`o^rAq^1s}cQpTUg6T@B1;L%y5-V}7oUu5x*njM~1U zZp@?JT5lr}30i2)J16E$7~tfZf`1CvIX+mb*nT83pn;Q_1s>#88p?6yQ~LgwMx&S* zF~h3wk6cR{D~T%KO><-j2s&A8j$@USk;*iv$)kysoL=&QPg^*nk{gybh_9&PDF6RJ z8Y6E&2yG|uSF6dSj+z_yKCyF_s^=%-I;D*=j)}0poZ*foH$0F90j>ronckq)jg%ABy5swa%TNVK6k3pED2r#!Munilf5}QM?QH*Mo(|< zz2Bkh^;X!UgcUgS5qzTGpLpM-6i@oYdnuOW-+{8V63Q6K@;3`@)Y_J zzsC)o=MYS$s&c*h9~gGTQccl=V`k@^cVef2{Zgh$_NLRmT8Ex%k~D;<+2O#iv@2s8 z0kx6bNqI%^F$m(n+wgedcsyXRAGc@enSgyT#Y6urec95ETgIvp0mB)w%D#Rrin32{ z@6ySneFc%;tN;S4H;MF(pibu1(qV&08kT5R=p(1}oV2=E!jJv^Flah|SCRG7t%waE zVA#pp;&VD>q2Q`e!Se`KsKLEw z_zf!M$8ZrKx`=9KH&(n;D4XV3{dP2_&Jti%bZKZD;oPD|Lb<56ncP@&L&OP)6Dno~ zq#)#@|AGEOXnln@VZ<%CLB|071N#0!<+r!`BY^8Bd061|V<4}n&T}7~bB~N)w!Q+M zg)fM-lPm;{I=1$~x|{p0SFL}!VeYJiTK{U5mGkF>Gsqj?WBXzl&hc?7zo1uK{Csh> zrbSz=piA5?iQVG%l3~gAj&C<&L5HI4c75+L&%BF@_gDU5oL?pxk8u7c>aWJ1C8oUD zGP|Ug^%>*45K8I}2c||S-=(eH#;VNE<9nYC(TGz4IA$Ueo!Mks0K3l52Clg)v8yLr zWkjvNyM0wxLX^sku}I6ojZDAUyl@9`2eR7d7rq-X@Q* zrnl7%ijo^{x;(5&b&*N(N-Ae>4U~h4IotJ@l(S<*yU5?`*J*?@dS}3HC4D>TY3F%# zkpPPoj^cdf>h5rZ0syyxTx$NdxNFEAd{%1jggq#$ru16M(lv34KGQLple z!1ayQ1ii!>8`msuz>M`w4LX?OsfZdl{}vs`vki|7&>aVpn$QdTYB2Hv_=B+k7WT(Ch!M-GM0O>I&^LA zmby;Wt)DGb05>aI{Va(vRf!3rpojh%ORjN3I=u-V`sz?I=d!E%JBiw6AUScwNSDvi zQ|tXYjjBKS44aG2=>yW#u9_QFaI`xk(&)cz)AGklTfFg3@BV@dWdFOlpjio!GrDPe zvzW&YDyiP|+C>71PHkbGGX;8;64FbQMO+E5UJ{`AWlrJ~S-n(oZE8F`sJRJU8El$J z`vUM{F5Sdx?EV(~5;cGIm^8V-a`HHKEqm}NeOivfK{>7` zkX;QwwbJ9S)>Z%p_cdD;0WqHya4o&$gvm$oRMM{W0?>ItVz@LD^GAI6XKu0PsJ+Zw zV5;FZP_b4zJ`X?$?(2acrCwXxPKLyaP8R1>x-8|DlV}84XAyVzcjx|&%I$-9FX1vH zLzb>`2MJPWER)d8r?fGfL^dyS^#F;P#u`py_Rg=2)F3|JR6M^uCRa*b*mve`YdI@m zP*eOIBnhV!Kb%=)G0DYxWwCSPUriYYUd)!wR@t{tO8747+pI@)0~wv0Poy;Vv}!y9 z-8eI}pj`U0wLD(UpS%jbMr{*hZ3t`4GFVBRK4+?gP`0D77{V9aTQM3uJrQc>aTQLl@hwwD1^SK+(CJ6 zrOq)~R()_XaAP6xZZ+hu6rEj&PA{T>+h<&j(@W?C>ZSR|p30}e5uVI-<`6-8!@OVX zj*1I-Q~&L3SYaMGa*St*&6g6MYFdO_FH_;%Au30ui;4~}hKBuI7#;m_Ww}itYd7V% zVKh6l5$vroWV2671ihY>74Ny53tl`ha+bbmZ`nUvb7LG$w*nfA&%w1nag_P1OF-* zPWhW{zc|~;IMxl9c5lx~-@T-8b}3_yzk3%Rf^pIh4bdB0oB8oXPuWn!4rG&UoB1@|L)YA3zNgYCm8VLW(F~#RaZT;dkLOs9EBdhT%4z z&Y0kNi6A5Y`AvvDYW#gCLG7MPjTsB-3HZZ)1ue5Koq@GQ0i>)ry|q}Q99aQY6;Z0=Q0k(#|+icA6>{)g8s@E=#(et4RdZnNt?j@@nx zs1I!lCj;W~3L_~AkO*Z2e>GO{6m(T@IN5^E#mql(*+m+twcXonWR!{EP;zH}3)vYih^CFU=?a#O{11 zR&MGgH`16L-Q-Gc81Z}{aR2!g%#N3b5OF--qJQz1pB24;Sy|To8Ttp|_(uC_r@fr@ z`e&XP;idAts!clJ`?>~L`=T#*JVF1`J^u^VHfW@#rq=!58u?pT`X7<>zXty!aFIU| zhg<*OXoG3w-5Z;LZT>%}s}3tAX$V1?g$5s;eOVGN$JzrU+E-7SKWZK;pb;3g63`ffI>|$JXcrV6H={nXKh~8hVulvEYY(5 zd;H(GR1dRhy-9g`){WWjr{8Gi$gse-CXi8|00*Y2Im@&#%G|!6aFQ)T7T=jUs+m_s4d$=<#jH#%z$V%ICImTq&z-x zVv$Z2Roj((^+L&xH>Ahtk(7FaS3K2VkJE^=X+4SI0X+I&RoaQq$A@mRls|q;0ytzrR$j>8!>8T8 z-AF@ax^5L(oz1y@57b}$!B=0)&WGtgZGPU<#5Q&X-MC6T^8~n9%+=9K4;5zK8IF>0 zUL}i>x|t&?8W4-I;E+tMOnZ0hd%B$?SK6J)-4yvvpR3otK8MlBy8LNOhg}vJG7`cW0Gvk z1$^_^lrcnnJ)H1Qf=fbh)(W##zv8;rU+3c?y|KGm3`JEJHUb7KBK zHd)w?S)8&@C|~QGXR`OnN20SO>O9ZR+X)1mA&~uR&K}d67q0K0uWiS+h)k3gEoz>l z!&Wdo(Gz3aNHXmXfs$|~k2orr7qX*Ciq>FsZNDUw=!vzZhR(yWu)oB5D`_(bEIslRo}NXl-n#)xv=E&ChL z0WM4_SN*N}%3>$y^tL^r@fAep-7K!Kd_A8Bf-?zW>_Z^V}|MwRA&$6cwoz+PoDrmvf*!$utfN?Qhl7MYZM34~6eUG1wGH z3Hbs$lUHzFju)F4Br<2OvefcG=!YN`N@Z6fDGpz`*j}NI3`km!o9kxJq*Ejjn2_D7 zmfrP9Z*DStK0~8BVfv?^;ed7MBVzJ4zq;Wp$_g&e#f>-1MBZz0@6?DO-^lBcWRER)*@9L(I zO4po5fhWx_Z&xEqIxm+vRJQ&03}DA1+#|x2Atez&Ub8S|bY%gL$=lk2it29o;{Qs~ zs1HVG4ekAJQQg(AkkfAL7iGPNE9)KB1|-VHUW_4hr7>wh*>KnarZ1??!2m^FRtC7> z(cH@kxjnO2`=t$I`g3nrJGD)?KfTZSCVhe$v%t#gJxkl-OIeJmz6^;7;M*)rL0#$16vC`$sdMm44G2I!tZ_5{JKW(h5hR@Kl_Lhmz265iIU}mm>976S{R8+^wB3G{!z=tqH%1arWUP9y)at4 zl&AFBy-sPatW2W)ZL^7kwdHSPaZjhY0Y}MuskEAK!h)+iNQ82+Rn9jCw#i3m`x2$$6(PB|R4)KG7+5W9A^xosB=e0D)ovtJZ+UgtdnUh@~dVet4?g zv3srQERK5TddZE^=d?ROp>9-x7Uo(K-VSq;h!mRtCvX*uLdb<#SXF*gSr;*7?0-b6 zGCR|!)F}<%=ngvIi^s8JqeGg$mGPdI6ohCao*D)%314#9T+a9`15no;TE8u;7DiV_ z@CUjtGIqcaAoq3Lj&s+G&oTZ$x%3dYX;C>(E@jBh6?_6p!m%T|Q+npXTsT0M|LDfB zx-L}Hch=TQM`I}b8xELWsU&=N!=t=Eqb2udpx!|H*k#`fO;KC1=b@J%w0v;g$EkIK zDG>8SJAp~_(})?d7h43PEMDmR6%&e9Nua)b-Oq~eRf&}+Gs>jMv8eaZEzWewiLgWZ zzG*#Nkq0_&x$VTs(ovBX;jFKDZb_TI0!HliualWF#tI}OL!fOI3fA8Uuty>(*JnhM zm=-M2teWoK7@roZ)2YIKe2NYC)S`IYii#3h*z7A-s@aRJhE7^PPogEDlntnfojnx7 z|E&27rRFd$0g?doXBp*3;19Vs0+VDRFlUNT{hNV*WYeS`K+K8?&`WUEq`P&URs{lk z?^mQU7Y-=;GeIqka=>3@zsOK9fl&|Tp3TSug;p+gnNUVBik1-il$qjBPK8}zyyVz1 zWyIk3Wz?LFxo`eO#%1SsjqHV*_D17{TZ;%#?oprM^!)3sOXlN|tH)rCN#-2K(#pb*(dwAa9&55-~)x;>lgJv$@W3Up+nQ6%hF>oeY@6b+H*KJ>G zm!!$-p^OyT3J?K^p>Q`)oc@@Ndf*xn>{mbsBc2PFH8nPoYI>{uyK7F{NC}f$P4hjf zjDG_;n(zzj#COCRA*6BU2kmvvnE3$h%FtI^wndQ$lO<s@;eyZsO^bqbHB0)iGauBO22^`Ng3!N0GCke#l6~@i#{j zb@L)nQ6!rK&VSA}YCn`Z_2BAk3$d=cY^Ol9Z$sd)5jFN8Q7dUYwhlzGEVqPG9_gVugef3KY4|6#@;H~hV1o5+F4K-iU zs&^2DJ2OsPv@Wf}YQB6H3MY)*Wl)Y4k7YMSo2B(o9mlEIim{uWmKy#=Kv7$?@C;i&8u|Xk5wm(9kY=MaJ zSx@}nlDjvALhXj-hOf}KO1Ubt$@{+O9JyT}Rs1Daydr17wPC=bHBv)L&%`E_;AR-( z={;WI))?zt;F<-F!!HG#;?A6w)!0iaBf@Og>I+4oJ<-O&!NFIZ%fJZYLOzZjI*#VB z#NG}1Sh}!w$llv~!XS3NVgW*U{N)8UC(LHKp)r1p@OD&uOqTm9vpuNm{PcY3q%kN6 zqM6rQyJqCV)}t>8)te*+iK6hrgURb};;OMaO8WNY^_Ti!t>ai3bD~&JW+7GWl!Iig zI7DmBfU}gZ2{u!}H8m%^IykF2Y;I&|vB0Uk>m1t=a}n#Tns`zd)8}zXYe_(R)ELxa zk7}m8Gy?*J;6GH#Av~m9wTn~b;?+rlOVu<8j~7^yzx0IEPBds!`uK2XIRB+ERWel! zX13R^G*vGPLM&~c8C5hB?Pw0M3C9YKa#;R6Rd9FPMq?WyaVu80+<&_p&pwX0y~$7< zcgZcWuehy!^P(=b&foM{VL*E82aj83Z|Fs`UDUeBnDoG;P|-XdT`Q6#VZaB5-z{!u zSg?Y#(6I7p8NNe|o4|~uz?}yl+B=jE=bXNnKnV}VY<6rc3eYprrq^R#8T`e@_SFHm z%!&l}WZiUo^<`tsWll9tDy`0uMkZf2 zV4~YFH_Xl1h`CO62L<^4I-7i2WilscKSf^u%UOp}!W+Gowp$bY8&_^OD%N_XrH`Em zz-flWKD%=CfWi70J&GjTd=fz+Ii1&a214tv-&JFk9f}=}YyG8fYNhAij%KM+vbC!O zh&;QnN6~oOIF?G^kQ5Xc@h^V+Pcm$M$0~;FSG3NUCaOIIP>|T^Jf}CkCnpg=KbB^A zE@w(^X+oY+iZvsb!j$)^XgT57VVUD}T#DVb{1^wlcv1*A-h)uyh_9R9${Ji&P#miH3_ z80ydA-CX?DVG}Ksp~c11{&HZ47=Jv|8K7E9o}U$(9E&upBH<%}MIL38C&9SmJjvNR z1OxT$l*+FpYxC%Nb{v{8>wS1sDM{|TqGC}U2UL^K$_iIh0#nu5#>T@{N)j5coN*n0 z^9Cx^jN}W62Q~TiN)DYP90(!JfCi z{!PM8Kd6vH~VolPw-3aq1N_CN*Vf(3SHBxxK_gK;f&VN_bElMGVh3$rCQ@C&T z!u-}ASm!r3+kim$k0!E#YW3fZURba-=x2q1lUSZ9?$;Awg1 zC$G1+KI%1Y8rGfvQKl|N?CXoGH#QugnmtXrv_7sPYlt~K2_LD0l4g&zukk(ai~gYE zX(}!{guP_)a0usDc-;zm%)swzdlm|X+uL7x&P(r~vm`4vE1@!=NnAT8!pUK9=Igz#%%)x|lMcLNW8J4Fgx6TTVH{fC8L>Of2UM+^L6_4mT2bX$`$=mvgEbcM-9mKtw)z8)R8fqw6$5Zo07PKTq?AWH5y)g@1bK5LHK{4ka1w~@*)eExanEimf z(rsjR@W>+lYLH`WE^oWpx3zA;*lsQo&Wq)89apiML*D-VIO`iTZkmO?;_EKN1)T>I z);~E{@rPVoZsd2`91jfJLn>~m5^kAda?3-zr8vo zrL#7+Yu74Rgv|*Vz~PyhJVGU4f7@KReX2#d{-Mgmbm8{pJm|C7Jyrq!-M~VK%=tKUy+y#nM`$SvqXnBmWaXMN}Jw8$PkeX10%+ ze)ybzPj*|$y)niSiqHFkZ65+PxNcD2Tm*aZoz>pJeEUt(Asds5}Uq<1d|B_R2 z+#L^Fkha$GdYD4A_(GIMU+Pn@T@;P2F~QkfSF!IX6DAnH3RdfLgpL@C(+GWE=V2Cbxxs z#EMab#g5uIKuUg|zUW$dlf~K7H^?SuaF_&^VJqXF%s8qK@*kn%5_#Q5r5Kep)NL_} zfX3-6Z-;vQX{(BmCm0-|gehH@WM4qs3c%gc$3o4mxc^ zt(>U+0AwOf(%{aZvLMhL>t%2+$sqS=$lJ6ar>*feZEuv^6gKCgGJtXS=8{W)h-n33 z2f?uTkmWVHbzPuynnchg;Uv0rG3w)8t3@8oLz07{-6tgVvB?D;*faq`_UX-*(v>qC zG3O%r-ii0;VYnh?eaoNeG#TBEGLwbXILY1G$CU`as=&iMojhZ_9qmi8U;4=~Qp=t0 z-tQ{6j94)Fz2XRM{wawu4E=8Fv5BiEf3^D?jMGgY($4OTeUo6(kY0m$hMx}{$gSX6 zlgDbi&IRVXi&OCm{X!lNWaTK=h$Mk>t3UpVfB1m(gKl;2eiKf(60@uQyX&t?7SQxP z!`2qe|Cf3*Km$O&zuM`;MC1~x{Y_Lq#5wEpX>vW}l`tT1X&aAQ$&AI0Eo4gBjA~n;({D05b#_%bFsOcwao-&>)q3(C_TC5o9)DRfuZY3n z`(z=N_vw=Lmc--fKuw(7-d#Q1@BFPUZf)v&v@7PpNF|d8_$R_OZrq*78#YPn-yZ;h zw>fX+olD|M``|D1{6zd&HN9@ZIvNb&ckka@$Rl~#$|8Q{dnhOyNhbOL*@RnK$4_|!E#ho z;gFuQuIu!3&kEbDF;lGUZncCR}NW_xS(qNn3#@BGb05Ci3pd%#f1{Tgd`f> z%QMGZB2e0eOkb3{?v_W9Blj%WDx>b=4kU#tr49G$fV6>lLjroe?`=Wi`_^cwIViI{ zUMQa}GHHw0OwK%5frW;W`uaEz>Plth+Q=dWHS0IsTzi)L&H-(j+~6yf$v_MaE$QoYHTm<+GeA zm=L#ulXR6=wA*IZs@S)^Od;w`*319W++`d~B36+J%-uM&n1Y<1Ou;j4eEhTVzzZ2w zYv95k<}Q_fz>6=W+FE8=`vJWZSBwJm3#hz3kE-NKK}CTF+Cl~%r@+e@y)-1gi~oKT zrrc2d5=ii!5-~^!=*TAgYYG1^T1Nj?0iWFM4FEaeFGzT~ulII(P!0p{LV;e&DnBof HHuC#Fr;t=v literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/design/image.xml b/include/ezcomponents/ImageConversion/design/image.xml new file mode 100644 index 000000000..04e7d791b --- /dev/null +++ b/include/ezcomponents/ImageConversion/design/image.xml @@ -0,0 +1,4571 @@ + + + + + Enterprise Architect + 2.5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Package + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/include/ezcomponents/ImageConversion/design/image_exceptions.png b/include/ezcomponents/ImageConversion/design/image_exceptions.png new file mode 100644 index 0000000000000000000000000000000000000000..0fa74dc0f7ee05b00741e26798446c289ee4f58c GIT binary patch literal 7794 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 K-oRcn^8FV`vuU~j literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/design/image_filters.png b/include/ezcomponents/ImageConversion/design/image_filters.png new file mode 100644 index 0000000000000000000000000000000000000000..873e1777aa30944b7b4519d755b0ccbef5b47696 GIT binary patch literal 20757 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 dP=ecY3mbA3uH>(8AV9f8l&cffvBaLn`Wx! 'image/png', + 'image/bmp' => 'image/jpeg', + ) +); + + +// Create the converter itself. +$converter = new ezcImageConverter( $settings ); + +// Define a transformation +$filters = array( + new ezcImageFilter( + 'scaleWidth', + array( + 'width' => 100, + 'direction' => ezcImageGeometryFilters::SCALE_BOTH, + ) + ), + new ezcImageFilter( + 'colorspace', + array( + 'space' => ezcImageColorspaceFilters::COLORSPACE_GREY, + ) + ), +); + +// Which MIME types the conversion may output +$mimeTypes = array( 'image/jpeg', 'image/png' ); + +// Create the transformation inside the manager +$converter->createTransformation( 'thumbnail', $filters, $mimeTypes ); + +// Transform an image. +$converter->transform( 'thumbnail', dirname( __FILE__ ). '/jpeg.jpg', dirname( __FILE__ ). '/jpeg_thumb.jpg' ); + +echo 'Succesfully converted <'. dirname( __FILE__ ). '/jpeg.jpg> to <'.dirname( __FILE__ ). '/jpeg_thumb.jpg'.">\n"; +?> diff --git a/include/ezcomponents/ImageConversion/docs/example_singleton.php b/include/ezcomponents/ImageConversion/docs/example_singleton.php new file mode 100644 index 000000000..393a3d4c0 --- /dev/null +++ b/include/ezcomponents/ImageConversion/docs/example_singleton.php @@ -0,0 +1,90 @@ + 'image/png', + 'image/bmp' => 'image/jpeg', + ) + ); + + + // Create the converter itself. + $converter = new ezcImageConverter( $settings ); + + // Define a transformation + $filters = array( + new ezcImageFilter( + 'scale', + array( + 'width' => 100, + 'height' => 300, + 'direction' => ezcImageGeometryFilters::SCALE_BOTH, + ) + ), + new ezcImageFilter( + 'colorspace', + array( + 'space' => ezcImageColorspaceFilters::COLORSPACE_SEPIA, + ) + ), + new ezcImageFilter( + 'border', + array( + 'width' => 5, + 'color' => array( 255, 0, 0 ), + ) + ), + ); + + // Which MIME types the conversion may output + $mimeTypes = array( 'image/jpeg', 'image/png' ); + + // Create the transformation inside the manager + $converter->createTransformation( 'funny', $filters, $mimeTypes ); + + // Assign singleton instance + $GLOBALS['_ezcImageConverterInstance'] = $converter; + } + + // Return singleton instance + return $GLOBALS['_ezcImageConverterInstance']; +} + +// ... + +// Somewhere else in the code... + +// Transform an image. +getImageConverterInstance()->transform( 'funny', dirname( __FILE__ ).'/jpeg.jpg', dirname( __FILE__ ). '/jpeg_singleton.jpg' ); + +echo 'Succesfully converted <'. dirname( __FILE__ ). '/jpeg.jpg> to <'. dirname( __FILE__ ). '/jpeg_singleton.jpg'.">\n"; +?> diff --git a/include/ezcomponents/ImageConversion/docs/img/imageconversion_example_01_after.jpg b/include/ezcomponents/ImageConversion/docs/img/imageconversion_example_01_after.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a97c9b8009239d165665c0256e68e49c47d2ab24 GIT binary patch literal 30518 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

Yf{lV=F6P5Kqgd z>uBR6t7?AEq8=G9F;qpqE6L(?J2rY9Q|g9~KDZYY}(fYh)0 zqB?wQFAaJL%0Z~22LF=|twpklmr7sF(He8{L z-8DIVQ}LE5|2da8`zfZn!sb(2PKRLsI*!t0%Ef%qFaG;s90Lnl&&lnRQ%L(hwe*|8 z%ZzJhi;vjsu}btl*3KjcPBV?g{urPY2sB=Zn*tdGuP^-V3xNOo@bTC^>~gs5mDnFGr=CXVEl>cAoIo%O~=6wxX>MqE!>O z6XW_<9dkZ>n%#=@S@HHXFWj=wNb0|@eVeF_K5PgU5%HucR#Q0#x{2gQ)SKjs$h7ex z;XpaGZFo>|6zXqQn5MR4k3nW?{Tu^Sgyd4vjk=U@HexS-czF0H0BaMza!Ha#r7*~& zgCuW8CO>JDXFcQBYIB=_LaFuCIntz6kItA1k+Xh7O2lkr!-{6wpx;%#($eMYZRx||2R zRG1lzALezx_oULJ@bTuVZ)4~{z-8KBWM7~Zt@gd^B_8DBFY z70l

wan95w7pWD72UrnhkkAHu}p#Oh0|6IGFuBKV8A|pOpK;;2>Sq@DE$#ByGTO z5UMfNAvv>nKgtL zRMHfJt5E;!Y?SE8pg@kw*oX=oGVpNrU>YeIAG~9kT-*(gr%4)*7e-~5CrymQap}ym z9vv$|93n^X$b6a|cwzYfoO3Rq5z+9+=m11JweY&q+?FcOWR!p2dF|la$fN5@*?pMizs*}#pN)+1H>#Tt4 zjYr+U*!s#d=P6g3^@nC9?AyEiw^ZV1XQt4UHMGuI)0NpTf4f@fkm6*T-85E&fe0=( z{2aJWxJUP7Cxaec3ZSQBL<&z ztvf;%22F_QdjBWotI##^e(o^IC@p{8Pi$%jQ8j$ya2gX~S2(MN&27mPVQ4Zh6W%m- zx|H4LV&af&{X$O*YhTRf*Y{k$=@R3FS`*P@q1Ct%2Xw1cjDscu)zUd{E_yhco>p_i z2pmmqeK%ITeKNcKESWx71HoU`4_SeqVlt@t?#_|A!Wb6RtyB#g!tR? zHb>O5Qmo+88q?Hn8H7Ua@{a`ziv%rBn5CuSZ^qFsw1^zzSoqT;N)knHKPS=q3dSsM01`SfZQ z5)+rr7U2fLfDL#`cQ17R=DtTXU8(_bj$A)Z{uZRVVI*DlF|}HcCm^zpU{YO8LljI-W}=WR1B$G zPWuy(=|(dCY5J!MHeJhoE{B3gYBec9k;iIZ`o@6f{cq_70iSbKYQv~l#o!oXI&_GAJs}M4%TjuvTZ*K02*u;^a4y-L%_Xg&s*v znHfLv)otR^fd|^CjHlTHElKPze;w=p0LlOY=?NrK9*7hp$l|1hMBPbZqola#Xx7Yh zj8GRd!FKuLyAehJR|6c9>M#B7UNDzMSsK^TL2@&~RGJQ$S$X(H_C+ zZA@9wUo2Zd7wcJ7Tl6=0_YQZ7YCG!p^UKzM;a8?ka)&9}Ai^b#HxE&l*#_PKE_oZ86ZysnZS0~MK{P<;d3rvCtkFK6y=jQPF0 z#gByB_}Y9;NsY?Lk+U>>D>Ci3%BtSoR6d}>mI)4aGd!?m?DMjvh@@Rcjzh>jhqaJ{ zm#O%EmHz-xe&Ih>`|c|vN7b)OwDK3#={BdBXIHT1cQWsR$l$5Grc#=g zWgYINgsGCreleW_01xG@huuHw`}}kDQ~4A8N9sS0-^aysH2N=9y+KHOI`8(><+1rr zX*#jGSNfIUPCKuUI|}0{Y`pLq&8tO6Z1z=2p z$uzmWMU#0JBG&^(%xcQ$B;iw=&GU5g^iigUaVgOc7T&se)A79i3%WgXKu zEBG zpW5|ZZfMwm%(nVm?>_>i{^mS}qOC!{sMoAN!@ZwIcKul5t<3tP>QAeCKAjDflIdFA z->SH}>0dyj&?iiM?h_3ja|x`jUoRt*$09nm$S9w_2sCp^%|L$-`QKHI()zjD>g!#z zQN>)Vx^C!bKci_~wmMkV)zqs7az5JCSyNQvW7*PzZ6c4TQMG_RTL+W$`_yWyxRRt# zJ3DJ?qR-lAHb+TQKsrjIyIITQuqP;S=705Q8WTgq(IgMh74n{PxUT5eU~e=cFw`uFmSR|Nslat?lXbr zGm$Kg>dgK&VGr@Kjs6R9a@pNyJE6n!qlyqn7p46*W>P-325f+Y~nHxu#pPVNCp%@x)Xo=^Fu87g$x5pnmUru zRc>+4nzmZkxKYtd3$jy~UNT%mIv&a(U(ha|t79tqF?g!W3_Sg=uDggLiUC@MT$yTV z*y1w5Jrx>Czmw{2dfA|Ua|AArI?uOTw00gB$*3(M-0cEVoQ1{Vi)%tBQ0>(Pgk4=A5DvoPtU0WrInRr)iJaXHa?O zJB>2Q1jSUMpp|V1jw_$)R=^6<@JTEFkNQ}X-jrn1L-t^cUcAq_>hGkXIXCa5PjD?xLt{~E}2VJ&U z`_jVB*@XU?7rkI>+_~B6*2HjSL2|>h&i>;cAn3Fu_wi^n)72=!tGUf+Wo0KuOGyj1 z{gn|=NC>SoBOZu}#9g+H7otyz35$d$ z@EC+%N}zO=VN2{0B*e=kiE$PQwlsw$ib9e|?D4M5poKubL$hivil}4ItC^9Au}-eD z{mhbWyp3>*twE5KD@*wFnk*=$nmwZAU+vcKMU}Xt3HJT-|UKp-B-IeP8 zfk3PV(w#b&$3+G-OBT>%yhTij8;054712iNBBY7p4&zTo*o8g2=QPsKf=eseXw>q% zP-0YobY%{sf{pAgf#~Cs-9vP^Y|zWpC=WD;4n59_h-YWj1((m(RI=FUCBqR9h_g$$ z_*uJGhQ3}aK!eyZougt}oikZ)HngEn)dl@3DNvU@fnLslMV3WSyf~#`Ap{WgRPs1p z^@EI+x&A1Km_lA#OE{@6u1^|H-QMjTv&M2#@iqSa`KP33O-jTWRT)Mq#h8``TY4&GVj$4HJrVnfQl zS9r^$vZ}7i1Cq3&wGt{Zu#`{6h)WDgO^|kyFbg8cS5-o;>aO75kf3j!7KaO9AuPQG z#q^XgRvrr)NY+Bf$6rh z+Rz2^G{^VEcNg|)c0ncvpmG%?w2L-tJYGZHft2@(l9Qj3jHy);Hy_BGZgS&9n3*Ip z1!W5e{vhHJQLm~fB=UOgagZ}uSP5Zqr}2d&Mflz9kSvgEk_R0Z^9*NccPcW}22#?S zXAE_yyv#c4lD^UC+<0m+lJ~_eq%|2ta%ahi%((Fbg_cRSARlu-H5}WHXlK@ zQ>i}PT6~HRBVSM1gA+)HSs}edFHzKAk-Z>uDbxP2*_OINPX&!#Gbc>^tEta(xxj`K z1GclThi~>HRcBd;!=#f2`}e)YbJKf1_HngIT6plUqJf=ZvryDqn?nRxdds|19HCrM z7gc6{sS0wnkn|)t3>~5wErxeGo|ddv_8??9x_H@T(wnrdOBi9Olnu{TsyYfl{8m{~ z^o8VSl*{_@9dbfC%DyCd7{qBYkW~rFMS_;vUfK)oGMwVui!%<*R z5?g>s>A|T`DdFi`tXySatLYIvX0s7X>>O3bu=EP^#@B7zpfbOwrKUX4>4PpvoFQ>h z;oj@4Ticx;X!+bSxDbY3JGvsiqo_0FCJl1KEmR=jF27Kpz`zV-Oawy_dD%sF@ zXi(Xl@LcCi$oZ{XIaI0=UH#B(*Ed9zf`)>%#%%1*D47CooT1XOm<7g-4N;7uHx>!Z zbEL5(aZe;@%yJ;uta{d@x~o}^*d=lUQ?`X*9km`%sortLGz`?1^t)VqLD zwLnh9?gcOLdFz{J`0$ zgIW64MikA5lUPd{nZW_kDBOJ2T>e&nUwbrP9ev8Nq0WmTLZ}gl%6bUgF=blV$e;tw zSzT`RYHKH_IO*ez!o|IIjzJJ0r~#QvS``X`g4ZPNY*^V5ex-2)^s9H5^-GtPIbP=* zIF|QN2#)<`B{bL=udFrN0{V==49Ap$UJ=pC*K0ABs2Z$si9TR@h7AqJF|*rSqv%Du z(?zqEWlAtal(c;tFphiB01MiS{`Tc+GvPH(cM7TW^$s0dA5zE*Uwx`f!@wiTCO9WJ z&;1gxHMBfGRidm7YgbSnGbXzM`TdgKptXZ9*3dc=pP1IiS(1m;R2zpNuyE82oar*1 zX`t?WCtE&PJ50Aha-61`)#)u*dcN7UD4aP>(Au3gMXsHo)`h5M1T&s+0Onlu~PL4}^PCbi@B6n6c%-&0-p67ux3l) ztBL4jMr@Gi0dt|9RAj1TOugw+m)GF{{RzX(NxQ_ zW~flQ!Tt=dN`Wxw7;-F*h6iJnt&O_1Tpn9w(8|pk!eux$4UaSd_6FIF3nt!%g$|tz zYg|Yp7B7yi*pn?R%Mxsx<^wpts%2V(?*qu*i8Hfm5rRN=R;4^y76rUaN^&(;dZz`J zEvyyCj|X$9Kbaj4g4#q3RlQh+l~v0CHzM{>dQj2{X!xC3^+M~gQqoF@0gh|sIHv>i z01ZI_y!}SwgE7uF2L|(4XXb09{Ro^eopMBgH4K$QcxCoZs7l!F11je>m(-iJ6k;p( z#}M~X&vQPdA(vqDD0SKxSlTPjD@E2OVp(eIr3$Qd^(db?pVH@rMy;9^DA~i9W?0iy zfIgpcuCFWKGFpno;JR#!WVYi4`^o39a^igwlF8VBl$psZFzA$2EiU-uMR(Yxtf0#D zakfv~cCpN7_~oSl_oV#==Wpg{PtyFAiH;iGB@sdU%6NUF9Z@_5)$ z9G+2i4b^YyQoV7x96hH;5BCc75WZt9Em?m*d9)A-7*R4b<|9axn7xN;(v*=G=U*Ke z@LTJH;2v`+RT&Jp#Z%|g0kdU-GGvnmkisB=7VKCN^|fZ3WIL=L$P+Xqq%r;mS?kZH z=wzeBn)q2d8p*1BywrzV{`)*Q-4>mNOPpqp)uE-9e778{S8*KD6qzSKyV|j3x)}X# zPPa6PtEASe=0?D>ZD=4}ZehbWtEZimVbB$6X=^P#BB;)1+6~(yT2Q?gy@b&oS@B}~ zT$WQTvNVy;8Y+j0q@f!oKz|qD3o%2gY=)6Q##oUjjJ7Z!tZKZI?lm$8M7#W{n9<}Q z_T*TuE2!?d&b2;GYvSo6&1wa`I#X3qwV3XHnpwI`LH28(a;a(dWAEay7WFQGM$*Qk zGL`1EmgPFVZDyJo68)N`+0_E=I=Z*ZM@Uc>RyxC75ILkobSl+9^P6!&Q{nT@Fz8_Z z5E>eN(x-JMg|;oMZ6h2h#e$la-p_nfpi2^=GpwbWJ(~chA@4u1V9Usgtz<{1X(aQv zvJ=%FDE|On73_TJorx0qT12zp#DLzy3G*!l*d;TlQkL(J?^rZ<<7LMkr<5d82q$qF zc~md~WRf!O-ppH)LKIZB7tXfx$YFREIHQ;alHl^+jIQZwh{##!*|s49uPRE0=;e07 zmx&{IB>U~^xDVP-vqEP)!!Orfs?_zM7V}1p^NkFuGPQbID7Ai2LEWEHMUA3maaA%| zaHE2cx|v;kEZWCFW=wbcCfD}+h9Uu_#SEY86!x$Wp>+QMitK-9KJ00zfz->0>`fT`PUm4o5?& zQ&bb1f&{#(c<)6dv|CAPO(|QdUyV2B&egFP(dJIvU~gJ1Rr0KW(cs z)F@dMK(L+99g(=nQ=wm|3POpsU>HqS+5nNqj8%f}g)nkhO=zU^WL8c{$h$U6_xMzxr1P`0D_c*1TX?CexzB^f?t*ztr+ z(w{lai(17nFGCX4HNLDtl*bjL$50<0IRiOK6@$C!-+nw3SAv-MmFN~?cy!JSI4 zOH)d~V)q>R%U{g=G8akIxylh!Qs0l=DH#aa3lIeP07%PKN$J?J~l^vhjc;+DlklI&8 zHIvvyV*RQzebnYjbET!PRmVSu1e=m7*CSJ&d1%KqeiJGI_RxhFp$@a z?1YMwPbtw&uLptFvGyYW05CR304l?dQd6;Qma)WW4d~W%-UJ^h$wxmc(n}g@VL=*0 zZgnP{YK)+4^}}!+l84#I*aqkqnC`?9OujO}KeYvkcWpseD9&4&QdIC*5z`L^0^_8+ z<_uDcwIf}3e}2lU*pK5Oog-ZKptNdb9blfl8C=G;(KWILxNm8L#WfL7rEwfSa$XdfUJfvb}ZDUWQu@HNi#zlEQN|3!B1V z>g5Ec3x&GmsS4Cpc)i$o$0?nnfui0ez;cCptNfSYeHsvwZ(+OiN~oKQWQBS&eFITH zt5T7RfBtk@NEM>hFog@YLNqbhYAzfLmE1D1;>C+1Y?&HE{AfuFAxAp^O@I~mvKGMP z(6a_o;uH)|2^$k20c6}Pl0~~8fK=17D;3!+2BCAbki*u>d4S^T6whe z(hGTvKz(K{rv?lfViz z0SOEI2ScW{tSUe&YIKt~Et9N<;+V=rt(R?-w5_bO#?t!=jMS8rUdC)oCl?`!YES|N zk0WIFU*#mU4#S(-*KX;LDkO~ZL>Q!sSQPdQ7+#DN5N(BQQi$oVZILBZn;Rw;Xw&}y zFsO_e+wzCum@pqZYhkqoeR|pT2Xk^!&eG;}9>YXf^AMREZzFJzl5I$4gjQ8zYCsMP z5Gh=ZCcKru_66orv8&Xc*qsa8mCi0heED@DZt)XupUhy6KMLv=e-n+B_MPZlxRhSV(nt=N-KY0~~IW3lHpp$m{fYK20OXAJnn_u_<7EJ`s(8;F`V%xerkOc^$t$ zx|Ul#E`G}y=vkcPGV|pZqMxp=c{47#nGnJ-)r}UJf?HD6tAAo?C1n-R{oPHt#filF zAFNW$)tt!G8nm~1TjGjoGYdK2QC>9hQf%Q_@CB+p%T@pEg_}X z1x#BFdWD5xh};(qAi=8l7%|0^D4uLoF-bD2#Ti8gI|`y$(v=jeApS5Y3MXUj(1S3~ zkL8NM2G%mV4;H~ec2r%wMwIDF#1?udVmXV<2?W_6N6;YASE2XY3g(;G@VYsws|hcmWI(=*ipaRtpnxPvDGE1XHTDwvEff3_l(Xe6S{2oR z(O{DfY{TRml8q6~Zi>01XsAgga0(WrlnQf?Lcjf$6MNvf!}p}jQ1=YA5+u^gG})4q zCy{n4p+>6UmQ;*#B%my%EuV_$3GyXfmnalg0RzTKbuUCACv*i=fWR%SUfhw** zW9&w@c9U;Vqa~+FB?I+Z6pHfka)5Fs%BD($4Aa?T2*fRuu|2IS-a(KeWp}x==MPH{ zq33fpj2EVfXqRPeUpA(9>uqElvg5*WHcVTAa8;&H^}XdPpU13eeGY%8P5QK^H9Sm> z`YUgPTF7UW^5&|I9`kL;79ML_BfaRQ)zJ)rme1r}U2aSC>|l*c5g=%2;xo6*PT-E! zQ(2y!Agb1&)?FnKqZEV&9O^Sh2GYQ-%1Vv4Y{SByClW`$@<$s4jhGnSRE@%lZ9@>s zLg+Ro*@sg+ur?qvqcM~DER}B}A{*yhWjC`bsUm{2dZ6jh*E7%eJ2^mI#cnpbZbLlh z)U`y34~zwrX+i~gs-hs`a^F3mkg(fQC`|CUGJFae$CdCqOSwo^tm64A zrdg(Q67FcUg+}u)we9gHYJ^t5^oSlM~B%Wp>T!#8uE z2^1(kE!xCvnidXg)EgJILOLmGrTdk3HFVW-86_3PU=E~PsWi#ea-y{AZKTYG_fK7( zeKIK_hQzf~)uGDO6bl412vmoKQPL=mE|=(Bg>x#0QB-6sREkp`<&VPdCT1*YAn>>( zDo0uv-O8w<)nut%ZHDwz*bG1oPA-}!?R3d?27uTyEug|~5G^TP?vE=~$KNUMCDJ>n zDPS>i=Fw0pw~~;#2BB?Dy-@Wj%%1BL)6G6LK7M(^pd#yD%NcECglX#cH}j90*0j=; z$gt36EO##8^K;jdUHEmPT1Glt_0!O~-a@VG^Ze&NkvbPonxoT+v5;l8a+?l-ZhaaW z?$MH2vL2@m-6ng9mbPD#aMd*B+rcw zG&)qXIFX9}QRA+q;*ycI0fKuGZB1Z~n*c{5*3a#Eb{)~xvU_4J9~%p^Uu?yA(=3z&YybQUw)K2JQV+>6!1ha#j z^oKQ;NXOG{B!r%|>8wyMLGE{`)#0!W3(~cSqy{N-ksCFO(}a84*)q2FW=OJcqt985BE6(5wOrRkWuq!p(NI2n zFiICuOBsKw?Cse{jK6Up${tpRMOhTHNs=J)R>*Wn#49C6vTBH^+YnkYrH8g=NtJ{4 z;lv0Nc%EMxMfV~wP)#1EW@#W-W-cq(p^08XY)%iXy#_*AkKBC*x>@}kxOXe_3Cs+XW}>2i4p*PEu(jE8n5Y=GMv6DRfv(48ECN zLK8%zH4K89+VB@2yrl;}zt|k#IIV;0**-)IEJjHng*?&)@kNlX;s)AiXKnT|(@3T^ zs~WUGI*aQsyu`{}98Telj~zBr&ot1y(2!yUbny#NGLcxMCPoFBqkTveO;^0Bz6uQ0Wx0WW*v7M9m9Ch9^-HE2sk5P{>(U?@+{=t0e4CNJ+)hIcGNv zFui?3J8bY)@mVqQSSf$&KqO4EJCe?b>`kd+GinzpU{x`}2tX>2Q2RHUO_*bw(j6-y zTwsl}kmq~}GN@Oj13{PSh&jT&gm_fB#~l+LN%+j^dWS8r3+2jKq*ZnA2_PMpP|E{Q zV-krDS7m=6ptX`eF#Cn}B(3?H#p8J)H0AZokmMAGrQ5~^`PxWLg38(F<1L2_R5|9+CWG%h!c`SR5+;+&+3%VJg zWPc^ku|Zn@0P8_61KnsPFC+0q2Nj#ld}gJoKg?g@^7rhI^4Ivi&7aeL4@=RU3@qI~ zVt^XM4Bpp;*({U7TUNdgYQgre)p2%2e%X!Ppgt_gW?1JE zNgCqRYaf-}7y?U3sHMRGl4#dRyL#nmE>1gt?R;${e#gmdqynSWg&S>%;`R3Ht>||7 zlarUX&03pSZVrUV=^Rl3ni6a8v{{Ucs1b{D7?k3sbbv0Em$9fjW8s4acK&a^p z)i7|1#3)GADPuYD2t3s{nxIPe2@O$6Di)7QXb$^_FKq6)UA$pWBv|&5P6C6I5eeg& z3384kvF)Fkbs>dKNBD}#wPI;2|RwVERgI|E48oCcZQq45pLg{Cw zuj)c1(ohRr8fnNDm}g5+S6pLkN+0bo$kU%VUKr#n#fE!++HkEfTkTLpB`k$zHu`OX9FW)3oN#li;S=VN&e8N z76_f?V^Wq-)V$WWFvj2n!nU%_1Q6L=sS{K=S;`Tm!=`Z>BTZPO%~W7s)+zr0@`7Px z8{{(+!b&h(#fU(M2bUCvJL1T}P{a*L!{BV(mgHGQ{eI0?Q%bUU{9DA*vXh{f(OKxN zNkIz=C;WhLrkR6v3y{u(fNLprZp+|i97SydlEOGNR}CD6OJaSB3}XUETkA)}DyH9_ z;gPOJednNsGhI=^H4fj#1+HB%2@~3UqFn8zG$-C-2L)Uvi=G?LCFlk!0)eImcI0_L zEq)cOn1!PLO4eL9Wsh6^g^5ekz_tDXU+S>LUhzsS8;9CFV(4qUt1FRwpJz-$)j~e2 zS73isKlG{mWH{_K4?-SbKW>%(0BV$T3rCIyk5p!63Lk}1$A%niT(dPbAM!8;#?API zyOeZC2_RV2X;XAkNCk%BgB_cPpc;p$z0bz|y1fgfgk79w@R>=Zz9Pn5#27o8OC}n{ z*ILABhLW%=7plxG+Zn@s=u`_X#1Cb2$#Z#l9K#wEZx8zn?maomFvio!Jo*}!T{!?# zyDaIlwysWC@egyWpL*7GM``+tc{Qn{OM=2q+iif)T}!Opsa(rc)hw4v)k+)+Mw+C- z!l9k3R3O$>ocdK1oYu+g2>!0!G=Mv5;3C8Sqn?XMF(qic=!KTSI6|2z8p( zHri+DsNjaUCRrLd8Lm3?k@Z-UX7g&YDg|c+1G6(SjR0*g+oB!OqAr^|pW_ACx`4`x z=<8$^3Z+UYAxjU18WSDrW@!C9uqhdNcQQZQq9g1PkH3pK1Z0(#jAsgQs*BR*YJ@FQ z0iDkYt?(XrH!bTGHjE|pS{X^<5gXJc>rCM|38Swjsw7~IB@o_l+^1Dh9b z1|KuX9a0yT87#d>m$YtJG?A4HA1oq_vn!AQwG?^Tp~-ewP~@)DFxDn@DXJ`M?jwvd zXekS;cz+%`vi*vz^RdeI`pZjCv}1()^8Uku%y^h#>NN|^Z2@0BkzTE-q`IPNpH)$@ zH*C_q7pg$p(B$*cIEBe!s%-s63b{azuGd1YSsuy9cSv)t*;@d!pEEb0-~&+=t7>H} z?8rV78(oIJZsC-Ex>=>&$xDcpfG~vm+iA?`FQRE79X8fTF#_W5FtYZhbJP<65KBdU zJMIZAjJpDjEQYjFzr+ z1-3;6fpAwnM8U&ibF4g3=%7Yn>L42@`mfz)D&&I6uS+3nO>JbHW}y~tD+U8$EQahb zq^s8FnA+$~Rp0aU8|i9j370`C2r%kIbyVu|3L>JZEO(_q<}4`DdTj+`?G~D07KC8* zGsuTTM%mB;uAlZ+rkd{T4h<66vU<8}s*;#8L+!>Vinq}|V^ zIlSJCboux2bvfxau({0kR`4PdvH@S8(N{5|lUX`qEU6)TQuw_Zdxt2L(#_Xj6aN4Ws=5HCK`zrvmf0kvjdH)9#&K4;z>bkon^E11CF|lk zOqH$7I~i!ZkzHUDC6TId6m5p|%hpUoy~S+u6m(NzQW9QK7!d?N9T`*ctDiS(SFSAE z_4)jk{=K5>UEwl@mL`TpYHEQNkSeM)@w}~>5&TvR)P;7@o@O?v4{RS~c9)yD~5xyWTjLKb?NZ?8rbiN?HL2vcRUQ_Z?Rbh@V}S!yxKC zQ#=;}ia8^Roi+21 zw^%+|Vvv71DcJ7rs?G8MVlLeI8|MMxbwlek71GNU)!Eh|)VOf-22<2*Et@%S-#I5`d!!F5HM6uyud4K%Z5{T+8wWo! zm$on~d2!%_XTvmc%61Q{6=`vDn2Jy@$TkD<9Y5`PoxyOR`*Ph;TY`mZf;32yWabe~EFQ#*)tvm# z#W?t|O9Zk>9lTDWG8xn_q4-s0Px6EK{PXfpOZ&^P#{pQc@*p~T5)a5FXpnwr-#q;E zB=bk%-@~-LZjM<1UK;zLD@&nwjOgTx!F1175BF0mGcACWrEC$!ZxCOfGk>Tzs_4rnkI@}-n~>KYXLW+> z$_4zDHgX&$Rfj?@Md04X2Za9sD%vebn5|^BxA?EK0<~iG{SI?q$zD6v9K205ICnEe zmK^%5oy`a?HvV9@o@tw@VzDp*yGs#^SJ^)vH7E&l-GP8K#)cpiAXffR*O z@&)#luFx=6CWkBu6e_562VrC4%SuwN(CiAUT{>0RKi^#P^<%jgp`XfN`iaQoEt{50 zrLC*X2F)}lGt4y0s0ncHhW0bWu~=S_Mai5b5oL2tsNSzX zbrvSZ=FtK$inBod%;{PR#jR6~vKGasj)c$5{9W}v9xNS`uw_L8CP;yx z^H$OrV#P8>jLb=JugEX4{S!ovj_sKfE=O~PWML4U7)B@{EI>2>pePPL2gn!E$2rNH zQ%tO(bu!PAHNrqHT`#G4l?$diiWq6b`*=lkr_4);0jS0Ws=e&EkB!DBT&<3a6~avy zOXOkdrlAjJpORkGr^+7<(*@)(5f&hS0nFKdFS#wBnfawM9i+~TyB67yHT)2McpQGe zLdWZ?WEk+t6SJvi0oW4nVS*q9X}x$gLV+9}0P3;s^tiN@jVfxoV`r#Ztm|`RsZX6e zQaQ5+C2RtblFNg~Z|$|&A~5~cOYCQ}V9`NALYZ@X6XGzOrLYSt5?B+l4>e791EfmO{Oad^#&3|1AJ9cRe8 z$1GFoiRQ1{w@Xo?7d>4fm5UOxW~;A|S`ZZ=p?fYD7Xl}8mHEQ%QK?tuc9?AW`JaJi z{{R*|jUTBvOi3TJajziQpb4Syq>=z6p0Eh4W#K3; z(izEjyqIbjtr5Ci`ixXGE9AQL2CNOXm?1yx>JgR~DjHUlAvF~Vq*fDUtzM)H1JnJc zTG&OMwgr^D6WrGN0{VuyOP3=H||c-Xg$Imm6`PnfSsJW(pH|2#Ac6KEEo95_Jir>3s%q?cw`4+C(Wi9(R zSik-{Yz`P`Y^`NkHPed z%Bf^^BEnHgs-`4`X{YKvG$a1rck(BpRVs4Odu6Jib+oISPEAhze=E z#fItw(I8mbi1n>W9S-_=hMsnU%w7W0>gXLro0OCeu^36>bVJZ-iqgfa6wIkIg#vcd z6gR@;zkm!=KQr?`5%-*|h_WK_$X9q(+Jf@UC6?rTpWSqxS)`He$R?0}3Gfy%%_y=* M%O7U>VozWH*|a7ys{jB1 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/docs/img/imageconversion_example_01_before.bmp b/include/ezcomponents/ImageConversion/docs/img/imageconversion_example_01_before.bmp new file mode 100644 index 0000000000000000000000000000000000000000..bac829b3a9587ae67855f0e15767dc08ec86666c GIT binary patch literal 90054 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

4uf2Ka)6bpx)3d3SHLcyIci3h{61H6Tr}M9W z`qRyif4&KK)bYojy71+9Z+!9H2S40+_xtOwe(~+|?|js`Jr?6`Iohcr*M+o7~PK*W@f!d+hLVv_BJWJoz7IXK+qxAw!&HFOKBZ$P?M|R<76Gwp2gK2+P{Wz&P^jCr=0-7$#5M3jHN$hG_LnQ1 z?bbk((pb)tfV!qfp{|{tY3GP~L~6*$0QMJnsV1#1*~($X{9%eein6&-7B|iuV0#L6 zv*Jb~w^w8Wwf_W+N}}Mmib5<-kJbcKI!N7xjsqeFTJ?r5y`@EM?od0KxkJqoU86+S zAXl}@wS#~tS2_BO!KpxY(wRf}5+hzGDjXx_R}isGzsHA6WG2Ju2_Ga)Y@-83sGuZk zcOzZteytbsxThdT-Ud-AK%$-lE-})dCMFh9!3At|nX`O~m|7(ym&wTuL~wpAn1lc3 zh&w_lt^y!;Hn&=VruEXeRfAK%*}t!)r}uaJt9_y9ldrw?&Ntt|^x)$kufgl~m$%-3 zHFIraLmgb-CszRfoTRLYk*-HNNBYjK?BVHDO8X` z?FMPIOw%IQwyJa(hnE$K1JfQKPT98ZBss%lFf;&-vBo^12aSrRWtt7H2U>a=<%th@ z+@lb~0Z0LvdfXiVtzDnONc5(_7S}0NwF4f1hh~|8%DkSdYvkISIhJ<5u}f|SMZ}OL zig4$lKkcy@aPb^-X$zAs4Ev(P-UK34>Mc}g7Gy*M^e zpwF%0l5-P~P7(&&>Cvgs0;9N1hG^8(GNkTK_)~-KFfm(%6*;wV2m@sAND?TE9RyBU zKjQYP%KDz3+bbGKjG4c@_V$0S-}vm>wWnUc@bAwrzjW#Ae|+@Wg|Dx^^Zm6qzW(un zm*0%6Y?$0Gi`yyEs82oer}w`8@w4l{LRt05`PV-B0UE;}-un8dcfP;=_SG9Nefh(` z-uon&Df%;W(=vTcW6%Hk-+M*~I#u#%Rra5X!Yj75k5rjg^@W$2u7`!;Cq3IAdbhr$ z>CZJ`<;^r{hsrw4cVGnmHjQ&g2e1M^(iQ7h>_pX10ue5?(GTQFz8vhs_&^c*pkaN0 zmD~bU*Munq!L0On5tM|?_%g{C1MxY=8lDN|#@)eQcLX-VI8U-esBGZyU}W8)v-cRB z-DY=})i>-(j{DMW0PKR>$qeg4Q}ryjN~Sufv9{ae^G+o6!c* z8}PB+?r!pVs?_?uv-EliyN)Xcqj!^3T`iRy;Bus`&33sH1O|lgG73s2X8;#VW5Q|n@=-zt zHg|bcG&^0|1c4a{^I$|n4&)h$!zgC~rc$)r3ILg5m@qT9Nz5!0@~faXp7bQ~(E=PN zRBUk~kQ;V}DY;c-C`T=<;gj=-P!^xt1U4YR`p~xYxXNEQj{jXv)9#uYNWHJ`?pr%? z*Tt*X|M~Hy^Phe5+&iEC^}UN9{&@Z4pKkr*qc0x2@WI2czI)H#{;l?hv@WN~XY z=Y=o7fqU%5Prv-jtM7hr^~M`teE;^>Kfw<^{Nd(1S8qK3`IXZTK0d#A=>DgltM2Hp zY#qi*a@x`h`oas|?a$pC?-R9W#(CKmtZt0y8e~TLXVSgYa5vV}P80#Zx`rm}6Iur} z!3j^HMecxu1o)b6g|AcTA9JQBJSkw7_R5Xprf3)F=)e>lDgb6@QXLpp`^oWT_^J}) zD?)%&WHyA+`Dtqa0;wByUi#8q7-zBp3OU%{89c-GaI@Ol3{EspxF53fJi$s1_W*<0 zs?fCP^yMl;J(MoaNSiZ!kS%IvL)aW23=!Q@I8^#}o1+Qr(sqBV!May#s`q6pl!h7( zV>c07CKMgu$Ql%mGVl!QK&5H!3S>#eqeNd4@R&^i##BmM6w(%hsox*RSv@%LefuM% zV3ZJy){FUIQUFaLE|euFi(@{>=?l}6r2{iOLTa^DqUlwb+l6`{26TYF-4X@o!hj>x ztbnLKV4DOWp#$sB4HzQ0&TPK>Q#f+Y&rPBTmJk)BYnLIxKF7BOHJB^|#;u@y1J+zj^w?2k(7% z{Y|*9zWVW_A8%c}_Unh&u7B|DPcMJ)X)2r9D5N?@N1I159QRS(;_Dp$pA+|74Iceu zO0wCEGBix^uo53e8fu(U^wTVDSU_M&hdhN!k#o$FL%A0Qt?>a%uvunog54GeZ0yc< zwQ~%NmNHAnta8MZ7|};ZH9@2;0kr`LiNQ1tZ4RS&n3x2UNO98OXQ!6I*M>{aLFggg z6oEYYJpeMAk#-7QEbMO_nNGaF;Q-&zfxXm1?xE zR-V3{t*xGsHw!h*R%5-z+GG#*2Xd7%^In0nMsC@KoT{Z@ZpWf`GiItpvO2Mg_10d z*n9&}W;^}xVm8aQ=x71P!u`-1fc8}i?hGG2yNQi2^*O@bW-rp88uo>ep)|y7ap#ZY z!V4o1l@-V#B6FZOAS73Z9C1u|0p%+p1I5W;b{Nz(!IcqbY1{>^+%ZgSbHJWPz~_6j z#1f$Xr&mu9Qyahpm&}B%bdcta{VmUlcT0q5dQR# zWryiUam{1&5ro#+&z01TBJ&$Z|M<^W{`tY@FMa;aGjD$M0X%PFPu1ObUL*b+wpS`y?gcA3zxor=G{-;{qE_TO>lh1rFW#6muCF`X8E2aXpUD53R))F6I>@!;2B|B zrue=|ma7W`7GQaw&Ieut0634sn#`N7lW4(s(kij^se)sUd>>fVOqpSE0Oegk0yEH> z!h3R*$Xurk)K*?-iwbPPjrTz}~Oq<=_ zY_Yf5Tn$=nB`lca(poW4L8hyjL~t+eC1PrY!V00h48{dY$L(BsgE83WFSLSBT&U)R zQ#0W>+G=Nq;_BR@IJqECtx4jmvw{4C-VPM{eyerVJU=cdp zPPrRUQ8;(5N9Dsu*2Z*6LTDZ7UqlDyVNf9Jh2!GVHZ8kKO3h>9d2GDIC~Y&c$Dk}h!+1Hl zs7Nh6{n~ray>;;q|9s_zkH2{7v#(ygbmjFc-~ap5FP{JCiznXrP#aDkJNMY@Uw!w& zr7s22%AMbDA%)tQ(2sPU?P))-Ya#+fR2EI2 z%HFAT!kHP=Cx!uk1XwV0XwsSK721a+AP5JyNOss50+lQv!T@7PkFJt~O9)$V!kGjj z6Sr^@Upz`l9~o7HiYeab@U`iU)j~yw$x)})mjTd5DhEAVi`Cuj2~mrv?xlHY%8aXrEN)Mj_b?td>N$H zhEM^COI<;wma)kYB8&~EF~Kw%98(psh!pA?yyjFF)u= z_Bx{do_LSV4_PohM(3zAHtEg~<4etQQ=8u0?~ah?x5fh5ZlkwN;cb`MVNO2j1Wd=# zQQIQIH3x|@^ zxAP(dbJMXEUTzz-uMj-|)fcO@fpo>0@ijsABs+Hu0x_Afbx!h7?(`F<{_>BFhaO)) z_voKrfA6msK6v`|xBv0c=TBXD?_Zx@32&Tu`o%Y2diPT(<6r&mYHVd~n#-lmuutCm z;A@|Mb^h|Va8tpd`rwCO;9PzB%YQ$;`Rm8O++5l`!k*;>lF7qo@9P;sfqOz0eN+^E zbjEgOnC596=T`ModnuX`nzo;$>A-0xI1!8_*G-TNvNgjh`=l#9?kj;01r;w1hmx&E zXOGd}#dA!EeMs2J26Ny;88o>&b%19K;rvB*a-EW#8+9d^u~p;xJ!BYs! zJ6vpK*qt5=q?*(QH0)m>O28g$)jHZ_mH|_!-;x+{&mqDaDBog-3TOtIK`XQ~X;$eB zNE(KMFeXi)0E4`6HzvF^JAag#-IQ&eW0Z~&lS>eJKV}VJy=e&kMmys?plm@HQ+%16 zSQ6zAYYNA>(KSYFeI~gDH`|mmN%f|*h4q#DA3OTUpC5nettVf7`?+^6p8xpM^A|t+ z)A`q=HeYV@b^B;c!#rfH%|1MIfrE0a_>3aRME3bd?(}&;RxcCEnhsnc@ zOSgW#^6SmduKyIzW|T5nAdz_G(pOT4r+EZLk$G^kR1Z#9+s~}*Chlv+bmNs1EEh%= zn-b444JQcld^esqDFfe1h?ze|&z}HhAT0q%@Nk9{BXoSZOh zR6#*a3FP>IW6Ewp`p;~7X(qPBN*1Oe?i_SbV8OF^+RZMA5^fX#>(7aFMeD@cZfl@X zr7vSL{`bi6J~ZYx$l<*#T7yV<2bK&mQlNpU14gkxT+ZM(IKy>9c{5J}`2uwecB?>A z$(e1^TE-G9!yvm27aBB>Vx#T=>q@#bky~x^Wexyt%Ngl~5HX_%7hjhp)+rjdC|Z!j z7YLph-JixnEW5#n_hkS#J!tTN8v@30(7p0jk4?BE!)7-rQJjQekz@%Oh7N8X6c?hEPY@uOSax#|hbok)w16>=;MJK%3esgTpn?c2jJ=~je`e_{ zX!$kT++j#@+R4oIMF+tLXLSx}9e95Ux=2=bn-E(bF~?E%EXluw_rhPWME1>3SyKdG z5ll}6UjbYRzWDF0_rAX3@p$Ye)7pvSA6@(9)F1vp zU~#~kk6;?w#<>TZkp~(_cGnM8^%4-X<|%Pn5q+9xJ4ckKheXy%V+0Lo)4&`yyo8M` zjRQ~)_@#jq#*-$&*Va?u1WJ~LZ2@#ldJlF78ju3?J;`69r`E?D0mG%>Y4$+FK zF>k2FY;U$Yx*Q&G<=0K~Dljwv_}9%&H<=BsQsHfbJ+}|{19|WNbhcN}sgN>RIm_wu z1?rUQa)>V>P(YTje_FhsN~vWq8>eTRnIO0l0OqJsAERpMCw$&%QeL$m2@0C6vm&_w7#?fBN;)>;Hvu z)_-pN_tMQ@|8wisQ~!M4?XbD*_Geyv@#CMbzjNh^%I3h(*du7>{`!$URXqo4d&?U~ zD%;Tm1nKBZK;(OnWjO}YU#crJ9a=%TL2|Fo`{vhBJTNs=Jl$i>q@ZdDN zPp!KHfvlTlmQ9lzoJQ+D$dQ*B9s7dWrqo82&UVllsEHL@0;K_% z+}hj&@Yu<9y<&A6Q_#wo1z%VTk5@s#@1tOVMgnWWevJVpv9$tlVF%ET7*O(102~gK zfF*@b?=0_-{<$4qnLjxdOi#c~r~y@8d@8Yw%`EqV$UL0HrHYi&VN|%(ZS;-#lc@CE zWFn8xtas_7{g&8>Cx*_>BcoZ+B;ZmDl=&@ceuJ1>>9To;17SogJ|0V>;w#A5A|jEe z&L8HioyBK2=)egK&W7&!f1Qy#n(QB%j){CP_bXS`F}6n`1LS^YrAJcI`gN z@>xQ1QM9zNBX&v_hzY>mgFeL2=dd26U~72{u+RJt0aY&*-QL%KfJ!ZAGRraeI|fFp zS-fhA?10L2kUCQi6}#Ti30)yu)Gt&u&hV>e`Hc`w$c5NkQXPYS2Y#wS4eDQW4O`X} zPBx15kighxu-y((1%YI(Cj&g05sj@=s_T&%!0u5CDLK=#wIoJ8fzm=C)FMX8$%G2} zbQOtOO`ir$K8QD(!3rb;U^oV43=teD3RKRyqk_V5-pU#F;>j^5Xf`rvUjY{=OhJ&4 zF9{-2$N`^>#fiB^RH#VJuEQX!&zZo+7bkpaWF!ao7%{U#FKkbRcFL`OZ)kdTi;!J_ zE&xsoF1JQoI06nDpf016+3|QBmB?aZD--?#Ha$notTGl)Oh$_E`D4ELh%-9uicm{S zgWe!2Ss0JxdL0gABu31XP~i*=$0nV?c+a9;8G@%c9a_Pd)ARsPN$01WF{Crp$rCsC zPYexBjv-J40s#&chrtwb`Brb}Pv_r+7x4M_K85<~AMbzm_E$gdjHj;r@cjFqTf7lR zJn`1oKVJO#7F=2X|G9edpZ~JjtuCASk551O<*i#^-TLLrUw*!F^Tx>sAF{?$lVV#h zMO4u>wzsyYrem@bIWtCAA%&oZvO?6wn9M-1gsI*FBfbKeP|Vc2<frETWnV4NA1>GRG z8c*(I3l0(}`=_wA^qCgMY&#B%B;!Zv6kyahb47L2Y_LvGDm6Hn6w8~Ppp!e$s9^{J zGz9UMG&j5=jIDAq$EW8GkGTVr4nHZq1WvsnM`*+sMntpN)WWbMj7#K^krbu4Htb1H z21`@%xp9ES`7+a`qtG+rqHDzHk=fEInAMXP4kMFEV!lMot)lY_=wx~_6vMnHo3rBIXWIpLFNTET^jWPl&^qK7fIP= zOk@FUkA1LF)p#Komj=5bM-F96jkyx&WFDk$js3&DgClq}R?OilL?X3RC>Qd@e4a=k zaJgI$|Mee#dHwz8-u)a(`ggy%3Ic}Lzr1?ktDpYz`dd1mKbD<)<>Svkybi;wn;(7k zt;gds>Q$L+^2@6~T)zJ67q@PL0`Ti!ZruOGQ_o&_myz3^$(&(CRwD88eL}E&kLmCeiq%KR$+elKRft)ioj*d&E->PyE})Buc`a(eZzl%pShW3Q%x?y} zcTY|1a|SCDi@)KC%GuK`T6Mivdq5&?u-e-~nfgGXKAf-iWGcP62H=|sbVDj*D_7Jl zQ9$NS6@$?$k+n`>ZtLu=lS=nu2sIM(9rT$4Oj50k(_#XQ6`^{XS&1j#-q*Jmhk(c@ zgg`Jl!)U{zhS5{)aHvT1N-U*rdZtey>)^4c#9R^{#hIa_WPFMzG9WRLof#zP>s%>8 z;Us_UZbEdP6v`7)3#e2Ho1Gi>M+w>Gnfc@7)G{GCPc5u67q^M&Lxj{OP>6f%K|~}+ zDQt{-^CRv&Yx(q;KT9gCqS8yKR0^LdAfg3yVPQBLgZl@U%=g*-xa8`IGW=nnV~ysA-H|?^g2S}O8iNdC zj4eH(4WW$T9<3eii_{{q?Y;eD!=oY&N3W0>G)j|3VNl6+N`+D`m%uU8=+E5u$TKg$ z_qVq``}ap*yn5-omo8m><%^%*`S$1MF1+Q6B`m@4xhJ3c@QW|gg`!a|GFwfrfAaCA z8#lhVaqIH+8<&6j87lnw6L&rO%3HWFJX=TE*(1}DIeFovG=F3kTH5Fe9Cc1=Q(QRC ziLGO7DOz$3NH{auHFjd%ee!YP^2w=KUbB2sUfiUmmyGv39{v5_ymvj(rEu_;PDnQ& z;LP2t*m#mtI4qo>Cx;S}g;SE%P09RPm(J2^F*T~C|Esg5nnu`9#qI-Pvqtc{X>6lZ zR?g>C%6VXk0{20MLSFB%)tc=!8hedBTCNY)dh>O*C@^7q1lrbF-XLI+sI;;POa%&2 zh8VAdI&EyI9EUE$<7=qoI}qcyPay#FegKPY6N+!^A2~2MRDqrVw0j4KF*!>gK}{gZ zxB)tCoITsipmqy6JsLS)EvM3m_>ta`zP6FELA1(6HiS98(rjpsn^~8y+^ya`H=Eo* zf~+o7Kqa%2(G)sSq-53^`J=S#CO!^IgCcw71byx}Z}luGz0qY3OhNAk8~}Jv3!7u1 z^i*mNon9P^7A7Jo#{32=9w{IN3k1TDX^=SW^~`DGJBwz9mlTsAcOBeepD?S=faw z_Tq8*{I+i4wBztY?A#`6e$%{pujj5ud21)x%cosuo;DtSU^+YpkQN@S0`q4iYmX_{ z&q(LzN$#kkbeCb{u&lTQp?)Abs^HB+EZqSKd!LS1ZIYD>IAt@Cxg)INajTSoR%16< zouEn@u-Plvf*OIMQo`+0DKU0mr_2a?hHja@iOB*6S1XIvPMz%{F>6TFg9JhyiE?lP zwHt-li^c55Vrv+bCKk1Jn%cg>*6o76BFelr=_jXGPg9dFg~^<*Z`<4B1x#x;~Ucr1Tsnl7o=~ zCJ4)yHF{x-lw5?ik-K`5zHovzw@oc>wWyrq?i9k4CT7-#A%NQ%9P=hX+%gnSKm&-2 z&CM=ujrgO}i$`~&a^qQK3}QrLF!e%&vqOQ%U?9y}zmHNnHXcl(BSqHyotWerJg@k~ zG9j_XTDyDp@Y$|_2bF;h(T+70ABSczI$`&NWNX+Qob=|V9H~LIbI1@K)&yHIWcJLA zTqsnE#n>riM@L(4S66#;OHE~EWm$PmMdi@&00D!hU~v+GB$g^{oO$4(XU_la!o`TxuH?_@59ubvJqpS&9pdij4mF12BfJ>A*rdT-ZKkdI=v`nXO(Ma}Cum@SRdI`TCKwDbFK}Vv}psm%gf5j4j!zjsVS>0FR!X-Zf+dt>qd-?;LsQ&wjoMFW{FqZ+vs>)~Db6aPF}uqQ1bL4?G;d>p`Yxj_qGmEZoZ}+%*QXU!7C4 zaaLM5q0F7o6z|f^-5oyhs4~1LPOQLYij+F6UppN-{y^dWzX;$4n?Gqh`IPR|6U>EE ziX#sjk3XqC`Gn-qy@dD@ck=rS) zJ6k;d8l9yKurLBnjYeFf;2dC+>$I9OoukSbDN`B`@WpLbcZ)AtqcyggOd}R+quf;M z&JB3xAn+QYw2mqbD3y6aVQyh^8<-4mjkO6xdvQ~HsZ+bAr+!O9)bd#kTww);*#vkK zDt&~A!!sy!I&fD3N{g5wj?>W-Y}^EoJV_@_vV{yL1uG(>*yJ%9WsHU$nRLV_+{sCA zX2cu<=>;T`AiVi0f3aWf0}D3JmIKigEwhe?9fZ}7^Fdzo3L2*L!2&V9MNS=t?8p{{ zW7L)ezg4%wIiL^q=tICv1~2o7CxVPcrxLlDl@q9R0ax6>X4eM;;Xz+uz?Nn%oJ2(y zU_(uYcVX!yDSMPQcYHjY$EKIj$rW7k5FxvXN-i^2??fgy#^ZTHb_pAvV*_9c-ArkNxWgCwToMNER2 zNf6MnEFyw|9iyX1n3&-i+~^Epj6oP@QIQ}O1`Qq|p2J1b0H+%D#Cj}#2(JX+4cZka zr59kc40vz|UL13U0L9;@azHrX4ook&NK72UMVC9Z-a%6o&ea$YY;0K=SN1{3aySpQ z(16oVNH4Qj@7Xymuq<%r#)I$(0^M-|*fr>2q1PB@l#Ww!+h|B+&Tou|^4QcGwRn6Y zFgFFp`P2e+>DXvw0hwGN=ht!31zeywW(-52KI_fXZ83rq(s_=ub4O{OMWU++kvep( zlL)#k{^?AgT{0c%k%kVtppFP4q2DGe^sBuZ~8GlxWpBfR9H+05pUGe^jukRCdhd+cTT)ert&Cx$t zj{gClSdwg?GjIRFbohSW{Gr*o1@2-=yfo)JamIY&MBwNlQ7|Fj{G)W~h7s#tEHTDzY~-$NyJm<({(daTCZ;*lK&Rh>#vCsI^sEOqusl`U2snX8Y?*9US< zVoQTJ*AiUllA5P?$_5HW^#QX13@HcVQvKEn1pN%}=i!$7MH>uvCgK4cWtk5DVpq zLoNy3lOvnLIAcswIK>DpiDDb9;4;>p21pdumnEr;Gy+jKJ0sz;WNe0jMi5f)A}T>V zO%}~iwF;3;%+qTWCY?$k5KQ4oV<;S#!*iRAF009^m1%{uG7(Sf^$CIrO>v8r+9Zcp z6r~fY)w?-~4ajn3hn8iTqtosJn6G*1ZCUE5D7GYwFVBV-ESvY*R!=z>kLflaRc=0{ z-2MZ-beg&Jd-2Aj(i6}0CQl5`-Q68o7j4|9Jn|4|fmFxtH*B4eudIkRw&?jqd^jdt zoVT4m?l`sWT$&U5GThZidJ1Q|GN<-i!{svNKBc-cxpjvC_@Ar}gR)wssJB=;j7DI0 zH0?+iG|f_dTYj_Lzg9JOSHt>!m23A`7VoN$Zr6sE4oI!tT+O7)jF7AG64{JY&X-GP z1uQ6%S|~UO+wD<{+F0~K8LXrs@eQ~o(_>Nri9r-IF&r9d7CSM6*}0l#2oo&gBotRH z!X%4?gzr@J2#1d5F>(AEJbM~5Lz^11c>uKyy4Fcgb~=9q@(1A&!~jkzP@0OAu=z!Z zdc*`1qvpW4IfnBsfaaMRTBHYxEFcIi-piOf0~ge!H3g6aDCsGwO+s=B%+BQ87HMvq zvUCKSU1BUA#Uej)&fm=Gu-d-VoHC^+WN^H(37iY#G)&X-;TX9O~|OwXU3 zS-Nv7zD%7vOfDRrimj0{hbY-~fRli;3=TO=7~uaP(^Fu$iu~{f*H@gjCMf0@&7Q;> z!ytA7M=e2TV$LvioEa%+T0|%Ea3~&ribFsP2~!##QzsW1^=h+OZ`JEK5RBe8G(J9Q z)@hvvtx+z}30W+mfZ*~^f%Ml^lw^+cbK7DN7nRNkGRFkTO@4S;mRQrzZ_P#uy22)$ zB2{tIcle(8y-%oC&$v!LX4yFBKmJ7gzQ2Ya_#0>ae%j{4l*4}{%-zRXd{DFf1b^jz z_Tp*TiO0zEC&hglXpOZgF*vlgbsoFfIHO^+ulEawtD4U)6%_l z)_9Z2QN|NO!Uf=V$MqJXMoZ(1@ofIIKqz3b$aKmGXQrRWB~Z~!B8o)8VgwAVh=pNM zsQl>}Dn>v;(g|ZM(jVCCE7&;K5T3Y0udR+rJaZPL;)bYX?OxQR|L^AFvFik3iY+OBbd zbYuuZC87}k#fXmlk+E=UDmFhozfCI~MMqXy3wIOJ+oaqPQvUz(^p;JMrdgKQACOEk z$+XhYZcq30G!=AZR&oZjdw?@DLpU=tGgCMPGh}2WRbo|jb#a5br>zHeW_DM$W-{$+ zzeqBD)A7pHm_7E|6R*GS85Mr&-t$~Ix4jT=k9o?Ni;9xnn?~PMAa)bYkG8-PQq0B_ z)skH`M2TAe@_JxiXwfLmYPnh{T3aI0XcVPJrsQ)pVzz=$U*&V(m#ZgC5xOJG_E#vu3OCl~XAWqA z4NjmzF-17Gm@-orL`v(4wmH9J>|ND9`gQTq*O>=jxwc;$H=Y?bo*Mg4f{(tnKKzzg zI%jM=or<&x@s^-^xah6j^VY_)d$+RN_!BXUWkxA2Dz+9XI};oGtY%N&Z994mZ73*o zrzNdN{O0al^TD55v;ULU^{3VliedheLisZ^G6SWjTpfOpI0aC#2$LZ2 zD>HY1DBNML%wY3#z2QTXb;1?K5VU2au|g$MqQxw3!*IQ$v7%HD9n;H3Co_D<;Z8lNRm#=y#a2XI5gZ#YB4|SV1i)A-PSiA1;)7%ay@6^784{ zLL`q0|94T$6E5Hgd=HZ`L4X@aYvrB!M13LFnGg3CA_Gd{@Sdx-oaoKr3(am%1=^FC zyzIzcQ+pt&JBGY1hK}h%bE+WSQ6kxjWMhRrFoT9q*Dmx0=AgPQb{Fxty(GPYb1Q3T1`V?ttBN4 zc38e93&P#u4r=n1s!tq4r@J4F;T{N%dJLF1@S1QT# zDP=JxEk#VNsD1|{GU;T|LsTze(^o7aB|&#hsV3d zlS~;rBztgKp}kF`L#*lh)6?&)t&UTu<0Q&m(%Sp0OCPeBlPc}J)p%sA+E84FxpPd-Rj4eMX z7Dkr}V@0070OP-e`npgB(@|#wnfG<3YwMQDU;%aSAEKWcJ&&FYA<>xdX5rmtVztHS z#(c7UJCME?Of7&u1TK2;^oHt*KaHI#ws-w&|@0CFs8z= z<}xYXK?(GjGl|C#@1+RTh_nmYH2w;KF+as3&NEjRnbc*aj0dl$60l`lmR!I`_*5zq za1gGq$10Z}CG_mOIaJ=Na~lv3{X19~n!#s#M2V9!g?uL8xhJJdhSojKi11 zU;h5dZ~wRa*=M%x7p~pczMYrqqt6J#S2rpbKg%A>?R?7L{)KYu6G874r~gVcct&YH zdM|tM!~DT`^Ndq23yTP@rsVmAJRdi=>%bLRt&%00vif61XU{b_z9mupOen&{lYhOq z^jB+Z|7LmRh6Dn|t`9K`g~GZmkW*DE7N5ptQ&))d1P)_PESO`nR+;Qs%nhMaKjez$ zwf1?9fhLjTXv2}oxP0*%X_-Y`m9R(xD)2Kc0FnQ0y@eKi@&3xxhs25N#HkOLCaw`D zZ-SzOtJ4<8IjghqhFB5?K}=ubk!IPX8P?h~mog`yF9KR`{~@PdTF)TJ%0N#_j1@cNyIf*X{22b@rur1H2t^ava~#xDEBQ zF&{z-wcFt$IMPz4H4)EF$Mf@v@@+?Q+=C~hV^D!`=Sc{wrUvZV#Y%c-G1)`)@?x^P z80#-YdgR>ROr$#(YK%ED6Q0s+WP=uMa}bmFmT%}Ii@wUND~fJb{9}; zqB)LK)GhSuDKP^*48iaZlqLwyOnIuaY7c=YV+%xFI#bSJfX1_zrnw6fGV-EMERYLW zIzCIqWP-Z$L}H50454pUs-uZ_b?E`uUF7+y;&5A;-m)|=W%0fyHL%qVyuEW{am&*^ zPn^7Iz4@EM<6k}e-9I1w@(+jK{`=(BH?F_0wIaV zCvdp;*z6lz$&%K!Y%~j$3Zan0;!F%mvm@ zTD&t5@pFcz?XhuV^!|E)fMN9OXkzsva&-&6gckezYG@Uj5bT=rXU796M88qkfKUSt zYtzvZ#A9KvK+YG_^>>Zl$w+yn*h9n0KRa&+8)KQTLIgUiYpC zi`saN?MSYf<1~L20}C)O7(uPMVB(h9H4{k92QgVSF=>z8(YlGQbm%skEM_>Hm#XtV1{^x&Z9Xu_6{0G;;D}HfT z*?pwlexcibp&dRqZokrRKbCJCu!}{0wZtiA`K2_skQ9Jll`^tQPEt(6YMD9>Lm@`z zD+IY+S>+6IQRi^~jzIp-8Ug}~-y_odrZH|wl-D_ud+PN`g>G7;S<#s0q{;=5 zrTGb>fX3o8>0BmRtq@BkR3>v)ES=Gss7i&D!_crv8ZliXV(NrcEuXApuc$ez1~FaD zC#!fQENm2osoKubR&uJ{kT8kgt0;hrJDDeoWwJsT>FyTg!jB1Ri1Cx$g!OqXu^2}CfEBs2yO8LT3wv{+_O!Q#2j-K_8=eHfIfrhYL|c~MrhChf zj=A^Ux~6c>>Vxt~jp@zI>Ace#A3NS5MXGb&)OC%0X(R^`SWH)D0Md&-#89Fu^fD6+dOBB&0R@@&$`?Nvc@m z3s>dpX^mlAz@e@za|KK#nkaERk9 z9Pvmqe9F9(Nd#=Lu)$LBRxUBs3SHt8!l0xq#fN@OK(m3>r3g)30HL)dACSoCR)4aOwNWX)85>yCo`Hw zuCU%zIxvb3;%_syG)7R(7((<&jTWgf;;pq%m7GFHPiroi8*_#4I)f;cCj{%%Xor*8 zS`D@5o%zvpZ>xU}-Hzq}F<60c96j4tHIA8qswiA#hs*3_Lss8`g0!`Apop}%&VnRZ z7x`;sPnH*|c)J&kr@!*=Jog>Ew6~sgUw-@YAOGXg=l|4t^*0ay_`je2=HGQc{u}4; z88@-3Y+N{x-#CsxvFv|pJNVeN`;cF6@M?KUyDV*#1*II8u$&iF3bIB;TrG-9Ia#?N zFBi0}iY*sm*<;G)V@+$<-D_Ig&1H-2JqqndON&3_GH+=xqRu?6w@#^a_Z3QxN=JgE zn@YWo;7EvXnDEK6U zf@9SR@D?Fymb*N~17^r`G6n%lN?(#QiC7vw88+>$iNjUJS;b8WKuBK_o?&5Woc|I6t#LB!_ixjFN9!1D)tQCi(+<=-L4I)AGU@q8N z%WRH@j3+lxgv{MIn~t|8!_b7xtmU=|=}lsGdm+&$rZx%5t)*ChCDoga)^0jbbc!he znOl~?U8Dmvkk|^|(|G6Y>ASk{&GpcnC63hjia*OpRWVMBl5DI*E1Y6~DVSRfWQjNt zc=D7;n;ad?`C8YEzMtyW#{)R7Ha|3@9;`%8cUifixUwh6ZwU$mcCcb9?;5N7+S-0# z^UB-1(B=pJ!DV>+QS9I&WBt_Fe5h|eXnp!ebN4~<^5YkO_kYCpei6I;b?WKg)ZYBD z`0U&D+JP`LWEVEM#cj*(N0!~E`r(D9zsD(+*~K)klm?b0wGtmr@Vmt;WB@8*DJQR$ zMfr@RnA5cymO@e#Zzwu1^qpf{w_$75XJpE2H0Do8Yd5v}MNfE4Wm#Ugv5ht!_>w|S z76}+~sX{DKa_APhz@p%rWh|3~q2iGh0=il*kP3NnkxhW_Xl2 zDI6kqRVU}@72I_h+o3MsfJioWoD`7HQtnq$xay0XO-L*+hd> z7%)mZqUI^Pdc>=ptR?#N!rr8}LN6VV3;Ro{&E@QHIn`P8mC@eCDjd+$+k(;oy>z&e z>?|Wp>PA6eVbYTrcg0X9anBt=jo*D+Xc;ne*7S@uv+AqMGP~yXr7+cF2g|GGFxsP* zy=8i=w-#)!1{<_k5Bq6rX3~L{*!WMBy1x(!e~jpgBYeXap~f~=y;VlIwPMS%{555= zr_K)ywH3AMQ)rb;U+Y)~U+cB~h&)sa7QQ zlCYfP7~pO4dcR5F3UM1cd6!4MARi7!lcX7oIrsa$T3h=j=|aXDCBWgt=T0@ zcEOgOb0kqSFl!klM;2W1=}{yhIu}S0gE^unz2?cTx=Xb5=H2zkqC0WZV*4SLdspVY zqYmCRhZuz&WSLisgVp?iT|cB3b_B(3lCL5w9q{w}h@C1npA(ati}4<%w08@UbLbDG zH`TQZNp??DJvOu-ipv94?;K*Z zZ69z))_N9kW}|3WKOO(tIM@jskSmTj5&FH8g%{w!i(^-+uP* z{;#V){+Gs^f2e)@&%H1HL+Q!4!K2r<-RJg`PxQMlEqibLSHJOHeq}j$tmyWn?W(NR z5I0KVW-J;w)`g)}Q>T-vLQm5=Gjz7h zt%9jqoRKKTxS~m+WMmEGOTK$LBdlpS1b~yNkmtJ@KENJ zyk($8BcPh(JdKcPlCj{R-kSN|kNW_T( zawwRU$J_}BZrpPPexg)iFzW|ODE_$@>@k8Pwc^YYtSNS~vyy5~IHHRfePZ{$gU)Ea zX~8`j03m2z;)u6a+6E_=51%OdkEO+3QD!JE?4k~b-8fTjza%7w%jwOP>~P#yTuL+u z;fAnq$WLsl3j5~vl`yx#O0;>oZDDPQZ+yvHK%W;iwE+>%sRW`K=`nW-ot_i1EHPZ> zW;T!(#I&g!3iEwKWXu?!b?4`T*_jYJi83H#Q+husTo}1gv+jMn;ikt!h=bvvWbS0W zeypt>u+tq8>d!&0qE%g?r%u%5u_E7Bz9Y2UmRd>f^n$_9NHjSGRB!G@ufD0i{=3wR zzps4yPpx14otC&>6gBd~ z`gi+UK~&B0iYaz3&Ml^O+sDr17w+RvTt}bS_h0B+9bGQ3$~N`wJ!7+KZRGT&9NFqX z4f%bkjAAvD)^!5CQ6v(o_)NW!2>=+SRFjNpk@8@L@O8iSYZfKPwk~!VWlo*Qq2^oV zY_o)65KwhE@v&EQ-x9VKGd*y>pJh91h^&A`^NPC@u|EF&~_osx4y9xY-3gqW2WeF-LkO zjiX$fT-_z+HfCdWdUcOp*{7EG$mK3A*JovS)?z*N_OnTUiIC_}^4pB!{!K%2G0;Tr zX03Q|$CzJsHreqmDcodchWz}FIJcv%@A8r@vcF6VH5joCQnt5N=n?bnr9@>Rkb&wZ z*%?=7JCao6p29jBJ*f{sm;$oN)JS#Fm0fn_rnNzNep8wsN{d~L*dF(XIq3~e<4RRN z6cx5bm0eD*M~Q$u4{0a_GJB?s&Q(u%5uM=n;G8ExOSf40fu?PP3+Ov(PzK)U49*Y@|(cbw}6)Y{4>wROYKHavr$#F3W{b`Tq%ev zMX+>LyCJTYrM0ZE7-eM=!b-=w|I&W=#&z=iC>nV^5zV6H+SGjD0Ux3T6=$#76kNNC2UBL(@PQ~i1BwoG!KUGj zK;Q^|Ql?WQaIZ_fdIgqCE49e^S^)`$PDq)R&==$^!o10MN2?6}?j%G?-<2vSttgT~ zt4@<%-Nhp3dxUrsb&ve!3A=JYP1n&Q&#RwIcq*LwF(ONZSREN>QekT;-6O`@bK&}G zZi|%Po%UgnW&OI=H}5IUxvRubcg~eVkbl~hS&r4IxgI7l5i>o2b}3#%DgLr6%Lr5$ z-XhggSo7q^<&FhQlpHQYIf@>w-qQJ|^?@~Wl#as1cG$yY7*H5#JeIht^}vpGwwcAZk(9+U)c_SDJVanMOwP{dFbpjRJ^30|Gx0# zw}r>Q$v*jQ@Zs0Kt8apje-(QCYb@Z(eg1`E`;~e3LOW=y`&DJPE~^(Ll`NL5mX}q* z+Y7)IH=kx@>&o6k^WIDA{wpW!)yb!(ofnG6o(4Ic)Q+mX2M_3M7How)+u>sCHCCh2 zWtImVnxI1yvZ-C`B7n-J6MKy^k3kxBt_O@Vmzr-=aA0lhYCgObT%J=a#B#5TA~to@ zt_he%r~`h$+sz6N0#E=LVCmG0Eh_HFIgZTQ2!22jI2Zsn`ZN^}h6{ik(KEctTn1d% zxg;1slbCLhF)V7XRl`#Y$x=3P#udG%civQ+C#=5vCf}UaGjH%tTLNQ_I4Y)4ntog7 zq(^eg&M-vSNLm}$5#@O@ibO*it%#v`=B>;(FWxi7ekxsupF&qVE!GiM_gSS)US)qR z-jTFUWu0?DWnY-6v0`;`?Qkv8BSt&;T+p#-dg@ZT2;T~lZ|R&$lYJJ_<*6ROvdhR1==m0U z8AOdeM#ISX0+P$8Fc>EjJ!9ztRD~$KF8%O$D$ym*}>SdP4A@N!QE?v^0 zPrHo?r#@=e#+~|vM;~|T0%nERAO(2rFg0?vcU|l=${ZSj&m<38RUU)Hxh{fTf~f&Q zTw0-5F9Es&CK;|Sjld*j7{oNQlwp$KILUHo1une^-qUZE<7!s04N?ZMisjY_J?kR8 z#j56E>7)#;h-y}HMn7tJ4xPwthQU4!hrHr0D?5~Ad(3E^mF|PmGph&Jo#B~ec`{mDD-Rblow;OVI#!#G)- zJn(u7E*2aduCP2Fop|K+%nH9zh7A^A^Y%{Is=|Hjfgim3FAo4!ie(g0HJlYSdl^?O*eJb_ie(VdRP2>?93cf190?I@ha1HQj+mH= zXH>93x@PsR`zpg-webT8Im&F47!_xUsES=Ox~nXn4-L-iCew!&-F2NFh4(j+htjzx z4FL$$-&ffQ?yNk&M-H~wi3Y}=j#+#JS9Z~oTk|#uzPh;bfS*6+ww-kAm#?E#Z4dzsT@*qZz(mL2vuhj^|@4SJXA#B6j{iL zVE(2jF&(N*xl80oRhaH55gZGa-cj0b>Yx~qUUn6yEto%uG`jUC2E$#Gg&In|ueJY} zEt%7M$SBqD6hwihDc=*N>Z;6!BHltDXNE-a?aDro9kJF#~Lswd`7WD!-q@y7c2oY z*n^hC%>hDh@q?Rhe*}=?&UM_!0>*G3-#$FuTi0e*aqQ~?o0e}?bDesTTPO7BML?88 z!^71iXS#Gkn;I^X54zrmjHx@0Q(r)8)M7bG~aezh|-kwM2PKZ6=xmf&h{u zTdG*i+C5X`w&a;UC0611>(b1YZTKX1@~NYJY3)7?AHGSR{GxREm9KZ@>p$=fuT1Up zxsGl&@#BvZ$8uv9!uL-{PM95kL|ulJp6s+?6ctM zgXsBH_M>k+M_(CwAM5IehH}|hPP-aevrX&Ph#l*~uuTo{05-V7F2NlvAfrlMa zb3IytQ^9tEjSDGS&Wb@uvB9+|;llWD4UyL%4wz*@vmAF^Dy~Pvw<03SB5K&nIz+2@ zYuJp|cT@@#3$zM$68|Dl3IGGfxMPuwmQ}(r37JO0DAkAv#>j$+sK^z*CpTmA(NE>- z4>acQ3%Ng#Nq!*02u0Osik!+qaKzWVX@WaGWe?uB_(<;Tyf-yz^)9=Evz`DoR>J8_ zp6?5@=;X@Z3-xfsBZdph@fxrDfSB!pw9}Itn%bc#zCjICDUlZDnXbi}6V?c_E!5kdPku^tLk=oFtTXa*9 zVTp3_E_adPt1Vm8bTk@Uqat zO{&AT#W>Lla)Od**IYfZHO`$I4}+VJJlzN0{w3n=f$b;m!2@&W)V=pS^Za-Ii?7|6 z-`Fp|vR!?p+J1&OmFxUV=kaIy{$um-vH$S3Z~v8l?}cack+Xa58(xNX9!GYb_`Bzp z;dRkuzx<TUN(UWvZWH4vW=t-KM{8 zHQ#f(=iI?Li1}3y zcYWi5s(zr_I8kn1qPtK&xR|!3n2{!ii7U%{^mvz7-n(asV2n62)DW%W=eC%s0VUO+ zx29-;`n;<&=0s!E?u08p=PgW`BJu(Vc7+wH5gkc@oM2BAt=V~j{@xmQhAv#-tJgFx zswKhq6~&=4)e@FOipn%Xnw|CBkY-O9%6(mNpiI`5)i#RGOGdg`Xp~rjvna(9YlOZ8 zN#_;2vO-&iu8&ws+saf|m24|xb#o}3y7|aIxH41@b(KR^X2A8Ac)>CY z1!;QU3`5S+I2Ty*X^Lo3pq*k!$I1NLOSG{S=G|r12Xmx%rj~E7vZq**aT@O~i8+a} zxqKN>qJhwdER+*^Qq_x>pZxQGZh!iR^yNq4)5G}HE62`Pp8c;KJ0H7tA4d<)g8dD1 zEoZBw>~3Skq6%3RF;FJZCpaS+%Oa-h1!Ntcq+$~Fe6mZ;3tHqMt1{xmfl)PDRz<)J z>aOtUVWZ?>t0H8PN36=ASr)b^@M)tDbZWvjB{pz^u5|%`=QB#Y;O%O@7tqp4{Ca8F zqJ$g8!f`TWQNm8bfx3;-phF$Bt3wV=++_&cv{9EK;xS^~568wr(RU5z>n7VRtMiV- zJ?4#Gw*)?bn6o#`OV!oI9>hqgh_Qz?;`xp%Wf;% z7qhwu(_NY}Co$OyBf_Cdigspja%!l`jU zPv^QRHB2dO1htbOvvSNyIh5|=O>wBGPB*#M-~v;$OykTF*Cq%n6EqhRNvB9hUUh$y}s*c>^hr!?)HJZweM+e+sa*Iu4%|N^y#`G)38^1uG#?0 zT^~kI7iCyZK^al0yPkzr$@uxLy7B0q`h`f`u#K1Q%&nb3w7-CExNZqnu^e3J?mjYWO(u!TrH%VZnmINFu}m zO9l65lrlX!m`z|<<2J~xT9I{Ke8=Ux0{fNt-vU*qig?VRo+Lok8 z%T&-UV+iUTi?%c~)Rb3`sAw~fLDsm+1;Z&FD2oS%&ZT+lnWD5QOLkCFyA-9f}-YfFwY32w`PqfF_k+N%W=HGna>Kp|J4+8yj4=~f%32z()+K17>S!{R_ z8=S|77pdI`@vXDy@B}N=I}CJogB$z7jlD?kFoaEOC)C~zG`IcrOFt&FF5KCA zb@$v5&FjMD{?(hE*Pmt2E-l^RdZiKE+0LFFJ{^5iL2#CSxORk6@Qs zLPv~3!(Wpl4a8qVAbrXgf&rNg=VlQgN@T};P*I4^gwtsFn(#&@d>Cz+!UK2Q;cFJ# z&2{q%sJqg!VvZvF!;jQB!3s4|zTtviz45Q)@_P>7O0+a-jonkbCLnmIwm}(S-0Yn( zhiLxNJ&EIn$d39?e!6SixRjMnbe%_<&V?woG0N+O(2Ua{#42dm#LS={sn&1VUHsa? zEo9UCG|z`QY@4 zF&Mi?pb&WqfzxMeHbQ$_$&-VPS0A;WJxcCvr*;R)onAQVEx0X7j}Zn3ka!CW>{BjX z!l4bBV8j#=i!uhI1dC)<26Q5>a`O5qk&T5Y{ls5m`k{6-ErKK5W6Y zYfw#>ZM*ARzV?1-{A-=q|!-sCq<>^ zxY0+CHTlUdBuUW`HpMj(Wlqw%k8BCjJt>kSHm`Lq>pg4hE`cMmXpPL6<0Myp#vHk& z(9dY?R7V_GoznW~kqRSJV~1KCe^VMCp#FhsO^EzOX|%}=HOcNg+6m{~*#$>>LgkrP z+vMRQ1O1E&_kzs%qZ?!Y&Hwy^pG*6_|bm)>?nV6k~=+2?r&!{JE=q{?J}qA>oKD&Xpq4D!P&h97(kVFBT}l5+ckie z2ay2<+oj=yK1FRx_(vG4kX_|B%do*6m^i!_K5^tjU0RSUthYo9Zvm}>xdV*{pAXp( z(ub|nMV(*?`maV%A zO*opw!CfSI8^-n( zVv@3Ci{>v1^4q-pE7Ueod_!Uw2Vmxe1N`hQf7A?Y*t>F(Z|6mE%MH`l>NZRD0iL%O_OM z583OIWFvd|(my!0v<`H&JzML@T-u~T;lvbN4pfPrDm@7e`5bEd$HC7{kx5G&iTDX; ziX3S(qg__GGi^xC8lsdykrr)`qMa3Al@w{wQB~+I-V&IFzAO#}i*h?r8=P19|K$C9 z*GQrTL%`YIJb3cNjEYvNZOWFMP}*Fjer4;hvUwyjdgYFIv~>{aZcmc|3MuB& z{hf!GnndiU0?uE`Wgl8Slu%h4>!tb^j!Z4q?9-G+jy0-}q|=+-NHrO->)tY-T+j?W zyfrVlzGXz&fGHcWgsiHx&y?|-3t@ZCZ_0WNaFkeJ=?V8bAOzxsCr5Dd8Pa|ut{`2x zkmXjiTNiU^aZbcr@M-CQ zH5IgnT*ey?7f3sz2RE(W`>rsA7Lk>smV2a9e+^xw;nBD^41Gqa@LImNm~9dBJ>*=b z5{2B3mrGNf9*axd224K=m`wV}I=oM3V)kXlIA z2&vi!7+vQHjX}aFKU|0*mR`7z>aUTEZ4uS%s0o}56v+9`OejaI?NAy=TykcWvPrXZpS&cn8UPC!{B!aS^+Zf(lFYw#oLc zTKW?y595cZ!6woHgg|4?lZTtzygZj>lRwjleqz_pC!wU>U3Nl>p%f?&3WGhC&ZJ2u z?S6M6=E^0Um7ui{vJ@k>{C8I%1e>=217Pq{2@eD;IiCp&-Vix_c|xF5g%c1$&Bstlaftw`^{ z-QLoad;ENNIZ;@NSCEgU<-6~wt>exZHQ$Ba5wv<%GK2fJ(bP+NX)uY@@F+9b5cJNe zm7TT1kl8q3ZyYSd3zSre8p^4QLrZaBs`h22HW_p3%Uh&WVr|6d*AF>as*dxL0PdU$_<2>EmnL3)`pVl zGfO*^Y=1dbC8qML5FYU)ru3c}YjD~bMuW?V?u;PcMB3X2es5-VOktUICGTi`H&t$w^ehFUwr0D3{y({(hnltaNZ1ME=a5kIvT8nON)~n09OyE&@zv=A)T8d$7HSWZM%Y(nm`HaP& z1q&~YEETZf)WS>V0w(yrtVf@)t5dk+)+Oy~012SN!n=U6k&*EkfKON_yd{jt)ps!a z?u;paYZc!bIuJ0x2`5CKUh30Juo=-Rk0B1|!Yz9AL7OUIRe`{}^kQUr?)ejo>Dojv zht5!9rn8c0FDF`z%8qRNic;R9*LPM6s7M*Tgbu;wT$kNGACpT^%-Ezx=k)@tzx`yvJC|r6x%QojTLVeZPcP<>wajHIMuIdiDPz7yN}%^yd=Z4 z7Y%7yQfa_!?lS6IE4kKcu8mfg8Gmuwlfg8c*>GVYRh_{M6i@VyJ2D;4E=1BxvD{L$ z#4qozcH8-C1^?G#OKx(JO)G(G9GYmK+8~#I_pVyF=Q=R3i4bPr~Q{rT7sy%V8T9Hl>gihy^Bb(u8G$iHqA* z1;42TgN9hTQ5rGHfKo*Gee0;E;5$%`g`yfU-J#$(m0Y+{1lH^*eHTy_G=h?`ETb;1 zmIlj(KBc-#D(?#Vm-OZV6wl;?huZy@yzWDG^Gq^)L_&Q?^N3O3Czp0mhR3NN;17kF zBkble0pjHG7Ao`z7(kgAIZCjy#Z+S!Qz}xGDSvu7UT5V7BvT{=2E!KcAlY-t^>uKR)(DnQS5y zosVUf6D4}4Ly1ACCo>nyGZJNUu{JzAvm|r6a+?`15iLHcH|mMR?-JYlMla^LZ4}8$`YrHRG4reZKB}slA zR`;dbPq?j9A-prBJT@MhhEHYvM}qE^Wa}9ng%+vdQnHU;AzAB8HMq16@!xVVpDDiY zH2;}|`F$B1X6jFt=l+MuJ3kZhZdz?O9082FUJ2KioY~uQ>x9R*5RP%vgw<|_2MMXbl*{u!sj)4s$K_MeD{&xHNQwE6+Rf1%j>h}XSjHP2;Ruh^{%R_hcP5OkmEkG_!g9;7N6?fx;QQK$M4k*QKPUB2Ad}ccPN^|fF z$?%2l_zT177oyE8<-v2=?lWfNR6KmLlEXK zU#a$R{y$8fh7pKM5{Ki5&znm^F!YyX1v|Jqcf|^ou`7%nW%c`-2TY2 zaVct_E4H5MkKf?en~4|b^}VHdhu1iv7lx#43xn#W!m*of`;SfX4+Dl<9tS+(g-qh46M;R|ZXzfKePnUec|{ArX-W@GgW;>9tcz`AD+)5un9voHLsz zirwep;Ztt=p>p?)eCst{!rvTsME&Q|?Kk?vPb8gle&bla`Bc64n%h1F$*1Htx#eSN z_fpuoz(f-9=3~4?)H#*)FHwumE*~lSPn5f_3}?So?Z4Kaex}%c$?reV9KU3?PDFzz zirp6gA&5F^M=8zil}ew}I}vT-i+-)%|5&l}#&GhP`TPsj?ki#U5g@AAe5u|4M9_K2 z?_Bc0`Ezv)t(bw-d@%Kn$~5VXVN~=|w#KOTDLItQr@7^}sIsvfPOqlR#AM};4 zI3%QUV?p=0*FI@8QhYAD*CooAq!oy+*T-${Ie*aH==d64OR3?iZxlOQ>1-~S$(C}3 zR;L4dm2S0Sg?zo!7!11QLbja?dEA!X-qz-@y;V*23*liY+RukN89(4rNxDl3XQveD zR-%JiqF0JGQeIqp#Yj8jZ^T{jo2`U<%mD-FAf_d zIl#uI3hG4IW8>Eg>U!8@*3HUoKKr4#4 zx>n>@kCt7+a!5HiEh3Nw>W%;xsQU;uy^&4ecOL;-oX$hp&P&PG3rhJ!wf~87?_s->i;XkN|-WTwM;;CeHL*b1m!tp>h>x)LisZ>0ZiG?G9U?Avm#r&RXt-ODE;ZG&( zZfDqQsiuOpLN4ntxHZbo_OMmTltIpc3YWGTFja%*ddM>R5ggv4$lBF)xEs4RYLpkf zrh>7!T+zU z@9L4`+SdCk1`PPYumK0a*ViYB5+xoTQRFbpaB}E0opbK$P}LQ>a<0y~d-8B*NDh;- zj-+!B&at2U?l=Dmf6cyEuwh_fVb`vzo+1026~49h-l+AsR};G{iGxS6y@%1ghZ)}* z5#Gi;ga~YfH@@&a`82ZgkO=R>@$va^#*6y$3ZR9qKlFD2Z1{x0v(Ka3Uncfepvw_h ztsr_?(}$Z0-v<6pw}7SDH$d0IC-!dRFaG8|{(g7#E_(e}-|3Hsr#~)C%KSZG6F&Ph z0N|e9uD34s`>%b|ZxDAqHfCu1bYn+?&J|?wWdB9*^xMGc5BPh>yKt|Go4@W1UVG+W z$6x$%c=nBJ{uY2lkh}=njN@Ino8zxx;?_HtTm7qNom2PZW#sgS^z*-EZ~mUV`XzMw z=j`qOK%-{(?5DuV58erI_0Bzf>7Tt?(}qvQ)|%4!6RrJ;GghS5{kpt{P4MtrwN6&m z?tP{6Ky)57^cB_mh~Xbt-H$m5l_^kg5A@l6?PR@qyJ5cEv97lD6GT><;s_b;=d`+7 zk+ie79&@^D&Nq?D>Af{|@Jz5=1eq=nxoRz2D$rz=s1}liSSIcx3Td)dYw%JwU#Qk9 zG)>g2IkK3nWTMq{q?ino8IU}YT8$W;pH)OIUdT6Ud8Ha3G)*=i%X{4Fu-npjH6P?s z9x}2^MRwVw8=6kIczB%1Zr-~_1UB)VA}@o$H-XQrr#(buryAYmGd{HtGRje<6vAch z@L4XnS&r^j69<*}ej&6)M0ZPJU~j7u!`g>!+^QuG@GhBzF9Rd7537YJP9jjt264KJ z$1n-6ClPTv9bBdZOEv@X74U``m@fqIOCyFS7n~|$`+N|V$~}eSLvZzW&AHm>z6wA8 zi+ld<_TWwE@)z&P55SdcvWRfD5oImF^L&5wVz+;T-C%+zKRl4eV3`)yru_o376v=L z8{i7)`rzQcg+^@VKmKm3eG@tVG5zu{2cws}y(=vK@{QlDp8lA<`CIttdspvuX#U*>{Iz`!T0Nj0*k{h&=npi8>~vPE7V0^iH(sjbVtfXr zv2eZ+uU4{btpt=YG|5-s=Ql4ZqL?fYVl^w~ zd`vOXa>PQ&uXI}jO9q6*LXb&&n3RXjAkp&+Ie$HVAQgfbi1`2l9tg5O$RZ6a2IUH3 zn*f#eaK#{-I|M4kQV37dNf!j4*2o^#ftiGh$@)Yh+$aQ;Du|1)Pzq^eLZ?ttjNnDM zLN0fRhznY)#W8QxQ;5gF=Nn`Wq1TcqgGRIuL4p97AsB+ui>4197<9K0oMR zy9X~1C+{QJSL*zm^}&_zTrT*(fLZ3iu_WkxvSx1bSDf zB*@8-Q4MRAh^2G$n`^2e2I4`UOaWJP-q*LeVm7XI?Do*I$b>~EwF<(dv_q$rQdlcT z4SdU$m{E=6mPsa5B7!jlw{$#@FutBrDp7y|h{D)mv(UH%U`#q~F&Q8PKmr)7de&z0 zOBM^ys8!^KpuZx}co+i6@x>qnI9cY8Koo2dqIv}LOO|XI;o}kyUP{`LS{ ziXFZ4&fdWE?G9dgCT|ZXZ-djf{^85W^ffjdi_hNTxcMDzhRt1L^Y1bjfAx>Q+V5V& zMum^QiynWwp&em6{r&dUfqopDz4nYQx0UY7f_j}DI2ZfPi_rXyZ}egnbbWK?>Lco# zJ?qRi`tzOf@mjaP*6F%C-EBkP(lwXUb=jk>*7+({r;cBRyJvB|kMoO3!z5^?K(TOR zcBf5qtgNbvtW^n0HO$d`B2%RfQ&8!Y!=$@huES)UO4KL>9WvUYVvr^kGs;0O<6Hc< z6G^6=73iu`CnOX;QXX9(&#tekqUehF8r4iA<|QK@447J3cC5~@sT9LXKA;wYY{DgF z5BZb_BBZ?-Lr~m-;4Yu`E^ooez(B!y!Eix-%Jqvzj5_n2Ts1kCZ+bN;YC94yE*-U)7SadfpdigP>I=BIOH+f zyG@L4 z$jo0A&c3dmyv(--(&>%V9x%Guu$y(GMH+)#`#jvdOre8)a#K*7Nx`5ciLO&5P3Pg% z8Vp%0$vk>hq)IX0w9T`tlP*)5OT<{rjm6SLBzjC{CJ`ep-{Z2qMs6q;2SQ;am6m!W zmj@Ctkju7A=`5kKWla-KUtBYyxa;1{#SgKS5V|^ZF_$9Hf~EJTJ*fb9voIh?{FQPP z1DGHn2LnF8aBz!30X&jt;Q>F40V==)V<4o-fn5g)5AHpT&wsw`vK8O2OUA zr3kcv_6GFw0h2kuLPT^}Hk2bvkT91;3%yrfL|GUw%oH@J1|}Wgb73|EuL=$p%VU9I zn93XsAjo<6L6|j^iqK0B?i8Dz-LH4C0&7D#+qPf02k-Vew+Fp9&|CJ+GxfyNz1?rU z*fuXW^)npx73jX&;%5QtEH}8$44&hA4D~LytfK=|&6L^UtZP7U{w2m_UOPn23IeK4go^vPfa#){Y&*GJOt|5i$Xpk(ew6TteJYdZJV|!n>O7VR(fZ|=q1{T8?AA&02FaL zQ`PF#R3upEIny$Fj-fEMY}lu%!su+|loCyRebtCljkT#{i%i&+D0G)fjv9IBCN697 zCI^Mf00!U_=)1X_sMAQ4p&62>T}J7o7X=$sx{rxD{cB~SCyH}S!%%ec9^Koe4WQYs_yLYt%f(w>dJ*p4uQ4iDf0e(BP`3RkxaHbDF|x-_|rc zx(-{t04vlD+w2T=yU&>|rPbpVg(7Q8gEJ(xT&{|SS)yr9k}QGcIM(V98>S`bs-Roe z_)N8%PE%Da!`66PraK02s=OpgvZ3+qQN4R651;c!H=fO?a>EcQStRiT)o!!FF+!y@ zX_=XL(6H6X)qKQPJA9$TriP6?Ff-x{11>j}h(4e1uo;*sn5-^r7n7L)GgJ})vno+o zi8dAQFlk+)E?&Q8b!}^JtEI8X-8!`h&?uKulEhzJ9vMW^AR_Q|b~WB4lSV1rp)+PV ziWw#6Z`adSCARd2xWy;kV%pn4{Fd^F00}6{*#5$AraW@a5AO+(08t3|ms-jP1mp#X z|8st1oxl$=0tix0Xb!A?{9uW(YIp~5LKXX0UKBJJ2!GHKFqMcHVZ;EcCA6R^6pUi7 zMg0i%And>;Pd2eNaanm#bJm3UzIL+44R-aDC){A$IQ^p5+F^SuRsD&CRh-=eX&BSc z$nE$W?Vvu7seR_?CTt$3tYbn@YEB>VZNZ+$&68l~+T&brwGsae>-~$GHK`gyT5~u} z=bc^yW=HQ;m8LU0rvyz9HIb$bSyFYCk$A~6WW!;cwrF)kqf_mSgzlt@cbjdk-7+o9 zX!lLWb_}WKsFuPvWu`3)G(#t{siw@gETy5EgV8{#=j=vR=J|Hh251eDY&Oc>TB1#5 z+Kq}OP@2Ffl4$jYjrKquOp6>}Vp&xnhjMWw6*MZ->$baUV<^}7N~+Z~tgdr;(jSVY z6Qw+pOLMI{*J{TGImM+~nHklQTpFuHUx2B}4EX|p*QL{)dJ4MBrYCG>$Yz11n|HUS z<81D4cZ|k>g{eu{wYX4;)Y;m}>5*QI>cxPZ^+_48nD*$!AYir(w16B8xQqwV$a;|l zK#(Uw02{d&f-ElqBp4#-WfqA61hxo|0ZYp<%oN~+$G~8egIh3GON=co7$z|Q((oAc z;>A*k&7y_g4O}6p17epr#9Me5ya%e2OCts*WL+MtHJp`-{D`zxs5Z8Fe8RNXrP1%x z+zt*-%{8{F>SIF0jw?^9?Rf7pBX?=76Xn!(T1;wP?f5(`+N3dL@aJuJIk`z#gFt%{ zY0t4K(4IO>>O-kD*@;R9m83e9fTC7G2iJDpjXAO+tjM)v}@}%;r6Z zNp;C|w@!>CdZ5rlksNWvkj-@J$tImu$*jSYC8{FI3Tw8d-Yi2kWJA?CqR(Z!OinCk zoMy8r(PO>{yVT+l#@ok}W?v}G#NtFOAj+Bw#i>}DA1%k>`1LH z1>=!Ynn|UJTy9y7=kH#b?e@BBr)`UEHfyuVRy`@!q7|}qc5!0YlWi)|ti@sLpdrWv zm&qXb3Jeq?q?W_L6+|p74ABxxzxq4iX9)?+;MUTw0Rz9vE(9vH((El!T>)G?h+0W77SJkZgGv%y{xiB8xJXGm9(*0E80R< zrOxjQ?3y|H1g9pIxyMxj%K@H|y)C}uk+HLZnib@lBum{%dv?U?7Oy)TFR)fiXef-V z7j(O3^<9kP;f%8GD0WA&+MEoR#VNX47kE*YWl5koetvca!pGK4rJR<_X|a;yDtVEv zNpy`ZREjtBFz_OC@;K z9*0mWiD1V2hPo>l|ni!h%#dC5NsH@wI$ww z;ib`QppJvs9?<$wObqGGw5&WMmFW1EhJrQt2x?&wAhd(G+gmek71CQ|fv(~)ea-D-BF zM$bUV!#lF1$s(^=*b+hno^ z0xBZmR8khuLPWYX{NG~LCZlR9LL-gN8>MKa5Idc8g>+EKdmKyz2 z75t5C(6$U`dcq4dO;%W%l@y&8Wg4E5i0OI!{d)Oyz_1LBDQS6+RX9Yt)SC8sX2U6j z%xq99B}4>5^@2d8RI(`73UWEC*9uZ8Ws-TR5bwf`*3*4DGoaHwGSMMpPA%H5#=CO; z?DchjHYsqRG~~9(3{1hQrtC_rR8F72dhW0pq?U-p78#{jLTcGv%;YfcH*#&b)DOP( z*OXz2tA!o=z;pprzskan6$49=OF_99Q1X5_RybKT?}wjN^8v(cG6JvGi38k) z2&sk9TiQK93-|$$mMHqw9{zd>lZCz=Ht9ppAs8({D^=lKmD00paj(RF5l!695MLIl zd*N)TVTQ1YP`b1l%0D{H#+2sg*lKs*SFKb~e>XK*5QN@ngmBo@)sCePY-40QecNg~ zCU59M z{76G!!;MV2YsekBj?eG#)o~*`mdLI^4*1fThjGYtkvj3|mI0PYlmymb2)i03%kkOJ z2Au4wzg>-4ApMA-TJW2NfKdpvN&&kR1dRE5iLd08T2`uLRFNZjo)KAe(VR=i6 z$$jVn&U%%+*T{O+tjEgv9lCV+`ldA=rAk>xtV=*IlM@uJ*D|t|!o}-XY9(tFgBk!( z2w5xE2KUz7XJ{--%HXvq>e2G{`G(T{nI^n zHj|~x1W#3my}sCJr~;?q3!!U!fQu?`c;( z`EnqQd**01Jw6&7b)>U?^UM*CEN*V|r#)@jlE=0-cC?|T4x4&Y!HTSUUuF7It-hItJ<`}u&639t|kU8RLXip{bSSlaM#bc#(q9PW`P55k| zO)P{-bf{Rj9tUA)uxaGuZJ{cvjXDiJsxYi44KkvVF-a77BGsx!O~f-qd~h^z6c*p9 zP5709S1b4xMAvDLob}2XuaQ600HL&71;$b?A-&f~y9CgixiFay!TKriM5zO=lD>HH zqBohv^BGHGMD$H1T_#_l^2ua6{_5>3u~q`RzQltFr;~Oszju7~$o|;a0TbQjP_~Qh z!M5-y(Pq`TUyAlUn%2h50NR*^urn26q&9w$*$84ZDSc&Y^6X-JxJcyS+ z^=Iw{b9a2HFR`C_DE)Cb`nz!8PBQxhopJ^4-~4g?^H6D*HvSkd{&s7Bw^Ut^rFUZ~ zcO+@{dbv8EVboy0=8DApv1BL`kHu1vWIC8kC-V7fxxy4nO0}ld>z1n7qS%v#ktXyt zcAyLM$z(QcPH~t++Z?r=j-m7oX=DnE7+b0Kcz6M#54wiVSWFI)7090!M>zEYzWP=z z)gco-GCHJU?OM{ZIH6h;Rkq2L+dRqC3)8l0mt*aE%%L(Jw$Nr4(nN-cHj+xbS&1~O zp;k56sYab@xLpp}M4Th@Y$fBAlU5naSfV`E%~8b$Lr8SKr_gFO|NO;OOJ;gxvR4f| zm0-IT?kpq%X;nkbau@$#w*(9j zC81dSK~$9gz?Y^$JGi(6fV2asECoz59w5sOsPtp$|ehC#Pj8*+Ta9k*s(fXvC}A^is5{q5TWgQ1}p3wp{i23rdZXe zYzvqKFsdP^94TSxE?HC-HCC*}i&v5XeT?urm;btY! zEc=_~g>F>>4uJtaC+HACd*NyWHnEs=h{ZETIixS(nyyxgI52v4bR0=1I=Un#Lv+l8 zR+bi53n$_)-rZ{DuwH`M@oPDsRScLI@oB2@xX8LKwpMm^6L7bQaE7dn+tslO6_@4@8z6PsWZ!I?Sj_I2s&1m$15yBFp*#~pUPKqMXFF>szsqxQi|m! z$F>!&E7I9~ibsoyFxQ~ON`@&X3W!Wf(QJ)41GR-( zUKLM9oC>Vs|09@ellYdS@Wl`i{#_>1L)NK*IwKJ6V+Qjk5e6P03;cXQ7r=%Az=p|R zgDb>oK;r^zdH;t2K#Q40&<-eK3^W=guxBB?6vSsDY+FWgOR8V}m-G|#J~D*`5rI50 z?W=?G%J?3a>i1K*&w`bn;ok(Kzw>(kaeeik-}}ko;qO=1|Lx~rezd-KcYW&< z@BT-L(0}po|JLt*l)zTbyqDm2V%ars;Qr=;D^=Nym7hh3?L^I65)z!960JC=N9t;v zwFzTVFafikuiCip@jVFz-2`@7cpfOTIb(2`(NShyT1=DJvlrLhMs>u*M|@%ez8xrK5)i-%KwWC!Y6-Cadj2feRW#(Hfi zmD(`fwKytDOLPH#0E1Z$S(PxvAc7b#W{B{wu(ZKfkmxB*wn6JPP&~@^P&H_Pszpf% zDJt^rghj;6QWP5WENFiS;sj`1>c~KgAymnsfj#X*$|)55T+VlAZT+)d_eUGMpKfj4 zdHUc}pX*OP&u^YS{_Wb+I|nBR8)rQ*Z1lyvebr+x zd+e~uzW)0CX;XRbkf+VcnN>Tsh*P_KY!Y*=Fjez&H9u3bkfX&Qch;N#s(-=Qa@?X8 zi0U?SBc(jms$->$0s+cT!0nR607Mrt9$2yuiRZ7FgnwKj^H+%CfyI*~+IZqR8CMX# zC!@h~ZY$*d^vT0}t4}^%d;IaE2X~&X+}+#!$L+O$_1WjY*$dxs`##=U|M>osyDLvV z+1sU?q|Q_VTuI!V(?j?;6zNjqb4aAu5e)aeUxawAV~+4ePKpJo`F5ZjzNZ;s!z zuirO@7t-uCVV^U-*IfTnnq1SJW2SdRnEi^;qwJyBozq62R9dJ|3#!BOdYx+Uykr=v z!t+Lhw@`g<(1NNqP2;F-pLOhsqrd(7=CZH9=!-W4;r&4TYNWp(XTx4GvX;YFLH$^7-Z z+oO(hW>Kdmd1};-^(qF-%M+sp!R4_{LyoNa%%CP(ZK#w-YIz7hC>DD#zkI$Acq|Cj zEcmV=zmP#A`~M5(7o2S)KStF6wF8MjL325SiYJWWk|jGE&(F<1?5(?8 z+rGmspMUkhy?Gee@`pALgBYy2z1xA1E0K>@>LG#*5_F^{2Fm1iB<@XTcMikua4K5l z(v+HO*g2t9HYSbnD{gQl_0Nl}R;UYQP79>VNrElXa-I@vO1Gx;YT7{T9toWZ-I*P$M z&-&(t%{^~%=Vtv#DW7W93zNFA>yUH1eri!?HhpTd7cKsISGt1qr0bsayemHMiI;up zyenKnI{bN?yXZ6)y2YJ3%!yM!vdJTdJhsSVvo<$tQ@uLXDl?^gq?Tq%VX`o-6;wqB zLUsUqC}ev=c7aI%lFJOZh3>J*9+&FklwbyuXn&|Tq2z=CN@Fc5iR=|cD2q-Zwm+Rs zzkPG{_dnnM_n&Y7`qS+X-`@Q6-SdmHR*7G%7JHD`Cr!oanY>(W^;*-Dq3+0qN;aN} zMw8({Jm3v`d=YOf8;zzTkys>|Or(?XbSzxTB-5!xE}t%zKzGG6xkR>*O=pscRNNO2 z?#291_Ya=AJJ`SxV`!L+S5M)VC&DmTwi;%y}5#et+zLU%qItX z(5vnPS3G(UO}G-72tkF*bhyGsDpaUc_NCHWhlfvhcb@I;ZS3QCUEj9bv*Yn@xqZ97 zz?R3i?s9K?5BI}3+wpKe6b_`)i_1vd6-(`fV>`hpv@ekgXL6BDDUvEhl0>M0J$J++ zqhu;vil7rEGFqsFOVt?3Bw4EE5*57I8us7;N>*pOeM}RP)ZA?P9^4xkP?qA21jc7NGl)1$BC5_Lzu~p zsY1==+NnyOY1FAvKhc>Zy?$&`Cpvkq*XKrkZqmor0=lObb8N9kCNy(mvyfAZJJ#tV zt$wUhCt7`sxK1rY!&)vxslamfVK%XNS0QdLF5ll={{6={fB*6I-+p@c*FV4c+fTQD z|K-&$Ki|H3d!FHnoW%d_FW>z9^NU~p>6?H0r*D7x`TbX4T^^sbhGVreQ2JwiimeLY z96!GqclwfU(llGBk~xwp)Iep+_5MKZ4JAb@3PRe_%Z^z;KJDCmbNy=RiFEr-wW9c`M1M?mECQi2-Xi^1C}7b)tbk(6*zpnzx!wlM}Tjw?(c8<{LkFJ z4UgxU3;uL()xGyGk5>)xG^EJ39d0PB3_wPVEHz8}0+hy2rJHgKNVj){&mU6d47UDtMYAtn5bpQ|u003_X;N}{jsAlw7 z#YEpomd(*l$l1f*kfCCtOdA;`(h z%qztwC?YB$Apzr&QIHms7Z#Tg`_CajQc_ZKGIA&d1yqcknO*GvS#CN3G$epeKxGh+ z13*9n1knI*dH}FnP9orc3E+PUkN`wTL<}Y&y+d}Z@R=Gw00e;u2th&S>l(m$;2*B-@1Ex`>_23gX0tU$*CXHKW7&IEG@6BuB~tU-P=DnJUTu( zJv;vo7Z3pYZ>-z(zrp?wE}B~|0zyI%A^1OBKmxzp38En+VizT*RWSrxBkyvEMUX&L zlL~6PNIAug{?XZZj@_Z>l32XI_aC(XBKyAsi~Rp0`(I%Hn`;I@4g%gf4@3h{0!;nf z)~@@w#ab9&_(j+Yw_@)WlPY8}&HMAPv{cy4oJ?TP@|7`egZK?KV7J zp=?#f22iOTVSMHSPv>1Fquz$NS$?o8vMOAvy_e1x-1^?C$W5T87OJd(=oIFgmS~o! z7Hu<&Xb7B$yclaRkVA=TYc?2dpA?hU{5mZ1IE1(hG|QV36M=-#98 zLEfq0iDG>!4X$+MPse6*z81dBg%a%V?qDHcRomzH5cFh6zh#*@ngJhAmeVqeZ{C%g0UySpY)I)O%i!uFkA z@7WiI&6F;mIfDsB`iB|CL{oKOtjRYvJ4m9<-7s> zmRRHkohB}7bu;$>2g=^D?}YIqbL1*RO}gbnk~;XE|4`R?4_ua$SgLt;{BljPi)37Vci|!yR*!ZNNa#jZQyq8WO5fjV4a4Nm z{C-UD9tG%J&G-!l0`(l@VDIy)TxP3k-hxdAn6r$^hena{=NZLRI};vCExj*u2#wJ9 zR&d0a#$+K(7_vm&_KJCk#~JorsJr< z*cdvFjfDRZkVOE!Zp#gZG5(O-WXsgfUF~c_@}Z>>6b*o!(V3=#vQH|H(|M9ogBy#d zPb)7>2sD@jM+?PB7L0rhu0F`uvH0$A4;#sb%3w4rUXILW?JOo1))IUia_35H;Ye1p zvxkir@2>)`R|Ys41eLzkI2WzE>}0+RDKM%H$Ho}*iPAP^fAL?SRaPx)`5zJD`{?D9 z8^9)B_3yK_2YDy)FqagW`vWI7E-!73Tk;wryf?pc#zy#n70amhi{0;TR*QIuAitR! z`w2Mi!d_;KUsXS|rHZ&7y8$qU_JwrMz-w(U!d||Tl2mvUcI6x}d8rD(W~spZ*`GyLR)Bhh|U zF^tp1|BX@DnJq14dz2B3_P4sajTy^vWmvq;yEmLyPjKU@`aG8hN@+@ttIYH2U3+c| z*mH)kGHatmx)GJ{ap8%_u^%5aD0yG;-lGg#$=lHWd6t+xdjojgx=tSE*bl$B0bDuT z`hPu@RL@#s8OrnlZ7Yu1~6Cjv%rh7>d$O<*ZA!3HKj%P<^3N4OcK~z6X8zH z%>SeE2d%Sos$9~45j|EDY#7)BENRqd5JO&;!+Ki7jhl4AU}g>d!;gs#9VcO0iW591 z@D=U!=UD$N$6mkn4#^C!&5pzst*-)Y)(0EKdB=9QJ~w;PoO+}jcIVY?0OV?)3JGia zv5b`lKlREL6vYOFoli3C`RpkP6EZ2vuqp!>&`a~hN*FZQ|Tl84**9Yx9 zuIaT`AlN@l*te%*xvq(<$zey8Tv6FuabcZKH-K==)q(cUq2{xs8hLBJwJl0`89FTb z!R38V(Hj6dXd!GurPr>P3tdh_9iDyJ?xlSktGy%aXUp*Yfg{^$Z1KEcx7D;3RXxZE z`{#q7tGpCxq6v3Rqp-i}W!c#m_=;KndF+6@9#y8naSo`p4WllE*af{ zC{^gWVZZJWS)fw8p2A<#cFz{dpNa_?Eu|NBQ`un$I!gvw@1pF_Ke)0kFPo*kt|b`0l_$+;}rhfN)@Wku4~`w1h{Y>k=Ua+r1+!N1duL z*};!c$&FLGlikFcHabwuMjnfGa@NFwm%)@f9t>Tr?Q6d*XXi<1;sVoIP?d4&$a7PVa(p(vacn2&DL+tp z$eV7N$IWoErO1!xgR`%kW9j_im8>KEf}$tsweX~+Dk-_fuTeK?%yhKW{U@zQtBn}b z^5-eM-0{z9nWJ=nJtzgYnbZqU`*BZs1X5|G2_1klBl>YKTt3^dPi9>3QQKc3PsduC zY<(7r$fp6^fccn|ePJUK@Jc zCww4>8%4=uIU_OP@xmD-KGZw7J1U$H$kqp#$;2rM5vdHEDeY#(mB}xMLJIVuoa+c6 zN5L`nqG7Q^J`H4JaPHtvaA`~{7S@lzrfEiS!p+yFGflzr8PWzPB2KogKc9bTr0?b~bkMsfl!P%fmh zuCQzcBcz0iR3G%ur6TST4M5C-xM`huT z!+>}{Zb^eQN`#`-sJjNMMey}^yUcN!GTKq%6`JZxqU$(;?HcchIqTuCiRFb)E4q}^ z-87o3A`2qmvX2<{hC)UIDvw`nO!|RF!b$?3u6vgf zJhZ3adKD*qTuF?}SVmcu1a#8zC!5Q`6=E@$-9q)OKP&2>wQ~(`Ng1q=EkTnV4H^a7 ztZ7 zi(|zn3)Ys=EWloT9?3xohh(kT`J@#A_Qe8y%3g_l!b=7$7=;w78?L2E|J5~1cL_Kq zzzXC(_BQI3R`5~xibS8JnFPdQ>HBt#1&f)}13> zUs7s=TcfhGLwM%{?#C!Zn`(*?PvmA|`nx>L1E2#-5zj??RP_eX3u97TOMZ*vX&TIS z6D5v_aFcn-2b@=9I)vd&PRxh9<|EOASmtdWPEZs!P}xHkl$Ap_LtCxP)U_PMs9%4% zAPgRRtX4(W^5T2a`_5&LKqGJ`jxBJEd;2X2%qfGLDpcZ^M9$8a>q-berH#GEusqi8 zGsjO1v_R`0lwNicNZI0zxf<)Fe3u&eo_r{0xOD#Xk5;39JIgBgkmumG06wqpTZl?N_4*gJU2dg+rNg=&y$Onyodf-Q8L*Y8k552XQXd~Ag^sw z0E2!*Cf0#4HADBog;3>DF6qDUMj{ceF2m@uA?Br3Y)$EV*8ITnUE{p$P;Y>EZsrvQ zPsVJ(KoOGl24Jk&mVyq*SH5pMY8)%Q#+~(yrXM$+*}(!?+Jlf|9p;e?&|iIl-c?K- zB(6E%b6upvlOcD&9aRWR38%Ob?YqZW_~+j50m730gd0k=vv-m27Jo1HH=rtv^9{mgBj|%(5tGC4Jvq zTbr%D?JIbr_Fef^4hdOb(DFo_ff#h_HP0?Ew*}MdMtnkKu)7>7i%(dY^=kYhOV8pg zwvCrm*i%ypqVLUVWf@9p0y#Oi3bCcgfw{cD+fj*z4`t`Rk(mBu*Yts+c_9JeG74$? zKtL^gst`WAfr3*q^t`544_so#i)rYNrfDk0!$UkQz-nE86*dkAj=-;8i_MGGvvoq5 zPf8z$aRmk7f}37^hGiwwGfAFjAq*(#E(~Ual6;>xldv$zEb$ziZY>aNow_h9@CH78B6gQ%2?jr@q* z+C8kA;x@;Bc>LC*?C(=>+}-Ru5plD1ETqQ|3syNR3jxasIZ8Q(l7n@;Hl{ekji(_9 z-+T2utq2BAD}ojPwWrrUs@g7_TTvNqWX@1&zV~%n#hzl6nbn^zmvB&o#JxD<+GmWk zoZ~)yrkJLrR1Be?fwM)PH;O@n0ju!Xj8+RnD18Hnh%!>HcrV)TFLS-ivtQ|&`i5ze z#m2q#F@Sfd*N#)OMfh`NjfL7Hj+{01Kr1TW ziYn-G8FoxvNefDBn0`gIUrH3^8EzG>e2J*^rS#19U9EIm{uh797AC3>avD_cxdD8+ zhEx-lu8=OqgiygoQbyvM?ueh^g=7V+ml%|`l9Vmxk^}Nd<0|9cu0NsaXgmD%U3Kpp z6$qxsFZGx;PhBRTOo*RofhJK6MUR|p0&Zzme1ptLNi%GfW~~nlHnG%&ogV^n?ZUo! zA}>S!_B{3lHNTS2mZCH7M;WIF^KQwR%)ewe_y-4#x0g1^#t+$<8^t!Hv-q=_#qrmQ zEL$NhB4EL^6k zCZX4lheAF1hYBHoKYkp^jcTDYn0r%65A6@>CS<)%<87Qj{i`6Z8<8$g5YSaVrT#Vs zdh{o|iHsdp*&e}4vV~xr&LkCxgs-7e`{R1|qI9L~(0cyYX&j?vY6Y+Kq?r%Pvhxa9 z0{)a_cD|SYQ#4bO$Q6P}X0wqokU9R7vf6ncxv5XG63#*)trmNaE795Jb6@gcTb<+; zpC?J5Yyv+n?SLjKMtZ}bLCwRuZ9{9(hPpgg_F^LLQMo|W>4apF%!~|H$DlG2iIziI zNyH{a0h)J6HudcjmdKit{d<*$%|L8x80OXDcTUZ5)gDh7uz`pipFM3nwa zH0h`$c8Xx62*JE2Q#o<_BjY3oZzlBx!D?>%nn~4qy)EWf30|%tNnbM|C?oNcdGRAU zxeT`zKEY4z%yc+N9rRZy-2If!C&-_{Q;Z&c`=w**UM;Rc@=DQ1F@Ic>pfx!$r-%#m zWSdi6gcN%6am{E~6(5upR3o~oc{a`f=+ip5+Cue8)uD$mU}h6;$N0MCT=BRQ%=Ue2 zPtHP$yjEMD3GTw6X47L)D|iR2$^jnm3-5OHT@C437sVtdmis!f?R507Wb{CJse9GC z==+)qaz^iFZF<$hLx8KbX40hw=7NE?3VhpcG|S?|FTdnEhZMIZrZI_r>$OEo?{}?% zvOc#Hkr%vAz+f!P8R!>0Rd;5S#=d@b8k7Wv`!AtZveaMK_7{Z9fWWuWkQn-GZIuui z(JScQE`9ws+wqGe{`#nCA7aNk|9fqwMD$sm6x|sUY}a^^_05HiC1BNb{W$%*s z;KCv<;#X;u-GZc)myT?dhyQjs7kucTMkYBeJW!l-o14S_R?1HPNwE@_nFY%~4-f24 z?xfH5l=K||tEITf$pl{8&6ZYA=i+d8GcKz}>0M2+DjSsLZoHk@GPB6h>PJG)cB*d; zRc@-FX1lvt!N`ii1s^QrlgEnqYek#OqEAX%7D6X{>YO~%-=8LWKTQ}5FUH$E<_uWZ z1LO;$e$dZd79Cc&yLYmMxLA6cl2Rm`m0@%Ti-DhO$6pUP4FwnUE7YQ>Nog295Hh2G zAmRX%S4)QRICit(#42_BBt>&zc$po7AR9n> zZE_!ZcgJF_%RNUQJQYizK|DvSfMbxD{7eg9l^P84TN}?#atj~s6!Vo~ac+UB?8mMS zzN@z>Ki)kZf7<@l+d6Tmt(31^R-;6|muGbJouFrTG3mpA|Jok5agSW-r=F7K7`?1pvDR>f?@7uk=Z30_O}1;bSEFIudy&3_h&X}|Dm?h} zJL^J=EzytaGlp!_R61dnHNwWuTWZ_0sDzc_cUaJPd7B({&V(Z{h(lrdr`JHNwf?e*%XXE{LzNcMyGT}GBX<{{P+AzQCIE;c45Pj_0n#c?G~0zxNDrQZ zxr-Du%d5IP)q&ExI+XSL&-Ww3yUt(+{1y@e0cW$mUNPs!+jJc2Xy)zyD}MEioR176Ta(ec31xVwfm9?T~ zO7#Bzdi2Ku&PTS74X5 z9-r0nVW57y$}{gB{`RbQ{7ETs_zFv9F%QHuosWCzf<-crNY3yo23)m^vg$kGRRfE? zBr|f+xX6|&n`!~*!N)=vKQ}-U$dfYD$UZ^;$TWdtj^(2|QipzQDI$0Jq4UVKi*fA- zYMQ?JN=wVZZ-E&n>9kMF4h)}#`NvH{IER2H9-TC(?XJiz!Yp-UWS|e-;9s*1cS%F! zT}czxd?Vf1br%bL#4>Xqt>F)+5od=Mif`cOwPfpPPoJOb zht!UUfC(xrUSfkUo`<8o^F~4o#5^eG`Ix_F2M=z5Zv8@B>@Jv;4V8k=e+x! z-Ti*-ZbQ@e(@#}*Rkh4@cQY?bFY5p-MOg(|01ONaKpy%7c-g=)lku{#1OOBiSO7=> z000$$0Rs!bgQ6s8#)M*IX!!-2v7q>mL=80Kz`y}upyi)T0)y~Z*#gC+|KM&YX8K14 z7K*u`y6Dhy7@E2NX@3!labf>%=Z}m{1pHs^96+%b8~`9~V`bxJVo#;zW@B$JW#VAr zVgdlWn0Q#&Tev{qO0f&@aB}`};xDcLlsXnJR9qaKd|Gl;RM5USIr#)R1q8WxsJLDW z@^T7t@&RZ7nIV5$90~0<`yZSD#Wa!sWewv$m>b$YAOQ$~hZdaN+?;Sw!9USShswkM zgDasJCh>0>m_HsRq5Nf2H?$r$>F>UV|H%JSKMlnQ|I{x*F)-=B`bGK&|LGR_U)V1R z2r!4%twZGjdH>kM#mNbi_qXn!k$}znJA&ef007)SxCUxCeBR&Dmxe|aPze0Xwm%T2 z=x<#p1i=0a!~F}x7yWI&CR738pL$xTJmSA(fd9fs|H8=s!YKd3X#c_p|JeEFk3rD% z#}7Z~A1P>w0?q&32>y3GSYZRz9Cjg?&96U8L#oN9Ds%ii*B1u@dl;UuaR9Mo4`W8vf?wNmV zg+>mG^sf>Cp!!$(+nPTX!9sn4{cHYcf&`%GzsBy58WI5RpLGHqwEuQp{e*h z1q}}!4HXrQ7zY;(f}DhmjEatfk&1?mmW+&vpP7x5i3H zBwESZ9(>K2Q#u|~mk?wW0zx8U5_$$kCT131zSsN$AVDc<8Cf}b1w}2ewvMiz{u?uM z3rj0&8(UX5cMnf5Z=cW)Vc`*xQPD}sDXD3n(las(3X6)rl$4g0*VQ*PHZ`}jw)OV) z4-5_skBrXF%`Yr|Us_(-*o16t@9ggFADo?ETwYz@+}_>)@e2kz1^$!%cIgl_{LrSaZYMj_&De_Hh~CuRuui z=mlU|WiOgiz_YJ?tls&V#oOwkp-cby*zkO+n3VZJnnM=6e5|w`uUOycZ^PNu;44iQ z6C^9b+#`O(B30vA$ogAOkdl=M_`tjFU*`F$lj9PulQpj%*SToTzpPh!if;BUA+A*{ zjA8m{@Ps$FL*(EcH>SjGG+eJ5Odv~+#gd1)UcyaYW%fMyPU2}r1yYOmbxXTr*n?s{ zS~9&%>0$OgMI*o2^oO!b-d?1#ktv_3c##(X3kMCYGTr$-I zXz!RAEjM;KWOK0rRa}MK&U+of+mDJ!`qi%?wOW~Kw~Cie0XC8Mg@Iv8DJpCeQ=o@H z7N<1LfGe}1%?Y5*4_)0H%jj_~9wyORe#&AsVa09BB~P(|``O3cU(X2oQJW(8 zEe~$u4D!UI6~le#1Hzvt*~bSA}+gZVLp9m%+2oaJO@x3})k%_9D7$ zE~xd>uAB1>3a~H{;Fcdk)CF2B)=aV3lyIG_jv4G6`oU8!z zwor=C1A^!VYWjnBc`QQjfxN8^YR#1%~-|ZBlPVU z_p^UH*4NwQEN5`QIZdx-bt`s zEK2x}wL9ljwDW*2<4KwvpBldr9hGDF1kp*>iYOQj-Lv^bSjG|~n0!_A<##y{!GTyM zM?K&|3oYrsQMGPha#IXNcqwEz#Gj@0F>Gu{=hdqU4IQ*o=TxyUeBoz_ksa?*8w11R zaFxz*?-#&yx!YWU?%HCV)gId)7OK%kcf4TOI#m+X1IHi_musaVMYu?EU~O> zO_jS;ZZ_pDgLf3>hW1hZQjWJL&Aa-qG&6xb&%DRiw^VPa?lDrCT4Sza#aKL7Xig%< zPy!~&!=^a4s5bzZ_2-}okd+LXxEQq>cdz#fv)^$2jctl)8_K!AEN^Y?&RPIbkuJc* zgvtjcdHiFOn4niCR}9xwK*}4D2+y@@4NLutd#%`+{gI*B z)KA9kEJV~(k3R9E$-|*yXNR}i-x_zD55?Q!g{xRO`r27PM7q_JJ!p|2sXev^Usi-~ zWB$caqYbj#NJq~bdHCy5s zhuFu6ZalsK?&qN^3?}~49Nss_c0=X{Z%`xW(q*XTE<Zlw3||mt95on;Q~?brZo74ZGh!R+ z3S55xJ1woM*;++w2y8oNp3i5_kn42q#Nag4A|7xp7Lh(&-h&Co zr)7;35P?GSyEI=bzRbrA1p$6fxL3Yoxk*ee^pAA9CBqR-!3SN6DW)Q2nvo18V3IR= zjSh|J0YG@$KQ)Q5?6+~(oc7H>gNs8$ zkPLlHGulM}6M!ckag1@R8p<$`NBpMY!yKwfq_Dca1Tk5ztrQ(wA(2V0i6WWV{Ct4v z1Ijy2w{Fl)!MZ$|8P%NMI9%>xrs500^}LV^lCpcK2q9y5_uF+}|#1cOi+WC42FMKnVERMApmc-B8M{|C0uDoY3jEOSJCH(%|hB=xy8Iq zLhgCMy9;+Z60~zll3Qr%p08rLz9DS zpP9&3gjAK}Z_C`D03!8-nd3t?3NNOn8z-t1*rlSlG8L%S+sdQ5K@6o1@ESfsL_nr1 za?lYt4%R7V5+UaJp(Od!`f)r4768d|VV)qEb=i$8A==D~zSkm48288-_jgrt_w58@ zsB-o#Hr+4C@HUHi;9 zon*DNWB~$gx&BON(CkOBgzPKZpsp*WS^S<&rPs_;ECfO3@Mp;0xp)(b$GLmIb`uZ~ z0S)jRD@>Xj%MtYy2g4c#&AP~u)<;*-xk?Wh#CTW?ie)>hc3580_Y_RGYKopw3}#tS zt;^@#<4$Oh78#oRb@sdfuC!YmI#vgMwrDOtboy>KxJYhO?h=rtibWPq0In%xE%{T3 zQUyfUXHPH$TrVfZs?=jCg~@`tbF28LdiF%_D$g1N+fR7JS=Jm_<7FpU!#?h;yFE9A zL*TLk++|X%w%J53ln3QFUI3Fpyzn1lLWeeFEcr9qBi;>0>!QL3So=TB2hS}wR=)2j zdOC316VfrN3xOdXAqzjgEbFT)#F6OU%{(t^tX*(5a%Xg-mJ9&_z^2|eChxK=I%BQ+ zvNJ$E#KVVLy}zi1PmV7uSL#vgEm_knw!6NRPrcskOY$|%7yo@8;^MWR*^(BrtR%P{ z30X|i@nmjKH6EOmCylqwy|H?aOhiPJ#)=~)4}+ip%qb`#$bCITWp2gG@4>F9)ga3a z_MFh7b%rDwu-fOSV!q8NcUeW~!|Y9>FG!Ec@qjRPDjL%!&IdGvDK-(|loX>gu{b?C z$9dxon7&>kB_;TthUcdkx*L7GXCvE1P9wRGaVSf9lZO{9e!D%v1F-%i1yhk{0v$(;u*&ut& zxlyhJBA?c*D|N#u1Q2XS2_%`WpV^6Oo?wwlo&kwv?CTT_y^rZ`YqGN;9QUJ*9UYjW zy4Uu`io;)su+Lg}0pMicB=i@{OG7+Fd={~iq!C)!v+lo3eib5ap`LP^CcqG+2wL!5 zAgwd@WGMe(Sg-ibX$`bfmX;DCnN)IK{?V-N^|uCazp6)0zmx6P)%WIsNybk8prH-@ zB?cVu`zyvqStZ#Yvi=e!6{xg&Z{NN`1dB!p6x0I}Vj{XlFEwlQ4jqm&tv$$x5)CD1??*DnCEDkS+hP5~fjXtDYY7ni8o4

Tq=QgrEW1lmcx*_KLl9S} zjzjN=z@4fh#6dN{W6bs3>gr1gA)1`MX~yfC+P5PliDWEa*W7uNY~yIy4u-OvFN@pN zD?b2`;c<^+7I^PM!nX*1i(d(%DlKi*t^J}Jek-HI`ZdjY1dg)USoZY>qQ_R2Wg}!q zo4lg~`oWVH-Esxb2}gw;DnA^;r?Z74F80R6l-3V-obCkx8GGha*>c9di^p4O409Pj zD?rp1g&gYdz@Eqx_w*DuczF8v=QvN;4gx&j@`y{w_1^5f>F!2KaX{;HK0)-ZLhZyb z%JB(t5=7j+EE^uSU#Jq5MXv{G8v|%X4lOIg?6T%z#YCj{6l20Cc?=GkYR}-sPH9+$ zz%PJ=w38!bv23H5Q)a$#HKC}t7dlCkZn1rIjm(jB^t4Kdf00x1n{t32`sy z#~R|uDv;J4bZ)W2*9Z(|#4)!a^_UhZo1#(~EeV~+kf^d`$MUctKvlN0^u8zlbFQ96Xf4K=}(i0s@q> zq5YwlKulCrWHf9{92{&+Y;0TtGD2KD5`1iIB5EQMa&k&aN?bx3IvNT(G73tHzlbGN z6^IDLKtjTxz{AF)_&BcPKC;g!}RGz(2G zsO#keyUuPx8zcFL>;2E3pe*$-4hwz92BmqhurTm{exW`5Nib0UM2!QF%O!!QVS+%z zEs5_OoX>N5_VT~5t9y1nYTN0Lfh389LHL*cecfNcGe&v0+Fetl?e(H~cORp`%%{9> zcyxqVPDaa=!Bq5EG2U7z*rP4fH-6Ub@Idn}ZSwRf7Dr1zyLKLkYWF*HVb*r8Oe@Qu zd?Lvj#%!_(9`WwH($9Q9lD%eY2$$!t^$(b{GtR1yreX=W{1eWrk8JYMv4Gv0F4jKS z%akP4nAyTEWwV0OIre_)siE)P`eVE`thJ1aFr?>OU-K2Vb3rtgV=l_J=QDq2v&YR) z10KM}Xs(E#q7&pvQAo^orNk-tXyx~n&;m|a+$q~^4HdPBOZ``l6&9F%IwDKyydDQQ z5InKgN`BnW!%?mkn}g&0_MI@+e<<9rC{=?{^wA-b+GS1>6EVlNW44rf7kSfz?X|Ac z8oi=@S?K|_yM|We)$oiMlR*;pt zZZS{m1Jz=Y=OCI2r}>Pd*$4@WyBVdU-(UN%BTt1flA|WjRjatO?K0XPL}SRd98FOh z)od}P5s(cKn)elxFTS&Zi9YhyNVV6sG3FmY<-r&ipA|h;&1DhB5(IBFZG-E-nRlR0 zcha7Gx6!(`2{sVbrXus@GdlOhoQ460c?93s1o4LvP^K|gUUQ5|hQzlU1>dOfvgVSo zqc4`3*S&q+88vigi*lzOi@zdV-kLm6(3Q(_EDC<29c`CCgHE)M*d?RwYN=x4)zf}^ zJ7jvXqS`Ae0>!epWdme=A8`vxWca~mUuO%!-n*B@6PTfdC8Lp;EFv0SPps|o9crU- zCOx4S)ps-3iT(#kXZ{;L;lU0S2VSw>*hDX2E9AK1MX+ACmk7$?v?j_O&OLvsHWuRQAO5Z zuy|5RLmq|{L&myB{yNNgQc%5y?gF3G@0VsnFy!tn z1Q_(2w201|Fch(bE$l&Sr^eM?7uFi#E;lb!s<3?1F4&^dQVXJeaa2>Tqi6%l^JqKt zW-3j+q3o@9*?iLNFzMdv1c1vzGlIbAZ-NAzx%VG){jD>lk6`=o5W;wiyoN1?GV-Tm z#}sa~wz0us1o*^wKS!L0EemTYz#!QV^B-_{jATvM&Z|pX!sJ)jcz)b|Cxgp=Cpcn5 zPc)}a|Jk`{(T{k>dT~%zf{2eA>$rlkx9-8a;W*yisilRqR6{M4yigB8D<(cw%~N1? zTYqM4Yyr{Fy3K5cQK z;ERG@bM$A^I=IPSZkYZ=HiVx!nCH6&G%QP8>1^R3>PMjtN*9%jTv=8|I1R$lT={we z1rTnScFdhTE49w6@}c^D;@iw)Yte2>5|07-+U)vLbsk97t47I|X>P%t2+bS=_2g?I ziBG>w?HZe7#aVC4F}q5YvmNF$!|AR{s|R3(I*oqbsz)b`gGkDaqb8izzy$0QrSiY3 zSk0#OKm!uhC~C24mVWzRXjlL@;7C>fOpgBeI_n0!SETdnw^_b>G3H+1jc-XnC_$_m zA%ZhluA@=l9OK!o-moCognr%E64zY~5K;=o05Aig@HFIyTEYM`)voShNh8aBP z)=1Z%@DMpgCj)p-Ml8a*1bV2xQ&7j&%43%aeO=5QxlO9T(ywQn}arP-%m!iJa@EOa|nWc>7EZW*q1$L`nyJ9{L zO>0==Ad^oCC_YSZ{+@6?E3ZtpdI4YsNQNazya3Y8&hXhW#$J)+QbPB@w_f)PAmveR z`s95DtAvZ}{nBr>`gzk#L@Y>oN3@gDcITDXYk?Gs8t5;8(qDq^ci5F0Tt`)M)J*{V zl(!l+iS@Z8I2OV`y4-F9Pi*r9XYG;xaw6f3(w?K8hhXz$_N$K%Nu@U&ZoneY%^E zEEG=;yM(?2Tr>z1oubR{a;K$TN zgXU{q_qgX4ZCSX^8oGX7&>g0IuvDlMCHM1IyTUrj@HJ^4@fV{NI)yUNv&tO3A0!^d zIvO^nVkTX%K@;)j{KHz260JZy8$3sfM)&UB3fnFltb%1D#(=hnZVkeb>tA;^(?~I+ z+3BW3L=*lp&FCAqbIZ)8oGu_8eZk1SQND0OF|<2$m6^}ml16vv@32_SqE`B>obyuW z=7jgL)B6Bs@vcoWsDie$7!zU)#x{ss4kv{;-*Q+F*^jA@8hO=QXbYmN$Q$cb^3}~s zR|>af?wK!tAKlFfL5LmG3k<^NVz757n{JD%Iy8WBA|T;I>K_sU+gmIf87f{hdRhL_ z-cdwzxk1IB7&Dn~wa^Z;;4Z&#CNP;+!fZLexhNDR0FU9;y&5ed+zX;~*UJS99K$iw z(()F!&31=Rb;UW{N({0NQx`vcDc14Wit%44wBdD3GsO&=u;%3STnJi3bh0CMN4JeN z3+D6i+u*@4iRcRD-d(;Yx%W1S?H<+~tQUy(>9|KyFL9PUU|)dic{~2aO2{-#N76aJ zi?|9)W7QtkX2h8cqkIdinR^v-I20NJg1%gT7Ck455+-- zdF&@T^hXv^se5L(!=ru~2fZtiKsed!x=}IDzR`!MCp&$5jWN96Z%~9X6& z!lVkLuy%LDNdGZ~l0vR`)yEgvn6VB?bTNbHc40MFtp&Y9V!U2{X)-Kk_ps3`Gme(_ zz&vC13Fy;`-i$TE?R3K^FtP-5R+$TaBE81muX<*5I^QK9{>$Hx*e!Fsc2w$r`3-+lD+sw)gcaDC2i?M(KjTV%{!@#x|-E#&XDTSZVdxk{;` z8Yy;?$Gzs2MD8qxaNqG@=0V)u2nZDh!DuKVs*W0Q-!}6&QJ-(=*5qZ3YYd+GUF55%UE)g9S1Lf;Ga_1jNukhJtO!sB7~csNx|f8(pfc5q-gTsK(fdFkGf|yq5Y2lVcgyq}#H!YWaGp*WgXQ<{T^SGVLqA5PY{cr;g zao!>Kfh1?C8_5+ZexX?ur6B{5X<)Jb-FrI$OPkrN~ zAsYQ^f4vAHXeH0yZh`;@6$RQ&FB`m1V7B0x^xVpdntV-q}q1C%Xwo#OZnyy44KZK2{3yfW@Z0)p;^;V zCjH)XJLk4TBh?AN_ildWOkmSx3*_kT2ok@H}|(;P*XrjelY1dZ*g4A zwGcb#Yk5+jxZuY-UI@*nJ1>^<#aV4oF3~uQK8+IFjL^stdc77=SyL1#LNh!?l46xX z$PtJ_K=PI-NA{_3wMhCGW~V6XGL86$5W#qo)8>z}ru`KBJmu%2ZG9J|nEO1`?^az> zx12o|RLX1$@C-c(d?zLj)?}ks_xEHpT!}2Z`5;&l`=T&Ut(?GwtNQzys^%heLDYEp zFPw0{SlzmVx05@SU8IOLKkRN@Yp}4yGQxW=qAAItQ*Tdzk(Oll2HW7KyRcIYt22tH>8-B{!AYYH_E6<9{C}{Z>=j|&e zjzre;6{WT9@AQC((lpwhWFZ@z{=$_-@7@T1g$P^;lcU4qRUab@2>qVDYl}ESqK+GE@fJS zIT2d68Hai#^7E~H%%FHUTDbhLbS-U{1&d3kAFJCi`Ob@*5FwgF2vU$i4eM#qVWizQZ6R{YNhC?alKsRLRBbva&IcATBC5fH}&7 zuuw!Z)6F^Wmkk|8f6QhTZKcbToRi?IjDT@1K|~PP{t6I3+1?ya+FP=bxkAP!433lURaQt1EeC_96YUp)yq4X+2^8w~*@}2byz&61NFL+zi-trd%<}MyAkkS^TV|ZV6 z+Mafxc#k!n;M3HGdd=`!CT4m8!R*tXsGUq?=z#ft1)j=4t_G6f*POxj1qRYk;DoJA z$NGEfJ9Y#*6lZmrDxxg?XzsOUN8Eld`ElLP*3M*hNc8+-XgMQ*6O^b@(}>CbAh!lRMc){f zqjKJTveDDX68LClL0mv4elabYTG{~utg5c{ygL-PH)TXn6%J!X;pud%T~_O!zCZLI zy4NW=y5*_`UE~Xka4RXyyF;!5BZ>z^?zi0ZTu z+M;x-e#)mgDGolD&`le_e0nYRtE))AzdilpRIG{sG4L4KH7@WP1=7zj`1%E~9sTW~ z7Un2Gtjg7Zin8Y}^nSKMkO%r71Zs0?IcA70zb3_j3Ka4zYl#Syy(q46vT3Ht_R?xk zxw9W7WXwFdOv1EY0LEp6u2#lDFMvF)cK%6HM>ng>(rGF4Ix??N#UaTjTj%S!VVgXg z6Cz0KW6DK*C*>=_kU}D~l3m4V^|(bRCuOte6$sl9ReIzB%CV|mhuSMxTVHxW!iQY% zf@!2U{X{O3{?Ny==(IFb&K}H889oTnmNf}`edu}dgPc90he`NQn!0IF2GU9D>SMzU z(Ut@rHKPAd@a2cq0GWW>D`n_@kQWvIMyjme8UnNz2oPjC1LhE#ZsrQx=(2|d?+#JVIBBG+uwc_gf3vh( z4}AR$-ZLNuOT;`psAF(5P8hH3vPf?IE`v zou{5MB4+v^#97}ak@y5lWVsrn=P6?}p2IC@PLNfgR6c4{8l#jp$v4u>VYj*odQzDyI!a?g-rARzMlmT*} z$_1BQ^;liiKJ}j&r0wq|VREiGdF9;9lpy&N5}CXU3CmMp`< zgZBLxTuZIhK1{&JphLSPk&DQe#J->oZ%?orI+>n`ATBT1HqXf$4EoJi1~BLdFBu36-67A9QC zb5-HiGB__-i#`iRom2p&+Y6HFyeg=NBRDN6Ace}Iz4hyt#=$7JlG2vDF8<^|54^d0 zaO`{;!2hHHz(9Wbl>;!TkjMP(j82Tatd7g#X*0-&5=CFzEXi|lh#|;0#hB|57+??@ zO{R<&I9_|h#7FPD66&y#D88h#3Lgj7=T%U+0x)WALXXCF={BXOvgIvUgvL8nF$Kvg zXc2YZ@kE;e>ssMf4DY~+PK4xhF91(LtYJKa#HRBBWOu`+0<~}%^gU!&_gss>%(leC zSI>c4_zSQzXF4^5wMt8h+6~6RT^Or#>$u%gQAo6OtpdX3As$Wyi9gb$NU2%cv#y5s zYl}KZ(iY@XhWXLERQ(q&cvqCK*tIF8dVil7^}iYZJF#kj#HJDrQt>9*|*>Y*EhLJ7^wC?`3 zTt7XJM&(WC^4G*@>4q#}VUaLd|6(z9tO#sIwMYGGCtvIUbhL?;MsR}*{-GiGhgL)u zw#?zBA*49|j2D{WCFoUq0jNoKn^B<;ur+g*w+DXaZA=0Fq_Y%7#P+; z3~yK#A?uKvtb*VKsonDe9&vr~lmjY=i|b|4vizr$5ShYV;hvvK^{x{QLql4zv1FfE zqJqn!4r}u4Ld4li%Y@8>#WBLNaxO8Pgxbsj^X2u3i%Ie9W(i{KK{Vk5(~sm|F-Y}sNg8spEaF>H`7%*$mz`&a2bHW!#~k;78$9vwWV z0N!7aF*PN8;b~&Zw?Q&>SaYmdda`XN4N*l?EFqqhpBl_VREJZ-rp+_U6c@Dt+nn$R z598A{<>|_64IlKBN3jg0dQ(%8x6a6U5U!XTUHo`%fU)KcKJ8B#5_WmAf!)z=nJG%4 zw8!E)&GU`SQ6J+Fe4xGH<(3~vO&LheHtK1)olnunQ9idZMzcB&?WF$FPAKwO@+%?R zA>gr;E|V?p$jV`|dp2eyiv|FCkU~r#pv%0oLd6qIxS$KxaAzwWCDirJSopr7z=PB8 zITQ{7JeKP?RaF@^lZGr$0Jy%SGxaJYj(-|t5^-1<@{kO;&J+8YamZ!9R4T1%z`ks@o12~|lNeBrp?%8Q=}!7B3P8>UE{azIR0dfM z!A91zKpOq;5?=Fm*B*9fK}7X_ZHs?D1E@wtWRR-kTLKQ?^>t)&k zpP%=XM)S(agK?X-F2qRg#bmb|a-L`Dzaz(6$r!!)M3;o&oIT(VEPAA2eI~22AT5w= zo0){GIpBK!_2#Z~F=MZ^ev6G@5E%Lbph3MzSHZNG4~8Zw6XWVkeog+MB`6i*zwrJXVQA`_bR} z*caH%k~T6yv`axnm|^C8a|xMlhkZE2iX;NWR){%8OerIhv^@Et`z*H(^`V zcsM+po=R(aKos;^xXwq%eab~L32SLfmrWG^$n8nlrISqGS%BJ-Xt*a<54UUgs!ZNY z-NgXll^urZKtv0U&E+js$R~*&MO5SFM0W=j?Pt)NAVKC0g%G!h;0&>1m@WPM)HbwI zdvliM&tbzQKWyZ1ce)!tgS(C8gIKhqZj7I`5qa5558x?$k0mFlVNAWc$?AA=6RRDh zZ5H!`Mh3aW;c3Nvi${ipNpO({3yu_oTQ`FWTLdptw@XOlQxVc}LYKV9- zO5oQ$)%G>rSUug*F1l$iN{P`^t%om&@E98hw=o_(2dL1HqJ#JXIc$BAB4J#c6N{-) z)4U3Y`Y!P#AaL|1yhfLqoSCPA|KJ0*_A@}ERzXm76` z_t8wkv>T$R7>Rm_#A4OV%MoD{b0or#b6j zX;_eBrcl$@y3$re zO;op6@q-`D3hGy-GZ<6^NRKd>RN`da%ib1YcN$zpj(JAWVHA7b&!;JG*@#G3OtRRc zIM`5Rd9F?VxIy6%;PVSu}bdEcqR_}yOzB<^p3b?SMGy4+7WC>qX7;`8- z0vhEKU_N!uJ4*7#%H4d}wO`MKR1r#k0=SH6<`^*|Dsvq+0(gx#q#m zN}KhtJ|XSu@~esEH2v;VhssjpE=in7H`C>ECGZ5Gv*(7?)D%EJCZ{dQp~O&huU{$n~mp1VP{| zv50Q{81{Yj$cUZ&3*gc0sydHbCP(G5psnTG(8fLgop-=ga!rElY)NcUL2^44G zR^`=F^=J!cC|DF{7{+MoJmpjJzNzUtiAGj`7(d$4LgS z0&vG{4GY&v@|(D&Ys(G0_0XfVPokRx2mQ&SN0OB090j^%7^yBMA0reile&@2%7|6_ zT}0i@Wza^$EyG=8729_4*b-~mqw2mjWfEl0zMTb;!gTNW&);ROc}}mF_5d$S8#bDB z&K21=juMAm3X^I{A$`0%X}B~o9NA&cTgCjcpXJ{uvln0-iIZl*@>kiZil8qft=8ku zVvq$;JYH3fg#~YcH4$}5(Wd*%@lg>pU0}${g<`4HX1sSyac@=%W1~=fLK814C)qyH zoS}DxROZKd2X`VI_g|NqhW}F7P1_M!P`fT(DVX5RZ5JTDtm1MfuI5B+wnBdIXJVgm!Yrdc~R@=ah0B>KIV0RJ=xi23`te_v2{JnNYJY{?;qMS z>2Yh>^hs-eE9t#~bfw0d!Z$kBpVUE&36rkUhOe3kiGHb9@_4$WVXLrl*A1_}=BkAr zdbQ&(%7)X!sEDsqhNJuFy#RDP9};8QwBPW0z-boj@6KP8oaUo-s4iPYn6ZS!wV?3~ zXKA}-%&tg~{c4{H8tD>lI#gXBV{ayHG(M&|&;+Ob8gsGxTJj_ddjCp!)JVucLY9U- z-LNj#>p6v93$#FVHe$HDtKndSS6@FOup4)PoqaZi?;=WeI&79WYnT`^&Mi0EM!z5_ zI-+MjdKU(^ql3HQuh5Oct6gF9FNhm54OXqbc<=iC694TA-h8hdQeP(RuF5+b+E^-% z=zLQoB__sih5TVB1YNMvO-(d%75AjxD7I-t6!D~rs5ar9KZiKg<{{Z6X_pUW9whFUit2fjScEj*C&E3jK1+`!D6o z$#G+_y31}{6w;x$^HEvV+9b1kmHIZ3@0)#CzxbXzS{8*wQfOsPb`3m(`yq#yxrKsNfrFUbH2}6~CHN2vHbSs3TFtk|lHa)*1hnixH7U0gjMCM-nA?%?ClfzUrkc*Jmbs58$FB)L+AqVq-7Nn(p#<6sRJVLV4P0~WXKmT z_H$EVm21@(@deth-EvM~9OfbFZ zBq<1QNE}&=S{~KEJw&PF*SWvNZV$!K>@Wh=f0osqt563?@-+-TGnvme}D4>7;* z)VT&FN!6_ACs3;M+#_CyP{Eh6c^_LY3A=zz_`hb4?Znl6zVmf+)c zfqgKx+O(kFlry3sh<2yDz66&j&$TYmEtxvsLQ{T)W{y%qpd!2h#ZP>0po*gFDKCwH z=Wx&DiY{yg@g}Wi1~(>G$yMG}OC2Ga-?_*A9K7MQwnA()CXV={jJV}s5+B(WX#i|_ z<0wJzB+SqX@uRg;|3j21WA_W7ljfs^YG8OSLv^|IQ11P^@y7Ym>~vk+%2=lv9K<9A zja(;6wN(5LC75@5sYVJUQZ8_$&kgzb9c;ss16SrDPRM{DuBN{83Z3pIvpDLXbJ+%% zoTBa*nzo{ts+IQwbgVc;pLF^F-nR=@b{$&>7D5EV7=c`GIPXqu;Z#+zqfV6`ssP2c&++u3q5To0>D7@ z64q2k*KeCD#Pzev%HCu#x0_KSdkVaU9QVHGSWcYo>Wuc?h{n1T_27vT8;sKak2Dmg z>@m^qsh#~>)q49w?6o=IJL}ih^`B7ENy7VJ+q8J{#Ba9{U*GH`^L2Ey9Ku7Y^sv&R zhzNwNR!W^eGBa==;z$obfq8|2BvenBtAjd8hI_}KpOV*|DlDGon?3H}j5 z7lD=tJB7+Tf^>HM`3Thmmb)B&j3x+IwI62mt1!WATBb~xK4KErl*2cYUZp4+U~RCr z_paK_?*c-8oLFfVA%3s0rTOAFQYVxemJT^Tv^T{i1YiI|5nVZH`4pgD+qootxx}xr zWRh<5=BBv9-D|qjPO1#_>`0$h-x`4vr8M8Qv`mO_9#cuTd3@Mqq?gC%_c)jF;P912 zpeLK64h5UGq>0k5TnAMHx>u=CW+1r1cB}nxAZ0Sg(d4Y$GLd5{H#IlCtvQ^Ydufy?A?Kqlp*}7JMtv!S^80^s7LQOA=+Lp+CdI73% z;C~Njfm8ByB6R%is%U+bFH$DkO=KioYvgiROy92{+heD{M0?*aBkXHAC|0k9mMFos zxN$`bTiy!->Yu!!3z5OW+3RB-iI6f{y1y-*kJ*lX z0l09|H?f5kwuTjwjevh`A#f1Ar*cpGX<=OSnm2nYT)XW1;>?IUXET#?=nsMJN$7o} zh6()iaJbAdyu+O9l+WV3(%!wWpw4|l+c}s+?p1*#hZKVghf(O>;AJZ#Cp3>EjNUej!0PoEG~=48-U z{9I~@<|11);|r7FZ9HiOgaS)Ggn?`c=CzQS*oN|TI{tJ{Nq z?R7JdM4+WoxsVyyGAzc)D!fV)>oE-xvfvQ=83ljH7{D4Xa2*2KKgEHsrwpYW88FN~5koRPpj)yzJcG($v~Y*|xC!KYM|q%v=lh-%C4&4d zy!hY&=S~>sA7cBAj9V(K1QwGmnK(YF7LWT{a(E@msxiVYVqAA~H5~Wj<$NBRlvlQ^ zJIszg-NyeT?i~^0_kYZEll7|U!(-Kggl(LThyK%0&`5{7cW{7tvHU@#1-NIDPV)93 z(RG4TF=pAN|16NO<-`s|Rp9H~cY8vW<^g zxBmdslldCDu?+L){{RT5{{Vyk0Q#<|v=lbu7ZM2Lj}taF@Ogw)-AonKCv6TniWYIAd*LqELYHQ`4VP~M&Lxsa!Q@a@FVlAB!WIi z!VKqB$P@$I3%JHPgXdZ+!>!)cK~M`g>DM$OC@tX#G$>Fvr={h;WZ@-8Ds?IASUWXT zg^N_}L&$YDFk2j`C58#gx+qo|#(9mYZNvawAK!&{s`g7FrsFvt>~f=Pk=mnYB&ZB3w3iO)t56$c5!V?QtkG>GWN`~Zva@G6 zA1^A;cw|-*cfy~oZOI^-R*pf2#sTTIX3rz3WpE^3K%WZf$0scu`m(W^yHrli`%fKS z&z(ADV9MQ~e2kKqIPs;VQ8?9($$=OI=C2sS!csw`uEn~aKdn5LhsCo$c6|tskZ?dG zb*BjC(WJsv!NX*Iem|9HT3QxY>{#jtZGYdDSBd8{n51$5<}=qng<^@}UP_#1&Pgrb zWo86q1|8u^;mX!m-msEvb|C$n{{XdY`kajjmpNTTo$<^Je|}WCZCPzYZQ-&Z@j^9A$|E2RK}2fx{s%todK_ z4e3!Fn5jo?6A)7j-Qa1_D=dA+!vVHw38zs3SL$qGC$PbxC<;}~vRfxU6KNXSQJJL8=i z$pQAH!8_z0R0@Pe`;Pi55|I_aU;)Wx82Q$OsEZhMxr%0f_5=61eznzysh&T{GK!IdC^2M9XATeA z?8j5(icnZPQL5QcHzEIsi!jAyPn zpTd#pjm6A-SrH*ePQ^Ol=M{6&LbJ%lVz@yYh9%b>MN#zCuNR9iVQ-EI?$?Gtwis z)}(0`T0pKzj@_}#Lg1PSWwRtCwzKQTbpkf}{#98fV5CJd=o{d!pN=ZPm7BdH!r9my zZ}qMxo~CcY;smQ|_$zsMgYJ=(20+-sE%{?a7dt%SeH>`8R>}% zn&|IG?9aB#ORN$^U}vh3KMI19xz1m2vOzzNDwJ0?>_`$^oE%`unt%Mfhr2ZKo}{%n zW`yl0;F&?CvC=!Nd$h>Ir)GEjsZq4(OQevW66y*3%~IkVQd>7*6`2CNvWg#~WtHX?R?fi!0YbAbc=I4Z+l!WJX=`dqh+J0Ne#)Tk+`R zm7@$4uP%H1{{RZ;{Ue1N3@2F+iOTs>`DwbMyG+yU;r{^Awmy0X>s?j9YAbiUbQ#|n z71f{2kJAp*EKO`~NKh0eq5v(=&m)niLBpfAMo1=7aEIA4ueg|ujC828RV=a2@~g>rNv_3iw#B59OtLbgXPhJw;) zqdJ%)w2h3956ZJ|+9>--!!T^*h2{=U2bD2FTca}SeX>-M-QOc`jW-Y47HM5}(_9wS zlx(isU~>4;!h$;)AUW1@P@jfB163O2!zpP{4rR>aOb?j-Zga0~_y}Hit&8@y|TtZNJ{2PD~+r*}@^o8lwz8f29Ll zEQvCg-GE__Ec2@Ipf@317+`5T{e9JCY%y^f@4DpgM}m1aWlbWBmVNPp2HQ|fvAm_V zwoO{QvxvUuQ7m#7Ip@70;d}-GwmTehrbAm6@kloI{EZAkStQVTV>s(hxAs`Jy#qPO z$M?>T8PH{lf=)ol>El!sSCZTiA3F?fSHu7$L0=@c<2=Pzo>?ByA}X?Sjf2O!{?&3fqq=xMx6#TC>Bg;P zU}L9Bu{E9alD4?65TM7i{pOP&0!iaCO&gN_(R9#$Ijc|Y2-#WM>fDIt131cs&@+z^ zd}^Cm++1cART&%a-e1zD3k0#X+Gm*#$clHyGlIshO*n?huoe_N&U2HuGtcKkXsQC@ z*_InfR_P(^lTUlR8*{#YuUbs;+l>N3_$PNv>G$OF`BYxX>kz~fIn&+8E_vlu=bC6) zBAv7e5M=ZMs&3wp)J?7(a$>lGAOMYFuPU)|V*FNXg=ql0F%fEndjNA|?;8rG zVFV6gzPX>(;fg>}wPUnymA}H?!hS0Eme(^guqYesd4c0q3*lvHdp-(o9PrN3U0uDj ziZZ}#PBEUe$db7!b_Tf^be)AJgkqt}I?iKv@`*%rV7QhU!^vL=iAZ3YIPo%g=g! zfX&kOmwS6#9P-X8pH-ErV(rB{GVY=gU4 zu{q9s=(07Sqrlvgz|~NC+As4 z2)k!i0^hV51ailPP`GKAX$uWo;O=QIS&pMFNXExCRNt^ljY%x+1cyDUwt6r>BTS!# z+OmTM(y{B4(vfMzu8=dfNC0GlHXSMl5M*x9Wb4RaIaG0&sg?%~Tn=B(e@g17>rwr| z@-@`>&+I9mZ^GoYy0&;OBUI0_#V`ov%=_x(YcZYUX$TO+Z~@3&v7bIwnz1Y?JY{4y z@Bnoat44OtdE8izAnukcG^WtK~j?sTS33v^9@A^m7XDyuWL+DA1T zvCmI^VA^j(FU=!KkddedVz|eLFFHa1u(&a}Vg^r$u7LK?LIBhmGDc2ukxy>dvxy=Y z3c86SI|Is*NzlzPhE>&p&%-p^D?<|*8bxfj06qt$S+(J^-GrO73KjXW&rJMldeY9) z-b}DuA8W4knNfq5%+4KVE!a6FK^P@B2Y)&%i;(@&jiuOwo}mRQOi_YTy%>3DF~8iqyT_<4x3~2r!|jbCeZ~{EXO-%JpTY6rD|E( zg}Ih?*hn*x&->+9uVO=Mx`4ot0p(fp*erUp2-vx|GAjY2=a4g+b*;Z_V^#-H8}!(L z)8ATgs<#d%H5!zVSatsZZN*fzNxOLT@7iRX9q=>xnqf&Yyw*i7RZ6REjQF)#fU8?Z z3Mxo|{6=X{aBeO_6;#7+NB8GP8>6$rpaOw`INvlqp`jNr7LYcj15*bF`{l8!9;Ra= zKFmhBz&Pt#Ttx#TDL7KPvO4en{{T7?4BR?7HEPm;u<_T11w(jpFK# zTXMyK-Ep%Y8jE}9kwl8b41!dSU*0RMAZg+Slne|Ew>)+FQC(WVvZrAx$=WE!G66Z< z4DVVjX~xS?O%h~DA4Jd=jk0jVBcCc0WfE&>63rS&QVv~SQ*(!GP>r>mB7Z1n+D7|HtGU7zWv8QoYcxf=fbWoCVxH-oC>O(^E z%d9dIM$E0gf4-C)Iqsl`h{tsdjFB>EZ8+8#H!Zo=xZ?Q-8ZMI~A!8{D`3={=j8;^t zqG<_o;0%HDtJeOrEIJw|RZub*VC0jw^){R$?&Y=i49m+PetfGce$5sZ$%5|gNTWsx z7*41A^P!gF2;z}uWihxRl%AEP2cs9VIPGRwqXQXk^ACqFt!&wPC&EJZmk8G`8+DPp zzW^#%6l}4d8859xZ*BW3-dW;|7}-^WNuGxtM)iK%g?d-SEhdU6#hS{12A#ko#Nc^X zqg&e8TiXu82rY>FssK2u-?c3a#VyZh>FtI5E20zT?Jb=7T%oT6JdwtMlLWdFPH+V!Zd(yv?pVlarBckRhf*+k^!HX=$vizR3gv`)LIfw_&kLzrjby_ag65#ax}#V zfr}l%*dDc{w$@iRg5iRxO`PiIp0%Tu0g)DsYuaZXT1h^V07i-|`QKN%?Ic4MHDCe(#(a5Ztyvb1Xe3mOuAm%|%YI|Zwykb$n|vy6sq%MP3L z#t*rK zs^>3A&8qMkUB{*q9L0c8H|hmix)DucV1_~^?EwR>H~mdgO9g0Af&KoF2srEh{{Tue z44Oh|AcD9A;P0LDQ*OaFYH*8mjwH94mr^EshbNUt;yg3f9^O@zI4w~jHOMv07jT#o+$tydgt zSY;%J7}9s&`!$vJdpwCg(|JcpOUmplO_!lQohkmR3-FP#*h{^DfqQ)H2|aVxvEf+-t1?Kdg2ju2_do+b*{pcsyB8?z?)}{=F^yR3 z^B)=%Vl^gumk+vWT^1vda5+`W$067Nd$E!{$u;s`iL}1E8okNxGK~s+Pa=K?-B<7U z!CoN>AP$cvkaM!AIM2V!%Cd2%M%=$?w`w~rDbKSV#+SP zmZ%^`h$q=9!A^D{^7#sulv|{IsMHnrQa9U>`PXGTIpjwHoP^Jq=ZZXND)v_v$i`^g zWm_BgZg%qNOTMxiMCpxarMxk|DlMc`o!yw@Q6L|+PrtZ`##Nn5xfsXcMTsPlQu$<( zHfWwUDS&bhfaZPmlRR$Qy2q)`a5^_$b*D6>7jSoBzrT8=brbrwP#H+hFmievRV|St zI^i5h2q-*G#~xJS3{sVT-E|IR`@E|{8&29h%>mAyL&qQ1q;Ty+w2l-b9J+&BD2EhN zwPv%5JDp1XnI(HLbAi4od^Kg_{95j4^8^sOJUyg+?JT=sa`ER^nkg6(A|aO{S3HMP zS2!iR+T9-0Q^PB3*N{#RP5O%49BDP|Qna)O5a97i43m*9#H$$z+MMa|z~nvxu&1!I zZuHi12@h3G2j($euV-PxQaLUf>PZGRApz0vtll@mEN-nAM7r~k9flck;z8e-`PA}~ zdnG~D+2)H3G2HfO^WjG7T#@z7TeN5!h?wPjgpCLt(hlA`j(Mr#+%E3g=~=@rqA=Lm zhm|Tm<>Nkv)Km=TYSW$jB}n_*9tmLZi^R>-um`o3wVZT51LaoaSmGF!k}w9_*UIoq ztCWsd5?4ed91gX7M$CJ}ocY!d6K>l#T}n&Ap)K4XojT+v%WBTzJXvhw5=_AX*+AxL z;4Yqd1IDsFCg91$EriJA%Nm~UagkZZ2~MY^bS#{saT^W!;wz%oMrI=}=j;#Gui3#A zAgpK=ah44V$|=hnXS(yO?m^n&LPh1N3M#&9;O zyhhH_{sG&nfWx~e_JHvQx|KY5cL)QpA34tdpJWkBK~fOaH~l`V9O z9BQgtKp>wS)mC{i-FCqkAR19r1;{QN)MT^5gCl|o8;oy5dvS3jN*-lko30ywrBnUm zFwSy%`BC!)S;pIBZVfsCliW1$4Svu+*{Y?oxbULwJB2aK=9g3iGAjBSy(pHWJ# zpbaBEnK>e2Pd@RktlH{Sfc5?u@Uu><8PbC*tA1SmwD-7UbvB~KVjwmS3t$tUrFC_9 zb4mF&@`d)T6ZVKmkqN=iJ-5&4TX5W@^TN_gwa_Vxtt%SpNW(4mS~t z)kTepu?h)o@<%^BRXfta+sfn&#u zDxKoIU@{S&c|7tz-nzQAAh&G3tv6<_+N3Rm;n00eUE4}sI1W+sf<3H~4r{Bazv2lQ zHx}_&ahqm>BmzY*j{)ISq>z=kUWNKtEgTDEisXnOKBx{FNX?qwoXR%5Zgy2 zZ!V@uWpM_j=%i$k;CfeAP_zgx6A-Xj3Ofcs3gdhXw%q;y06Khb&WR<%nFgO^3~tBt zuCAu{UK^<+ zKUynES$!tqff$sPWmX5S6jxVP-7>7PCHN_E$)EPs$yQ|%%0cV5KgxwJB*2M%rIVkJ zbeihw!!Pqz2YhZ1QY$)J=|s@QpKO8d7_P3VNG#TXe(yowR&$?qUy2yg zEm>dyZHJaWAzfWn0+O~q!L`U^)L0_yPcjGuel=sfxm7qE{q@z=*^DLNg(_KrL7V~& zD&{3%5VL7=LkjBZ=xI@yd@k-@6s-=UEEw*gJhRTX?YNz&WCGoqIT$vE0|RmSS65dw zw2NK@`d^MB{;DE|7*R{dp>Rfb_g9>$Xn2f>*kj22E32x#naLY`9l`AmIpY zy1J^^8P0LMCjNk&o6Nfp)AITE8xGHPh@E11eo!y^R#b?Y9A060ycBb|qYPON{}o-+@vaOthf5FINs(Ho|dhBPmd@Z~jmXKL!|rT+kpoKf@t046V_c5uHC zmE0YUqC7~&W!&4!29a>WFfvy?JS(fKn;U0VMN&7c!kbj>0g+j76rF+SeDPl^#yAfT zFs;C}g>BjQRPL}O^z!{{tE-}Vg`ycma2schqqUYufpZ?<5;0#R#cdke=15(GG7<}C zIU}ugbuNo6=Gv37dJgx0m7IbyG)zksi)z#Di|Jiy%v3CFf literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/docs/img/imageconversion_example_03_after.jpg b/include/ezcomponents/ImageConversion/docs/img/imageconversion_example_03_after.jpg new file mode 100644 index 0000000000000000000000000000000000000000..34d2e77819d80ff1a18c570bde16a77686f95f60 GIT binary patch literal 7208 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/docs/img/imageconversion_example_03_before.jpg b/include/ezcomponents/ImageConversion/docs/img/imageconversion_example_03_before.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b6747996e4748ab4eea5aa23b535393a7350b05c GIT binary patch literal 14312 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

?@Qu`_Cn8Yy{?=G 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 VG1DC#>YY{S?rinGg1-Loe*xbKa@zm^ literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/docs/img/imageconversion_example_04_before.jpg b/include/ezcomponents/ImageConversion/docs/img/imageconversion_example_04_before.jpg new file mode 100644 index 0000000000000000000000000000000000000000..549b4b3841dc449488670e36dca30b01fa1a4d9e GIT binary patch literal 18879 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 RUMO(7xZb*yXY*P||JkCvey#uj literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/docs/img/imageconversion_example_05_after.jpg b/include/ezcomponents/ImageConversion/docs/img/imageconversion_example_05_after.jpg new file mode 100644 index 0000000000000000000000000000000000000000..515134345f9add7b8b3e362116050f30be27e848 GIT binary patch literal 3105 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 Q7MZV1^z^nFxRcR;08}K09RL6T literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/docs/img/imageconversion_example_05_before.jpg b/include/ezcomponents/ImageConversion/docs/img/imageconversion_example_05_before.jpg new file mode 100644 index 0000000000000000000000000000000000000000..701873a8ceef122530705a3a8200de8abb83ce0d GIT binary patch literal 68004 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/docs/img/watermark.png b/include/ezcomponents/ImageConversion/docs/img/watermark.png new file mode 100644 index 0000000000000000000000000000000000000000..797a0d9c49ab093cdbb580ea8cf7f6b6c1cceb81 GIT binary patch literal 797 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/docs/tutorial.txt b/include/ezcomponents/ImageConversion/docs/tutorial.txt new file mode 100644 index 000000000..f04dfdb65 --- /dev/null +++ b/include/ezcomponents/ImageConversion/docs/tutorial.txt @@ -0,0 +1,243 @@ +eZ Components - ImageConversion +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. contents:: Table of Contents + :depth: 2 + +Introduction +============ + +The ImageConversion component provides image manipulation tools. It +enables you to perform filter actions (such as scaling, changing the +colorspace, adding a swirl effect) and to convert between different MIME image +types. Filters and conversions are grouped as +"transformations", which can be globally configured and accessed from anywhere +in the application. Conversions and filters can be performed through different +handlers (currently supported are PHP's GD extension and the external ImageMagick +program). ImageConversion is capable of automatically selecting an appropriate +handler. You can also set handler priorities. + +Class overview +============== + +This section gives you an overview of the main classes. + +ezcImageConverter + This is the main class that collects all transformations, communicates with + the handlers and applies filters and conversions. + +ezcImageFilter + This class is used to represent the configuration of a filter. + +ezcImageTransformation + A transformation can contain any number of filters. It also specifies which + output MIME types are acceptable for the transformation. + + +Usage +===== + +Converting MIME types +--------------------- + +The following example creates a very simple transformation to convert any other +image type into JPEG: + +.. include:: tutorial_example_01_simpleconvert.php + :literal: + +First, the settings for ezcImageConverter are defined (lines 7 to 12) using +ezcImageConverterSettings. Whenever ezcImageConverter is +instantiated, it needs to know which handlers are available. The order in the +ezcImageHandlerSettings array defines the priority of the handlers. In this +case, ezcImageConverter will check if a given filter or conversion can be +performed by the GD handler. If not, it will check the ImageMagick handler. On +line 14, ezcImageConverter is instantiated using the defined settings. + +Line 16 shows how a transformation is created. The first parameter to +ezcImageConverter::createTransformation() defines the name of the +transformation, while the second parameter would usually contain filters (which +are not used here). Instead, just one output MIME type is defined as the third +parameter. As a result, this transformation returns images of the type +"image/jpeg". + +On lines 21 to 24, the transformation is applied. The first +parameter to ezcImageConverter::transform() contains the name of the +transformation to apply. The second one specifies the file to transform, while the +third one specifies the desired output filename. Aside from +exceptions of the type ezcBaseFileException, the ezcImageTransformation::transform() +method can only throw exceptions of the type ezcImageTransformationException, which +we catch here to print out an error message. + +The input and output images are shown below: + +=================== ==================== +|example_01_before| |example_01_after| +BMP version (92k) Converted JPEG (24k) +=================== ==================== + +.. |example_01_before| image:: img/imageconversion_example_01_before.bmp + :alt: Original BMP (92k). + +.. |example_01_after| image:: img/imageconversion_example_01_after.jpg + :alt: Converted JPEG (24k). + +Simple filtering +---------------- + +The next example shows a transformation that, in addition to the converting to +JPEG, uses a filter to scale images: + +.. include:: tutorial_example_02_simpletrans.php + :literal: + +After instantiating ezcImageConverter, we define the filters to apply. We apply +only one filter in this example. Each filter definition must be an instance of +ezcImageFilter. The first parameter to the constructor of ezcImageFilter +(ezcImageFilter::__construct()) is the name of the filter to use. The second +parameter is an array of settings for the filter. The filter name must +correspond to a method name for one of the filter interfaces: + +- ezcImageGeometryFilters +- ezcImageColorspaceFilters +- ezcImageEffectFilters + +The settings array must contain all parameters that the specific filter method +expects and the array keys must correspond to the names of the +parameters. For example, the scale filter used here is defined in +ezcImageGeometryFilters::scale(). The available image handlers support the +following filters: + +- ezcImageGdFilters + + * ezcImageGeometryFilters + * ezcImageColorspaceFilters + +- ezcImageImagemagickFilters + + * ezcImageGeometryFilters + * ezcImageColorspaceFilters + * ezcImageEffectFilters + +The filter definition shown here makes ezcImageConverter scale images to a box +of 320x240 pixels. Images will only be scaled if they are larger than the +given size, but not if they are already smaller or fit exactly. + +The rest of the example is pretty much the same as example 1. To keep the +example images web-friendly, we use a JPEG image as the source file here: + +Original image (450x246) +++++++++++++++++++++++++ + +.. image:: img/imageconversion_example_02_before.jpg + :alt: Original JPEG image. + +Converted image (320x175) ++++++++++++++++++++++++++ + +.. image:: img/imageconversion_example_02_after.jpg + :alt: Converted JPEG image. + +Complex transformations +----------------------- + +The next example shows a more advanced transformation and some other features: + +.. include:: tutorial_example_03_complextrans.php + :literal: + +In this example, there is a second parameter to the constructor of +ezcImageConverterSettings::__construct(), which defines explicit conversions +between MIME types (line 13). In this case, we define that GIF images should be +converted to PNG. When the transformation takes place, it will first check if an +explicit conversion has been defined for the input MIME type. If this is the +case, the explicit conversion will be performed. If not, the first available +output MIME type will be chosen. Note that you have to add the new MIME output +type "image/png" to the allowed output types of the transformation (see line +43). + +In the transformation definition we define 3 filters. Note that the +order of filters is important here. The first filter is "scale" again, +after which the colorspace of the image is reduced to greyscale. The last +filter adds a 5-pixel border with a near-white grey value to the image. + +For this web tutorial, a JPEG image is once again used as the source: + +Original image (400x300): ++++++++++++++++++++++++++ + +.. image:: img/imageconversion_example_03_before.jpg + :alt: Original JPEG image. + +Converted image (330x250): +++++++++++++++++++++++++++ + +.. image:: img/imageconversion_example_03_after.jpg + :alt: Converted JPEG image. + +.. _`downloaded here`: img/imageconversion_example_03.bmp + +Adding watermarks +----------------- + +A very convenient filter is the watermark filter, which allows you to place a +your personal sign onto an image to ensure your copyright being kept: + +.. include:: tutorial_example_04_watermark.php + :literal: + +This code snippet creates a simple transformation to place the watermark. The +'image' parameter contains the path to the watermark image, while posX and posY +define, where the watermark will be placed on the converted image. The +positions are defined from the bottom left corner, so in this case therer will +be 10 pixel left between the watermark and the image border. + +Original image (without watermark): ++++++++++++++++++++++++++++++++++++ + +.. image:: img/imageconversion_example_04_before.jpg + :alt: Original JPEG image without watermark. + +Converted image (with watermark): ++++++++++++++++++++++++++++++++++ + +.. image:: img/imageconversion_example_04_after.jpg + :alt: Converted JPEG image with watermark. + +It is also possible to get the size of the watermark image adjusted on the fly +and a second filter is available, which allows to define all values as +percentage values, in respect to the destination image. + +Creating thumbnails +------------------- + +The following example shows how to create a thumbnail from an image very +easily: + +.. include:: tutorial_example_05_thumbnail.php + :literal: + +While there is also a 'croppedThumbnail' filter available, which croppes +overhead from the scaled image, this filter fills the overhead from scaling +with the given fill color. The image is automatically scaled down to fit the +given thumbnail size. + +Original image (original size): ++++++++++++++++++++++++++++++++ + +.. image:: img/imageconversion_example_05_before.jpg + :alt: Original JPEG image without watermark. + +Converted image (thumbnail): +++++++++++++++++++++++++++++ + +.. image:: img/imageconversion_example_05_after.jpg + :alt: Converted JPEG image with watermark. + + +.. + Local Variables: + mode: rst + fill-column: 79 + End: + vim: et syn=rst tw=79 diff --git a/include/ezcomponents/ImageConversion/docs/tutorial_autoload.php b/include/ezcomponents/ImageConversion/docs/tutorial_autoload.php new file mode 100644 index 000000000..66b1dcf1e --- /dev/null +++ b/include/ezcomponents/ImageConversion/docs/tutorial_autoload.php @@ -0,0 +1,20 @@ + diff --git a/include/ezcomponents/ImageConversion/docs/tutorial_example_01_simpleconvert.php b/include/ezcomponents/ImageConversion/docs/tutorial_example_01_simpleconvert.php new file mode 100644 index 000000000..5bce91029 --- /dev/null +++ b/include/ezcomponents/ImageConversion/docs/tutorial_example_01_simpleconvert.php @@ -0,0 +1,32 @@ +createTransformation( 'jpeg', array(), array( 'image/jpeg' ) ); + +try +{ + $converter->transform( + 'jpeg', + $tutorialPath.'/img/imageconversion_example_01_before.bmp', + $tutorialPath.'/img/imageconversion_example_01_after.jpg' + ); +} +catch ( ezcImageTransformationException $e) +{ + die( "Error transforming the image: <{$e->getMessage()}>" ); +} + + +?> diff --git a/include/ezcomponents/ImageConversion/docs/tutorial_example_02_simpletrans.php b/include/ezcomponents/ImageConversion/docs/tutorial_example_02_simpletrans.php new file mode 100644 index 000000000..c07166cb8 --- /dev/null +++ b/include/ezcomponents/ImageConversion/docs/tutorial_example_02_simpletrans.php @@ -0,0 +1,42 @@ + 320, + 'height' => 240, + 'direction' => ezcImageGeometryFilters::SCALE_DOWN, + ) + ), +); + +$converter->createTransformation( 'preview', $filters, array( 'image/jpeg' ) ); + +try +{ + $converter->transform( + 'preview', + $tutorialPath.'/img/imageconversion_example_02_before.jpg', + $tutorialPath.'/img/imageconversion_example_02_after.jpg' + ); +} +catch ( ezcImageTransformationException $e) +{ + die( "Error transforming the image: <{$e->getMessage()}>" ); +} + +?> diff --git a/include/ezcomponents/ImageConversion/docs/tutorial_example_03_complextrans.php b/include/ezcomponents/ImageConversion/docs/tutorial_example_03_complextrans.php new file mode 100644 index 000000000..af385cd97 --- /dev/null +++ b/include/ezcomponents/ImageConversion/docs/tutorial_example_03_complextrans.php @@ -0,0 +1,58 @@ + 'image/png', + ) +); + +$converter = new ezcImageConverter( $settings ); + +$filters = array( + new ezcImageFilter( + 'scale', + array( + 'width' => 320, + 'height' => 240, + 'direction' => ezcImageGeometryFilters::SCALE_DOWN, + ) + ), + new ezcImageFilter( + 'colorspace', + array( + 'space' => ezcImageColorspaceFilters::COLORSPACE_GREY, + ) + ), + new ezcImageFilter( + 'border', + array( + 'width' => 5, + 'color' => array( 240, 240, 240 ), + ) + ), +); + +$converter->createTransformation( 'oldphoto', $filters, array( 'image/jpeg', 'image/png' ) ); + +try +{ + $converter->transform( + 'oldphoto', + $tutorialPath.'/img/imageconversion_example_03_before.jpg', + $tutorialPath.'/img/imageconversion_example_03_after.jpg' + ); +} +catch ( ezcImageTransformationException $e) +{ + die( "Error transforming the image: <{$e->getMessage()}>" ); +} + +?> diff --git a/include/ezcomponents/ImageConversion/docs/tutorial_example_04_watermark.php b/include/ezcomponents/ImageConversion/docs/tutorial_example_04_watermark.php new file mode 100644 index 000000000..78c8befaa --- /dev/null +++ b/include/ezcomponents/ImageConversion/docs/tutorial_example_04_watermark.php @@ -0,0 +1,45 @@ + 'image/png', + ) +); + +$converter = new ezcImageConverter( $settings ); + +$filters = array( + new ezcImageFilter( + 'watermarkAbsolute', + array( + 'image' => $tutorialPath . '/img/watermark.png', + 'posX' => -52, + 'posY' => -25, + ) + ) +); + +$converter->createTransformation( 'watermark', $filters, array( 'image/jpeg', 'image/png' ) ); + +try +{ + $converter->transform( + 'watermark', + $tutorialPath.'/img/imageconversion_example_04_before.jpg', + $tutorialPath.'/img/imageconversion_example_04_after.jpg' + ); +} +catch ( ezcImageTransformationException $e) +{ + die( "Error transforming the image: <{$e->getMessage()}>" ); +} + +?> diff --git a/include/ezcomponents/ImageConversion/docs/tutorial_example_05_thumbnail.php b/include/ezcomponents/ImageConversion/docs/tutorial_example_05_thumbnail.php new file mode 100644 index 000000000..b76977200 --- /dev/null +++ b/include/ezcomponents/ImageConversion/docs/tutorial_example_05_thumbnail.php @@ -0,0 +1,49 @@ + 'image/png', + ) +); + +$converter = new ezcImageConverter( $settings ); + +$filters = array( + new ezcImageFilter( + 'filledThumbnail', + array( + 'width' => 100, + 'height' => 100, + 'color' => array( + 200, + 200, + 200, + ), + ) + ) +); + +$converter->createTransformation( 'thumbnail', $filters, array( 'image/jpeg', 'image/png' ) ); + +try +{ + $converter->transform( + 'thumbnail', + $tutorialPath.'/img/imageconversion_example_05_before.jpg', + $tutorialPath.'/img/imageconversion_example_05_after.jpg' + ); +} +catch ( ezcImageTransformationException $e) +{ + die( "Error transforming the image: <{$e->getMessage()}>" ); +} + +?> diff --git a/include/ezcomponents/ImageConversion/review-1.3.4.txt b/include/ezcomponents/ImageConversion/review-1.3.4.txt new file mode 100644 index 000000000..053c70c5a --- /dev/null +++ b/include/ezcomponents/ImageConversion/review-1.3.4.txt @@ -0,0 +1,4 @@ +[X] The class documentation for ezcImageFilter should mention (in the ctor) + where the names of the different filters can be found. Perhaps we + should add a list of all supported filters somewhere. +[X] Code coverage is pretty low, only 85%. diff --git a/include/ezcomponents/ImageConversion/src/converter.php b/include/ezcomponents/ImageConversion/src/converter.php new file mode 100644 index 000000000..860920420 --- /dev/null +++ b/include/ezcomponents/ImageConversion/src/converter.php @@ -0,0 +1,527 @@ + + *

  • ezcImageGdHandler + *
      + *
    • Uses PHP's GD extension for image manipulation.
    • + *
    • Implements the following filter interfaces + *
        + *
      • {@link ezcImageGeometryFilters}
      • + *
      • {@link ezcImageColorspaceFilters}
      • + *
      + *
    • + *
    + *
  • + *
  • ezcImageImagemagickHandler + *
      + *
    • Uses the external "convert" program, contained in ImageMagick
    • + *
    • Implements the following interfaces: + *
        + *
      • {@link ezcImageGeometryFilters}
      • + *
      • {@link ezcImageColorspaceFilters}
      • + *
      • {@link ezcImageEffectFilters}
      • + *
      + *
    • + *
    + *
  • + * + * + * A general example, how to use ezcImageConversion to convert images: + * + * // Prepare settings for ezcImageConverter + * // Defines the handlers to utilize and auto conversions. + * $settings = new ezcImageConverterSettings( + * array( + * new ezcImageHandlerSettings( 'GD', 'ezcImageGdHandler' ), + * new ezcImageHandlerSettings( 'ImageMagick', 'ezcImageImagemagickHandler' ), + * ), + * array( + * 'image/gif' => 'image/png', + * 'image/bmp' => 'image/jpeg', + * ) + * ); + * + * // Create the converter itself. + * $converter = new ezcImageConverter( $settings ); + * + * // Define a transformation + * $filters = array( + * new ezcImageFilter( + * 'scaleWidth', + * array( + * 'width' => 100, + * 'direction' => ezcImageGeometryFilters::SCALE_BOTH, + * ) + * ), + * new ezcImageFilter( + * 'colorspace', + * array( + * 'space' => ezcImageColorspaceFilters::COLORSPACE_GREY, + * ) + * ), + * ); + * + * // Which MIME types the conversion may output + * $mimeTypes = array( 'image/jpeg', 'image/png' ); + * + * // Create the transformation inside the manager + * $converter->createTransformation( 'thumbnail', $filters, $mimeTypes ); + * + * // Transform an image. + * $converter->transform( 'thumbnail', dirname(__FILE__).'/jpeg.jpg', dirname(__FILE__).'/jpeg_thumb.jpg' ); + * + * + * It's recommended to create only a single ezcImageConverter instance in your + * application to avoid creating multiple instances of it's internal objects. + * You can implement a singleton pattern for this, which might look similar to + * the following example: + * + * function getImageConverterInstance() + * { + * if ( !isset( $GLOBALS['_ezcImageConverterInstance'] ) ) + * { + * // Prepare settings for ezcImageConverter + * // Defines the handlers to utilize and auto conversions. + * $settings = new ezcImageConverterSettings( + * array( + * new ezcImageHandlerSettings( 'GD', 'ezcImageGdHandler' ), + * new ezcImageHandlerSettings( 'ImageMagick', 'ezcImageImagemagickHandler' ), + * ), + * array( + * 'image/gif' => 'image/png', + * 'image/bmp' => 'image/jpeg', + * ) + * ); + * + * + * // Create the converter itself. + * $converter = new ezcImageConverter( $settings ); + * + * // Define a transformation + * $filters = array( + * new ezcImageFilter( + * 'scale', + * array( + * 'width' => 100, + * 'height' => 300, + * 'direction' => ezcImageGeometryFilters::SCALE_BOTH, + * ) + * ), + * new ezcImageFilter( + * 'colorspace', + * array( + * 'space' => ezcImageColorspaceFilters::COLORSPACE_SEPIA, + * ) + * ), + * new ezcImageFilter( + * 'border', + * array( + * 'width' => 5, + * 'color' => array(255, 0, 0), + * ) + * ), + * ); + * + * // Which MIME types the conversion may output + * $mimeTypes = array( 'image/jpeg', 'image/png' ); + * + * // Create the transformation inside the manager + * $converter->createTransformation( 'funny', $filters, $mimeTypes ); + * + * // Assign singleton instance + * $GLOBALS['_ezcImageConverterInstance'] = $converter; + * } + * + * // Return singleton instance + * return $GLOBALS['_ezcImageConverterInstance']; + * } + * + * // ... + * // Somewhere else in the code... + * // Transform an image. + * getImageConverterInstance()->transform( 'funny', dirname(__FILE__).'/jpeg.jpg', dirname(__FILE__).'/jpeg_singleton.jpg' ); + * + * + * + * @see ezcImageHandler + * @see ezcImageTransformation + * + * @package ImageConversion + * @version 1.3.5 + * @mainclass + */ +class ezcImageConverter +{ + /** + * Manager settings + * Settings basis for all image manipulations. + * + * @var ezcImageConverterSettings + */ + protected $settings; + + /** + * Keeps the handlers used by the converter. + * + * @var array(ezcImageHandler) + */ + protected $handlers = array(); + + /** + * Stores transformation registered with this converter. + * + * @var array + */ + protected $transformations = array(); + + /** + * Initialize converter with settings object. + * The ezcImageConverter can be directly instantiated, but it's + * highly recommended to use a manual singleton implementation + * to have just 1 instance of a ezcImageConverter per Request. + * + * ATTENTION: The ezcImageConverter does not support animated + * GIFs. Animated GIFs will simply be ignored by all filters and + * conversions. + * + * @param ezcImageConverterSettings $settings Settings for the converter. + * + * @throws ezcImageHandlerSettingsInvalidException + * If handler settings are invalid. + * @throws ezcImageMimeTypeUnsupportedException + * If a given MIME type is not supported. + */ + public function __construct( ezcImageConverterSettings $settings ) + { + // Initialize handlers + foreach ( $settings->handlers as $i => $handlerSettings ) + { + if ( !$handlerSettings instanceof ezcImageHandlerSettings ) + { + throw new ezcImageHandlerSettingsInvalidException(); + } + $handlerClass = $handlerSettings->className; + if ( !ezcBaseFeatures::classExists( $handlerClass ) ) + { + throw new ezcImageHandlerNotAvailableException( $handlerClass ); + } + $handler = new $handlerClass( $handlerSettings ); + $this->handlers[$handlerSettings->referenceName] = $handler; + } + // Check implicit conversions + foreach ( $settings->conversions as $mimeIn => $mimeOut ) + { + if ( !$this->allowsInput( $mimeIn ) ) + { + throw new ezcImageMimeTypeUnsupportedException( $mimeIn, 'input' ); + } + if ( !$this->allowsOutput( $mimeOut ) ) + { + throw new ezcImageMimeTypeUnsupportedException( $mimeOut, 'output' ); + } + } + $this->settings = $settings; + } + + /** + * Create a transformation in the manager. + * + * Creates a transformation and stores it in the manager. A reference to the + * transformation is returned by this method for further manipulation and + * to set options on it. The $name can later be used to remove a + * transfromation using {@link removeTransformation()} or to execute it + * using {@link transform()}. The $filters and $mimeOut parameters specify + * the transformation actions as described with {@link + * ezcImageTransformation::__construct()}. The $saveOptions are used when + * the finally created image is saved and can configure compression and + * quality options. + * + * @param string $name Name for the transformation. + * @param array(ezcImageFilter) $filters Filters. + * @param array(string) $mimeOut Output MIME types. + * @param ezcImageSaveOptions $saveOptions Save options. + * + * @return ezcImageTransformation + * + * @throws ezcImageFiltersException + * If a given filter does not exist. + * @throws ezcImageTransformationAlreadyExists + * If a transformation with the given name does already exist. + */ + public function createTransformation( $name, array $filters, array $mimeOut, ezcImageSaveOptions $saveOptions = null ) + { + if ( isset( $this->transformations[$name] ) ) + { + throw new ezcImageTransformationAlreadyExistsException( $name ); + } + $this->transformations[$name] = new ezcImageTransformation( $this, $name, $filters, $mimeOut, $saveOptions ); + return $this->transformations[$name]; + } + + /** + * Removes a transformation from the manager. + * + * @param string $name Name of the transformation to remove + * + * @return ezcImageTransformation The removed transformation + * + * @throws ezcImageTransformationNotAvailableExeption + * If the requested transformation is unknown. + */ + public function removeTransformation( $name ) + { + if ( !isset( $this->transformations[$name] ) ) + { + throw new ezcImageTransformationNotAvailableException( $name ); + } + unset( $this->transformations[$name] ); + } + + /** + * Apply transformation on a file. + * This applies the given transformation to the given file. + * + * @param string $name Name of the transformation to perform + * @param string $inFile The file to transform + * @param string $outFile The file to save transformed version to + * + * @throws ezcImageTransformationNotAvailableExeption + * If the requested transformation is unknown. + * @throws ezcImageTransformationException If an error occurs during the + * transformation. The returned exception contains the exception + * the problem resulted from in it's public $parent attribute. + * @throws ezcBaseFileNotFoundException If the file you are trying to + * transform does not exists. + * @throws ezcBaseFilePermissionException If the file you are trying to + * transform is not readable. + */ + public function transform( $name, $inFile, $outFile ) + { + if ( !isset( $this->transformations[$name] ) ) + { + throw new ezcImageTransformationNotAvailableException( $name ); + } + $this->transformations[$name]->transform( $inFile, $outFile ); + } + + /** + * Returns if a handler is found, supporting the given MIME type for output. + * + * @param string $mime The MIME type to check for. + * @return bool Whether the MIME type is supported. + */ + public function allowsInput( $mime ) + { + foreach ( $this->handlers as $handler ) + { + if ( $handler->allowsInput( $mime ) ) + { + return true; + } + } + return false; + } + + /** + * Returns if a handler is found, supporting the given MIME type for output. + * + * @param string $mime The MIME type to check for. + * @return bool Whether the MIME type is supported. + */ + public function allowsOutput( $mime ) + { + foreach ( $this->handlers as $handler ) + { + if ( $handler->allowsOutput( $mime ) ) + { + return true; + } + } + return false; + } + + /** + * Returns the MIME type that will be outputted for a given input type. + * Checks whether the given input type can be processed. If not, an + * exception is thrown. Checks then, if an implicit conversion for that + * MIME type is defined. If so, outputs the given output MIME type. In + * every other case, just outputs the MIME type given, because no + * conversion is implicitly required. + * + * @param string $mimeIn Input MIME type. + * @return string Output MIME type. + * + * @throws ezcImageMimeTypeUnsupportedException + * If the input MIME type is not supported. + */ + public function getMimeOut( $mimeIn ) + { + if ( $this->allowsInput( $mimeIn ) === false ) + { + throw new ezcImageMimeTypeUnsupportedException( $mimeIn, 'input' ); + } + if ( isset( $this->settings->conversions[$mimeIn] ) ) + { + return $this->settings->conversions[$mimeIn]; + } + return $mimeIn; + } + + /** + * Returns if a given filter is available. + * Returns either an array of handler names this filter + * is available in or false if the filter is not enabled. + * + * @param string $name Name of the filter to query existance for + * + * @return mixed Array of handlers on success, otherwise false. + */ + public function hasFilter( $name ) + { + foreach ( $this->handlers as $handler ) + { + if ( $handler->hasFilter( $name ) ) + { + return true; + } + } + return false; + } + + /** + * Returns a list of enabled filters. + * Gives you an overview on filters enabled in the manager. + * Format is: + * + * array( + * '', + * ); + * + * + * @return array(string) + */ + public function getFilterNames() + { + $filters = array(); + foreach ( $this->handlers as $handler ) + { + $filters = array_merge( $filters, $handler->getFilterNames() ); + } + return array_unique( $filters ); + } + + /** + * Apply a single filter to an image. + * Applies just a single filter to an image. Optionally you can select + * a handler yourself, which is not recommended, but possible. If the + * specific handler does not have that filter, ImageConverter will try + * to fall back on another handler. + * + * @param ezcImageFilter $filter Filter object to apply. + * @param string $inFile Name of the input file. + * @param string $outFile Name of the output file. + * @param string $handlerName + * To choose a specific handler, this is the reference named passed + * to {@link ezcImageHandlerSettings}. + * @return void + * + * + * @throws ezcImageHandlerNotAvailableException + * If fitting handler is not available. + * @throws ezcImageFilterNotAvailableException + * If filter is not available. + * @throws ezcImageFileNameInvalidException + * If an invalid character (", ', $) is found in the file name. + */ + public function applyFilter( ezcImageFilter $filter, $inFile, $outFile, $handlerName = null ) + { + $handlerObj = false; + // Do we have an explicit handler given? + if ( $handlerName !== null ) + { + if ( !isset( $this->handlers[$handlerName] ) ) + { + throw new ezcImageHandlerNotAvailableException( $handlerName ); + } + if ( $this->handlers[$handlerName]->hasFilter( $filter->name ) === true ) + { + $handlerObj = $this->handlers[$handlerName]; + } + } + // Either no handler explicitly given or try to fall back. + if ( $handlerObj === false ) + { + foreach ( $this->handlers as $regHandler ) + { + if ( $regHandler->hasFilter( $filter->name ) ) + { + $handlerObj = $regHandler; + break; + } + } + } + // No handler found to apply filter with. + if ( $handlerObj === false ) + { + throw new ezcImageFilterNotAvailableException( $filter->name ); + } + $imgRef = $handlerObj->load( $inFile ); + $handlerObj->applyFilter( $imgRef, $filter ); + $handlerObj->save( $imgRef, $outFile ); + } + + /** + * Returns a handler object for direct use. + * Returns the handler with the highest priority, that supports the given + * filter, MIME input type and MIME output type. All parameters are + * optional, if none is specified, the highest prioritized handler is + * returned. + * + * If no handler is found, that supports the criteria named, an exception + * of type {@link ezcImageHandlerNotAvailableException} will be thrown. + * + * @param string $filterName Name of the filter to search for. + * @param string $mimeIn Input MIME type. + * @param string $mimeOut Output MIME type. + * + * @return ezcImageHandler + * + * @throws ezcImageHandlerNotAvailableException + * If a handler for the given specification could not be found. + */ + public function getHandler( $filterName = null, $mimeIn = null, $mimeOut = null ) + { + foreach ( $this->handlers as $handler ) + { + if ( ( !isset( $filterName ) || $handler->hasFilter( $filterName ) ) + && ( !isset( $mimeIn ) || $handler->allowsInput( $mimeIn ) ) + && ( !isset( $mimeOut ) || $handler->allowsOutput( $mimeOut ) ) + ) + { + return $handler; + } + } + throw new ezcImageHandlerNotAvailableException( 'unknown' ); + } +} +?> diff --git a/include/ezcomponents/ImageConversion/src/exceptions/exception.php b/include/ezcomponents/ImageConversion/src/exceptions/exception.php new file mode 100644 index 000000000..5b201b5c7 --- /dev/null +++ b/include/ezcomponents/ImageConversion/src/exceptions/exception.php @@ -0,0 +1,20 @@ + diff --git a/include/ezcomponents/ImageConversion/src/exceptions/file_name_invalid.php b/include/ezcomponents/ImageConversion/src/exceptions/file_name_invalid.php new file mode 100644 index 000000000..832e6aebb --- /dev/null +++ b/include/ezcomponents/ImageConversion/src/exceptions/file_name_invalid.php @@ -0,0 +1,31 @@ + diff --git a/include/ezcomponents/ImageConversion/src/exceptions/file_not_processable.php b/include/ezcomponents/ImageConversion/src/exceptions/file_not_processable.php new file mode 100644 index 000000000..a5dcfc586 --- /dev/null +++ b/include/ezcomponents/ImageConversion/src/exceptions/file_not_processable.php @@ -0,0 +1,37 @@ + diff --git a/include/ezcomponents/ImageConversion/src/exceptions/filter_failed.php b/include/ezcomponents/ImageConversion/src/exceptions/filter_failed.php new file mode 100644 index 000000000..a8376d939 --- /dev/null +++ b/include/ezcomponents/ImageConversion/src/exceptions/filter_failed.php @@ -0,0 +1,37 @@ + diff --git a/include/ezcomponents/ImageConversion/src/exceptions/filter_not_available.php b/include/ezcomponents/ImageConversion/src/exceptions/filter_not_available.php new file mode 100644 index 000000000..7742aaa8f --- /dev/null +++ b/include/ezcomponents/ImageConversion/src/exceptions/filter_not_available.php @@ -0,0 +1,31 @@ + diff --git a/include/ezcomponents/ImageConversion/src/exceptions/handler_not_available.php b/include/ezcomponents/ImageConversion/src/exceptions/handler_not_available.php new file mode 100644 index 000000000..6fcf02ccc --- /dev/null +++ b/include/ezcomponents/ImageConversion/src/exceptions/handler_not_available.php @@ -0,0 +1,37 @@ + diff --git a/include/ezcomponents/ImageConversion/src/exceptions/handler_settings_invalid.php b/include/ezcomponents/ImageConversion/src/exceptions/handler_settings_invalid.php new file mode 100644 index 000000000..3b11d3b98 --- /dev/null +++ b/include/ezcomponents/ImageConversion/src/exceptions/handler_settings_invalid.php @@ -0,0 +1,31 @@ + diff --git a/include/ezcomponents/ImageConversion/src/exceptions/invalid_filter_parameter.php b/include/ezcomponents/ImageConversion/src/exceptions/invalid_filter_parameter.php new file mode 100644 index 000000000..d5fb7193a --- /dev/null +++ b/include/ezcomponents/ImageConversion/src/exceptions/invalid_filter_parameter.php @@ -0,0 +1,40 @@ + diff --git a/include/ezcomponents/ImageConversion/src/exceptions/invalid_reference.php b/include/ezcomponents/ImageConversion/src/exceptions/invalid_reference.php new file mode 100644 index 000000000..701ca535e --- /dev/null +++ b/include/ezcomponents/ImageConversion/src/exceptions/invalid_reference.php @@ -0,0 +1,37 @@ + diff --git a/include/ezcomponents/ImageConversion/src/exceptions/mime_type_unsupported.php b/include/ezcomponents/ImageConversion/src/exceptions/mime_type_unsupported.php new file mode 100644 index 000000000..ea91ed9b6 --- /dev/null +++ b/include/ezcomponents/ImageConversion/src/exceptions/mime_type_unsupported.php @@ -0,0 +1,32 @@ + diff --git a/include/ezcomponents/ImageConversion/src/exceptions/missing_filter_parameter.php b/include/ezcomponents/ImageConversion/src/exceptions/missing_filter_parameter.php new file mode 100644 index 000000000..54863cdc0 --- /dev/null +++ b/include/ezcomponents/ImageConversion/src/exceptions/missing_filter_parameter.php @@ -0,0 +1,32 @@ + diff --git a/include/ezcomponents/ImageConversion/src/exceptions/transformation.php b/include/ezcomponents/ImageConversion/src/exceptions/transformation.php new file mode 100644 index 000000000..9dae896d0 --- /dev/null +++ b/include/ezcomponents/ImageConversion/src/exceptions/transformation.php @@ -0,0 +1,55 @@ +parent = $e; + $message = $e->getMessage(); + parent::__construct( "Transformation failed. '{$message}'." ); + } + +} +?> diff --git a/include/ezcomponents/ImageConversion/src/exceptions/transformation_already_exists.php b/include/ezcomponents/ImageConversion/src/exceptions/transformation_already_exists.php new file mode 100644 index 000000000..459605a2c --- /dev/null +++ b/include/ezcomponents/ImageConversion/src/exceptions/transformation_already_exists.php @@ -0,0 +1,31 @@ + diff --git a/include/ezcomponents/ImageConversion/src/exceptions/transformation_not_available.php b/include/ezcomponents/ImageConversion/src/exceptions/transformation_not_available.php new file mode 100644 index 000000000..ee2c91612 --- /dev/null +++ b/include/ezcomponents/ImageConversion/src/exceptions/transformation_not_available.php @@ -0,0 +1,31 @@ + diff --git a/include/ezcomponents/ImageConversion/src/handlers/gd.php b/include/ezcomponents/ImageConversion/src/handlers/gd.php new file mode 100644 index 000000000..c3694eede --- /dev/null +++ b/include/ezcomponents/ImageConversion/src/handlers/gd.php @@ -0,0 +1,953 @@ + 0' ); + } + if ( !is_int( $height ) || $height < 1 ) + { + throw new ezcBaseValueException( 'height', $height, 'int > 0' ); + } + + $resource = $this->getActiveResource(); + $oldDim = array( 'x' => imagesx( $resource ), 'y' => imagesy( $resource ) ); + + $widthRatio = $width / $oldDim['x']; + $heighRatio = $height / $oldDim['y']; + + $ratio = min( $widthRatio, $heighRatio ); + + switch ( $direction ) + { + case self::SCALE_DOWN: + $ratio = $ratio < 1 ? $ratio : 1; + break; + case self::SCALE_UP: + $ratio = $ratio > 1 ? $ratio : 1; + break; + case self::SCALE_BOTH: + break; + default: + throw new ezcBaseValueException( 'direction', $direction, 'self::SCALE_BOTH, self::SCALE_UP, self::SCALE_DOWN' ); + break; + } + $this->performScale( round( $oldDim['x'] * $ratio ), round( $oldDim['y'] * $ratio ) ); + } + + /** + * Scale after width filter. + * Scales the image to a give width, measured in pixel. Scales the height + * automatically while keeping the ratio. The direction dictates, if an + * image may only be scaled {@link self::SCALE_UP}, {@link self::SCALE_DOWN} + * or if the scale may work in {@link self::SCALE_BOTH} directions. + * + * ATTENTION: Using this filter method directly results in the filter being + * applied to the image which is internally marked as "active" (most + * commonly this is the last recently loaded one). It is highly recommended + * to apply filters through the {@link ezcImageGdHandler::applyFilter()} method, + * which enables you to specify the image a filter is applied to. + * + * @param int $width Scale to width + * @param int $direction Scale to which direction + * @return void + * + * @throws ezcImageInvalidReferenceException + * If no valid resource for the active reference could be found. + * @throws ezcImageFilterFailedException + * If the operation performed by the the filter failed. + * @throws ezcBaseValueException + * If a submitted parameter was out of range or type. + */ + public function scaleWidth( $width, $direction ) + { + if ( !is_int( $width ) || $width < 1 ) + { + throw new ezcBaseValueException( 'width', $width, 'int > 0' ); + } + + $resource = $this->getActiveResource(); + $oldDim = array( + 'x' => imagesx( $resource ), + 'y' => imagesy( $resource ), + ); + switch ( $direction ) + { + case self::SCALE_BOTH: + $newDim = array( + 'x' => $width, + 'y' => $width / $oldDim['x'] * $oldDim['y'] + ); + break; + case self::SCALE_UP: + $newDim = array( + 'x' => max( $width, $oldDim['x'] ), + 'y' => $width > $oldDim['x'] ? round( $width / $oldDim['x'] * $oldDim['y'] ) : $oldDim['y'], + ); + break; + case self::SCALE_DOWN: + $newDim = array( + 'x' => min( $width, $oldDim['x'] ), + 'y' => $width < $oldDim['x'] ? round( $width / $oldDim['x'] * $oldDim['y'] ) : $oldDim['y'], + ); + break; + default: + throw new ezcBaseValueException( 'direction', $direction, 'self::SCALE_BOTH, self::SCALE_UP, self::SCALE_DOWN' ); + break; + } + $this->performScale( $newDim["x"], $newDim["y"] ); + } + + /** + * Scale after height filter. + * Scales the image to a give height, measured in pixel. Scales the width + * automatically while keeping the ratio. The direction dictates, if an + * image may only be scaled {@link self::SCALE_UP}, {@link self::SCALE_DOWN} + * or if the scale may work in {@link self::SCALE_BOTH} directions. + * + * ATTENTION: Using this filter method directly results in the filter being + * applied to the image which is internally marked as "active" (most + * commonly this is the last recently loaded one). It is highly recommended + * to apply filters through the {@link ezcImageGdHandler::applyFilter()} method, + * which enables you to specify the image a filter is applied to. + * + * @param int $height Scale to height + * @param int $direction Scale to which direction + * @return void + * + * @throws ezcImageInvalidReferenceException + * If no valid resource for the active reference could be found. + * @throws ezcImageFilterFailedException + * If the operation performed by the the filter failed. + * @throws ezcBaseValueException + * If a submitted parameter was out of range or type. + */ + public function scaleHeight( $height, $direction ) + { + if ( !is_int( $height ) || $height < 1 ) + { + throw new ezcBaseValueException( 'height', $height, 'int > 0' ); + } + + $resource = $this->getActiveResource(); + $oldDim = array( + 'x' => imagesx( $resource ), + 'y' => imagesy( $resource ), + ); + switch ( $direction ) + { + case self::SCALE_BOTH: + $newDim = array( + 'x' => $height / $oldDim['y'] * $oldDim['x'], + 'y' => $height, + ); + break; + case self::SCALE_UP: + $newDim = array( + 'x' => $height > $oldDim['y'] ? round( $height / $oldDim['y'] * $oldDim['x'] ) : $oldDim['x'], + 'y' => max( $height, $oldDim['y'] ), + ); + break; + case self::SCALE_DOWN: + $newDim = array( + 'x' => $height < $oldDim['y'] ? round( $height / $oldDim['y'] * $oldDim['x'] ) : $oldDim['x'], + 'y' => min( $height, $oldDim['y'] ), + ); + break; + default: + throw new ezcBaseValueException( 'direction', $direction, 'self::SCALE_BOTH, self::SCALE_UP, self::SCALE_DOWN' ); + break; + } + $this->performScale( $newDim["x"], $newDim["y"] ); + } + + /** + * Scale percent measures filter. + * Scale an image to a given percentage value size. + * + * ATTENTION: Using this filter method directly results in the filter being + * applied to the image which is internally marked as "active" (most + * commonly this is the last recently loaded one). It is highly recommended + * to apply filters through the {@link ezcImageGdHandler::applyFilter()} method, + * which enables you to specify the image a filter is applied to. + * + * @param int $width Scale to width + * @param int $height Scale to height + * @return void + * + * @throws ezcImageInvalidReferenceException + * If no valid resource for the active reference could be found. + * @throws ezcImageFilterFailedException + * If the operation performed by the the filter failed. + * @throws ezcBaseValueException + * If a submitted parameter was out of range or type. + */ + public function scalePercent( $width, $height ) + { + if ( !is_int( $height ) || $height < 1 ) + { + throw new ezcBaseValueException( 'height', $height, 'int > 0' ); + } + if ( !is_int( $width ) || $width < 1 ) + { + throw new ezcBaseValueException( 'width', $width, 'int > 0' ); + } + + $resource = $this->getActiveResource(); + $this->performScale( round( imagesx( $resource ) * $width / 100 ), round( imagesy( $resource ) * $height / 100 ) ); + } + + /** + * Scale exact filter. + * Scale the image to a fixed given pixel size, no matter to which + * direction. + * + * ATTENTION: Using this filter method directly results in the filter being + * applied to the image which is internally marked as "active" (most + * commonly this is the last recently loaded one). It is highly recommended + * to apply filters through the {@link ezcImageGdHandler::applyFilter()} method, + * which enables you to specify the image a filter is applied to. + * + * @param int $width Scale to width + * @param int $height Scale to height + * @return void + * + * @throws ezcImageInvalidReferenceException + * If no valid resource for the active reference could be found. + * @throws ezcBaseValueException + * If a submitted parameter was out of range or type. + */ + public function scaleExact( $width, $height ) + { + if ( !is_int( $height ) || $height < 1 ) + { + throw new ezcBaseValueException( 'height', $height, 'int > 0' ); + } + if ( !is_int( $width ) || $width < 1 ) + { + throw new ezcBaseValueException( 'width', $width, 'int > 0' ); + } + $this->performScale( $width, $height ); + } + + /** + * Crop filter. + * Crop an image to a given size. This takes cartesian coordinates of a + * rect area to crop from the image. The cropped area will replace the old + * image resource (not the input image immediately, if you use the + * {@link ezcImageConverter}). Coordinates are given as integer values and + * are measured from the top left corner. + * + * ATTENTION: Using this filter method directly results in the filter being + * applied to the image which is internally marked as "active" (most + * commonly this is the last recently loaded one). It is highly recommended + * to apply filters through the {@link ezcImageGdHandler::applyFilter()} method, + * which enables you to specify the image a filter is applied to. + * + * @param int $x X offset of the cropping area. + * @param int $y Y offset of the cropping area. + * @param int $width Width of cropping area. + * @param int $height Height of cropping area. + * @return void + * + * @throws ezcImageInvalidReferenceException + * If no valid resource for the active reference could be found. + * @throws ezcImageFilterFailedException + * If the operation performed by the the filter failed. + * @throws ezcBaseValueException + * If a submitted parameter was out of range or type. + */ + public function crop( $x, $y, $width, $height ) + { + if ( !is_int( $x ) ) + { + throw new ezcBaseValueException( 'x', $x, 'int' ); + } + if ( !is_int( $y ) ) + { + throw new ezcBaseValueException( 'y', $y, 'int' ); + } + if ( !is_int( $height ) ) + { + throw new ezcBaseValueException( 'height', $height, 'int' ); + } + if ( !is_int( $width ) ) + { + throw new ezcBaseValueException( 'width', $width, 'int' ); + } + + $oldResource = $this->getActiveResource(); + + $sourceWidth = imagesx( $oldResource ); + $sourceHeight = imagesy( $oldResource ); + + $x = ( $x >= 0 ) ? $x : $sourceWidth + $x; + $y = ( $y >= 0 ) ? $y : $sourceHeight + $y; + + $x = abs( min( $x, $x + $width ) ); + $y = abs( min( $y, $y + $height ) ); + + $width = abs( $width ); + $height = abs( $height ); + + if ( $x + $width > $sourceWidth ) + { + $width = $sourceWidth - $x; + } + if ( $y + $height > $sourceHeight ) + { + $height = $sourceHeight - $y; + } + + $this->performCrop( $x, $y, $width, $height ); + + } + + /** + * Colorspace filter. + * Transform the colorspace of the picture. The following colorspaces are + * supported: + * + * - {@link self::COLORSPACE_GREY} - 255 grey colors + * - {@link self::COLORSPACE_SEPIA} - Sepia colors + * - {@link self::COLORSPACE_MONOCHROME} - 2 colors black and white + * + * ATTENTION: Using this filter method directly results in the filter being + * applied to the image which is internally marked as "active" (most + * commonly this is the last recently loaded one). It is highly recommended + * to apply filters through the {@link ezcImageGdHandler::applyFilter()} method, + * which enables you to specify the image a filter is applied to. + * + * @param int $space Colorspace, one of self::COLORSPACE_* constants. + * + * @throws ezcImageInvalidReferenceException + * If no valid resource for the active reference could be found. + * @throws ezcBaseValueException + * If the parameter submitted as the colorspace was not within the + * self::COLORSPACE_* constants. + * @throws ezcImageFilterFailedException + * If the operation performed by the the filter failed. + */ + public function colorspace( $space ) + { + switch ( $space ) + { + case self::COLORSPACE_GREY: + $this->luminanceColorScale( array( 1.0, 1.0, 1.0 ) ); + break; + case self::COLORSPACE_MONOCHROME: + $this->thresholdColorScale( + array( + 127 => array( 0, 0, 0 ), + 255 => array( 255, 255, 255 ), + ) + ); + break; + return; + case self::COLORSPACE_SEPIA: + $this->luminanceColorScale( array( 1.0, 0.89, 0.74 ) ); + break; + default: + throw new ezcBaseValueException( 'space', $space, 'self::COLORSPACE_GREY, self::COLORSPACE_SEPIA, self::COLORSPACE_MONOCHROME' ); + break; + } + + } + + /** + * Watermark filter. + * Places a watermark on the image. The file to use as the watermark image + * is given as $image. The $posX, $posY and $size values are given in + * percent, related to the destination image. A $size value of 10 will make + * the watermark appear in 10% of the destination image size. + * $posX = $posY = 10 will make the watermark appear in the top left corner + * of the destination image, 10% of its size away from its borders. If + * $size is ommitted, the watermark image will not be resized. + * + * @param string $image The image file to use as the watermark + * @param int $posX X position in the destination image in percent. + * @param int $posY Y position in the destination image in percent. + * @param int|bool $size Percentage size of the watermark, false for none. + * @return void + * + * @throws ezcImageInvalidReferenceException + * If no valid resource for the active reference could be found. + * @throws ezcImageFilterFailedException + * If the operation performed by the the filter failed. + * @throws ezcBaseValueException + * If a submitted parameter was out of range or type. + */ + public function watermarkPercent( $image, $posX, $posY, $size = false ) + { + if ( !is_string( $image ) || !file_exists( $image ) || !is_readable( $image ) ) + { + throw new ezcBaseValueException( 'image', $image, 'string, path to an image file' ); + } + if ( !is_int( $posX ) || $posX < 0 || $posX > 100 ) + { + throw new ezcBaseValueException( 'posX', $posX, 'int percentage value' ); + } + if ( !is_int( $posY ) || $posY < 0 || $posY > 100 ) + { + throw new ezcBaseValueException( 'posY', $posY, 'int percentage value' ); + } + if ( !is_bool( $size ) && ( !is_int( $size ) || $size < 0 || $size > 100 ) ) + { + throw new ezcBaseValueException( 'size', $size, 'int percentage value / bool' ); + } + + $imgWidth = imagesx( $this->getActiveResource() ); + $imgHeight = imagesy( $this->getActiveResource() ); + + $watermarkWidth = false; + $watermarkHeight = false; + if ( $size !== false ) + { + $watermarkWidth = (int) round( $imgWidth * $size / 100 ); + $watermarkHeight = (int) round( $imgHeight * $size / 100 ); + } + + $watermarkPosX = (int) round( $imgWidth * $posX / 100 ); + $watermarkPosY = (int) round( $imgHeight * $posY / 100 ); + + $this->watermarkAbsolute( $image, $watermarkPosX, $watermarkPosY, $watermarkWidth, $watermarkHeight ); + } + + /** + * Watermark filter. + * Places a watermark on the image. The file to use as the watermark image + * is given as $image. The $posX, $posY and $size values are given in + * pixel. The watermark appear at $posX, $posY in the destination image + * with a size of $size pixel. If $size is ommitted, the watermark image + * will not be resized. + * + * @param string $image The image file to use as the watermark + * @param int $posX X position in the destination image in pixel. + * @param int $posY Y position in the destination image in pixel. + * @param int|bool $width Pixel size of the watermark, false to keep size. + * @param int|bool $height Pixel size of the watermark, false to keep size. + * @return void + * + * @throws ezcImageInvalidReferenceException + * If no valid resource for the active reference could be found. + * @throws ezcImageFilterFailedException + * If the operation performed by the the filter failed. + * @throws ezcBaseValueException + * If a submitted parameter was out of range or type. + * @throws ezcImageFileNotProcessableException + * If the given watermark image could not be loaded. + */ + public function watermarkAbsolute( $image, $posX, $posY, $width = false, $height = false ) + { + if ( !is_string( $image ) || !file_exists( $image ) || !is_readable( $image ) ) + { + throw new ezcBaseValueException( 'image', $image, 'string, path to an image file' ); + } + if ( !is_int( $posX ) ) + { + throw new ezcBaseValueException( 'posX', $posX, 'int' ); + } + if ( !is_int( $posY ) ) + { + throw new ezcBaseValueException( 'posY', $posY, 'int' ); + } + if ( !is_int( $width ) && !is_bool( $width ) ) + { + throw new ezcBaseValueException( 'width', $width, 'int/bool' ); + } + if ( !is_int( $height ) && !is_bool( $height ) ) + { + throw new ezcBaseValueException( 'height', $height, 'int/bool' ); + } + + // Backup original image reference + $originalRef = $this->getActiveReference(); + + $originalWidth = imagesx( $this->getActiveResource() ); + $originalHeight = imagesy( $this->getActiveResource() ); + + $watermarkRef = $this->load( $image ); + if ( $width !== false && $height !== false && ( $originalWidth !== $width || $originalHeight !== $height ) ) + { + $this->scale( $width, $height, ezcImageGeometryFilters::SCALE_BOTH ); + } + + // Negative offsets + $posX = ( $posX >= 0 ) ? $posX : $originalWidth + $posX; + $posY = ( $posY >= 0 ) ? $posY : $originalHeight + $posY; + + imagecopy( + $this->getReferenceData( $originalRef, "resource" ), // resource $dst_im + $this->getReferenceData( $watermarkRef, "resource" ), // resource $src_im + $posX, // int $dst_x + $posY, // int $dst_y + 0, // int $src_x + 0, // int $src_y + imagesx( $this->getReferenceData( $watermarkRef, "resource" ) ), // int $src_w + imagesy( $this->getReferenceData( $watermarkRef, "resource" ) ) // int $src_h + ); + + $this->close( $watermarkRef ); + + // Restore original image reference + $this->setActiveReference( $originalRef ); + } + + /** + * Creates a thumbnail, and crops parts of the given image to fit the range best. + * This filter creates a thumbnail of the given image. The image is scaled + * down, keeping the original ratio and keeping the image larger as the + * given range, if necessary. Overhead for the target range is cropped from + * both sides equally. + * + * If you are looking for a filter that just resizes your image to + * thumbnail size, you should consider the {@link + * ezcImageGdHandler::scale()} filter. + * + * @param int $width Width of the thumbnail. + * @param int $height Height of the thumbnail. + */ + public function croppedThumbnail( $width, $height ) + { + if ( !is_int( $width ) || $width < 1 ) + { + throw new ezcBaseValueException( 'width', $width, 'int > 0' ); + } + if ( !is_int( $height ) || $height < 1 ) + { + throw new ezcBaseValueException( 'height', $height, 'int > 0' ); + } + $resource = $this->getActiveResource(); + $data[0] = imagesx( $resource ); + $data[1] = imagesy( $resource ); + + $scaleRatio = max( $width / $data[0], $height / $data[1] ); + $scaleWidth = round( $data[0] * $scaleRatio ); + $scaleHeight = round( $data[1] * $scaleRatio ); + + $cropOffsetX = ( $scaleWidth > $width ) ? round( ( $scaleWidth - $width ) / 2 ) : 0; + $cropOffsetY = ( $scaleHeight > $height ) ? round( ( $scaleHeight - $height ) / 2 ) : 0; + + $this->performScale( $scaleWidth, $scaleHeight ); + $this->performCrop( $cropOffsetX, $cropOffsetY, $width, $height ); + } + + /** + * Creates a thumbnail, and fills up the image to fit the given range. + * This filter creates a thumbnail of the given image. The image is scaled + * down, keeping the original ratio and scaling the image smaller as the + * given range, if necessary. Overhead for the target range is filled with the given + * color on both sides equally. + * + * The color is defined by the following array format (integer values 0-255): + * + * + * array( + * 0 => , + * 1 => , + * 2 => , + * ); + * + * + * If you are looking for a filter that just resizes your image to + * thumbnail size, you should consider the {@link + * ezcImageGdHandler::scale()} filter. + * + * @param int $width Width of the thumbnail. + * @param int $height Height of the thumbnail. + * @param array $color Fill color. + * + * @return void + */ + public function filledThumbnail( $width, $height, $color = array() ) + { + $i = 0; + foreach ( $color as $id => $colorVal ) + { + if ( $i++ > 2 ) + { + break; + } + if ( !is_int( $colorVal ) || $colorVal < 0 || $colorVal > 255 ) + { + throw new ezcBaseValueException( "color[$id]", $color[$id], 'int > 0 and < 256' ); + } + } + + // Sanity checks for $width and $height performed by scale() method. + $this->scale( $width, $height, ezcImageGeometryFilters::SCALE_BOTH ); + + $oldResource = $this->getActiveResource(); + + $realWidth = imagesx( $oldResource ); + $realHeight = imagesy( $oldResource ); + $xOffset = ( $width > $realWidth ) ? round( ( $width - $realWidth ) / 2 ) : 0; + $yOffset = ( $height > $realHeight ) ? round( ( $height - $realHeight ) / 2 ) : 0; + + $newResource = imagecreatetruecolor( $width, $height ); + $bgColor = $this->getColor( $newResource, $color[0], $color[1], $color[2] ); + if ( imagefill( $newResource, 0, 0, $bgColor ) === false ) + { + throw new ezcImageFilterFailedException( "filledThumbnail", "Color fill failed." ); + } + + imagecopy( + $newResource, + $oldResource, + $xOffset, + $yOffset, + 0, + 0, + $realWidth, + $realHeight + ); + + $this->setActiveResource( $newResource ); + imagedestroy( $oldResource ); + } + + // private + + /** + * Retrieve luminance value for a specific pixel. + * + * @param resource(GD) $resource Image resource + * @param int $x Pixel x coordinate. + * @param int $y Pixel y coordinate. + * @return float Luminance value. + */ + private function getLuminanceAt( $resource, $x, $y ) + { + $currentColor = imagecolorat( $resource, $x, $y ); + $rgbValues = array( + 'r' => ( $currentColor >> 16 ) & 0xff, + 'g' => ( $currentColor >> 8 ) & 0xff, + 'b' => $currentColor & 0xff, + ); + return $rgbValues['r'] * 0.299 + $rgbValues['g'] * 0.587 + $rgbValues['b'] * 0.114; + } + + /** + * Scale colors by threshold values. + * Thresholds are defined by the following array structures: + * + * + * array( + * => array( + * 0 => , + * 1 => , + * 2 => , + * ), + * ) + * + * + * @param array $thresholds + * @return void + * + * @throws ezcImageInvalidReferenceException + * If no valid resource for the active reference could be found. + * @throws ezcImageFilterFailedException + * If the operation performed by the the filter failed. + * + * @todo Optimization as described here: http://lists.ez.no/pipermail/components/2005-November/000566.html + */ + protected function thresholdColorScale( $thresholds ) + { + $resource = $this->getActiveResource(); + $dimensions = array( 'x' => imagesx( $resource ), 'y' => imagesy( $resource ) ); + + // Check for GIFs and convert them to work properly here. + if ( !imageistruecolor( $resource ) ) + { + $resource = $this->paletteToTruecolor( $resource, $dimensions ); + } + + foreach ( $thresholds as $threshold => $colors ) + { + $thresholds[$threshold] = array_merge( + $colors, + array( 'color' => $this->getColor( $resource, $colors[0], $colors[1], $colors[2] ) ) + ); + } + // Default + if ( !isset( $thresholds[255] ) ) + { + $thresholds[255] = end( $thresholds ); + reset( $thresholds ); + } + + $colorCache = array(); + + for ( $x = 0; $x < $dimensions['x']; $x++ ) + { + for ( $y = 0; $y < $dimensions['y']; $y++ ) + { + $luminance = $this->getLuminanceAt( $resource, $x, $y ); + $color = end( $thresholds ); + foreach ( $thresholds as $threshold => $colorValues ) + { + if ( $luminance <= $threshold ) + { + $color = $colorValues; + break; + } + } + imagesetpixel( $resource, $x, $y, $color['color'] ); + } + } + + $this->setActiveResource( $resource ); + } + + /** + * Perform luminance color scale. + * + * @param array $scale Array of RGB values (numeric index). + * + * @throws ezcImageInvalidReferenceException + * If no valid resource for the active reference could be found. + * @throws ezcImageFilterFailedException + * If the operation performed by the the filter failed + * + * @todo Optimization as described here: http://lists.ez.no/pipermail/components/2005-November/000566.html + */ + protected function luminanceColorScale( $scale ) + { + $resource = $this->getActiveResource(); + $dimensions = array( 'x' => imagesx( $resource ), 'y' => imagesy( $resource ) ); + + // Check for GIFs and convert them to work properly here. + if ( !imageistruecolor( $resource ) ) + { + $resource = $this->paletteToTruecolor( $resource, $dimensions ); + } + + for ( $x = 0; $x < $dimensions['x']; $x++ ) + { + for ( $y = 0; $y < $dimensions['y']; $y++ ) + { + $luminance = $this->getLuminanceAt( $resource, $x, $y ); + $newRgbValues = array( + 'r' => $luminance * $scale[0], + 'g' => $luminance * $scale[1], + 'b' => $luminance * $scale[2], + ); + $color = $this->getColor( $resource, $newRgbValues['r'], $newRgbValues['g'], $newRgbValues['b'] ); + imagesetpixel( $resource, $x, $y, $color ); + } + } + $this->setActiveResource( $resource ); + } + + /** + * Convert a palette based image resource to a true color one. + * Takes a GD resource that does not represent a true color image and + * converts it to a true color based resource. Do not forget, to replace + * the actual resource in the handler, if you use this ,method! + * + * @param resource(GD) $resource The image resource to convert + * @param array(string=>int) $dimensions X and Y dimensions. + * @return resource(GD) The converted resource. + */ + protected function paletteToTruecolor( $resource, $dimensions ) + { + $newResource = imagecreatetruecolor( $dimensions['x'], $dimensions['y'] ); + imagecopy( $newResource, $resource, 0, 0, 0, 0, $dimensions['x'], $dimensions['y'] ); + imagedestroy( $resource ); + return $newResource; + } + + /** + * Common color determination method. + * Returns a color identifier for an RGB value. Avoids problems with palette images. + * + * @param reource(GD) $resource The image resource to get a color for. + * @param int $r Red value. + * @param int $g Green value. + * @param int $b Blue value. + * + * @return int The color identifier. + * + * @throws ezcImageFilterFailedException + * If the operation performed by the the filter failed. + */ + protected function getColor( $resource, $r, $g, $b ) + { + if ( ( $res = imagecolorexact( $resource, $r, $g, $b ) ) !== -1 ) + { + return $res; + } + if ( ( $res = imagecolorallocate( $resource, $r, $g, $b ) ) !== -1 ) + { + return $res; + } + if ( ( $res = imagecolorclosest( $resource, $r, $g, $b ) ) !== -1 ) + { + return $res; + } + throw new ezcImageFilterFailedException( 'allocatecolor', "Color allocation failed for color r: '{$r}', g: '{$g}', b: '{$b}'." ); + } + + /** + * General scaling method to perform actual scale to new dimensions. + * + * @param int $width Width. + * @param int $height Height. + * @return void + * + * @throws ezcImageInvalidReferenceException + * If no valid resource for the active reference could be found. + * @throws ezcImageFilterFailedException. + * If the operation performed by the the filter failed. + */ + protected function performScale( $width, $height ) + { + $oldResource = $this->getActiveResource(); + if ( imageistruecolor( $oldResource ) ) + { + $newResource = imagecreatetruecolor( $width, $height ); + } + else + { + $newResource = imagecreate( $width, $height ); + } + + // Save transparency, if image has it + $bgColor = imagecolorallocatealpha( $newResource, 255, 255, 255, 127 ); + imagealphablending( $newResource, true ); + imagesavealpha( $newResource, true ); + imagefill( $newResource, 1, 1, $bgColor ); + + $res = imagecopyresampled( + $newResource, + $oldResource, + 0, 0, 0, 0, + $width, + $height, + imagesx( $this->getActiveResource() ), + imagesy( $this->getActiveResource() ) + ); + if ( $res === false ) + { + throw new ezcImageFilterFailedException( 'scale', 'Resampling of image failed.' ); + } + imagedestroy( $oldResource ); + $this->setActiveResource( $newResource ); + } + + /** + * General method to perform a crop operation. + * + * @param int $x + * @param int $y + * @param int $width + * @param int $height + * @return void + */ + private function performCrop( $x, $y, $width, $height ) + { + $oldResource = $this->getActiveResource(); + if ( imageistruecolor( $oldResource ) ) + { + $newResource = imagecreatetruecolor( $width, $height ); + } + else + { + $newResource = imagecreate( $width, $height ); + } + + // Save transparency, if image has it + $bgColor = imagecolorallocatealpha( $newResource, 255, 255, 255, 127 ); + imagealphablending( $newResource, true ); + imagesavealpha( $newResource, true ); + imagefill( $newResource, 1, 1, $bgColor ); + + $res = imagecopyresampled( + $newResource, // destination resource + $oldResource, // source resource + 0, // destination x coord + 0, // destination y coord + $x, // source x coord + $y, // source y coord + $width, // destination width + $height, // destination height + $width, // source witdh + $height // source height + ); + if ( $res === false ) + { + throw new ezcImageFilterFailedException( 'crop', 'Resampling of image failed.' ); + } + imagedestroy( $oldResource ); + $this->setActiveResource( $newResource ); + } +} +?> diff --git a/include/ezcomponents/ImageConversion/src/handlers/gd_base.php b/include/ezcomponents/ImageConversion/src/handlers/gd_base.php new file mode 100644 index 000000000..0a8abfe4b --- /dev/null +++ b/include/ezcomponents/ImageConversion/src/handlers/gd_base.php @@ -0,0 +1,297 @@ +determineTypes(); + parent::__construct( $settings ); + } + + /** + * Load an image file. + * Loads an image file and returns a reference to it. + * + * @param string $file File to load. + * @param string $mime The MIME type of the file. + * + * @return string Reference to the file in this handler. + * + * @see ezcImageAnalyzer + * + * @throws ezcBaseFileNotFoundException + * If the given file does not exist. + * @throws ezcImageMimeTypeUnsupportedException + * If the type of the given file is not recognized + * @throws ezcImageFileNotProcessableException + * If the given file is not processable using this handler. + * @throws ezcImageFileNameInvalidException + * If an invalid character (", ', $) is found in the file name. + */ + public function load( $file, $mime = null ) + { + $this->checkFileName( $file ); + $ref = $this->loadCommon( $file, isset( $mime ) ? $mime : null ); + $loadFunction = $this->getLoadFunction( $this->getReferenceData( $ref, 'mime' ) ); + if ( !ezcBaseFeatures::hasFunction( $loadFunction ) || ( $handle = @$loadFunction( $file ) ) === '' ) + { + throw new ezcImageFileNotProcessableException( $file, "File could not be opened using $loadFunction." ); + } + $this->setReferenceData( $ref, $handle, 'resource' ); + return $ref; + } + + /** + * Save an image file. + * Saves a given open file. Can optionally save to a new file name. + * + * @see ezcImageHandler::load() + * + * @param string $image File reference created through load(). + * @param string $newFile Filename to save the image to. + * @param string $mime New MIME type, if differs from initial one. + * @param ezcImageSaveOptions $options Save options. + * @return void + * + * @throws ezcImageFileNotProcessableException + * If the given file could not be saved with the given MIME type. + * @throws ezcBaseFilePermissionException + * If the desired file exists and is not writeable. + * @throws ezcImageMimeTypeUnsupportedException + * If the desired MIME type is not recognized + * @throws ezcImageFileNameInvalidException + * If an invalid character (", ', $) is found in the file name. + */ + public function save( $image, $newFile = null, $mime = null, ezcImageSaveOptions $options = null ) + { + $options = ( $options === null ) ? new ezcImageSaveOptions() : $options; + + if ( $newFile !== null ) + { + $this->checkFileName( $newFile ); + } + + // Check is transparency must be converted + if ( $this->needsTransparencyConversion( $this->getReferenceData( $image, 'mime' ), $mime ) && $options->transparencyReplacementColor !== null ) + { + $this->replaceTransparency( $image, $options->transparencyReplacementColor ); + } + + $this->saveCommon( $image, isset( $newFile ) ? $newFile : null, isset( $mime ) ? $mime : null ); + $saveFunction = $this->getSaveFunction( $this->getReferenceData( $image, 'mime' ) ); + + $saveParams = array( + $this->getReferenceData( $image, 'resource' ), + $this->getReferenceData( $image, 'file' ), + ); + switch ( $saveFunction ) + { + case "imagejpeg": + if ( $options->quality !== null ) + { + $saveParams[] = $options->quality; + } + break; + case "imagepng": + if ( $options->compression !== null ) + { + $saveParams[] = $options->compression; + } + break; + } + + if ( !ezcBaseFeatures::hasFunction( $saveFunction ) || + call_user_func_array( $saveFunction, $saveParams ) === false ) + { + throw new ezcImageFileNotProcessableException( $file, "Unable to save file '{$file}' of type '{$mime}'." ); + } + } + + /** + * Replaces a transparent background with the given color. + * + * This method is used to replace the transparent background of an image + * with an opaque color when converting from a transparency supporting MIME + * type (e.g. image/png) to a MIME type that does not support transparency. + * + * The color + * + * @param mixed $image + * @param mixed $color + * @return void + */ + protected function replaceTransparency( $image, array $color ) + { + $oldResource = $this->getReferenceData( $image, 'resource' ); + $width = imagesx( $oldResource ); + $height = imagesy( $oldResource ); + if ( imageistruecolor( $oldResource ) ) + { + $newResource = imagecreatetruecolor( $width, $height ); + } + else + { + $newResource = imagecreate( $width, $height ); + } + + $bgColor = imagecolorallocate( $newResource, $color[0], $color[1], $color[2] ); + imagefill( $newResource, 0, 0, $bgColor ); + + // $res = imagecopyresampled( + $res = imagecopyresampled( + $newResource, // destination resource + $oldResource, // source resource + 0, // destination x coord + 0, // destination y coord + 0, // source x coord + 0, // source y coord + $width, // destination width + $height, // destination height + $width, // source witdh + $height // source height + ); + if ( $res === false ) + { + throw new ezcImageFilterFailedException( 'crop', 'Resampling of image failed.' ); + } + imagedestroy( $oldResource ); + $this->setReferenceData( $image, $newResource, 'resource' ); + } + + /** + * Close the file referenced by $image. + * Frees the image reference. You should call close() before. + * + * @see ezcImageHandler::load() + * @see ezcImageHandler::save() + * + * @param string $image The image reference. + * @return void + */ + public function close( $image ) + { + $res = $this->getReferenceData( $image, 'resource' ); + if ( is_resource( $res ) ) + { + imagedestroy( $res ); + } + $this->closeCommon( $image ); + } + + /** + * Determine, the image types the available GD extension is able to process. + * + * @return void + */ + private function determineTypes() + { + $possibleTypes = array( + IMG_GIF => 'image/gif', + IMG_JPG => 'image/jpeg', + IMG_PNG => 'image/png', + IMG_WBMP => 'image/wbmp', + IMG_XPM => 'image/xpm', + ); + $imageTypes = imagetypes(); + foreach ( $possibleTypes as $bit => $mime ) + { + if ( $imageTypes & $bit ) + { + $this->inputTypes[] = $mime; + $this->outputTypes[] = $mime; + } + } + } + + /** + * Generate imagecreatefrom* function out of a MIME type. + * + * @param string $mime MIME type in format "image/". + * @return string imagecreatefrom* function name. + * + * @throws ezcImageMimeTypeUnsupportedException + * If the load function for a given MIME type does not exist. + */ + private function getLoadFunction( $mime ) + { + if ( !$this->allowsInput( $mime ) ) + { + throw new ezcImageMimeTypeUnsupportedException( $mime, 'input' ); + } + return 'imagecreatefrom' . substr( strstr( $mime, '/' ), 1 ); + } + + /** + * Generate image* function out of a MIME type. + * + * @param string $mime MIME type in format "image/". + * @return string image* function name for saving. + * + * @throws ezcImageImagemagickHandler + * If the save function for a given MIME type does not exist. + */ + private function getSaveFunction( $mime ) + { + if ( !$this->allowsOutput( $mime ) ) + { + throw new ezcImageMimeTypeUnsupportedException( $mime, 'output' ); + } + return 'image' . substr( strstr( $mime, '/' ), 1 ); + } + + /** + * Creates default settings for the handler and returns it. + * The reference name will be set to 'GD'. + * + * @return ezcImageHandlerSettings + */ + static public function defaultSettings() + { + return new ezcImageHandlerSettings( 'GD', 'ezcImageGdHandler' ); + } + + +} + +?> diff --git a/include/ezcomponents/ImageConversion/src/handlers/imagemagick.php b/include/ezcomponents/ImageConversion/src/handlers/imagemagick.php new file mode 100644 index 000000000..08d261346 --- /dev/null +++ b/include/ezcomponents/ImageConversion/src/handlers/imagemagick.php @@ -0,0 +1,769 @@ + 0' ); + } + if ( !is_int( $height ) || $height < 1 ) + { + throw new ezcBaseValueException( 'height', $height, 'int > 0' ); + } + + $dirMod = $this->getDirectionModifier( $direction ); + $this->addFilterOption( + $this->getActiveReference(), + '-resize', + $width.$dirMod.'x'.$height.$dirMod + ); + } + + /** + * Scale after width filter. + * Scales the image to a give width, measured in pixel. Scales the height + * automatically while keeping the ratio. The direction dictates, if an + * image may only be scaled {@link self::SCALE_UP}, {@link self::SCALE_DOWN} + * or if the scale may work in {@link self::SCALE_BOTH} directions. + * + * ATTENTION: Using this filter method directly results in the filter being + * applied to the image which is internally marked as "active" (most + * commonly this is the last recently loaded one). It is highly recommended + * to apply filters through the {@link ezcImageImagemagickHandler::applyFilter()} + * method, which enables you to specify the image a filter is applied to. + * + * @param int $width Scale to width + * @param int $direction Scale to which direction + * @return void + * + * @throws ezcImageInvalidReferenceException + * No loaded file could be found or an error destroyed a loaded reference + * @throws ezcBaseValueException + * If a submitted parameter was out of range or type. + */ + public function scaleWidth( $width, $direction ) + { + if ( !is_int( $width ) || $width < 1 ) + { + throw new ezcBaseValueException( 'width', $width, 'int > 0' ); + } + + $dirMod = $this->getDirectionModifier( $direction ); + $this->addFilterOption( + $this->getActiveReference(), + '-resize ', + $width.$dirMod + ); + } + + /** + * Scale after height filter. + * Scales the image to a give height, measured in pixel. Scales the width + * automatically while keeping the ratio. The direction dictates, if an + * image may only be scaled {@link self::SCALE_UP}, {@link self::SCALE_DOWN} + * or if the scale may work in {@link self::SCALE_BOTH} directions. + * + * ATTENTION: Using this filter method directly results in the filter being + * applied to the image which is internally marked as "active" (most + * commonly this is the last recently loaded one). It is highly recommended + * to apply filters through the {@link ezcImageImagemagickHandler::applyFilter()} + * method, which enables you to specify the image a filter is applied to. + * + * @param int $height Scale to height + * @param int $direction Scale to which direction + * @return void + * + * @throws ezcImageInvalidReferenceException + * No loaded file could be found or an error destroyed a loaded reference + * @throws ezcBaseValueException + * If a submitted parameter was out of range or type. + */ + public function scaleHeight( $height, $direction ) + { + if ( !is_int( $height ) || $height < 1 ) + { + throw new ezcBaseValueException( 'height', $height, 'int > 0' ); + } + $dirMod = $this->getDirectionModifier( $direction ); + $this->addFilterOption( + $this->getActiveReference(), + '-resize ', + 'x'.$height.$dirMod + ); + } + + /** + * Scale percent measures filter. + * Scale an image to a given percentage value size. + * + * ATTENTION: Using this filter method directly results in the filter being + * applied to the image which is internally marked as "active" (most + * commonly this is the last recently loaded one). It is highly recommended + * to apply filters through the {@link ezcImageImagemagickHandler::applyFilter()} + * method, which enables you to specify the image a filter is applied to. + * + * @param int $width Scale to width + * @param int $height Scale to height + * @return void + * + * @throws ezcImageInvalidReferenceException + * No loaded file could be found or an error destroyed a loaded reference + * @throws ezcBaseValueException + * If a submitted parameter was out of range or type. + */ + public function scalePercent( $width, $height ) + { + if ( !is_int( $height ) || $height < 1 ) + { + throw new ezcBaseValueException( 'height', $height, 'int > 0' ); + } + if ( !is_int( $width ) || $width < 1 || $width > 100 ) + { + throw new ezcBaseValueException( 'width', $width, 'int > 0' ); + } + $this->addFilterOption( + $this->getActiveReference(), + '-resize', + $width.'%x'.$height.'%' + ); + } + + /** + * Scale exact filter. + * Scale the image to a fixed given pixel size, no matter to which + * direction. + * + * ATTENTION: Using this filter method directly results in the filter being + * applied to the image which is internally marked as "active" (most + * commonly this is the last recently loaded one). It is highly recommended + * to apply filters through the {@link ezcImageImagemagickHandler::applyFilter()} + * method, which enables you to specify the image a filter is applied to. + * + * @param int $width Scale to width + * @param int $height Scale to height + * @return void + * + * @throws ezcImageInvalidReferenceException + * No loaded file could be found or an error destroyed a loaded reference. + * @throws ezcBaseValueException + * If a submitted parameter was out of range or type. + */ + public function scaleExact( $width, $height ) + { + if ( !is_int( $height ) || $height < 1 ) + { + throw new ezcBaseValueException( 'height', $height, 'int > 0' ); + } + if ( !is_int( $width ) || $width < 1 ) + { + throw new ezcBaseValueException( 'width', $width, 'int > 0' ); + } + $this->addFilterOption( + $this->getActiveReference(), + '-resize', + $width.'!x'.$height.'!' + ); + } + + /** + * Crop filter. + * Crop an image to a given size. This takes cartesian coordinates of a + * rect area to crop from the image. The cropped area will replace the old + * image resource (not the input image immediately, if you use the + * {@link ezcImageConverter}). Coordinates are given as integer values and + * are measured from the top left corner. + * + * ATTENTION: Using this filter method directly results in the filter being + * applied to the image which is internally marked as "active" (most + * commonly this is the last recently loaded one). It is highly recommended + * to apply filters through the {@link ezcImageImagemagickHandler::applyFilter()} + * method, which enables you to specify the image a filter is applied to. + * + * @param int $x X offset of the cropping area. + * @param int $y Y offset of the cropping area. + * @param int $width Width of cropping area. + * @param int $height Height of cropping area. + * @return void + * + * @throws ezcImageInvalidReferenceException + * No loaded file could be found or an error destroyed a loaded reference. + * @throws ezcBaseValueException + * If a submitted parameter was out of range or type. + */ + public function crop( $x, $y, $width, $height ) + { + if ( !is_int( $x ) ) + { + throw new ezcBaseValueException( 'x', $x, 'int' ); + } + if ( !is_int( $y ) ) + { + throw new ezcBaseValueException( 'y', $y, 'int' ); + } + if ( !is_int( $height ) ) + { + throw new ezcBaseValueException( 'height', $height, 'int' ); + } + if ( !is_int( $width ) ) + { + throw new ezcBaseValueException( 'width', $width, 'int' ); + } + + $data = getimagesize( $this->getActiveResource() ); + $x = ( $x >= 0 ) ? $x : $data[0] + $x; + $y = ( $y >= 0 ) ? $y : $data[1] + $y; + + $xStart = ( $xStart = min( $x, $x + $width ) ) >= 0 ? '+'.$xStart : $xStart; + $yStart = ( $yStart = min( $y, $y + $height ) ) >= 0 ? '+'.$yStart : $yStart; + $this->addFilterOption( + $this->getActiveReference(), + '-crop ', + abs( $width ).'x'.abs( $height ).$xStart.$yStart.'!' + ); + } + + /** + * Colorspace filter. + * Transform the color space of the picture. The following color space are + * supported: + * + * - {@link self::COLORSPACE_GREY} - 255 grey colors + * - {@link self::COLORSPACE_SEPIA} - Sepia colors + * - {@link self::COLORSPACE_MONOCHROME} - 2 colors black and white + * + * ATTENTION: Using this filter method directly results in the filter being + * applied to the image which is internally marked as "active" (most + * commonly this is the last recently loaded one). It is highly recommended + * to apply filters through the {@link ezcImageImagemagickHandler::applyFilter()} + * method, which enables you to specify the image a filter is applied to. + * + * @param int $space Colorspace, one of self::COLORSPACE_* constants. + * @return void + * + * @throws ezcImageInvalidReferenceException + * No loaded file could be found or an error destroyed a loaded reference + * @throws ezcBaseValueException + * If the parameter submitted as the colorspace was not within the + * self::COLORSPACE_* constants. + */ + public function colorspace( $space ) + { + switch ( $space ) + { + case self::COLORSPACE_GREY: + $this->addFilterOption( + $this->getActiveReference(), + '-colorspace', + 'GRAY' + ); + $this->addFilterOption( + $this->getActiveReference(), + '-colors', + '255' + ); + break; + case self::COLORSPACE_MONOCHROME: + $this->addFilterOption( + $this->getActiveReference(), + '-monochrome' + ); + break; + case self::COLORSPACE_SEPIA: + $this->addFilterOption( + $this->getActiveReference(), + '-sepia-tone', + '80%' + ); + break; + return; + default: + throw new ezcBaseValueException( 'space', $space, 'self::COLORSPACE_GREY, self::COLORSPACE_SEPIA, self::COLORSPACE_MONOCHROME' ); + break; + } + } + + /** + * Noise filter. + * Apply a noise transformation to the image. Valid values are the following + * strings: + * - 'Uniform' + * - 'Gaussian' + * - 'Multiplicative' + * - 'Impulse' + * - 'Laplacian' + * - 'Poisson' + * + * ATTENTION: Using this filter method directly results in the filter being + * applied to the image which is internally marked as "active" (most + * commonly this is the last recently loaded one). It is highly recommended + * to apply filters through the {@link ezcImageImagemagickHandler::applyFilter()} + * method, which enables you to specify the image a filter is applied to. + * + * @param strings $value Noise value as described above. + * @return void + * + * @throws ezcBaseValueException + * If the noise value is out of range. + * @throws ezcImageInvalidReferenceException + * No loaded file could be found or an error destroyed a loaded reference. + */ + public function noise( $value ) + { + $value = ucfirst( strtolower( $value ) ); + $possibleValues = array( + 'Uniform', + 'Gaussian', + 'Multiplicative', + 'Impulse', + 'Laplacian', + 'Poisson', + ); + if ( !in_array( $value, $possibleValues ) ) + { + throw new ezcBaseValueException( 'value', $value, 'Uniform, Gaussian, Multiplicative, Impulse, Laplacian, Poisson' ); + } + $this->addFilterOption( + $this->getActiveReference(), + '+noise', + $value + ); + } + + /** + * Swirl filter. + * Applies a swirl with the given intense to the image. + * + * ATTENTION: Using this filter method directly results in the filter being + * applied to the image which is internally marked as "active" (most + * commonly this is the last recently loaded one). It is highly recommended + * to apply filters through the {@link ezcImageImagemagickHandler::applyFilter()} + * method, which enables you to specify the image a filter is applied to. + * + * @param int $value Intense of swirl. + * @return void + * + * @throws ezcImageInvalidReferenceException + * No loaded file could be found or an error destroyed a loaded reference. + * @throws ezcBaseValueException + * If the swirl value is out of range. + */ + public function swirl( $value ) + { + if ( !is_int( $value ) || $value < 0 ) + { + throw new ezcBaseValueException( 'value', $value, 'int >= 0' ); + } + $this->addFilterOption( + $this->getActiveReference(), + '-swirl', + $value + ); + } + + /** + * Border filter. + * Adds a border to the image. The width is measured in pixel. The color is + * defined in an array of hex values: + * + * + * array( + * 0 => , + * 1 => , + * 2 => , + * ); + * + * + * ATTENTION: Using this filter method directly results in the filter being + * applied to the image which is internally marked as "active" (most + * commonly this is the last recently loaded one). It is highly recommended + * to apply filters through the {@link ezcImageImagemagickHandler::applyFilter()} + * method, which enables you to specify the image a filter is applied to. + * + * @param int $width Width of the border. + * @param array(int) $color Color. + * @return void + * + * @throws ezcImageInvalidReferenceException + * No loaded file could be found or an error destroyed a loaded reference. + * @throws ezcBaseValueException + * If a submitted parameter was out of range or type. + */ + public function border( $width, array $color ) + { + if ( !is_int( $width ) ) + { + throw new ezcBaseValueException( 'width', $width, 'int' ); + } + $colorString = $this->colorArrayToString( $color ); + $this->addFilterOption( + $this->getActiveReference(), + '-bordercolor', + $colorString + ); + $this->addFilterOption( + $this->getActiveReference(), + '-border', + $width + ); + } + + /** + * Watermark filter. + * Places a watermark on the image. The file to use as the watermark image + * is given as $image. The $posX, $posY and $size values are given in + * percent, related to the destination image. A $size value of 10 will make + * the watermark appear in 10% of the destination image size. + * $posX = $posY = 10 will make the watermark appear in the top left corner + * of the destination image, 10% of its size away from its borders. If + * $size is ommitted, the watermark image will not be resized. + * + * @param string $image The image file to use as the watermark + * @param int $posX X position in the destination image in percent. + * @param int $posY Y position in the destination image in percent. + * @param int|bool $size Percentage size of the watermark, false for none. + * @return void + * + * @throws ezcImageInvalidReferenceException + * If no valid resource for the active reference could be found. + * @throws ezcImageFilterFailedException + * If the operation performed by the the filter failed. + * @throws ezcBaseValueException + * If a submitted parameter was out of range or type. + */ + public function watermarkPercent( $image, $posX, $posY, $size = false ) + { + if ( !is_string( $image ) || !file_exists( $image ) || !is_readable( $image ) ) + { + throw new ezcBaseValueException( 'image', $image, 'string, path to an image file' ); + } + if ( !is_int( $posX ) || $posX < 0 || $posX > 100 ) + { + throw new ezcBaseValueException( 'posX', $posX, 'int percentage value' ); + } + if ( !is_int( $posY ) || $posY < 0 || $posY > 100 ) + { + throw new ezcBaseValueException( 'posY', $posY, 'int percentage value' ); + } + if ( !is_bool( $size ) && ( !is_int( $size ) || $size < 0 || $size > 100 ) ) + { + throw new ezcBaseValueException( 'size', $size, 'int percentage value / bool' ); + } + + $data = getimagesize( $this->getReferenceData( $this->getActiveReference(), "resource" ) ); + + $originalWidth = $data[0]; + $originalHeight = $data[1]; + + $watermarkWidth = false; + $watermarkHeight = false; + + if ( $size !== false ) + { + $watermarkWidth = (int) round( $originalWidth * $size / 100 ); + $watermarkHeight = (int) round( $originalHeight * $size / 100 ); + } + + $watermarkPosX = (int) round( $originalWidth * $posX / 100 ); + $watermarkPosY = (int) round( $originalHeight * $posY / 100 ); + + $this->watermarkAbsolute( $image, $watermarkPosX, $watermarkPosY, $watermarkWidth, $watermarkHeight ); + + } + + /** + * Watermark filter. + * Places a watermark on the image. The file to use as the watermark image + * is given as $image. The $posX, $posY and $size values are given in + * pixel. The watermark appear at $posX, $posY in the destination image + * with a size of $size pixel. If $size is ommitted, the watermark image + * will not be resized. + * + * @param string $image The image file to use as the watermark + * @param int $posX X position in the destination image in pixel. + * @param int $posY Y position in the destination image in pixel. + * @param int|bool $width Pixel size of the watermark, false to keep size. + * @param int|bool $height Pixel size of the watermark, false to keep size. + * @return void + * + * @throws ezcImageInvalidReferenceException + * If no valid resource for the active reference could be found. + * @throws ezcImageFilterFailedException + * If the operation performed by the the filter failed. + * @throws ezcBaseValueException + * If a submitted parameter was out of range or type. + */ + public function watermarkAbsolute( $image, $posX, $posY, $width = false, $height = false ) + { + if ( !is_string( $image ) || !file_exists( $image ) || !is_readable( $image ) ) + { + throw new ezcBaseValueException( 'image', $image, 'string, path to an image file' ); + } + if ( !is_int( $posX ) ) + { + throw new ezcBaseValueException( 'posX', $posX, 'int' ); + } + if ( !is_int( $posY ) ) + { + throw new ezcBaseValueException( 'posY', $posY, 'int' ); + } + if ( !is_int( $width ) && !is_bool( $width ) ) + { + throw new ezcBaseValueException( 'width', $width, 'int/bool' ); + } + if ( !is_int( $height ) && !is_bool( $height ) ) + { + throw new ezcBaseValueException( 'height', $height, 'int/bool' ); + } + + $data = getimagesize( $this->getActiveResource() ); + + // Negative offsets + $posX = ( $posX >= 0 ) ? $posX : $data[0] + $posX; + $posY = ( $posY >= 0 ) ? $posY : $data[1] + $posY; + + $this->addFilterOption( + $this->getActiveReference(), + '-composite', + '' + ); + + $this->addFilterOption( + $this->getActiveReference(), + '-geometry', + ( $width !== false ? $width : "" ) . ( $height !== false ? "x$height" : "" ) . "+$posX+$posY" + ); + + $this->addCompositeImage( $this->getActiveReference(), $image ); + } + + /** + * Creates a thumbnail, and crops parts of the given image to fit the range best. + * This filter creates a thumbnail of the given image. The image is scaled + * down, keeping the original ratio and keeping the image larger as the + * given range, if necessary. Overhead for the target range is cropped from + * both sides equally. + * + * If you are looking for a filter that just resizes your image to + * thumbnail size, you should consider the {@link + * ezcImageImagemagickHandler::scale()} filter. + * + * @param int $width Width of the thumbnail. + * @param int $height Height of the thumbnail. + */ + public function croppedThumbnail( $width, $height ) + { + if ( !is_int( $width ) || $width < 1 ) + { + throw new ezcBaseValueException( 'width', $width, 'int > 0' ); + } + if ( !is_int( $height ) || $height < 1 ) + { + throw new ezcBaseValueException( 'height', $height, 'int > 0' ); + } + $data = getimagesize( $this->getReferenceData( $this->getActiveReference(), "resource" ) ); + + $scaleRatio = max( $width / $data[0], $height / $data[1] ); + $scaleWidth = round( $data[0] * $scaleRatio ); + $scaleHeight = round( $data[1] * $scaleRatio ); + + $cropOffsetX = ( $scaleWidth > $width ) ? "+" . round( ( $scaleWidth - $width ) / 2 ) : "+0"; + $cropOffsetY = ( $scaleHeight > $height ) ? "+" . round( ( $scaleHeight - $height ) / 2 ) : "+0"; + + $this->addFilterOption( + $this->getActiveReference(), + '-resize', + $scaleWidth . "x" . $scaleHeight + ); + $this->addFilterOption( + $this->getActiveReference(), + '-crop', + $width . "x" . $height . $cropOffsetX . $cropOffsetY . "!" + ); + } + + /** + * Creates a thumbnail, and fills up the image to fit the given range. + * This filter creates a thumbnail of the given image. The image is scaled + * down, keeping the original ratio and scaling the image smaller as the + * given range, if necessary. Overhead for the target range is filled with the given + * color on both sides equally. + * + * The color is defined by the following array format (integer values 0-255): + * + * + * array( + * 0 => , + * 1 => , + * 2 => , + * ); + * + * + * If you are looking for a filter that just resizes your image to + * thumbnail size, you should consider the {@link + * ezcImageImagemagickHandler::scale()} filter. + * + * @param int $width Width of the thumbnail. + * @param int $height Height of the thumbnail. + * @param array $color Fill color. + * @return void + */ + public function filledThumbnail( $width, $height, $color = array() ) + { + if ( !is_int( $width ) || $width < 1 ) + { + throw new ezcBaseValueException( 'width', $width, 'int > 0' ); + } + if ( !is_int( $height ) || $height < 1 ) + { + throw new ezcBaseValueException( 'height', $height, 'int > 0' ); + } + $data = getimagesize( $this->getReferenceData( $this->getActiveReference(), "resource" ) ); + + $scaleRatio = min( $width / $data[0], $height / $data[1] ); + $scaleWidth = round( $data[0] * $scaleRatio ); + $scaleHeight = round( $data[1] * $scaleRatio ); + + $cropOffsetX = ( $scaleWidth < $width ) ? "-" . round( ( $width - $scaleWidth ) / 2 ) : "+0"; + $cropOffsetY = ( $scaleHeight < $height ) ? "-" . round( ( $height - $scaleHeight ) / 2 ) : "+0"; + + $colorString = '#'; + $i = 0; + foreach ( $color as $id => $colorVal ) + { + if ( $i++ > 2 ) + { + break; + } + if ( !is_int( $colorVal ) || $colorVal < 0 || $colorVal > 255 ) + { + throw new ezcBaseValueException( "color[$id]", $color[$id], 'int > 0 and < 256' ); + } + $colorString .= sprintf( '%02x', $colorVal ); + } + + $this->addFilterOption( + $this->getActiveReference(), + '-resize', + $width . "x" . $height + ); + $this->addFilterOption( + $this->getActiveReference(), + '-crop', + $width . "x" . $height . $cropOffsetX . $cropOffsetY . "!" + ); + $this->addFilterOption( + $this->getActiveReference(), + '-background', + $colorString + ); + $this->addFilterOption( + $this->getActiveReference(), + '-flatten' + ); + } + + /** + * Returns the ImageMagick direction modifier for a direction constant. + * ImageMagick supports the following modifiers to determine if an + * image should be scaled up only, down only or in both directions: + * + * + * SCALE_UP: > + * SCALE_DOWN: < + * + * + * This method returns the correct modifier for the internal direction + * constants. + * + * @param int $direction One of ezcImageGeometryFilters::SCALE_* + * @return string The correct modifier. + * + * @throws ezcBaseValueException + * If a submitted parameter was out of range or type. + */ + protected function getDirectionModifier( $direction ) + { + $dirMod = ''; + switch ( $direction ) + { + case self::SCALE_DOWN: + $dirMod = '>'; + break; + case self::SCALE_UP: + $dirMod = '<'; + break; + case self::SCALE_BOTH: + $dirMod = ''; + break; + default: + throw new ezcBaseValueException( 'direction', $direction, 'self::SCALE_BOTH, self::SCALE_UP, self::SCALE_DOWN' ); + break; + } + return $dirMod; + } +} +?> diff --git a/include/ezcomponents/ImageConversion/src/handlers/imagemagick_base.php b/include/ezcomponents/ImageConversion/src/handlers/imagemagick_base.php new file mode 100644 index 000000000..dd3081f06 --- /dev/null +++ b/include/ezcomponents/ImageConversion/src/handlers/imagemagick_base.php @@ -0,0 +1,471 @@ +string) + */ + private $tagMap = array(); + + /** + * Filter options per reference. + * + * @var array(string=>array) + */ + private $filterOptions = array(); + + /** + * Composite image setting per reference. + * + * @var array(string=>bool) + */ + private $compositeImages = array(); + + /** + * Create a new image handler. + * Creates an image handler. This should never be done directly, + * but only through the manager for configuration reasons. One can + * get a direct reference through manager afterwards. + * + * This handler has an option 'binary' available, which allows you to + * explicitly set the path to your ImageMagicks "convert" binary (this + * may be necessary on Windows, since there may be an obscure "convert.exe" + * in the $PATH variable available, which has nothing to do with + * ImageMagick). + * + * @throws ezcImageHandlerNotAvailableException + * If the ImageMagick binary is not found. + * + * @param ezcImageHandlerSettings $settings Settings for the handler. + */ + public function __construct( ezcImageHandlerSettings $settings ) + { + // Check for ImageMagick + $this->checkImageMagick( $settings ); + $this->determineTypes(); + parent::__construct( $settings ); + } + + /** + * Load an image file. + * Loads an image file and returns a reference to it. + * + * @param string $file File to load. + * @param string $mime The MIME type of the file. + * + * @return string Reference to the file in this handler. + * + * @see ezcImageAnalyzer + * + * @throws ezcBaseFileNotFoundException + * If the desired file does not exist. + * @throws ezcImageMimeTypeUnsupportedException + * If the desired file has a not recognized type. + * @throws ezcImageFileNameInvalidException + * If an invalid character (", ', $) is found in the file name. + */ + public function load( $file, $mime = null ) + { + $this->checkFileName( $file ); + $ref = $this->loadCommon( $file, $mime ); + + // Atomic file operation + $fileTmp = tempnam( dirname( $file ) . DIRECTORY_SEPARATOR, '.' . basename( $file ) ); + copy( $file, $fileTmp ); + + $this->setReferenceData( $ref, $fileTmp, 'resource' ); + return $ref; + } + + /** + * Save an image file. + * Saves a given open file. Can optionally save to a new file name. + * + * @see ezcImageHandler::load() + * + * @param string $image File reference created through load(). + * @param string $newFile Filename to save the image to. + * @param string $mime New MIME type, if differs from initial one. + * @param ezcImageSaveOptions $options Save options. + * @return void + * + * @throws ezcBaseFilePermissionException + * If the desired file exists and is not writeable. + * @throws ezcImageMimeTypeUnsupportedException + * If the desired MIME type is not recognized. + * @throws ezcImageFileNameInvalidException + * If an invalid character (", ', $) is found in the file name. + */ + public function save( $image, $newFile = null, $mime = null, ezcImageSaveOptions $options = null ) + { + if ( $options === null ) + { + $options = new ezcImageSaveOptions(); + } + + if ( $newFile !== null ) + { + $this->checkFileName( $newFile ); + } + + // Check is transparency must be converted + if ( $this->needsTransparencyConversion( $this->getReferenceData( $image, 'mime' ), $mime ) && $options->transparencyReplacementColor !== null ) + { + $this->addFilterOption( $image, '-background', $this->colorArrayToString( $options->transparencyReplacementColor ) ); + $this->addFilterOption( $image, '-flatten' ); + } + + $this->saveCommon( $image, $newFile, $mime ); + + switch ( $this->getReferenceData( $image, 'mime' ) ) + { + case "image/jpeg": + if ( $options->quality !== null ) + { + $this->addFilterOption( $image, "-quality", $options->quality ); + } + break; + case "image/png": + if ( $options->compression !== null ) + { + // ImageMagick uses qualtiy options here and incorporates filter options + $this->addFilterOption( $image, "-quality", $options->compression * 10 ); + } + break; + } + + // Prepare ImageMagick command + // Here we need a work around, because older ImageMagick versions do not + // support this option order + + if ( isset( $this->compositeImages[$image] ) ) + { + $command = $this->binary . ' ' . + ( isset( $this->filterOptions[$image] ) ? implode( ' ', $this->filterOptions[$image] ) : '' ) . ' ' . + escapeshellarg( $this->getReferenceData( $image, 'resource' ) ) . ' ' . + implode( ' ', $this->compositeImages[$image] ) . ' ' . + escapeshellarg( $this->tagMap[$this->getReferenceData( $image, 'mime' )] . ':' . $this->getReferenceData( $image, 'resource' ) ); + } + else + { + $command = $this->binary . ' ' . + escapeshellarg( $this->getReferenceData( $image, 'resource' ) ) . ' ' . + ( isset( $this->filterOptions[$image] ) ? implode( ' ', $this->filterOptions[$image] ) : '' ) . ' ' . + escapeshellarg( $this->tagMap[$this->getReferenceData( $image, 'mime' )] . ':' . $this->getReferenceData( $image, 'resource' ) ); + } + + + // Prepare to run ImageMagick command + $descriptors = array( + array( 'pipe', 'r' ), + array( 'pipe', 'w' ), + array( 'pipe', 'w' ), + ); + + // Open ImageMagick process + $imageProcess = proc_open( $command, $descriptors, $pipes ); + // Close STDIN pipe + fclose( $pipes[0] ); + + $errorString = ''; + $outputString = ''; + // Read STDERR + do + { + $outputString .= rtrim( fgets( $pipes[1], 1024 ), "\n" ); + $errorString .= rtrim( fgets( $pipes[2], 1024 ), "\n" ); + } while ( !feof( $pipes[2] ) ); + + // Wait for process to terminate and store return value + $status = proc_get_status( $imageProcess ); + while ( $status['running'] === true ) + { + // Sleep 1/100 second to wait for convert to exit + usleep( 10000 ); + $status = proc_get_status( $imageProcess ); + } + $return = proc_close( $imageProcess ); + + // Process potential errors + if ( $status['exitcode'] != 0 || strlen( $errorString ) > 0 ) + { + // If this code is reached we have a bug in this component or in ImageMagick itself. + throw new Exception( + "The command '{$command}' resulted in an error ({$status['exitcode']})): '{$errorString}'. Output: '{$outputString}'" + ); + } + // Finish atomic file operation + copy( $this->getReferenceData( $image, 'resource' ), $this->getReferenceData( $image, 'file' ) ); + } + + /** + * Returns a string representation of the given color array. + * + * ImageConversion uses arrays to represent color values, in the format: + * + * array( + * 255, + * 0, + * 0, + * ) + * + * This array represents the color red. + * + * This method takes such a color array and converts it into a string + * representation usable by the convert binary. For the above examle it + * would be '#FF0000'. + * + * @param array $color + * @return void + * + * @throws ezcBaseValueException + * if one of the color values in the array is invalid (not integer, + * smaller than 0 or larger than 255). + */ + protected function colorArrayToString( array $color ) + { + $colorString = '#'; + $i = 0; + foreach ( $color as $id => $colorVal ) + { + if ( $i++ > 2 ) + { + break; + } + if ( !is_int( $colorVal ) || $colorVal < 0 || $colorVal > 255 ) + { + throw new ezcBaseValueException( "color[$id]", $color[$id], 'int > 0 and < 256' ); + } + $colorString .= sprintf( '%02x', $colorVal ); + } + return $colorString; + } + + /** + * Close the file referenced by $image. + * Frees the image reference. You should call close() before. + * + * @see ezcImageHandler::load() + * @see ezcImageHandler::save() + * @param string $image The image reference. + */ + public function close( $image ) + { + unlink( $this->getReferenceData( $image, 'resource' ) ); + $this->setReferenceData( $image, false, 'resource' ); + $this->closeCommon( $image ); + } + + /** + * Add a filter option to a given reference + * + * @param string $reference The reference to add a filter for. + * @param string $name The option name. + * @param string $parameter The option parameter. + * @return void + */ + protected function addFilterOption( $reference, $name, $parameter = null ) + { + $this->filterOptions[$reference][] = $name . ( $parameter !== null ? ' ' . escapeshellarg( $parameter ) : '' ); + } + + /** + * Add an image to composite with the given reference. + * + * @param string $reference The reference to add an image to + * @param string $file The file to composite with the image. + * @return void + */ + protected function addCompositeImage( $reference, $file ) + { + $this->compositeImages[$reference][] = $file; + } + + /** + * Determines the supported input/output types supported by handler. + * Set's various attributes to reflect the MIME types this handler is + * capable to process. + * + * @return void + * + * @apichange Faulty MIME type "image/svg" will be removed and replaced by + * correct MIME type image/svg+xml. + */ + private function determineTypes() + { + $tagMap = array( + 'application/pcl' => 'PCL', + 'application/pdf' => 'PDF', + 'application/postscript' => 'PS', + 'application/vnd.palm' => 'PDB', + 'application/x-icb' => 'ICB', + 'application/x-mif' => 'MIFF', + 'image/bmp' => 'BMP3', + 'image/dcx' => 'DCX', + 'image/g3fax' => 'G3', + 'image/gif' => 'GIF', + 'image/jng' => 'JNG', + 'image/jpeg' => 'JPG', + 'image/pbm' => 'PBM', + 'image/pcd' => 'PCD', + 'image/pict' => 'PCT', + 'image/pjpeg' => 'PJPEG', + 'image/png' => 'PNG', + 'image/ras' => 'RAS', + 'image/sgi' => 'SGI', + 'image/svg+xml' => 'SVG', + // Left over for BC reasons + 'image/svg' => 'SVG', + 'image/tga' => 'TGA', + 'image/tiff' => 'TIF', + 'image/vda' => 'VDA', + 'image/vnd.wap.wbmp' => 'WBMP', + 'image/vst' => 'VST', + 'image/x-fits' => 'FITS', + 'image/x-otb' => 'OTB', + 'image/x-palm' => 'PALM', + 'image/x-pcx' => 'PCX', + 'image/x-pgm' => 'PGM', + 'image/psd' => 'PSD', + 'image/x-ppm' => 'PPM', + 'image/x-ptiff' => 'PTIF', + 'image/x-viff' => 'VIFF', + 'image/x-xbitmap' => 'XPM', + 'image/x-xv' => 'P7', + 'image/xpm' => 'PICON', + 'image/xwd' => 'XWD', + 'text/plain' => 'TXT', + 'video/mng' => 'MNG', + 'video/mpeg' => 'MPEG', + 'video/mpeg2' => 'M2V', + ); + $types = array_keys( $tagMap ); + $this->inputTypes = $types; + $this->outputTypes = $types; + $this->tagMap = $tagMap; + } + + /** + * Checks for ImageMagick on the system. + * + * @param ezcImageHandlerSettings $settings The settings object of the current handler instance. + * @return void + * + * @throws ezcImageHandlerNotAvailableException + * If the ImageMagick binary is not found. + */ + private function checkImageMagick( ezcImageHandlerSettings $settings ) + { + if ( !isset( $settings->options['binary'] ) ) + { + // Try to use basic binary names only, if not provided (standard case + // on Unix, binary should be in the $PATH, so is accessable). + switch ( PHP_OS ) + { + case 'Linux': + case 'Unix': + case 'FreeBSD': + case 'MacOS': + case 'Darwin': + $this->binary = 'convert'; + break; + case 'Windows': + case 'WINNT': + case 'WIN32': + $this->binary = 'convert.exe'; + break; + default: + throw new ezcImageHandlerNotAvailableException( 'ezcImageImagemagickHandler', "System '" . PHP_OS . "' not supported by handler 'ezcImageImagemagickHandler'." ); + break; + } + } + else + { + $this->binary = $settings->options['binary']; + } + + // Prepare to run ImageMagick command + $descriptors = array( + array( 'pipe', 'r' ), + array( 'pipe', 'w' ), + array( 'pipe', 'w' ), + ); + + // Open ImageMagick process + $imageProcess = proc_open( $this->binary, $descriptors, $pipes ); + + // Close STDIN pipe + fclose( $pipes[0] ); + + $outputString = ''; + // Read STDOUT + do + { + $outputString .= rtrim( fgets( $pipes[1], 1024 ), "\n" ); + } while ( !feof( $pipes[1] ) ); + + $errorString = ''; + // Read STDERR + do + { + $errorString .= rtrim( fgets( $pipes[2], 1024 ), "\n" ); + } while ( !feof( $pipes[2] ) ); + + // Wait for process to terminate and store return value + $return = proc_close( $imageProcess ); + + // Process potential errors + if ( $return != 0 || strlen( $errorString ) > 0 || strpos( $outputString, 'ImageMagick' ) === false ) + { + throw new ezcImageHandlerNotAvailableException( 'ezcImageImagemagickHandler', 'ImageMagick not installed or not available in PATH variable.' ); + } + } + + /** + * Creates default settings for the handler and returns it. + * The reference name will be set to 'ImageMagick'. + * + * @return ezcImageHandlerSettings + */ + static public function defaultSettings() + { + return new ezcImageHandlerSettings( 'ImageMagick', 'ezcImageImagemagickHandler' ); + } +} + +?> diff --git a/include/ezcomponents/ImageConversion/src/interfaces/colorspace.php b/include/ezcomponents/ImageConversion/src/interfaces/colorspace.php new file mode 100644 index 000000000..efe751436 --- /dev/null +++ b/include/ezcomponents/ImageConversion/src/interfaces/colorspace.php @@ -0,0 +1,69 @@ + diff --git a/include/ezcomponents/ImageConversion/src/interfaces/effect.php b/include/ezcomponents/ImageConversion/src/interfaces/effect.php new file mode 100644 index 000000000..c0d917d97 --- /dev/null +++ b/include/ezcomponents/ImageConversion/src/interfaces/effect.php @@ -0,0 +1,90 @@ + + * array( + * 0 => , + * 1 => , + * 2 => , + * ); + * + * + * @param int $width Width of the border. + * @param array(int) $color Color. + * @return void + * + * @throws ezcImageInvalidReferenceException + * No loaded file could be found or an error destroyed a loaded reference. + * @throws ezcImageFilterFailedException + * If the operation performed by the the filter failed. + * @throws ezcBaseValueException + * If a submitted parameter was out of range or type. + */ + function border( $width, array $color ); +} +?> diff --git a/include/ezcomponents/ImageConversion/src/interfaces/geometry.php b/include/ezcomponents/ImageConversion/src/interfaces/geometry.php new file mode 100644 index 000000000..d065cd11c --- /dev/null +++ b/include/ezcomponents/ImageConversion/src/interfaces/geometry.php @@ -0,0 +1,177 @@ + diff --git a/include/ezcomponents/ImageConversion/src/interfaces/handler.php b/include/ezcomponents/ImageConversion/src/interfaces/handler.php new file mode 100644 index 000000000..6a9bbbcd2 --- /dev/null +++ b/include/ezcomponents/ImageConversion/src/interfaces/handler.php @@ -0,0 +1,280 @@ +mixed) + */ + protected $properties; + + /** + * Settings of the handlers + * + * @var ezcImageHandlerSettings + */ + protected $settings; + + /** + * Create a new image handler. + * Creates an image handler. This should never be done directly, + * but only through the manager for configuration reasons. One can + * get a direct reference through manager afterwards. When overwriting + * the constructor. + * + * @param ezcImageHandlerSettings $settings + * Settings for the handler. + */ + public function __construct( ezcImageHandlerSettings $settings ) + { + $this->properties['name'] = $settings->referenceName; + $this->settings = $settings; + } + + /** + * Sets the property $name to $value. + * + * @throws ezcBasePropertyNotFoundException if the property does not exist. + * @throws ezcBasePropertyReadOnlyException if the property cannot be modified. + * @param string $name + * @param mixed $value + * @ignore + */ + public function __set( $name, $value ) + { + switch ( $name ) + { + case 'name': + throw new ezcBasePropertyPermissionException( $name, ezcBasePropertyPermissionException::READ ); + default: + throw new ezcBasePropertyNotFoundException( $name ); + } + } + + /** + * Returns the property $name. + * + * @throws ezcBasePropertyNotFoundException if the property does not exist. + * @param string $name + * @return mixed + * @ignore + */ + public function __get( $name ) + { + switch ( $name ) + { + case 'name': + return $this->properties[$name]; + default: + throw new ezcBasePropertyNotFoundException( $name ); + } + } + + /** + * Checks if the property $name exist and returns the result. + * + * @param string $name + * @return bool + * @ignore + */ + public function __isset( $name ) + { + switch ( $name ) + { + case 'name': + return true; + default: + return false; + } + } + + /** + * Checks a file name for illegal characters. + * Checks if a file name contains illegal characters, which are ", ' and $. + * + * @param string $file The file name to check. + * @return void + * + * @throws ezcImageFileNameInvalidException + * If an invalid character (", ', $) is found in the file name. + */ + protected function checkFileName( $file ) + { + if ( strpos( $file, "'" ) !== false || strpos( $file, "'" ) !== false || strpos( $file, '$' ) !== false ) + { + throw new ezcImageFileNameInvalidException( $file ); + } + } + + /** + * Returns if a MIME conversion needs transparent color replacement. + * + * In case a transparency supporting MIME type (like image/png) is + * converted to one that does not support transparency, special steps need + * to be performed. This method returns if the given conversion from + * $inMime to $outMime is affected by this. + * + * @param string $inMime + * @param string $outMime + * @return bool + */ + protected function needsTransparencyConversion( $inMime, $outMime ) + { + $transparencyMimes = array( + 'image/gif' => true, + 'image/png' => true, + ); + return ( + $outMime !== null + && $inMime !== $outMime + && isset( $transparencyMimes[$inMime] ) + && !isset( $transparencyMimes[$outMime] ) + ); + } + + /** + * Load an image file. + * Loads an image file and returns a reference to it. + * + * For developers: The use of ezcImageHandler::loadCommon() is highly + * recommended for the implementation of this method! + * + * @param string $file File to load. + * @param string $mime The MIME type of the file. + * @return string Reference to the file in this handler. + */ + abstract public function load( $file, $mime = null ); + + /** + * Save an image file. + * Saves a given open file. Can optionally save to a new file name. + * The image reference is not freed automatically, so you need to call + * the close() method explicitly to free the referenced data. + * + * @see ezcImageHandler::load() + * @see ezcImageHandler::close() + * + * @param string $image File reference created through. + * @param string $newFile Filename to save the image to. + * @param string $mime New MIME type, if differs from + * initial one. + * @param ezcImageSaveOptions $options Options for saving. + * @return void + */ + abstract public function save( $image, $newFile = null, $mime = null, ezcImageSaveOptions $options = null ); + + /** + * Close the file referenced by $image. + * Frees the image reference. You should call close() before. + * + * @see ezcImageHandler::load() + * @see ezcImageHandler::save() + * @param string $reference The image reference. + * @return void + */ + abstract public function close( $reference ); + + /** + * Check wether a specific MIME type is allowed as input for this handler. + * + * @param string $mime MIME type to check if it's allowed. + * @return bool + */ + abstract public function allowsInput( $mime ); + + /** + * Checks wether a specific MIME type is allowed as output for this handler. + * + * @param string $mime MIME type to check if it's allowed. + * @return bool + */ + abstract public function allowsOutput( $mime ); + + /** + * Checks if a given filter is available in this handler. + * + * @param string $name Name of the filter to check for. + * @return bool + * + */ + abstract public function hasFilter( $name ); + + /** + * Returns a list of filters this handler provides. + * The list returned is in format: + * + * + * array( + * 0 => , + * 1 => , + * ... + * ) + * + * + * @return array(string) + */ + abstract public function getFilterNames(); + + /** + * Applies a filter to a given image. + * + * @internal This method is the main one, which will dispatch the + * filter action to the specific function of the backend. + * + * @see ezcImageHandler::load() + * @see ezcImageHandler::save() + * + * @param string $image Image reference to apply the filter on. + * @param ezcImageFilter $filter Contains which filter operation to apply. + * @return void + * + * @throws ezcImageFilterNotAvailableException + * If the desired filter does not exist. + * @throws ezcImageMissingFilterParameterException + * If a parameter for the filter is missing. + * @throws ezcImageFilterFailedException + * If the operation performed by the the filter failed. + * @throws ezcBaseValueException + * If a parameter was not within the expected range. + */ + abstract public function applyFilter( $image, ezcImageFilter $filter ); + + /** + * Converts an image to another MIME type. + * + * Use {@link ezcImageHandler::allowsOutput()} to determine, + * if the output MIME type is supported by this handler! + * + * @see ezcImageHandler::load() + * @see ezcImageHandler::save() + * + * @param string $image Image reference to convert. + * @param string $mime MIME type to convert to. + * @return void + * + * @throws ezcImageMimeTypeUnsupportedException + * If the given MIME type is not supported by the filter. + */ + abstract public function convert( $image, $mime ); +} +?> diff --git a/include/ezcomponents/ImageConversion/src/interfaces/methodcall_handler.php b/include/ezcomponents/ImageConversion/src/interfaces/methodcall_handler.php new file mode 100644 index 000000000..bcee4bfc5 --- /dev/null +++ b/include/ezcomponents/ImageConversion/src/interfaces/methodcall_handler.php @@ -0,0 +1,573 @@ + array( + * 'file' => , + * 'mime' => , + * 'resource' => , + * ) + * ) + * + * @var array + */ + private $references = array(); + + /** + * Currently active image reference. + * This is used to determine by the filter, which image should be + * processed. + * + * @var string + */ + private $activeReference; + + /** + * Create a new image handler. + * Creates an image handler. This should never be done directly, + * but only through the manager for configuration reasons. One can + * get a direct reference through manager afterwards. When overwriting + * the constructor. + * + * The contents of the $settings parameter may change from handler to + * handler. For detailed information take a look at the specific handler + * classes. + * + * @param ezcImageHandlerSettings $settings Settings for the handler. + */ + public function __construct( ezcImageHandlerSettings $settings ) + { + parent::__construct( $settings ); + } + + /** + * Destroyes the handler and closes all open references correctly. + * + * @return void + */ + public function __destruct() + { + foreach ( $this->references as $id => $data ) + { + $this->close( $id ); + } + } + + /** + * Check wether a specific MIME type is allowed as input for this handler. + * + * @param string $mime MIME type to check if it's allowed. + * @return bool + */ + public function allowsInput( $mime ) + { + return ( in_array( strtolower( $mime ), $this->inputTypes ) ); + } + + /** + * Checks wether a specific MIME type is allowed as output for this handler. + * + * @param string $mime MIME type to check if it's allowed. + * @return bool + */ + public function allowsOutput( $mime ) + { + return ( in_array( strtolower( $mime ), $this->outputTypes ) ); + } + + /** + * Checks if a given filter is available in this handler. + * + * @param string $name Name of the filter to check for. + * @return bool + * + */ + public function hasFilter( $name ) + { + return method_exists( $this, $name ); + } + + /** + * Returns a list of filters this handler provides. + * The list returned is in format: + * + * + * array( + * 0 => , + * 1 => , + * ... + * ) + * + * + * @return array(string) + */ + public function getFilterNames() + { + if ( !isset( $this->filterNameCache ) || !is_array( $this->filterNameCache || sizeof( $this->filterNameCache ) === 0 ) ) + { + $this->filterNameCache = array(); + $excludeMethods = array( + '__construct', + '__destruct', + '__get', + '__set', + '__call', + 'allowsInput', + 'allowsOutput', + 'hasFilter', + 'getFilterNames', + 'applyFilter', + 'convert', + 'load', + 'save', + 'close', + 'defaultSettings', + ); + + $refClass = new ReflectionClass( get_class( $this ) ); + foreach ( $refClass->getMethods() as $method ) + { + if ( $method->isPublic() && !in_array( $method->getName(), $excludeMethods ) ) + { + $this->filterNameCache[] = $method->getName(); + } + } + } + return $this->filterNameCache; + } + + /** + * Applies a filter to a given image. + * + * @internal This method is the main one, which will dispatch the + * filter action to the specific function of the backend. + * + * @see ezcImageMethodcallHandler::load() + * @see ezcImageMethodcallHandler::save() + * + * @param string $image Image reference to apply the filter on. + * @param ezcImageFilter $filter Contains which filter operation to apply. + * @return void + * + * @throws ezcImageInvalidReferenceException + * If no valid resource for the active reference could be found. + * @throws ezcImageInvalidReferenceException + * No loaded file could be found or an error destroyed a loaded reference. + * @throws ezcImageFilterNotAvailableException + * If the desired filter does not exist. + * @throws ezcImageFiltersMissingFilterParameterException + * If a parameter for the filter is missing. + * @throws ezcImageFilterFailedException + * If the operation performed by the the filter failed. + * @throws ezcBaseValueException + * If a parameter was not within the expected range. + */ + public function applyFilter( $image, ezcImageFilter $filter ) + { + if ( !$this->hasFilter( $filter->name ) ) + { + throw new ezcImageFilterNotAvailableException( $filter->name ); + } + $reflectClass = new ReflectionClass( get_class( $this ) ); + $reflectParameters = $reflectClass->getMethod( $filter->name )->getParameters(); + $parameters = array(); + foreach ( $reflectParameters as $id => $parameter ) + { + $paramName = $parameter->getName(); + if ( isset( $filter->options[$paramName] ) ) + { + $parameters[] = $filter->options[$paramName]; + } + else if ( $parameter->isOptional() === false ) + { + throw new ezcImageMissingFilterParameterException( $filter->name, $paramName ); + } + } + // Backup last active reference + $oldRef = $this->getActiveReference(); + // Perform actual filtering on given image + $this->setActiveReference( $image ); + call_user_func_array( array( $this, $filter->name ), $parameters ); + // Restore last active reference + $this->setActiveReference( $oldRef ); + } + + /** + * Converts an image to another MIME type. + * + * Use {@link ezcImageMethodcallHandler::allowsOutput()} to determine, + * if the output MIME type is supported by this handler! + * + * @see ezcImageMethodcallHandler::load() + * @see ezcImageMethodcallHandler::save() + * + * @param string $image Image reference to convert. + * @param string $mime MIME type to convert to. + * @return void + * + * @throws ezcImageMimeTypeUnsupportedException + * If the given MIME type is not supported by the filter. + * @throws ezcImageInvalidReferenceException + * If no valid resource for the active reference could be found. + */ + public function convert( $image, $mime ) + { + $oldMime = $this->getReferenceData( $image, 'mime' ); + if ( !$this->allowsOutput( $mime ) ) + { + throw new ezcImageMimeTypeUnsupportedException( $mime, 'output' ); + } + $this->setReferenceData( $image, $mime, 'mime' ); + } + + /** + * Receive the resource of the active image reference. + * This method is utilized by the ezcImageFilters* class to receive the + * currently active resource for manipulations. + * + * @return resource The currently active resource. + * + * @throws ezcImageInvalidReferenceException + * If no valid resource for the active reference could be found. + */ + protected function getActiveResource() + { + $ref = $this->getActiveReference(); + if ( ( $resource = $this->getReferenceData( $ref, 'resource' ) ) === false ) + { + throw new ezcImageInvalidReferenceException( "No resource found for the active reference '{$ref}'." ); + } + return $resource; + } + + /** + * Replace the resource of an image reference with a new one. + * After filtering the current image resource might have to be replaced + * with a new version. This can be done using this method. + * + * @param resource(GD) $resource + * @return void + */ + protected function setActiveResource( $resource ) + { + $this->setReferenceData( + $this->getActiveReference(), + $resource, + 'resource' + ); + } + + /** + * Returns the currently active reference. + * Returns the reference which is currently marked as active. This happens + * either by loading a new file or by using the setActiveReference() + * method. + * + * @see ezcImageMethodcallHandler::setActiveReference() + * @see ezcImageMethodcallHandler::load() + * @see ezcImageMethodcallHandler::$references + * + * @throws ezcImageInvalidReferenceException + * No loaded file could be found or an error destroyed a loaded reference. + * + * @return string The active reference. + */ + protected function getActiveReference() + { + if ( !isset( $this->activeReference ) ) + { + throw new ezcImageInvalidReferenceException( 'No reference is defined as active. Either no file is loeaded, yet or an internal error destroyed the reference.' ); + } + return $this->activeReference; + } + + /** + * Mark the submitted image reference as active. + * The image reference submitted is marked as active. All following + * filter operations are performed on this reference. + * + * @param string $image The image reference. + * @return void + * + * @throws ezcImageInvalidReferenceException + * If the given reference is invalid. + */ + protected function setActiveReference( $image ) + { + if ( !isset( $this->references[$image] ) ) + { + throw new ezcImageInvalidReferenceException( 'Could not mark invalid reference as active.' ); + } + $this->activeReference = $image; + } + + /** + * Returns data about a reference. + * This gives you access to the data stored about a loaded image. You can + * either retrieve a certain detail (defined in the references array), with + * specifying it through the second parameter (the method then simply + * returns that detail) or retrieve all available details with leaving that + * parameter out. + * + * By default the following details are available: + * + * 'file' => The file name of the image loaded. + * 'mime' => The mime type of the image loaded. + * 'resource' => A resource referencing it. + * + * + * Of what type the resource is, may differ from handler to handler (e.g. a + * GD resource for the GD handler or a file path for the ImageMagick handler). + * You can simply store your own details be setting them and retreive them + * through this method. + * + * @param string $reference Reference string assigned. + * @param mixed $detail To receive a single detail, set to detail name. + * @return array Array of details if you specify $detail, else depending on + * the detail. If detail is not available, returns false. + * + * @throws ezcImageInvalidReferenceException + * If the given reference is invalid. + * + * @see ezcImageMethodcallHandler::setReferenceData() + */ + protected function getReferenceData( $reference, $detail = null ) + { + if ( !isset( $this->references[$reference] ) ) + { + throw new ezcImageInvalidReferenceException( "Inavlid image reference given: '{$reference}'." ); + } + if ( isset( $detail ) ) + { + return isset( $this->references[$reference][$detail] ) ? $this->references[$reference][$detail] : false; + } + return $this->references[$reference]; + } + + /** + * Set data for an image reference. + * This method allows you to set all data that can be retrieved through + * ezcImageMethodcallHandler::getReferenceData(). You can either set a single detail + * by providing the optional $detail parameter or submit an array containing + * all details at once as the value to set all details. + * + * @param string $reference Reference string of the image data. + * @param mixed $value The value to set. + * @param string $detail The name of the detail to set. + * @return void + * + * @throws ezcImageInvalidReferenceException + * If the given reference is invalid. + * @throws ezcBaseValueException + * If the given detail is invalid. + */ + protected function setReferenceData( $reference, $value, $detail = null ) + { + if ( !isset( $this->references[$reference] ) ) + { + throw new ezcImage( "Invalid image reference given: '{$reference}'." ); + } + if ( isset( $detail ) ) + { + $this->references[$reference][$detail] = $value; + } + else + { + if ( !is_array( $value ) ) + { + throw new ezcBaseValueException( 'value', $value, 'array' ); + } + if ( !isset( $value['file'] ) ) + { + throw new ezcBaseValueException( 'file', null, 'string' ); + } + if ( !isset( $value['mime'] ) ) + { + throw new ezcBaseValueException( 'mime', null, 'string' ); + } + if ( !isset( $value['resource'] ) ) + { + throw new ezcBaseValueException( 'resource', null, 'string' ); + } + $this->references[$reference] = $value; + } + } + + /** + * Create a reference entry for this file. + * Performs common operations on a specific file, like checking if the file + * exists, if it is loadable, if it's already loaded. Beside of that, it + * creates the reference internally, so you don't need to handle this + * stuff manually with the internal data structure of + * ezcImageMethodcallHandler::$references. It also cares for determining the MIME- + * type of the image and sets the newly created reference to be active. + * + * @param string $file The file to load. + * @param string $mime The MIME type of the file. + * @return string reference The reference string for this file. + * + * @throws ezcBaseFileNotFoundException + * If the desired file does not exist. + * @throws ezcBaseFilePermissionException + * If the desired file is not readable. + * @throws ezcBaseValueException + * If the given detail is invalid. + * @throws ezcImageMimeTypeUnsupportedException + * If the desired file has a not recognized type. + */ + protected function loadCommon( $file, $mime = null ) + { + if ( !is_file( $file ) ) + { + throw new ezcBaseFileNotFoundException( $file ); + } + if ( !is_readable( $file ) ) + { + throw new ezcBaseFilePermissionException( $file, ezcBaseFileException::READ ); + } + + $file = realpath( $file ); + $ref = md5( $file ); + + if ( !isset( $mime ) ) + { + $mime = ''; + try + { + $analyzer = new ezcImageAnalyzer( $file ); + $mime = $analyzer->mime; + } + catch ( ezcImageAnalyzerException $e ) + { + throw new ezcImageMimeTypeUnsupportedException( 'unknown/unknown', 'input' ); + } + } + + $this->references[$ref] = array(); + $this->setReferenceData( + $ref, + array( + 'file' => $file, + 'mime' => $mime, + 'resource' => false, + ) + ); + $this->setActiveReference( $ref ); + + return $ref; + } + + /** + * Performs common operations before saving a file. + * This method should/can be used while implementing the save method of an + * ezcImageMethodcallHandler. It performs several tasks, like setting the new file name, + * if it has been submitted, and the new MIME type. Beside that, it checks + * if one can write to the new file and if the handler is able to process + * the new MIME type. + * + * @param string $reference The image reference. + * @param string $newFile The new filename. + * @param string $mime The new MIME type. + * @return void + * + * @throws ezcBaseFilePermissionException + * If the desired file is not writeable. + * @throws ezcImageMimeTypeUnsupportedException + * If the desired MIME type is not recognized. + */ + protected function saveCommon( $reference, $newFile = null, $mime = null ) + { + if ( isset( $newFile ) ) + { + $this->setReferenceData( $reference, $newFile, 'file' ); + } + $file = $this->getReferenceData( $reference, 'file' ); + if ( file_exists( $file ) && !is_writeable( $file ) ) + { + throw new ezcBaseFilePermissionException( $file, ezcBaseFileException::WRITE ); + } + + if ( isset( $mime ) ) + { + $this->setReferenceData( $reference, $mime, 'mime' ); + } + $mime = $this->getReferenceData( $reference, 'mime' ); + if ( $this->allowsOutput( $mime ) === false ) + { + throw new ezcImageMimeTypeUnsupportedException( $mime, 'output' ); + } + } + + /** + * Unsets the reference data for the given reference. + * This method _must_ be called in the implementation of the close() method + * in every ezcImageMethodcallHandler to finally remove the reference. + * + * @param string $reference The reference to free. + * @return void + */ + protected function closeCommon( $reference ) + { + $data = $this->getReferenceData( $reference ); + unset( $this->references[$reference] ); + } +} +?> diff --git a/include/ezcomponents/ImageConversion/src/interfaces/thumbnail.php b/include/ezcomponents/ImageConversion/src/interfaces/thumbnail.php new file mode 100644 index 000000000..94faa7360 --- /dev/null +++ b/include/ezcomponents/ImageConversion/src/interfaces/thumbnail.php @@ -0,0 +1,70 @@ + + * array( + * 0 => , + * 1 => , + * 2 => , + * ); + * + * + * If you are looking for a filter that just resizes your image to + * thumbnail size, you should consider the {@link + * ezcImageGeometryFilters::scale()} filter. + * + * @param int $width Width of the thumbnail. + * @param int $height Height of the thumbnail. + * @param array $color Fill color. + * @return void + */ + public function filledThumbnail( $width, $height, $color = array() ); +} + +?> diff --git a/include/ezcomponents/ImageConversion/src/interfaces/watermark.php b/include/ezcomponents/ImageConversion/src/interfaces/watermark.php new file mode 100644 index 000000000..9ca810a36 --- /dev/null +++ b/include/ezcomponents/ImageConversion/src/interfaces/watermark.php @@ -0,0 +1,74 @@ + diff --git a/include/ezcomponents/ImageConversion/src/options/save_options.php b/include/ezcomponents/ImageConversion/src/options/save_options.php new file mode 100644 index 000000000..ee822785c --- /dev/null +++ b/include/ezcomponents/ImageConversion/src/options/save_options.php @@ -0,0 +1,84 @@ +save() methods. + * + * @property int $compression + * The compression level to use, if compression is supported by the + * target format (e.g. TIFF). A value between 0 and 9 (incl.) is + * expected. + * @property int $quality A quality indicator used to determine the quality of + * the target image, if supported by the target format (e.g. JPEG). A + * value between 0 and 100 (incl.) is expected. + * @property array(int) $transparencyReplacementColor + * Only certain image formats support transparent backgrounds (e.g. + * GIF and PNG). If such images are converted to a format that does + * not support transparency, this color will be used as the new + * background. The color value is given as an array of integers, each + * representing a color value in RGB between 0 and 255. + * array( 255, 0, 0 ) for example would be pure red. + * + * @package ImageConversion + * @version 1.3.5 + */ +class ezcImageSaveOptions extends ezcBaseOptions +{ + /** + * Properties. + * + * @var array(string=>mixed) + */ + protected $properties = array( + "compression" => null, + "quality" => null, + "transparencyReplacementColor" => null, + ); + + /** + * Property set access. + * + * @param string $propertyName + * @param string $propertyValue + * @ignore + * @return void + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case "compression": + if ( ( !is_int( $propertyValue ) || $propertyValue < 0 || $propertyValue > 9 ) && $propertyValue !== null ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, "int > 0 and < 10" ); + } + break; + case "quality": + if ( ( !is_int( $propertyValue ) || $propertyValue < 0 || $propertyValue > 100 ) && $propertyValue !== null ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, "int > 0 and <= 100" ); + } + break; + case "transparencyReplacementColor": + if ( ( !is_array( $propertyValue ) || count( $propertyValue ) < 3 || !isset( $propertyValue[0] ) || !isset( $propertyValue[1] ) || !isset( $propertyValue[2] ) ) && $propertyValue !== null ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, "array(int)" ); + } + break; + default: + throw new ezcBasePropertyNotFoundException( $propertyName ); + } + $this->properties[$propertyName] = $propertyValue; + } +} + +?> diff --git a/include/ezcomponents/ImageConversion/src/structs/converter_settings.php b/include/ezcomponents/ImageConversion/src/structs/converter_settings.php new file mode 100644 index 000000000..d411cf907 --- /dev/null +++ b/include/ezcomponents/ImageConversion/src/structs/converter_settings.php @@ -0,0 +1,71 @@ + + * array( + * 'image/gif' => 'image/png', // Note: lower case! + * 'image/bmp' => 'image/jpeg', + * ) + * + * + * @var array + */ + public $conversions = array(); + + /** + * Create a new instance of ezcImageConverterSettings. + * Create a new instance of ezcImageConverterSettings to be used with + * {@link ezcImageConverter} objects.. + * + * @see ezcImageConverterSettings::$handlers + * @see ezcImageConverterSettings::$conversions + * + * @param array $handlers Array of {@link ezcImageHandlerSettings handler objects}. + * @param array $conversions Map of standard MIME type conversions. + */ + public function __construct( array $handlers = array(), array $conversions = array() ) + { + $this->handlers = $handlers; + $this->conversions = $conversions; + } +} +?> diff --git a/include/ezcomponents/ImageConversion/src/structs/filter.php b/include/ezcomponents/ImageConversion/src/structs/filter.php new file mode 100644 index 000000000..4f594624b --- /dev/null +++ b/include/ezcomponents/ImageConversion/src/structs/filter.php @@ -0,0 +1,81 @@ + + *
  • {@link ezcImageGeometryFilters}
  • + *
  • {@link ezcImageColorspaceFilters}
  • + *
  • {@link ezcImageEffectFilters}
  • + *
  • {@link ezcImageWatermarkFilters}
  • + *
  • {@link ezcImageThumbnailFilters}
  • + * + * + * The options for each filter are represented by the parameters received by + * their corresponding method. You can determine if a certain {@link + * ezcImageHandler} implementation supports a filter by checking the interfaces + * this handler implements. + * + * @see ezcImageTransformation + * + * @package ImageConversion + * @version 1.3.5 + */ +class ezcImageFilter extends ezcBaseStruct +{ + /** + * Name of filter operation to use. + * + * @see ezcImageEffectFilters + * @see ezcImageGeometryFilters + * @see ezcImageColorspaceFilters + * + * @var string + */ + public $name; + + /** + * Associative array of options for the filter operation. + * The array key is the option name and the array entry is the value for + * the option. + * Consult each filter operation to see which names and values to use. + * + * @see ezcImageEffectFilters + * @see ezcImageGeometryFilters + * @see ezcImageColorspaceFilters + * + * @var array(string=>mixed) + */ + public $options; + + /** + * Initialize with the filter name and options. + * + * @see ezcImageFilter::$name + * @see ezcImageFilter::$options + * + * @param array $name Name of filter operation. + * @param array $options Associative array of options for filter operation. + */ + public function __construct( $name, array $options = array() ) + { + $this->name = $name; + $this->options = $options; + } +} +?> diff --git a/include/ezcomponents/ImageConversion/src/structs/handler_settings.php b/include/ezcomponents/ImageConversion/src/structs/handler_settings.php new file mode 100644 index 000000000..99faf305e --- /dev/null +++ b/include/ezcomponents/ImageConversion/src/structs/handler_settings.php @@ -0,0 +1,87 @@ + + * array( + * => , + * [ => , ...] + * ) + * + * + * @var array + */ + public $options = array(); + + /** + * Initialize settings to be used by image handler. + * The settings passed as parameter will be read by the + * {@link ezcImageConverter converter} to figure out which image handler to + * use and then passed to the {@link ezcImageHandler image handler objects}. + * + * @see ezcImageHandlerSettings::$referenceName + * @see ezcImageHandlerSettings::$className + * @see ezcImageHandlerSettings::$settings + * + * @param string $referenceName + * The reference name for the handler, e.g. 'GD' or 'ImageMagick' + * @param string $className + * The name of the handler class to instantiate, e.g. + * 'ezcImageGdHandler' or 'ezcImageImagemagickHandler' + * @param array $options + * Associative array of settings for the handler. + */ + public function __construct( $referenceName, $className, array $options = array() ) + { + $this->referenceName = $referenceName; + $this->className = $className; + $this->options = $options; + } +} +?> diff --git a/include/ezcomponents/ImageConversion/src/transformation.php b/include/ezcomponents/ImageConversion/src/transformation.php new file mode 100644 index 000000000..aca1d798e --- /dev/null +++ b/include/ezcomponents/ImageConversion/src/transformation.php @@ -0,0 +1,401 @@ + + * $filters = array( + * new ezcImageFilter( 'scaleDownByWidth', + * array( + * 'width' => 100 + * ) + * ), + * new ezcImageFilter( 'crop', + * array( + * 'x' => 0, + * 'y' => 0, + * 'width' => 100, + * 'height' => 100, + * ) + * ), + * ); + * $mimeTypes = array( 'image/jpeg', 'image/png' ); + * + * // ezcImageTransformation object returned for further manipulation + * $thumbnail = $converter->createTransformation( + * 'thumbnail', + * $filters, + * $mimeTypes + * ); + * + * $converter->transform( 'thumbnail', 'var/storage/myOriginal1.jpg', + * 'var/storage/myThumbnail1' ); // res: image/jpeg + * $converter->transform( 'thumbnail', 'var/storage/myOriginal2.png', + * 'var/storage/myThumbnail2' ); // res: image/png + * $converter->transform( 'thumbnail', 'var/storage/myOriginal3.gif', + * 'var/storage/myThumbnail3' ); // res: image/.png + * + * // Animated GIF, will simply be copied! + * $converter->transform( 'thumbnail', 'var/storage/myOriginal4.gif', + * 'var/storage/myThumbnail4' ); // res: image/gif + * + * + * @see ezcImageConverter + * + * @package ImageConversion + * @version 1.3.5 + */ +class ezcImageTransformation +{ + /** + * Array of MIME types allowed as output for this transformation. + * Leave empty, for all MIME types to be allowed. + * + * @var array(string) + */ + protected $mimeOut; + + /** + * Stores the filters utilized by a transformation. + * + * @var array(ezcImageFilter) + */ + protected $filters; + + /** + * Stores the name of this transformation. + * + * @var string + */ + protected $name; + + /** + * The ezcImageConverter + * + * @var ezcImageConverter + */ + protected $converter; + + /** + * The handler last used for filtering. + * + * @var ezcImageHandler + */ + protected $lastHandler; + + /** + * Options for the final save step. + * + * @var ezcSaveOptions + */ + protected $saveOptions; + + /** + * Initialize transformation. + * + * @param ezcImageConverter $converter The global converter. + * @param string $name Name for the transformation. + * @param array(ezcImageFilter) $filters Filters to apply. + * @param array(string) $mimeOut Output MIME types. + * @param ezcImageSaveOptions $saveOptions Options for saving images. + * + * @throws ezcImageFiltersException + * On invalid filter or filter settings error. + * @throws ezcImageMimeTypeUnsupportedException + * If the output type is unsupported. + */ + public function __construct( ezcImageConverter $converter, $name, array $filters = array(), array $mimeOut = array(), ezcImageSaveOptions $saveOptions = null ) + { + $this->converter = $converter; + $this->name = $name; + $this->setFilters( $filters ); + $this->setMimeOut( $mimeOut ); + $this->setSaveOptions( $saveOptions !== null ? $saveOptions : new ezcImageSaveOptions() ); + } + + /** + * Add a filter to the conversion. + * Adds a filter with the specific settings. Filters can be added either + * before an existing filter or at the end (leave out $before parameter). + * + * @param ezcImageFilter $filter The filter definition. + * @param int $before Where to add the filter + * @return void + * + * @throws ezcImageFilterNotAvailableException + * If the given filter is not available. + */ + public function addFilter( ezcImageFilter $filter, $before = null ) + { + if ( $this->converter->hasFilter( $filter->name ) === false ) + { + throw new ezcImageFilterNotAvailableException( $filter->name ); + } + if ( isset( $before ) && isset( $this->filters[$before] ) ) + { + array_splice( $this->filters, $before, 0, array( $filter ) ); + return; + } + $this->filters[] = $filter; + } + + /** + * Determine output MIME type + * Returns the MIME type that the transformation will output. + * + * @param string $fileIn File that should deal as input for the transformation. + * @param string $mimeIn Specify the MIME type, so method does not need to. + * + * @return string MIME type the transformation will output. + * + * @throws ezcImageAnalyzerException If the input type is unsupported. + */ + public function getOutMime( $fileIn, $mimeIn = null ) + { + if ( !isset( $mimeIn ) ) + { + $analyzer = new ezcImageAnalyzer( $fileIn ); + $mimeIn = $analyzer->mime; + } + $mimeOut = $this->converter->getMimeOut( $mimeIn ); + // Is output type allowed by this transformation? Else use first allowed one... + return in_array( $mimeOut, $this->mimeOut ) ? $mimeOut : reset( $this->mimeOut ); + } + + /** + * Apply the given filters for the transformation. + * Applies the conversion as defined to the given file and saves it as + * defined. + * + * @param string $fileIn The file to transform. + * @param string $fileOut The file to save the transformed image to. + * @return void + * + * @throws ezcImageTransformationException If an error occurs during the + * transformation. The returned exception contains the exception + * the problem resulted from in it's public $parent attribute. + * @throws ezcBaseFileNotFoundException If the file you are trying to + * transform does not exists. + * @throws ezcBaseFilePermissionException If the file you are trying to + * transform is not readable. + */ + public function transform( $fileIn, $fileOut ) + { + // Sanity checks + if ( !is_file( $fileIn ) ) + { + throw new ezcBaseFileNotFoundException( $fileIn ); + } + if ( !is_readable( $fileIn ) ) + { + throw new ezcBaseFilePermissionException( $fileIn, ezcBaseFileException::READ ); + } + + // Start atomic file operation + $fileTmp = tempnam( dirname( $fileOut ) . DIRECTORY_SEPARATOR, '.'. basename( $fileOut ) ); + copy( $fileIn, $fileTmp ); + + try + { + // MIME types + $analyzer = new ezcImageAnalyzer( $fileTmp ); + + // Do not process animated GIFs + if ( $analyzer->data->isAnimated ) + { + copy( $fileTmp, $fileOut ); + unlink( $fileTmp ); + return; + } + + $mimeIn = $analyzer->mime; + } + catch ( ezcImageAnalyzerException $e ) + { + // Clean up + unlink( $fileTmp ); + // Rethrow + throw new ezcImageTransformationException( $e ); + } + + $outMime = $this->getOutMime( $fileTmp, $mimeIn ); + + $ref = ''; + + // Catch exceptions for cleanup + try + { + // Apply the filters + foreach ( $this->filters as $filter ) + { + // Avoid reopening in same handler + if ( isset( $this->lastHandler ) ) + { + if ( $this->lastHandler->hasFilter( $filter->name ) ) + { + $this->lastHandler->applyFilter( $ref, $filter ); + continue; + } + else + { + // Handler does not support filter, save file + $this->lastHandler->save( $ref ); + $this->lastHandler->close( $ref ); + } + } + // Get handler to perform filter correctly + $this->lastHandler = $this->converter->getHandler( $filter->name, $mimeIn ); + $ref = $this->lastHandler->load( $fileTmp, $mimeIn ); + $this->lastHandler->applyFilter( $ref, $filter ); + } + + // When no filters are performed by a transformation, we might have no last handler here + if ( !isset( $this->lastHandler ) ) + { + $this->lastHandler = $this->converter->getHandler( null, $mimeIn, $outMime ); + $ref = $this->lastHandler->load( $fileTmp, $mimeIn ); + } + + // Perform conversion + if ( $this->lastHandler->allowsOutput( ( $outMime ) ) ) + { + $this->lastHandler->convert( $ref, $outMime ); + } + else + { + // Close in last handler + $this->lastHandler->save( $ref ); + $this->lastHandler->close( $ref ); + // Destroy invalid reference (has been closed) + $ref = null; + // Retreive correct handler + $this->lastHandler = $this->converter->getHandler( null, $mimeIn, $outMime ); + // Load in new handler + $ref = $this->lastHandler->load( $fileTmp ); + // Perform conversion + $this->lastHandler->convert( $ref, $outMime ); + } + // Everything done, save and close + $this->lastHandler->save( $ref, null, null, $this->saveOptions ); + $this->lastHandler->close( $ref ); + } + catch ( ezcImageException $e ) + { + // Cleanup + if ( $ref !== null ) + { + $this->lastHandler->close( $ref ); + } + if ( file_exists( $fileTmp ) ) + { + unlink( $fileTmp ); + } + $this->lastHandler = null; + // Rethrow + throw new ezcImageTransformationException( $e ); + } + + // Cleanup + $this->lastHandler = null; + + // Finalize atomic file operation + if ( ezcBaseFeatures::os() === 'Windows' && file_exists( $fileOut ) ) + { + // Windows does not allows overwriting files using rename, + // therefore the file is unlinked here first. + if ( unlink( $fileOut ) === false ) + { + // Cleanup + unlink( $fileTmp ); + throw new ezcImageFileNotProcessableException( $fileOut, 'The file exists and could not be unlinked.' ); + } + } + if ( @rename( $fileTmp, $fileOut ) === false ) + { + unlink( $fileTmp ); + throw new ezcImageFileNotProcessableException( $fileOut, "The temporary file {$fileTmp} could not be renamed to {$fileOut}." ); + } + } + + /** + * Set the filters for this transformation. + * Checks if the filters defined are available and saves them to the created + * transformation if everything is okay. + * + * @param array(ezcImageFilter) $filters Array of {@link ezcImageFilter filter objects}. + * @return void + * + * @throws ezcImageFilterNotAvailableException + * If a filter is not available. + * @throws ezcBaseFileException + * If the filter array contains invalid object entries. + */ + protected function setFilters( array $filters ) + { + foreach ( $filters as $id => $filter ) + { + if ( !$filter instanceof ezcImageFilter ) + { + throw new ezcBaseSettingValueException( 'filters', 'array( int => ' . get_class( $filter ) . ' )', 'array( int => ezcImageFilter )' ); + } + if ( !$this->converter->hasFilter( $filter->name ) ) + { + throw new ezcImageFilterNotAvailableException( $filter->name ); + } + } + $this->filters = $filters; + } + + /** + * Sets the MIME types which are allowed for output. + * + * @param array $mime MIME types to allow output for. + * @return void + * + * @throws ezcImageMimeTypeUnsupportedException + * If the MIME types cannot be used as output of any of the + * handlers in the converter. + */ + protected function setMimeOut( array $mime ) + { + foreach ( $mime as $mimeType ) + { + if ( !$this->converter->allowsOutput( $mimeType ) ) + { + throw new ezcImageMimeTypeUnsupportedException( $mimeType, 'output' ); + } + } + $this->mimeOut = $mime; + } + + /** + * Sets the save options. + * Sets the save options, that are used for the final save step of the + * transformation. + * + * {@link ezcImageSaveOptions} + * + * @param ezcImageSaveOptions $options Save options. + * @return void + */ + public function setSaveOptions( ezcImageSaveOptions $options ) + { + $this->saveOptions = $options; + } +} +?> diff --git a/include/ezcomponents/ImageConversion/tests/converter_test.php b/include/ezcomponents/ImageConversion/tests/converter_test.php new file mode 100644 index 000000000..7d98b6721 --- /dev/null +++ b/include/ezcomponents/ImageConversion/tests/converter_test.php @@ -0,0 +1,614 @@ + "image/png", + "image/xpm" => "image/jpeg", + "image/wbmp" => "image/jpeg", + ); + if ( ezcBaseFeatures::os() === 'Windows' ) + { + unset( $conversionsIn["image/xpm"] ); + } + $settings = new ezcImageConverterSettings( + array( new ezcImageHandlerSettings( "GD", "ezcImageGdHandler" ) ), + $conversionsIn + ); + $this->converter = new ezcImageConverter( $settings ); + } + catch ( Exception $e ) + { + $this->markTestSkipped( $e->getMessage() ); + } + } + + protected function tearDown() + { + unset( $this->converter ); + } + + // Constructor tests + + public function testConstructSingleHandlerSuccess() + { + $conversionsIn = array( + "image/gif" => "image/png", + "image/xpm" => "image/jpeg", + "image/wbmp" => "image/jpeg", + ); + if ( ezcBaseFeatures::os() === 'Windows' ) + { + unset( $conversionsIn["image/xpm"] ); + } + try + { + $settings = new ezcImageConverterSettings( array( new ezcImageHandlerSettings( "GD", "ezcImageGdHandler" ) ), + $conversionsIn ); + $converter = new ezcImageConverter( $settings ); + } + catch ( Exception $e ) + { + $this->markTestSkipped(); + } + + $handlers = $this->readAttribute( $converter, "handlers" ); + $settings = $this->readAttribute( $converter, "settings" ); + + $this->assertType( + "ezcImageGdHandler", + $handlers["GD"], + "Handler is not an instance of ezcImageGdHandler." + ); + $this->assertEquals( + $conversionsIn, + $settings->conversions, + "Conversions not registered successfully." + ); + } + + public function testConstructFailureInvalidSettings() + { + $conversionsIn = array( + "image/gif" => "image/png", + "image/xpm" => "image/jpeg", + "image/wbmp" => "image/jpeg", + ); + if ( ezcBaseFeatures::os() === 'Windows' ) + { + unset( $conversionsIn["image/xpm"] ); + } + try + { + $settings = new ezcImageConverterSettings( + array( new stdClass() ), + $conversionsIn + ); + $converter = new ezcImageConverter( $settings ); + $this->fail( 'Exception not thrown on invalid handler settings.' ); + } + catch ( ezcImageHandlerSettingsInvalidException $e ) + {} + } + + public function testConstructSingleHandlerFailureOutputMimeTypeNotSupported() + { + $conversionsIn = array( + "image/gif" => "image/png", + "image/xpm" => "application/ezc", + "image/wbmp" => "image/jpeg", + ); + $settings = new ezcImageConverterSettings( + array( new ezcImageHandlerSettings( "GD", "ezcImageGdHandler" ) ), + $conversionsIn + ); + try + { + $converter = new ezcImageConverter( $settings ); + } + catch ( ezcImageMimeTypeUnsupportedException $e ) + { + return; + } + $this->fail( "Expected excption not thrown when creating ezcImageConverter with unsupported conversion." ); + } + + public function testConstructSingleHandlerFailureInputMimeTypeNotSupported() + { + $conversionsIn = array( + "image/gif" => "image/png", + "image/ezc" => "image/jpeg", + "image/wbmp" => "image/jpeg", + ); + $settings = new ezcImageConverterSettings( + array( new ezcImageHandlerSettings( "GD", "ezcImageGdHandler" ) ), + $conversionsIn + ); + + try + { + $converter = new ezcImageConverter( $settings ); + } + catch ( ezcImageMimeTypeUnsupportedException $e ) + { + return; + } + $this->fail( "Expected excption not thrown when creating ezcImageConverter with unsupported conversion." ); + } + + public function testConstructSingleHandlerFailureHandlerNotAvailable() + { + $conversionsIn = array( + "image/gif" => "image/png", + "image/xpm" => "image/jpeg", + "image/wbmp" => "image/jpeg", + ); + $settings = new ezcImageConverterSettings( + array( new ezcImageHandlerSettings( "Toby", "fooImageHandlerToby" ) ), + $conversionsIn + ); + try + { + $converter = new ezcImageConverter( $settings ); + } + catch ( ezcImageHandlerNotAvailableException $e ) + { + return; + } + $this->fail( "Expected excption not thrown when creating ezcImageConverter with unsupported handler." ); + } + + // Transformation tests + + public function testCreateTransformation() + { + $transformation = $this->converter->createTransformation( "thumbnail", array(), array() ); + $this->assertType( + "ezcImageTransformation", + $transformation, + "Converter does not return created transformation." + ); + } + + // Issue #12667: ezcImageConverter doesn't pass saveOptions to + // ezcImageTransformation.' + public function testCreateTransformationWithSaveOptions() + { + $options = new ezcImageSaveOptions(); + $transformation = $this->converter->createTransformation( "thumbnail", array(), array(), $options ); + $this->assertAttributeSame( + $options, + 'saveOptions', + $transformation, + "Converter did not pass save options correctly." + ); + } + + // MIME type tests + + public function testAllowsInputSuccess() + { + $this->assertTrue( + $this->converter->allowsInput( "image/jpeg" ), + "Converter does not allow input MIME type . This sounds impossible..." + ); + } + + public function testAllowsInputFailure() + { + $this->assertFalse( + $this->converter->allowsInput( "application/ezc" ), + "Converter allows input MIME type . This sounds impossible..." + ); + } + + public function testAllowsOutputSuccess() + { + $this->assertTrue( + $this->converter->allowsOutput( "image/jpeg" ), + "Converter does not allow output MIME type . This sounds impossible..." + ); + } + + public function testAllowsOutputFailure() + { + $this->assertFalse( + $this->converter->allowsOutput( "application/ezc" ), + "Converter allows output MIME type . This sounds impossible..." + ); + } + + public function testGetMimeOutSuccessConversionPerformed() + { + $this->assertEquals( + "image/png", + $this->converter->getMimeOut( "image/gif" ), + "Converter converted MIME type incorrectly." + ); + } + + public function testGetMimeOutSuccessNoConversionPerformed() + { + $this->assertEquals( + "image/jpeg", + $this->converter->getMimeOut( "image/jpeg" ), + "Converter converted MIME type incorrectly." + ); + } + + public function testGetMimeOutFailure() + { + try + { + $this->converter->getMimeOut( "application/ezc" ); + } + catch ( ezcImageMimeTypeUnsupportedException $e ) + { + return; + } + $this->fail( "Expected exception not thrown when getting output MIME type for invalid input type." ); + } + + // Filter tests + + public function testHasFilterSuccess() + { + $this->assertTrue( + $this->converter->hasFilter( "scale" ), + "Converter does not have filter . This sounds impossible..." + ); + } + + public function testHasFilterFailure() + { + $this->assertFalse( + $this->converter->hasFilter( "ezc" ), + "Converter has filter . This sounds impossible..." + ); + } + + public function testGetFilterNamesIncluded() + { + $standardFilters = array( + "scale", + "scaleWidth", + "scaleHeight", + "scalePercent", + "scaleExact", + "crop", + "colorspace", + ); + $this->assertEquals( + array_intersect( $standardFilters, $this->converter->getFilterNames() ), + $standardFilters, + "Converter seems not to support standard filters from GD." + ); + } + + public function testGetFilterNamesExcluded() + { + $impossibleFilters = array( + "__construct", + "__destruct", + "__get", + "__set", + "__call", + ); + $this->assertEquals( + array_intersect( $impossibleFilters, $this->converter->getFilterNames() ), + array(), + "Converter seems to support impossible filters." + ); + } + + // Conversion tests + + public function testApplyFilterSuccessScale() + { + $srcPath = $this->testFiles["jpeg"]; + $dstPath = $this->getTempPath(); + + + $this->converter->applyFilter( + new ezcImageFilter( + "scale", + array( "width" => 10, "height" => 10, "direction" => ezcImageGeometryFilters::SCALE_DOWN ) + ), + $srcPath, + $dstPath + ); + + $this->assertImageSimilar( + $this->getReferencePath(), + $dstPath, + "Image comparison failed.", + 2000 + ); + } + + public function testApplyFilterSuccessColorspace() + { + $srcPath = $this->testFiles["jpeg"]; + $dstPath = $this->getTempPath(); + + + $this->converter->applyFilter( new ezcImageFilter( "colorspace", array( "space" => ezcImageColorspaceFilters::COLORSPACE_MONOCHROME ) ), + $srcPath, $dstPath ); + + $this->assertImageSimilar( + $this->getReferencePath(), + $dstPath, + "Image comparison failed.", + 2000 + ); + } + + public function testApplyFilterSuccessColorspaceDefinedHandler() + { + $srcPath = $this->testFiles['jpeg']; + $dstPath = $this->getTempPath(); + + + $this->converter->applyFilter( + new ezcImageFilter( + 'colorspace', + array( + 'space' => ezcImageColorspaceFilters::COLORSPACE_MONOCHROME + ) + ), + $srcPath, + $dstPath, + 'GD' + ); + + $this->assertImageSimilar( + $this->getReferencePath(), + $dstPath, + "Image comparison failed.", + 2000 + ); + } + + public function testApplyFilterFailureHandlerNotAvailable() + { + $srcPath = $this->testFiles["jpeg"]; + $dstPath = $this->getTempPath(); + + try + { + $this->converter->applyFilter( + new ezcImageFilter( "colorspace", array( "space" => ezcImageColorspaceFilters::COLORSPACE_MONOCHROME ) ), + $srcPath, + $dstPath, + "ezc" + ); + } + catch ( ezcImageHandlerNotAvailableException $e ) + { + return; + } + $this->fail( "Converter did not throw exception on not available handler while applying filter." ); + } + + public function testApplyFilterFailurewFilterNotAvailable() + { + $srcPath = $this->testFiles["jpeg"]; + $dstPath = $this->getTempPath(); + + try + { + $this->converter->applyFilter( + new ezcImageFilter( "ezc", array() ), + $srcPath, + $dstPath + ); + } + catch ( ezcImageFilterNotAvailableException $e ) + { + return; + } + $this->fail( "Converter did not throw exception on not available filter while applying filter." ); + } + + // Handler retrieval tests + + public function testGetHandlerSuccessNoFilterNoInNoOut() + { + $this->assertType( + "ezcImageHandler", + $this->converter->getHandler(), + "Returned object is not an ezcImageHandler." + ); + } + + public function testGetHandlerSuccessFilterNoInNoOut() + { + $this->assertType( + "ezcImageHandler", + $this->converter->getHandler( "scale" ), + "Returned object is not an ezcImageHandler." + ); + } + + public function testGetHandlerSuccessNoFilterInNoOut() + { + $this->assertType( + "ezcImageHandler", + $this->converter->getHandler( null, "image/jpeg" ), + "Returned object is not an ezcImageHandler." + ); + } + + public function testGetHandlerSuccessNoFilterNoInOut() + { + $this->assertType( + "ezcImageHandler", + $this->converter->getHandler( null, null, "image/jpeg" ), + "Returned object is not an ezcImageHandler." + ); + } + + public function testGetHandlerSuccessFilterInOut() + { + $this->assertType( + "ezcImageHandler", + $this->converter->getHandler( "scale", "image/jpeg", "image/jpeg" ), + "Returned object is not an ezcImageHandler." + ); + } + + public function testGetHandlerFailureFilterNoInNoOut() + { + try + { + $this->converter->getHandler( "ezc" ); + } + catch ( ezcImageHandlerNotAvailableException $e ) + { + return; + } + $this->fail( "Converter did not throw exception on request of impossible handler." ); + } + + public function testGetHandlerFailureNoFilterInNoOut() + { + try + { + $this->converter->getHandler( null, "application/ezc" ); + } + catch ( ezcImageHandlerNotAvailableException $e ) + { + return; + } + $this->fail( "Converter did not throw exception on request of impossible handler." ); + } + + public function testGetHandlerFailureNoFilterNoInOut() + { + try + { + $this->converter->getHandler( null, null, "application/ezc" ); + } + catch ( ezcImageHandlerNotAvailableException $e ) + { + return; + } + $this->fail( "Converter did not throw exception on request of impossible handler." ); + } + + public function testGetHandlerFailureNotAvailableFilterInOut() + { + try + { + $this->converter->getHandler( "ezc", "application/ezc", "application/ezc" ); + } + catch ( ezcImageHandlerNotAvailableException $e ) + { + return; + } + $this->fail( "Converter did not throw exception on request of impossible handler." ); + } + + public function testCreateTransformationFailureCreatedTwice() + { + $this->converter->createTransformation( 'foo', array(), array() ); + + try + { + $this->converter->createTransformation( 'foo', array(), array() ); + $this->fail( 'Expected not thrown on double created transformation.' ); + } + catch ( ezcImageTransformationAlreadyExistsException $e ) + {} + } + + public function testRemoveTransformationSuccess() + { + $this->converter->createTransformation( 'foo', array(), array() ); + $transformations = $this->readAttribute( $this->converter, "transformations" ); + + $this->assertEquals( + 1, + count( $transformations ) + ); + + $this->converter->removeTransformation( 'foo' ); + + $transformations = $this->readAttribute( $this->converter, "transformations" ); + $this->assertEquals( + 0, + count( $transformations ) + ); + } + + public function testRemoveTransformationFailureNotExists() + { + try + { + $this->converter->removeTransformation( 'foo' ); + $this->fail( 'Expected not thrown on remove of non-existent transformation.' ); + } + catch ( ezcImageTransformationNotAvailableException $e ) + {} + } + + public function testApplyTransformationSuccess() + { + $srcPath = $this->testFiles["jpeg"]; + $dstPath = $this->getTempPath(); + + $this->converter->createTransformation( + 'foo', + array( + new ezcImageFilter( + "colorspace", + array( + "space" => ezcImageColorspaceFilters::COLORSPACE_MONOCHROME + ) + ), + ), + array( 'image/jpeg' ) + ); + $this->converter->transform( 'foo', $srcPath, $dstPath ); + } + + public function testApplyTransformationFailureNonExistent() + { + try + { + $this->converter->transform( 'foo', '', '' ); + $this->fail( 'Expected not thrown when non-existent transformation should be applied.' ); + } + catch ( ezcImageTransformationNotAvailableException $e ) + {} + } +} +?> diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionConverterTest_testApplyFilterSuccessColorspace b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionConverterTest_testApplyFilterSuccessColorspace new file mode 100644 index 0000000000000000000000000000000000000000..55396532aad498a77f36f505b6753ae137f956cc GIT binary patch literal 6732 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionConverterTest_testApplyFilterSuccessColorspaceDefinedHandler b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionConverterTest_testApplyFilterSuccessColorspaceDefinedHandler new file mode 100644 index 0000000000000000000000000000000000000000..55396532aad498a77f36f505b6753ae137f956cc GIT binary patch literal 6732 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionConverterTest_testApplyFilterSuccessScale b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionConverterTest_testApplyFilterSuccessScale new file mode 100644 index 0000000000000000000000000000000000000000..94484d83e28591a5c9863d46333d9520ca54a4a4 GIT binary patch literal 740 zcmex=_1P|rX?qqI0P zFI~aY%U!`Mz|~!$%*;qrMU_b4?usLlYAdd38%$3nLpnV-q8g zA&i`yoIKn-61=<;Mv5|uMkIs(2N(o77&sWXm>HEAm;@P_1sVSzVUP#6M4GWKmj7kOu zR(eKeR&hybS$RceRdY*gTYE=m*QCi)rcRqaW9F z9X@jO*zpr5PhGlvWX5a=%^78Yg}c96dqnaY8fS&)TQ(U48ZF_1m6P*};Rkwe63;=+vwIhBorK8Pk2 zUE~r|F?p!^5#%+n&xrF_6Inikdko>PTMRtRjKIia7G$tzSh%#p%QvXv(yi2tdG{;I t@{Bm+W}MIY&+w}^>25_4>+YFh`BSVJ`(~Vf>?&$^PJ6+-H}(H-0s!TY`IZ0x literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersGdTest_testColorspaceGrey b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersGdTest_testColorspaceGrey new file mode 100644 index 0000000000000000000000000000000000000000..e3fc3d4326425575babd5be178994bd389015b74 GIT binary patch literal 4623 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersGdTest_testColorspaceSepia b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersGdTest_testColorspaceSepia new file mode 100644 index 0000000000000000000000000000000000000000..10a72e60ed8e74a87f0d57c6e1ad3d8c6dd042cd GIT binary patch literal 4758 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 p?bQ0YB4PQ3r;EeBKjYxHNbI??_1P|rX?qqI0P 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 o_Ub5Jr3;_1P|rX?qqI0P zFI~aY%U!`Mz|~!$%*;qrMU_b4?usLlYAdd38%$3nLpnV-q8g zA&i`yoIKn-61=<;Mv5|uMkIs(2N(o77>pQHEAm;@P_1sVSzVUP#6M4GWKmj7kOu zR(eKeR&hybS$RceRdY*gTYE=m*QCi)rcRqaW9F z9X@jO*zpr5PhGlvWX5a=%^78Yg}c96dqnaY8fS&)TQ(U48ZF_1m6P*};Rkwe63;=+vwIhBorK8Pk2 zUE~r|F?p!^5#%+n&xrF_6Inikdko>PTMRtRjKIia7G$tzc)Tb)MQ_`yQ&tn&ndYhc z$Q+k*-x|3^*qL#rr;Fs_6yAG>b_&-P+q6EL*r>mw^}xxK_UCqL9zAh6V#&J_UvlcMGOxE>^SpGixbZs& zb*Hkw^YpJRo*KHzriG>K;G=C{wKbm1^IRJ`DdIr--4jW*znHz3Mjl=zRy`%XT!&Mg zL8hSazQoF|-6k#RnniQ2Mbw{G{j*~2vJZ2wJ^p>7>et1nqRLsnrP`iof6G?njJ?Qu zuy-fB&75D?Qg*pb`gTc0LvV?u-ieA2Of{qp7V89=B(UPKLwAMJuR!OE97}QXU+qe zs^ojyw*0kv9y!f(o}&!cGDj(+xy$G9G;qGWe`%+#zW>Da-*3k(+AUOM#Q)0n^@X)I zuYK*`tkg-FV04Pl{aIE_<hoz*X^#z1_!un}o0NT>9dZ$GLA4#gn|{gIzOE${qRbHTRtVp*Z$KK+Q8V#-gKy&M+mva1(= z%$^~3i{sgmqn*+fif-=tL77*wtTszpyFAG?S)udxNsjuA9sv=F^DF;qU)-bq@O9dT z?A5<(FIk>qd$Vur@#q_Su9t1|GB??g{A2zH(HAS%D(s){(Ii&+pkd#`3q8Dxzb=*d zbfje3^wc{M?t6807R?G#uyPX-Jy-SoMW)oHYyX(kHbs1w-{o*Z;X{$V)y&*?g5kNx zE`;PMDMa>Js{H<|ZTBuXD|FVk;P%5j`pPfZMWk+g-u<5a$HcGP)4RU%%vO6nVR+m)*)_AsJ;GY`-IUM{`|MYI)=RUqF4@de-g)oM?RaK& z3%MzQ5!YTM+xDL4Yp4l6!7g@F?yk1;;d=9)(nWXXEO>sYOFK9sr|*^hF1x8GvtK)~>ICvU3UFV}TI9SokXelF{r5}E)IpBZcb literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersGdTest_testCrop_0_Offset b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersGdTest_testCrop_0_Offset new file mode 100644 index 0000000000000000000000000000000000000000..add7a82706000930ace0d0228cdb7ee041f8a4be GIT binary patch literal 717 zcmex=_1P|rX?qqI0P zFI~aY%U!`Mz|~!$%*;qrMU_b4?usLlYAdd38%$3nLpnV-q8g zA&i`yoIKn-61=<;Mv5|uMkIs(2N(o77`Pa?m>HEAm;@P_1sVSzVUP#6M4GWKmj7kOu zR(eKeR&hybS$RceRdY*gTYE=m*QCi)rcRqaW9F z9X@jO*zpr5PhGlvWX5a=%^78Yg}c96dqnaY8fS&)TQ(U48ZF_1m6P*};Rkwe63;=+vwIhBorK8Pk2 zUE~r|F?p!^5#%+n&xrF_6Inikdko>PTMRtRjKIia7G$tz`23~o%6C!oskyI1MZ_1P|rX?qqI0P zFI~aY%U!`Mz|~!$%*;qrMU_b4?usLlYAdd38%$3nLpnV-q8g zA&i`yoIKn-61=<;Mv5|uMkIs(2N(o77*rXIm>HEAm;@P_1sVSzVUP#6M4GWKmj7kOu zR(eKeR&hybS$RceRdY*gTYE=m*QCi)rcRqaW9F z9X@jO*zpr5PhGlvWX5a=%^78Yg}c96dqnaY8fS&)TQ(U48ZF_1m6P*};Rkwe63;=+vwIhBorK8Pk2 zUE~r|F?p!^5#%+n&xrF_6Inikdko>PTMRtRjKIia7G$tz_kyS-3DV%5;ul+?1&?CVgy=*ozpRi*Bv0mkG4JGM%rhJ+aM>zDg)uH&ya-*R@#RwtbgHyZ-KbyP}e5S$EdRw;7U;Xu^owqY=W(s+?=TGmS@Oj?W%l8bWYQ(;a zhkbaOT)36nfPK#6+v;6QX4Q5^p8wY4*wUi*;>7&}FJGR^&RCwirl9zK(G{sBhdp*Q z+}Y?^5&P{pvyOH1(XwCO9P4h*4``hF^QP3BfU=(C{aMeyyk%k!?O0y3*^KXfa;!<2 zROzNiCYds&3JO3vtHaJ#We|~B4(sj=#cAs$b^E{{Z zv&-(~B)_`kS!O)*v{nW`jhc1z#xjKmshg_j%+k6)#a3f&*Uo32f=O%6MNFEhKKatR z8wc_PZ$3#{uYT92p|;*jW4&4KjZ?mJOS^ss@-Cm2=NqTaJTGI>ZjBn|&bn*2&mXwE pMYwP3mVL54YL5$!PyAyN7_1P|rX?qqI0P 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 M7hv3z*CFfq14FXrb^rhX literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersGdTest_testCrop_4 b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersGdTest_testCrop_4 new file mode 100644 index 0000000000000000000000000000000000000000..a8fda0e13aafadd5f5c9b84d3f0c011aba548284 GIT binary patch literal 1080 zcmex=_1P|rX?qqI0P zFI~aY%U!`Mz|~!$%*;qrMU_b4?usLlYAdd38%$3nLpnV-q8g zA&i`yoIKn-61=<;Mv5|uMkIs(2N(o77}OZlm>HEAm;@P_1sVSzVUP#6M4GWKmj7kOu zR(eKeR&hybS$RceRdY*gTYE=m*QCi)rcRqaW9F z9X@jO*zpr5PhGlvWX5a=%^78Yg}c96dqnaY8fS&)TQ(U48ZF_1m6P*};Rkwe63;=+vwIhBorK8Pk2 zUE~r|F?p!^5#%+n&xrF_6Inikdko>PTMRtRjKIia7G$tzc%C07R$X1KYxgmn>yph! zh8@R~IA8zGb~|)5y|g#cRko??olVfUf*aAd4)L9M9MZ!)M?>O21J|=HWgh9DV?9Hp zJ48)aE)P_mdUw;B4QtGUlxlCBJNV8$IBJ&I9Mf1Ihq?!honO{0^68hCOjns;>$%?j z!?li*gDRhRPJEmr@00we-s|oytrM@h%pYES^Uz_X(7%w-qd7Y1SKTt!oYkoazI(Pv zFg5qa>Ii{IA&X4Di)Y=_xolP$RDBms4|i>Q#^E3la{iHTsuS#jLr@3iYY6; oe_hnI;$6w!e%A{N#BQ1PZgGF=;b^(Hf(gnU<8& zF16t^W5cd9}RQI(s{+;i_a_pf{J_dW0X&-QXByY1OOn?1xR)Q8+#9jW8Zx3VTGjye-#lELc=nMCI_$tdVF{^4NGx$!aBP- zIAIxwNCw8(;E>QjdQ<{7mL3=to{%gjc@5YD2w7RUtPBDUha-^)ITS_#B`=RsS5p2G zvsXiV-(C$ZEiB$dAB!{A)zTuE8yFuTlF4LkeM@T#(h-w`WYXtHAV?$#2f}f&7}8}{8A8{twnN2ZWEFq#d|U=nZjY*(y2gGz zeS(1@+3b+Hg{77KaR*1I6BK99Z@j3dy?uOxq|Ks*g-66E&>4wI$tmAw{*ZMg`zrHB zUjEI3!dpKVmEWzXym$XWRdro`Lt|5OOY7s#uI`@RK5qX2@71rP{IT(g$+xp}g87Aa zi%ZMGwRO?P@0(lV?awX<0RG96o`1sr!-bZ*pfDH+gMW5Gpo!8AqG2*RL|LU{?(o1^ zWgO`;0%ON2tL;GQ9`smMIUhG7w+BytyI=U3_J{1hgJt|*vVXz;?V1EoAVfMm5DnM@ zvy0_Sao(oV1B;u_P7Lc;k8-^P!-dh0u0L@rrly+ivT$wLez7`EZX~BI>NL|C!!5xX zEZ7|dB*3+l+Gp82XBB_xc0J498JG=GSI`OqtqoAc(FgPnYiV?}x3{)DYhA~O$S`+W zVAsDFsg%*G>mU4Z%QWBq!Q3Np&qV^o=+-*y>eY&aLYB>^_rrv5xUZw0()uUrqP@;F4^LR+3-LFX?8lrl#Cd^2lXuF)$h zCNL^JRRZWx*@HF0`i+x$yAGnKP$uEwup6PA3Akt?R!k}=AMp65H?4>5a+5?{UGZtB zb6NaBwH?3wO;`$_xYVBSeyi1Oo3wsGlC&Btvz>t>sHq8It};39{hRt=fsSAn~|lJ zRN;Irf5O*4GO-Ns^9$vL2?~|u`3o}NGGw*%UGqqAH?vNtx=X`bUj59weqbiA;n%HZ( zle6R{7alfZ5*N`|(iP2L_PXN9TCwF;8P4z6c=!~bYttOIecvpCR*hZGrn2!l{5o5) zs)tC9P+n{8R?Z}V6{|yyHD~oIgBZe3S-h9xpn=JhYi*n2cwY_7NJsUgi)FXnQSXiC zoUgl53Rw^T1{EZ)9)WO|pQB6#6*QIla3cymnr*u8ymBsMW6n%8p3sWk;uvkMZ>0as zPx^Q&E#RH2cbQM(88P1cs2b#k6R$NXfnXeM!s^~XtFNFoXE~>Rn=xZ_v2N*g>U3Q{ z76Eh&!|vD`&Sxqm$8ZuUF@4MFL*d~DapQ9Zb+w~g=Et&D%%42Hl8^+&PJda&X@2qQ z!V8CsG)!Lg${Ne@x8V5UU#V&LD)$t|-(L*yBo8Zg1Y82*O9mQh-abAgq%0)ISIQ`#6JLMC0}L$ literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersGdTest_testFillThumbnailTooLargeColorArray b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersGdTest_testFillThumbnailTooLargeColorArray new file mode 100644 index 0000000000000000000000000000000000000000..3aebe9f5079129b39304c88ff4a494cfd3b992db GIT binary patch literal 1928 zcmbW$c{JPU8VB%S@(W3b86j$IMWn(Hf(gnU<8& zF16t^W5cd9}RQI(s{+;i_a_pf{J_dW0X&-QXByY1OOn?1xR)Q8+#9jW8Zx3VTGjye-#lELc=nMCI_$tdVF{^4NGx$!aBP- zIAIxwNCw8(;E>QjdQ<{7mL3=to{%gjc@5YD2w7RUtPBDUha-^)ITS_#B`=RsS5p2G zvsXiV-(C$ZEiB$dAB!{A)zTuE8yFuTlF4LkeM@T#(h-w`WYXtHAV?$#2f}f&7}8}{8A8{twnN2ZWEFq#d|U=nZjY*(y2gGz zeS(1@+3b+Hg{77KaR*1I6BK99Z@j3dy?uOxq|Ks*g-66E&>4wI$tmAw{*ZMg`zrHB zUjEI3!dpKVmEWzXym$XWRdro`Lt|5OOY7s#uI`@RK5qX2@71rP{IT(g$+xp}g87Aa zi%ZMGwRO?P@0(lV?awX<0RG96o`1sr!-bZ*pfDH+gMW5Gpo!8AqG2*RL|LU{?(o1^ zWgO`;0%ON2tL;GQ9`smMIUhG7w+BytyI=U3_J{1hgJt|*vVXz;?V1EoAVfMm5DnM@ zvy0_Sao(oV1B;u_P7Lc;k8-^P!-dh0u0L@rrly+ivT$wLez7`EZX~BI>NL|C!!5xX zEZ7|dB*3+l+Gp82XBB_xc0J498JG=GSI`OqtqoAc(FgPnYiV?}x3{)DYhA~O$S`+W zVAsDFsg%*G>mU4Z%QWBq!Q3Np&qV^o=+-*y>eY&aLYB>^_rrv5xUZw0()uUrqP@;F4^LR+3-LFX?8lrl#Cd^2lXuF)$h zCNL^JRRZWx*@HF0`i+x$yAGnKP$uEwup6PA3Akt?R!k}=AMp65H?4>5a+5?{UGZtB zb6NaBwH?3wO;`$_xYVBSeyi1Oo3wsGlC&Btvz>t>sHq8It};39{hRt=fsSAn~|lJ zRN;Irf5O*4GO-Ns^9$vL2?~|u`3o}NGGw*%UGqqAH?vNtx=X`bUj59weqbiA;n%HZ( zle6R{7alfZ5*N`|(iP2L_PXN9TCwF;8P4z6c=!~bYttOIecvpCR*hZGrn2!l{5o5) zs)tC9P+n{8R?Z}V6{|yyHD~oIgBZe3S-h9xpn=JhYi*n2cwY_7NJsUgi)FXnQSXiC zoUgl53Rw^T1{EZ)9)WO|pQB6#6*QIla3cymnr*u8ymBsMW6n%8p3sWk;uvkMZ>0as zPx^Q&E#RH2cbQM(88P1cs2b#k6R$NXfnXeM!s^~XtFNFoXE~>Rn=xZ_v2N*g>U3Q{ z76Eh&!|vD`&Sxqm$8ZuUF@4MFL*d~DapQ9Zb+w~g=Et&D%%42Hl8^+&PJda&X@2qQ z!V8CsG)!Lg${Ne@x8V5UU#V&LD)$t|-(L*yBo8Zg1Y82*O9mQh-abAgq%0)ISIQ`#6JLMC0}L$ literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersGdTest_testFillThumbnailVertical b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersGdTest_testFillThumbnailVertical new file mode 100644 index 0000000000000000000000000000000000000000..e336896fb1eab47bcea37191aab3205004f8c317 GIT binary patch literal 1580 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

    X*HT3J+3UuI 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testNoisePoisson b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testNoisePoisson new file mode 100644 index 0000000000000000000000000000000000000000..8c9613bd2e01737c518a14af2bfc3d79376d59ee GIT binary patch literal 11239 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testNoiseUniform b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testNoiseUniform new file mode 100644 index 0000000000000000000000000000000000000000..5db872429a5fb3e76213561edbe3b16a3dd5d930 GIT binary patch literal 4892 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScale b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScale new file mode 100644 index 0000000000000000000000000000000000000000..e46230630da75c1602cbf942ac3eedc374583180 GIT binary patch literal 20797 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 CY#bnr;tFyv{W~jv3r0~ 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 V{?mib=JI}&#+qRh0XkBj|Jhg7m#F{% literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleDown_do b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleDown_do new file mode 100644 index 0000000000000000000000000000000000000000..4fb93b72f82adb26b82178d827dd782ba5ebd925 GIT binary patch literal 315 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<6xPJs{tq07fRDu%sYR2dV@klaONI|62?^KyfBPWpF literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleDown_dont b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleDown_dont new file mode 100644 index 0000000000000000000000000000000000000000..a9daff945f2e30e72f4c7a51bc986ac0564cc144 GIT binary patch literal 4890 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleExact_1 b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleExact_1 new file mode 100644 index 0000000000000000000000000000000000000000..5ec2793da1380dd185f8bec2bb67c9cb7fdfec89 GIT binary patch literal 7611 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 BS;7DS literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleExact_2 b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleExact_2 new file mode 100644 index 0000000000000000000000000000000000000000..a967c6c7fa300b212094ca27f04ef434fa5581ab GIT binary patch literal 1008 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<)ny1Q?hYnV8ua zxmZ~tvOpdK3#*_Io3Nr`;Kqd_%8pKn#f=j;9b{K3Ty)VnsASQ$!&d=gj}|0i{nR8(B{N_)w`#0n@kJbz&zPp=8v}OMYd1H*WBJmO?pz9 zegDOVYa5nHi}bnu%st?0H~-Xw@1m;LE8Z%8?W?!C6)9BF_1B<7$>!TrC-6CI3e?+cP4CcFQ!QCMVdnA9wJxU?`^np!@4j(dFX!0VQsLLKS-$0+ z$Jlf$-`{^_(qI~WBwW<T zHNKy-yE^af);Pba6UUEDT(po)y!~g|J%=TAVcT>537yDTd*x`}Gg+0y$3dzWZYQP~ zzvXS2BpWoxV)y*avi}TQ#C{eX(R25V-npt{Me)W1(Xr7!d%PYVb^I&cUd7+JT2H&e z=&5!8oveim{~cQqJv;Pt!}in@zmJOO3o|^r-oEDjSE-&=ZMS)x?;Tw6X^YD9>lOB0 z{B_<*=I(3O)%g1Ka(y%KHDYz1az1^zedhGe_b%`J!h;zqE#C(_JIl5dsBTDoxM!Pv zwER|qxsE%gJUx59%1W=bzWt}c;oD1BDnI)Y=K^w?w@SGYwVvj2Y*0LOodp8x;= literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleExact_3 b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleExact_3 new file mode 100644 index 0000000000000000000000000000000000000000..6919a0019ee0c98566c50c924f82bb6db1e5ca8e GIT binary patch literal 1141 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<EAd6FW%KOn`xj zk(r5!gPD~RqJWW!nSn)+Rgq0dSj5mVu&{9=yV61jTQD3W7{zVPs*3O9G_?4OxT~9fg&R0uzH87yiG+zyovC9-rR+v~}fv`r@oNZIAPP_0gF=@yp(i51v%@ zuJ-uS@hxrYj0&yCud;Quf3n^^)HXMV-CX(c8L4D;&iJ?m+1W~`+#L0q<*#pBvE^jy zl>1*C?GNwGu&er{Eq~ap=P$#O>AP%Z`5xT9ckdOUAj|f54_1Ck+?wvIqp)0bcJs37 zX;+r@mL=(KGJff7V*c@rL*L7$Z_ijIzng4o-Fxalslx7*jkjM-o~oT(aQeZ< z752_Q9@lnIpVL{Q054+BL{d2fewNvH}>za~E zm*dZR_*a-dvFG3V)yF%N+tAuvr-AXkYv$VtnvoAu=JUO4YORhgD>8o`Ii;cwGn zcN|W9TvowYxF=xJp9Ok%Z-;7kyh{)I*!hH`I>hqemvvFSZ^d#u7M2~e?6Z0KZYGbP zze&cuEM8rfc^-NNW$DSTMvGX#U=Wm9KQ8|HM3-(GqSm$xP zR-03^P2r~CvYJZQbftuv)o&dRTwk$BxRv=tfTb;e=9{CblNAl8x$aEZWWexU>bXo} zeZ{Sr9e2+qAHQKFQ=QhIFpWj*_lceN&#kHQ)HW`fQ?vJq+7b6%YcB1P$c$~PzA@|6 N)BH(AHS_=91ORAZ(&_*J literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleHeightDown_1 b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleHeightDown_1 new file mode 100644 index 0000000000000000000000000000000000000000..a9daff945f2e30e72f4c7a51bc986ac0564cc144 GIT binary patch literal 4890 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleHeightDown_2 b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleHeightDown_2 new file mode 100644 index 0000000000000000000000000000000000000000..13493f44004e8c1fb638492b6ae6979376cfa643 GIT binary patch literal 796 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleHeightUp_2 b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleHeightUp_2 new file mode 100644 index 0000000000000000000000000000000000000000..a9daff945f2e30e72f4c7a51bc986ac0564cc144 GIT binary patch literal 4890 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScalePercent_1 b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScalePercent_1 new file mode 100644 index 0000000000000000000000000000000000000000..840bfda39cece4517a49e6b8d5cbe6b25c0f8469 GIT binary patch literal 1839 zcmb7;c{tRI9>#xTFqTQib{S(E6ESvU82i{qaS$DmJ-22stObN@Kc{rA4#KR@sLeqZ(sdl3+}w;|X7AP@+!;~c=A11teP zUS0?<4<7^q;pgWQfQp@g3JOA{L`2Vu$-w1gW#9;eJW4}Z9;v2?K%CcCQPa}KU@&sZ zI1>XMV+~!5&R-=Uetv$aAXM_q8A%-lgo4ihEp|5m;{$NO1u#ef;DUj`Fc7;JkOlxS z0OqXyTiiUnATWdr;6PJhfC~f$gSa`{`TuJGae)DD7>|g8Hm@i?0_p6R)FLLXqj$65 z#XCh^jD>#`8LMyU5}91Sw8zOyf&QxgpKgGY=LUE<2npl-<>CnZH|8*yg0_eb-kDnz zsmuNdKsk&H28IDSU)63gm-hL+C3mG?PpP?#N5R&xd4?mcFLtb9!6-%r zYQMjzd%jz_&fsWy-hHCYaYgJAifku^R}|1?$bRtfHd{{AA4|TH->scm){e-X)1zr#z)5D7mrxKLy4Fo+cy{7 z?&Hv8ue{2&nffjzQ4$F`4)5$_NqJ>LuC7y!az4{6RPNl!+>KKu>4`?Zyxkr+YeFe@l5rUp*9wif~0m8=$%HkgB2YL?@VrA zJNljOwXH7a#jnb5 z6|jM5>bc*N(GIN=hfhqVrkGf4fLV2M^OeK_H@VlJhl-~4vIaCH}>_u{!jUaCZ(&Q&YDYU^H48dm`+_b@tSW^EtPTTOhQZT}c?a6v{#oxnLz>seFdqlkGySM+xuxUB z!KxmzbyGLKIflY7g`Cj-RNqwfrNmAin6P$+%|nOnc6jdRo5pK=m0FikslUW@b<-)^KDfg=RZ%B?53Q`Lo^`IWJUB0Y5!Ubw2=6kk zuV=IxQkkL1x$BpulcKVxBC4vfd}aBoOpS_V2AO9(&4JYZAv#{d`k_JTg3+}cNBiW{ zo}pseP)O>w5`~vaAw&Q}sz-5eNASkq-6V4NJVOo(UbL9Z_*<08CKyV56T(^_$~nGl zOQ&U~dS6Si5vX%=)klf;`=n~$^9vJ+AAYoVN;q-H0cYU`C%B@n%1j3m{&mK5z-ZVb z^>3E(8kJ9i7o5qn#PA$bBk={*KeCK_S2~5N*2tfZX@i0A4UdpNS?h8(sGsPw?vSLt z#&We$sC+$dcvXY%VhcD`mXR5&DVTUG?bn)E@pJNrL|g{fTbu#vct01dHB<*rFMA#6 zBsIwWV9Q{?TH01Xwkaq2x?6<_)R*xZjMGJk|0=(II8EgaTSB_wlau~PvP5r` zAWwB``$;C9)3UN(CcncPqS#ODXiadGPu2&dHhP9UJ?z9 zy`nKfmkY0@*h!#q>!^DLC&tI$>M#`5S#(?og}G;F8?4#pVxIpjBpGo{6JJKGml4`o z_k6+F-LWEetQ7g~AyU5XQ_NZ|r2aV-qT}#lfPcJdWI>cbs-d;*1llRi3;Sx(1y_%p zW*qU)9mHNSygps5zh^Nw+nyd|9DVo$eYZLW@hW93J(8?tnt6AqXPs>Mg6ci0DG_ z0ncB8z#sqy1_nUm-vT_Y08{{YI5@aC*m$_O zxcK;Z1ccCJ6T!g8$0vMBNd4>?HIRj#1^9oq$36fF9$*A8f`!2Xz$C%IBEfhZ1keKj7})>a z_W#=xOe}01Tnqr-zo_JM044?&7AE$8j)nb?!N9}$bvey50sG72CXClvnyv#}?AQi^m!{6A-Aojl>XeULR{YSA)q2 zINxHNu@)f%lS`2(?X9w!rA$s%_)tK%nS+#9TlE-z2fE<(VlV#`CFeTF^rVhLkhop8 zqqA02G4M?%`Vo-m^`><-Y?ceFAR_DY@ zqDFl=Jcyh+rF}UZe1A~t9erPU-7p2R+6k?W?be_3=ANVPFYngH|EfmtW_C+BjJxzX zUf^s&)?qlODSIheKLTq}Ph86nz@S*}K8n^e{Spb_?Z>Fl+AvqFG{!pB${9JLFFw{H zXS{ciu zz5u()77b@PuhhQ5Rm+NyDHRP(g$^5AzTf7%0iAq$qR?u&&qKUea&6aJ=U{6CyGUGU zB7iIt_MsYbAH}dQ5?R*N6{{ew@jGY2N5zrz?$lC+vw0r5{BFm(YmZ#mz#DHrpb|2d zs$wjTCX8B-^<_@vG7=xPs%Wi}=hg!)<%>(`?@N+rPNnGXTcA!$%9=9*PF_YJ_oXGy z%j^PapbXfW&$OX1$%wUNLW!VVr1>~2+u)dsSUG$xGWR)7>TYpKx0-)6G-}-W@1N6qkkfn@w9tsz473L5ddlsmsDGnnKu#6+SuPe~K0#+FGH(@^ z4+4|^P?OhIQo3vV9{}OMk`fzK^<>`q({LW&RHC3t=Cm3O4cR<(eK0NwnCD{ntMxg9 z?5CYGq}MVgxZB2-CKO@gGZ`)kqT*xYK^YUciF>}E4bwQE^|WonQhV|CgkX z_KUcy?Uu107YCr6qcyG5V`rM|3jFFk{uk!2Qg-#bV4L#Xr4Lzyy+g3&dAd-! zWG})R-yz3^r9k$*xqL*Aztd=$+N;B%_x|+y`#Ys^3YF#b`642zh)YFG(KP{?Poiaq z)7`!3_04iE%%#ZKwe$?9?eQbd4CvS}<3$g~dKr93uR_L|yF0x^>7&gNXjR=0J7)5| z@%MBM#+wu4$ffSrPBbeS3<*aC*km5P7B5;4T~=;wG|al}c^8f8e1-oc5(Vph6Njnp zyx$D=wGP~OiVM;HC?6?oQigLa z>?qaXKEcyFhdI)jjkj^=#MF7w#pAv7`p+xl_!^nnC5)`SPCu?-+9vKE6+Le%Aj_UC`j=rq*T;U4hd0;`=wq{Vqdk!E{s4>*r z1++^Uo&J2F_ir>9Sz2lk)Z+Zs@!tA!*$X^l-vuY-G?m!C)Hj5`pm55wtD|Pia!U;o zSbNezQkKsxmgi50{GFpn+8j%i-;xi$p``zhdmf-I7X7jby9_pY-YDADDKs^ z8_7y=cjA7vWBEy&*Le?+fl)UBk3D=g6P3$hfEHEv6q9+XZeOWFU`=*tE3+G&X~COF zHZm`nc1205Sz*P6n-;(4s_LW8nn-(OEqH+yvNN?U#?o}-LJT*w%kP$^pIp4mVUVNn$<%Fer8!6 z6c#(AR0O^zJ@l_>8r;~j4PZlfC_F#(c?7Vl({{0YOV!iw!{Th*!C>2O+gEZtIxo$a zE~(kzTvvOUdfD*4!sVpF+hkph_^r8Qj^)%j-%dYjGe4LJ7gnH0XXV%GrI4EBYdw@& zsq|N&t_fThAFU~YMq6wpnuCH%dr@EEjvKMi%1J0^CQpPKNc+f|3bt5bt~@S!5NlrD z{_$NIU;NgSL?nM!{ZPJthU^%v_~tf|n*ASqJ*WJ13I4)ZhmNzY9#==D{IPck4--)* zcdhE06&X<1*9UFj&F_4V!8>4&Age^g08gnr&gx|~cNrhWN;DQzI|#p8Umf)b*h3fA zWmvrM{dgpo)(LWWr9-}3Wz*T>JeADd&p1bzr0Oz4vakA=t5;vzGaiTWzlYX(TRS z&Q__#0Yv{!2QEhTEw3wCoOcdDGPPonHzGSfVIIMQ;y{d5nafX6M@rVy@TX_1%#VJR z+)PEWQKEWU!V0o-Irl@rQcu*#)-36AB@OS?=qP5?B%gijcoICnKX54TR_LcF(M>A0 zSNncK>6$#mzm_066|eMjyLzEMYJfbuq_*Dd5m4pI!Ru{-ajko6^sWPPE`Y+PVv{>8 zIDp`*%+`tMcAy;Qj+cFqtbm8#1Py#{UfDM@oNhF;nN=Q2l^$tfpRYXT6#*n3wMnU`Df+MJPQ*h1`fw4}!H@G`E8^#*Xb=htm@;p(VYWFRj#wGX4F4 z)0(865ZX%$XckLBF#Z;E0zM~`Wc@KWn~0WGqo|nyjw3pl7F4i%Hs@f+LT~5z$-&DC zrsuV2YD>|)(2n!{dlysCnTT0)6kTtuQq`ZSI=x%FSH^M&K#|v2)ZSeiH8eK6R;k8Y z6C2xZ14MZk={R;+jXv5c{1ZhKA@xO(N^F_>nke23O?rRO;(iO*%cqKc`kw2eE9VjL z?p*hpmVDt!54Jb@crStnCdRA&KF`fnXQuqjpc^9>GyPm2<#hV=;%t-t>o8WMi>cD5 z#2*{MsXDhh#AfD$80l=dkAS!1_K0ntWtSg@&sjM`wid6e2P*1l?20!$b7>La9SiD- zORU)-1CP=`@va&rkFuO7`&4VLKivL5vrb*XULH;6!|^5BwXjQYFkPo_Wt@%7HiKOC z1}#g0^Q7w6`f`gEr+JMfPzXIy5yVTC|9JBqjs#KZkM*{`BpYUHo@??1vV4+-dVCH{ z`Ay8!KJ-E@UHokHYcRul245+my_+yy;JAiq(vgxQJ}CR!z2sM3*SHU4Zn?93g~q{> z+eUcbLx!%H5OTQylTFK}%JT4b@Ygc-0$9;*OwUD{I@Wr1vYYj5-R5S&Ya*pe#71#w z-)+8Q;?E<{j}!$#TkZMbMDRU?ED9nWm(U=3ulA6Q11#4K4xV>v={n<9Ozv55_?-AO z@bzfwMOk>&T|NXMN)?nf9X)Z%lNq-%WG3wGSm>+ayzqRv5B{rBwAQbuz-6+OYR*rh z)76L2e>zR%w)GLPBa7aQ_81dIVR=9TY&)6Ot2=@;wI)5#WS^P;8nNf4*KR3X*#D)T z;l=J&O>N@WZ2mpqJR>a7fVUlm=#EkYzJ$m9az7{IW@zHFRL~?_3l}2h$JqiUJFgIR z&s5CT&+nA1N-l~_yAW)>Ld-j6O~nu67rONLCW;El@!^KGbzBn2kzY_&9D-75cqAJQ zEX0Kc?KisWWwoxS<9~#iQuM9|L$dV`g90_;l@|2KRG5`(<`mC-+DA- zQ!C=KBa+rlJlF_8UMk;olu@C03E3V_ni=%nj32ON4T-WyD%QdA32f{CzLAK|18H{M z{YJmHE{_0RGE4~uZl7>-TJ349%{2uL6rT-@_x#1rf>O-FroZ#9^{s*N-#mR_yg;x* zwZ`ZAXC~&O{L{YHMTE(7pH=1>nX{(rmbUmm;_(_up-Q|Pr&7ev0^M_z9KJxjO+FH> z&xK9@9gEKlqloWkNRb#BSuVDoo2osa9LnACv&{!63>j9;+QS_}vL@*bgofnaM=j=T z+pxCf+K*6+iG{GCF0nQJIVg2Ch+P&Z+j zRr0>$wk=ragC7dDkO*(;I^{yaoP|>bb91eM-IkGV(cmIsmqaZldGKc zD8GVg$^h9-)x>Mv`NWu%T)4CS$8~#?Yo3l5t>?NOQ%&7zs~kW0?tAAXJB?y4ZwO71 zRml`v?HY^P3UnT(7DQtR%V8TY!v~>f40BI!<-vW3B<{(l=NBWP>@kN?0T<)XRfHlKubQs0n5wq zE_6T1UG(rRys>pGb{)c@<1J%ks?hvRy5(>&v_`5j-Zp}N>}=Ud5F?7Wv?+<vkZx3bl=iyA7Ac#Z#Zorr^5ZD z&M0kHkC&>{?JgyNLHBaEoX>YLWAzK}In!mZA@FnGOCvMi@qayvK;>wLaWZMsn)eA9 zxYgG+!{i2T8kPPc?GQypz)b_mVa<>pAI!G%8(x1U^~;gdG>Uk@9tE#W?dTikb?@8> z;!hwiV{3Q#z4WobIV)2~JGnihX;=@zwy0L^U~_uo#7&=vnkq?r-fr~`?*ab?*W_(= zT3F0bPz4YaDY{~u%wE;N)JV=h9NShvzuaJ4OabRrE#+nYt6nX)TLtxCi&2E=KF#Ii zlQCNS&6fFWWb$;TUY>A<(&?c_302`V7DajNZ-8uxQ5<#S!rE;rq@{8H>*#C4B0Ec{ z?U->J^E-jIsulSW#^DIJEfZ#to^oYx7~=5p0KVl*?(9xm5mv9DN3qCw2>C|_ShsFb{sNElRhQa zB!=IVRW?(W0j2<7G?BMfyh>$dUj42(*$x61zW{<(G=yrZtsWW?c^x`DvQRi$54!pj z;r~+(xAI(dSxId5!NN5|W})=UwCV*TT~3T(2L6FQNq`=+kkV+GH`7RHV=Sxc0H`cA zkw=htFkS^CfA>8rEDra50J-p#`(pJ~gJfes)If5!u*LGNDd;Cb(kW&0#j;=Q{E7sE zFbeHgsc0|Y8r%7~Gq*dtBGpKAl>#14G`{UbCGyr{p;orMHTf$sT|gw;!Dokux#I9= zf5A1b9kkJJ&reKBu>-Eh@xJ7^88r+al_{;%-~co0AzJ?&fSoJe)d3b7B=0JPT$V(*|qa?h5yop9J=1E%IlEbGel ze839}>(u1rROFQ_|0{epXp6~&!k^0c*97Cu9M4|?gBI-ESQy4dlz}V7gJc6_G}7YQ zL9H+Aa3n7L#}8p>=($ueT`j>~3uoGb<)=fhc^yz%saCPC|_hc$u-OxiXhsz%zdxGL|Oo_5Se9HK|8{Pa>!DEG)PcrEb6gLGmY zlq7-uG`Qx@7&80JYcmP;hIE+HzB99kzJxe@+^jvt*b_Daa-UcH*H(I!7s+mypAUWvD7EV8b&bHy0b#? zVifyaYrk1!-p93{T3UJ8o6()#oTWM1A$GX1{5j*{Zi(Bu=rEX`V+PX>O$r9Qsn@8)aI7?hJ6q1|@7>ryWWh{zLDpnuadGhR6hhwCj) zyZ!FXyoB(5S1`h5_;h%O*VoP6;RxxNG4W7}3>sBxREb71=O91e9W=NHI%3fVf|Kg?n<>tSS{XFdZHD&}+F%AT_ zs@t7^y0T;`+z%o1m<-~=ot#b=UJqq2P?I7AZJtR&d^*vn4h`j_dfNpMj6yaaQ?7On zW{Gu>6HpU)BG$0Z)>@(7b8ZCYDNfGa#=3MM~af`c*c=b)qi_C5!Zyyy%A5r z_SQ>3h!CFG-rF)pHe5ixTbe{;$A4nlvU_DmwEL9oUjc^8g9hOS%_SIULN}^z)Sj3r z3)Az=9#+s2hqccf`1;}N1lIOE@%^r*fy`=vkOI)~7)4h6o?ghUx2>_4z)MXU}p@EoIM z)^uHr@ugCsMX$jpT8K~d<y+G$DO_La@#;eH*3j4m}|L?kClUiYi0e@`zi0IhK_J`VRDLBchyAS#bpxE?U<@ zhtNfyX#@%Wsd`NaN}*Ui-R3)^!3pNaigon4AEW#T zAQezHU0(Ls$Z2Le)qXkQ;QpZ!dPXc&D-o+mCL8@5hf4!-z}aZG$m^KDP|MeiixTYp z6g#Q^DTR&bjLQ(K!z}MNQ5iDZTSb2J9N1=85SO25R~;!_GS*l#T=ynLg}pG~s#vyj z17z=3d~62o&zaUh2w{u}rW=PpQH@G{gSS6Wt{PAe|Dl#; zf*$ebs?xrHl{sC=&cI{zWlH#~$Vk-&#BCB%6nsXfp9aP7;cm#Y+N9G{s8*>BLAGk?*lC%dWC8DG21+&=GV+lj|?{vse-JwVx0Zl?mSnb%TbSj4LkZ-mt8P6Pg z6>_v|zkUa&7$GL?Re|4gvECUA60g)rhn>malG-h(9X0035=AW3ivD{t=9Xkl&qnT1 zG5%10WT7TI8>28as8b(gCM-=w>5B`*(_;y3ne7p!)kQ#7?IKA*Sjyr+*(d=$KP6uN^L`^2wf@#h zZ;wrTP@``>&quGNR$Up@YdD3*e9rZk!^@wB7QSvwL*O^%f(YyB=dqy0f2G+2F?auv zpuggfXPHBzf72iYWHGC$`r}oLWIt<{ubnEGjIP1~O{Bit@*!wvXP!f9Wc=-Z3tFuG zueb+le1EYl>Rid0_VReQUFh96)kD>|RlV^UB%5zSZuu&nhq;1ZQ1ji31Cht2{{h)Z BS;7DS literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleUp_do b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleUp_do new file mode 100644 index 0000000000000000000000000000000000000000..e46230630da75c1602cbf942ac3eedc374583180 GIT binary patch literal 20797 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 CY#bnr;tFyv{W~jv3r0~ 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 V{?mib=JI}&#+qRh0XkBj|Jhg7m#F{% literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleUp_dont b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleUp_dont new file mode 100644 index 0000000000000000000000000000000000000000..a9daff945f2e30e72f4c7a51bc986ac0564cc144 GIT binary patch literal 4890 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleWidthBoth b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleWidthBoth new file mode 100644 index 0000000000000000000000000000000000000000..4fc9657e078f0c4db10b2716d5e2c2a8fa242d16 GIT binary patch literal 1087 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<^qLf%TF>s-%a^pdEBjcuxA3g&0NC3@ZMlp^FXb1~X zMqUsk!3-qe(u_=k%tDGvhJlWa|8Fty0HuKff(-Ty&Iyy)nEbzW?Ryk1y2avQy3;vE ziQm^*{{B#T(VT50$+u!ZY*E(Tgi0SscTW$ zoC@+9ve|Y4QJh{SOTHePlfGBd$7|)Hl~r;6&$YTDXYyoqv= zr@JKdH5GU!dEDPtW-k&i%Jo!or{IQ_n#Yzlc`ESK@4FgP>}wp`F>CriZdL7*H~s`V z9CklZ_R~<=_OZe`%iK&&?NaY6o9C=ZVZ3b1UbXch|HDt~-kZJb=JyI~nC3zMORnYeVqUQ|`#62JuRT*-DzLEeHdD*G z)9VCpuX^J;L%^%j?|3SwiqKk1mcA#|q4RV$9%#B^IqeVI{j2NQ6{Az6uKI^}_($hX zQ7(8;rR_IGUE3l2%jPTTuU+Lf#Tj%K?u@l4ZGTrZ;rGcIkE15EEKyP6-FADOugM11 z;|*%jw;l8zUYYYn>wt3o6|SJ^KCWE3Hxmw)W;v!_WeZsAtIVjakivVeaNpO#{zdtoAv6!x3je8Z)ThG?r=dw&l9By zC9CJ~C-?=qZ#(=xR_JU&*8M}@I5Gi>>uG3)EGkHx7+CyJ@GUAP<}Enrmp{rFK&PbZg0pL{DPK0cbNr`UE<>%b}Z z^;M5$BFl2;X=EP16_}-+yF_sh-}0QgWy>B(*NNQQCA#m?&-ycqs(xLJsXbFY|Nl(@ DN%gI) literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleWidthDown_1 b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleWidthDown_1 new file mode 100644 index 0000000000000000000000000000000000000000..a9daff945f2e30e72f4c7a51bc986ac0564cc144 GIT binary patch literal 4890 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleWidthDown_2 b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleWidthDown_2 new file mode 100644 index 0000000000000000000000000000000000000000..4fc9657e078f0c4db10b2716d5e2c2a8fa242d16 GIT binary patch literal 1087 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<^qLf%TF>s-%a^pdEBjcuxA3g&0NC3@ZMlp^FXb1~X zMqUsk!3-qe(u_=k%tDGvhJlWa|8Fty0HuKff(-Ty&Iyy)nEbzW?Ryk1y2avQy3;vE ziQm^*{{B#T(VT50$+u!ZY*E(Tgi0SscTW$ zoC@+9ve|Y4QJh{SOTHePlfGBd$7|)Hl~r;6&$YTDXYyoqv= zr@JKdH5GU!dEDPtW-k&i%Jo!or{IQ_n#Yzlc`ESK@4FgP>}wp`F>CriZdL7*H~s`V z9CklZ_R~<=_OZe`%iK&&?NaY6o9C=ZVZ3b1UbXch|HDt~-kZJb=JyI~nC3zMORnYeVqUQ|`#62JuRT*-DzLEeHdD*G z)9VCpuX^J;L%^%j?|3SwiqKk1mcA#|q4RV$9%#B^IqeVI{j2NQ6{Az6uKI^}_($hX zQ7(8;rR_IGUE3l2%jPTTuU+Lf#Tj%K?u@l4ZGTrZ;rGcIkE15EEKyP6-FADOugM11 z;|*%jw;l8zUYYYn>wt3o6|SJ^KCWE3Hxmw)W;v!_WeZsAtIVjakivVeaNpO#{zdtoAv6!x3je8Z)ThG?r=dw&l9By zC9CJ~C-?=qZ#(=xR_JU&*8M}@I5Gi>>uG3)EGkHx7+CyJ@GUAP<}Enrmp{rFK&PbZg0pL{DPK0cbNr`UE<>%b}Z z^;M5$BFl2;X=EP16_}-+yF_sh-}0QgWy>B(*NNQQCA#m?&-ycqs(xLJsXbFY|Nl(@ DN%gI) literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleWidthUp_1 b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleWidthUp_1 new file mode 100644 index 0000000000000000000000000000000000000000..a9daff945f2e30e72f4c7a51bc986ac0564cc144 GIT binary patch literal 4890 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleWidthUp_2 b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testScaleWidthUp_2 new file mode 100644 index 0000000000000000000000000000000000000000..c42a9728449408708835fc1549090a8782275af8 GIT binary patch literal 10168 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 H@a=y9i}Rd* literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testSwirl_10 b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testSwirl_10 new file mode 100644 index 0000000000000000000000000000000000000000..16949bd3c4b88d8a6328d0da5acbb61a2e508738 GIT binary patch literal 4544 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testSwirl_100 b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testSwirl_100 new file mode 100644 index 0000000000000000000000000000000000000000..7b78e4aae38817f031a9aaead5608d7cf2ba4522 GIT binary patch literal 4662 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testWatermarkAbsoluteScale b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testWatermarkAbsoluteScale new file mode 100644 index 0000000000000000000000000000000000000000..c769b46a6219ad9c33d64d94eb34585418015380 GIT binary patch literal 4948 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 FKL9DNIfnoM literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionHandlerGdTest_testApplyFilterSingle b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionHandlerGdTest_testApplyFilterSingle new file mode 100644 index 0000000000000000000000000000000000000000..ae2dbbff7885c4a2ff917438a97a4c667f42bc05 GIT binary patch literal 6466 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionHandlerGdTest_testConvertTransparentNonTransparent b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionHandlerGdTest_testConvertTransparentNonTransparent new file mode 100644 index 0000000000000000000000000000000000000000..ecae43c51d6193eee784af98644660f4f30f2796 GIT binary patch literal 1626 zcmbW#Yc$kp90&0K+%KqxsU$L(GBaI{8I${vdowL%+**!`$~3ex?wM#&+9u0Nr6!l- z<3FEJ@n3N{wn&?u>|$`>sVZq(if#_N-2?+WkG}`@DHB=lML(qwH1=0Bcw-OcwwG z0RV`q0m=`6ts~pn-fJ)0ioiLtJtX`nhY&;EVL~89M{>hB1SZRsz}n~RN{BI|k+%_! z91RYPJ|0EjMF$?|MxDeedjUrPjYOi52s8?X!eG!?b-aeUnwt6sO|8{TOj+9S0*0#SxMJS{1+0Bz(@*|3(~GEFoMib%#_*R9vyptE_4F^No}?=&;F zu(Wb?a&~du&189cdHeY8|JLuY>asY;xFL~I(J`@cC*xDjoJ~FV!+F8QtV@@#WM91| z1PhBq#p06EvR|sIZ`Itcy;Jw#VdJC6lBOq5Tie<@I=i}iq=T}dH^U>NW8)Juvv1{! zx%qbs@0VQ=0QQNc>OaB0aN$%gC>#!hqn2F|XsjwQ92{XlMQYl6paOYXhO{I!-XXJ~ zvH@dc%AQ^u6w!iRN2CvKo>``Slzkm6`G3j&g{`=xfI1AKdOR2oumfacpkN_uehnxf z0V^@#LlcvQZg&ki77Yj7n@ENEQ@4kAYj3(VjB$Qyd$>->%6=v?p}RUiiG+>CE)lhml;&a6P-UtVU34f z@2S7ID5=OPGQTR(J1;uj*R&yVXqJ&7+9L&Ptv!PD<8mcZFlU&Zb7}5i{-V}#H=Q^? zx!B&%tw+=myO3Bj!LkH}`B9!X(&pOgup}_)EZ$=m;)`I#7g6f=(u9eh)!yp8=G$~6 z(-`9!!`b~ux*JbD*XZWf7<4rX)Z^o67R{n$= ztWxjflplA7F1%h$D>zeORaR`s>rY6_!W=fR=RquzHOnHHq zQtnlk7i6~&^6w>1jnB>MZmm6}Rl|ecEYoh+7&NAYa`6!7(LjH18NH&&^E0 tsusjqh0RTl_tm%ijNa#xK#)BW8!Rs^3*Q$26_85ls^9kg*ThcQ^EX;4uUG&8 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionHandlerGdTest_testSaveNewfileConvert b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionHandlerGdTest_testSaveNewfileConvert new file mode 100644 index 0000000000000000000000000000000000000000..3105761d6909d77d96c6ac6caa27a2295d3f476c GIT binary patch literal 32246 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

    5c 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 D>djxW literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionHandlerGdTest_testSaveOldfileNoconvert b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionHandlerGdTest_testSaveOldfileNoconvert new file mode 100644 index 0000000000000000000000000000000000000000..11cc69d8cf6e729da789424db2858c18565c5d2e GIT binary patch literal 4969 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 D>djxW literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionHandlerShellTest_testApplyFilterMultiple b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionHandlerShellTest_testApplyFilterMultiple new file mode 100644 index 0000000000000000000000000000000000000000..3e0abc5d3fec67eddf169d9fd79d818fb1cdf956 GIT binary patch literal 3089 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionHandlerShellTest_testApplyFilterSingle b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionHandlerShellTest_testApplyFilterSingle new file mode 100644 index 0000000000000000000000000000000000000000..07698fc3039738677793ef810523d9b6159ea1e3 GIT binary patch literal 6366 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

    Fhk|jhZH32`~!dlu9J2frx!PDhG$i~`;WSV& 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionHandlerTest_testSaveNewfileConvert b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionHandlerTest_testSaveNewfileConvert new file mode 100644 index 0000000000000000000000000000000000000000..7d44d2a0b6b6fd1bac859504ba1167b9b2c6f07a GIT binary patch literal 32338 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

    Fhk|jhZH32`~!dlu9J2frx!PDhG$i~`;WSV& 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionHandlerTest_testSaveNewfileNoconvert b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionHandlerTest_testSaveNewfileNoconvert new file mode 100644 index 0000000000000000000000000000000000000000..a9daff945f2e30e72f4c7a51bc986ac0564cc144 GIT binary patch literal 4890 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionHandlerTest_testSaveOldfileNoconvert b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionHandlerTest_testSaveOldfileNoconvert new file mode 100644 index 0000000000000000000000000000000000000000..a9daff945f2e30e72f4c7a51bc986ac0564cc144 GIT binary patch literal 4890 zcmb7=byO1o+r#u+t000T-U)lcw zA_bC>g8}~)wdet)BtReu2m}OElL7zzkdOiaWDFoiK1p&W4O1s5e_&dXRBRnsKw9%& z_aZZkjI5m2qu}(>J(yY0Gw0&^e4 zBs==wbWlE_cg6=p>Up&AtYd-y=G9e(q{;^Xn6nzXmwzd*AS< zG(L-`YWTFhlfaFG>`)cmE->cML|8CW1 zp^5PmS|w{C!q7A+D*GyA9PxuCqWp6`!hEARgn%$NOyr_?zE>DEUYmpl1mVUL4Bfs6nb1G=x z6S2B89qfYD{druuG2hKK0+;WPZNNS&Ae%M1OrGAL3<_5^JKT0hJAL|OI8q}RG5Xf^@ z6KzBB5es2vc1Vu)l*gg7+-=3LJ#EPKwFG6yI}}8X>e|y41R<#VwW<14bq8x-!$$Ql zpD0ZZD10;2>uNbhD6FBf{BZlm!Ec-0klfK6EAW!B0bi01%OUoL=epm@s|*+=28~r! zTA@@w=Ys?Q7FHf$T+Or7QhsEGjDCXA?}s3YIZ9wPed8x7BgbsO>B2JmQQ>!L%Rn+p z3+k1K{G)>!AC6ar*c7?l5S{b8>g-%^9vqai^0Zcu?b9AubJuq-*Hqi45eM)kioas72jpHnSdG zX*pR6Tu)0|+%!fV*eA$S2~T~*cAzJ%F&)i1bB$`{e5kk4DPdqW5XxL7}rnbB(|n;&IP)X3u89ky|0 zmH^VmyCi28_+P_y;*QXXj9oA3GMuEA}B2y}GY34?WE}i{`YCW4*iG622`h&8@a% zXFa0QwO8GH60wi=_<3k+_JvvhomscXO)ILX053txJ4V93)a_eIQKchgQb{qUBYYIy z0;)QU2CMpZUrO0a=ZWoS?wbZ-b9--ceqSl$qph-t?e=w-f`%=+Z=POBjp;2dV2zD4 zDW;t1m2nr5U4;kNfM;2^XCc!?lt>+dwxOtXQ|+f*Xjo5`2>bLNQl%X61l3~w;Bjbc z2;qt3*@VSCp`$}1XeY$$!~A*!OH{Fr&}SZ{B4hvAZvwLc;FOoWfn|MZYL%D)er4ei zn+@t)u-|7gc&`IJc;29g7PwEapN>P#rTB5+ok|MxoT)M+ujJO1uX0rdZhp-tnmYWt z8eig;%^0-(PM8quwsXsc+?p@Q5V$Io#8QXzjN=5K+*oRT+4R~r-RDP}Z1zJiatw<*?R*9H5=fKuW6gP^fvQTHWr%3y@+45JjyhkhDQX0FCdpaRH z8bMd2`@{{K;UXXSo1maFMb8{`Xht{JlWtB6^e~M%akfwFQ(tz20I77k!g9}=)qv22 zE&X(!s;W$0v^yXtaZb8!03H$hTge;~`(uY4+A2~M)z7Z%n*je!Nc>v&krL{vYU|uzdD&}lZE%mvBj>b zI|Zc%m2+?nr26zjZXmPBa^od-Yc6v>&C{vepmMn*?=aR`kgZ>(pp`@;twv0ul^{Z> zDXQ|W>pa;WYL7=v3Vk8F5mbWl4P0o#DzWaX~zZ1%Bj+--oR4;u8}s-RBc3d}0@c`01b&);Zs7<)lmUh<7OnVlE$ zrVRRK*w%rvn&ck)Onk}sYU}KDu<2C)lu5f%dF_Kx&7Ff8e$>7|_pFxiN)#@4Oh#iS zN!2Jy(_`(8oBjerT=&3cLHoOBZMV9TEDAaEGZQ016iNqMMH>U|lWba+l#iYZmLSVK z55J28@5a774X$cw*|Q}cW5-OBI*B3FeiHdCZVF&Ei1}Z+><3hb4~RNU4Fk&G4kUK& z`J5N&QmQGX_)K!GSdR^mGG(%I*7dJp3+QYpa1yKsv>tml-`N=S>f8ogoidV-ZdIom zfEo=rCHWLqr`=bC>TYL5#p32iAPJhbih^TM%tw*u0pHH8?v@vtotbd};84t&v)P06sQYt<8{-wkH1^%O@n z`v1j6x1&5I`@}2UID2Np)vp0wwNNi9O#71@P}ET8r14*adTakiH|?82a7Up%LTl-O zd@0kY`IWbdrSyYAEGU^EGdSf|l1uB(^MIhqxSye}TG1Cpj#TY29Fn6KIMMRC z9KY%sgGw(}6U+d6>n@q^Ss_j9nfq?JQAFJybU4Nh+r7iL)zr{Me*Ai+K-{}BbS`%= zu)5fq?0!4)MzM_DyVm@_D@E=c6sW-U|X%m>+kPmkP_0a&-&@i2C)!YiYoh=z8fu9cJQkC|T(k#x!u@ zWf}W!AgaQatL>$N820trs5VQwY_>jwW3VL=DP1gz6nKu7T}@nY#lJA+{`EJVuvncz zxb>V<`vt5eMn-1dyF#Gfr>8`b$ROGU@MQ=8NrYwmpv^2Fzgw4n;ERy|WNw>*SyZBp zFdtlt=GLuOaGq=X;h?)sZLh1>Fwc@H5pGrx#;~tuQ{A8}C{O?i8}s`CY2I))@C6&S zSW&2dcdt;mlAYkh4l4^~P09Nb!u@16-Q1d!HHT`O*$yHYY@WX7w+}@S!qGD@?WdG% zu;9OAfwibkMp&Sqo#W|L7Ha^7wq^g4k6*5?N(9OJnmMV*ac%tQ(eLNmXAH^tHBa;g z$0EixZH1k(VV`s0CdtqAcwKgegg2dJi)$~7J%bxOq{x?gb`>xGkPc8AaV`ThkXZjv zuSBxDIQ3yQ`!maunIxgbAKU0bWf$<2qTu>brQ4{TR=HdWogxi&C;f)yRIa9xbE~Tr z94sP5f#^itcg08};|wDc5;3`pao+}m+G4uZqHWToaqqEznT^d_A(jn5-RiQ+da+sG zn2Wfyo#Ylo%vg`f3wVWyOuUvagtEIPCr5sj$;2Crhf#HZOy|W!TYvm@IZkbmM3glM zA+~9`u9ZQJ3wfNb#`=d~Y%2hDE(y^}q{XvyDPm@0BX&d9!t;&&dkz-UWLhK`?XBAs zCaz2et{-SsXB9!h0@FKB<8obZe9V^kB-L;2|s)+E~pHC7Opq?y)B*s4VZWL2>Wt>woOJE6~Aow0IzUfYPCLjKA(<=8k+Sp}nS> z`~!E;UR(;INv*7}qu!&JFg;O97pU54n%uk>R;_!mp~^AOj`^ZqRcXKppxdupow3tB zs=?cAa#T$=mv#p7KHUrU2mX2MQB-r=-ye2<_t#BMhNcKdbP25BGgQn(vp~IGx-(sN zj73r4v!l{l*-sQKi^WCnM|VeHlr2?j*bHANEc60_w2jTGo6>b zff;;#@F>F&RW@9cZASQedqYtYSb76M3GLD1wmtj(W)Hm_P2n=G5gT)0u+2p32yh1^ zPnoCGIy`i8O7a{ChMaDM|3V)}T3iFFCW8M4H7`bf<-S{T`I#zWi#Hd0FzY846K;z0 z@*RKBLsO;49(F!9vdz?oFL2DoCWbSwJrv_&gWv>GuZHJoER>z9b;^yIGdo_iym&+W z(ek3-dZ_zxT)@fmqt1MoiAfNy0>UUB@(GyYqz`mQW5 zKo(1T=NopHu@cn<1cz65rk?f|oZ6n4)gF;WibtWZ3e^t3PDHoN`9vSIEb8%0zwdIX zjh^{)4UqWx%06YCY0<_$Cphxlf#I%~!;hP%CfQ)tKkiq5Y_@s+sP3N9Es0`jPbIGb g<7!k4h1USjyv3X3#@ls@5pI=6O%tSode<}m0a{!Xu>b%7 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionTransformationTest_testMultiTransformjpeg b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionTransformationTest_testMultiTransformjpeg new file mode 100644 index 0000000000000000000000000000000000000000..1c380920d251e90e867bddc4752ea8ebc098b66b GIT binary patch literal 1001 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 A@c;k- literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionTransformationTest_testTransformSuccessGif_1 b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionTransformationTest_testTransformSuccessGif_1 new file mode 100644 index 0000000000000000000000000000000000000000..e35a893779fa5429a4ec73ddc89cc7cb305ae383 GIT binary patch literal 1282 zcmV+d1^xPoP)hJ13|IuK6k7NPoE#z;6bS)^fJv1$u}G_p1X9ElA%#C6 zhFs}CU?W;sDj@_^@N$Zm-Q3RZ&dggp$-L*i@qC}+nA@HGJkNZeAH&|if4{uE{N%|K z0G{VLj>8xm9UW~n8m(3fzuVTER=g*%(5EKdp-}m$Re63cybmS3AP9mm48t%4@cHxS zw{PFh&d$Dg@#4#uFZ}7#rvMzsA>7K!ijA?=YBih9{;02By&A_cfLph2)oL~0_W@+H zSpem7*%&iEKK}0AyKC33F~$Tz8Djt*KYnc2*4Ee80Vt(*c6OT0=FOWo0SF;T0RV+U zA&R1-qay%O6t&y!j~_oan@#@g*)vO7TwGjST(o~1jmFN-&i(uMA3S*AI1ZgaDFxv9 z^XH{fDWA^+s8*{0wAPFx?%X*5xm+$u5)y<0_dHJw zaM732GmQj^qR4R^*LBl0&FAw{O5gVh+UaxvxUS2IOOa}=hlC6uO;fG4Qi^`*6Cp&U zQYjXTwOTEo&lihDDP<4@V&G%WxiMylAVLW1K8m7jHk+m?(UnqZntGlG;Q07hkYpr+ z<2c5c0euG00CKrpKizR0t+nTQ)oRsooKB}hwJ$h7(S(8>!nM}x^@y&urmT|aobz(I zOu7LOjIsX@wZRe{fKrNcPL;zs=bV!=0De=Jl5WfEOp{WQETvM3vg*2Sk|dN{^fl_g zY24l2O_GE$cKh~ida}B@3gF6>D^pWbR@r*JPCfno`*#8zA0Lm8kMHg6WilC3qf{yZ z;Eb_Wt0jcEapT6FJ9msRoOA1MZfbnVFfP#q8`X9hNZ`1Ob3b zrIMy8X&3|nW9-+jUyQLNNr)x@+`D&A2tgG?WllI_OtDzRX(UrAHa51uzkl)KMPm%9M9;|$2?Bt1yImTO z^n%)wa{XUhSXdx8HeSxT5W@338c(k43L&VyPm0ghGPyaEi_-?N3fM5?IPP}4j^mK9 zLI_Z!TPOg=*pQ)Wz4i}o&Uu=q)IRitM%al6{i*vCm)??emSPu#wt4RLdZItZzm5^& z(vhWcOvX+}K_?ohfgxx+bvfs~Ue6|zbRe%p=lxuBYJWo8!Xjnx`}LHj zDcuGqNw&j!IF#(@=!l>cK8Y!%?DtKrC#B>A#NiI?l}HZaI3_nzO5JDVjBjjg3=oGT slQGuqc9l}J-^Om~v~6r`EQ+Fk0G~QFk26~;NB{r;07*qoM6N<$g8A-t(f|Me literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionTransformationTest_testTransformSuccessGif_2 b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionTransformationTest_testTransformSuccessGif_2 new file mode 100644 index 0000000000000000000000000000000000000000..f10fa34420d9ab6b64e7bc63769cc977bfa06266 GIT binary patch literal 316 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 Eg7av3_1P|rX?qqI0P zFI~aY%U!`Mz|~!$%*;qrMU_b4?usLlYAdd38%$3nLpnV-q8g zA&i`yoIKn-61=<;Mv5|uMkIs(2N(o77~~k_m>HEAm;@P_1sVSzVUP#6M4GWKmj7kOu zR(eKeR&hybS$RceRdY*gTYE=m*QCi)rcRqaW9F z9X@jO*zpr5PhGlvWX5a=%^78Yg}c96dqnaY8fS&)TQ(U48ZF_1m6P*};Rkwe63;=+vwIhBorK8Pk2 zUE~r|F?p!^5#%+n&xrF_6Inikdko>PTMRtRjKIia7G$tz_?(+|uk>1;u}F(Xa9dmh zq6I_>FS&r8@{SPKI_1?t6~qIZQq!jFJ`mT zXl0w^?X8aNSLW?~!R+ks%u_C4q&`=XBlIu-r}w`?1Zt-p51DuCQHm?`lY7i^9AAH3 zJ9=)yHnD4L*CHNHe^$n4!1wU@-7oAb*4+Nj!0lgaQe=Ck&_i_l26@e-o5vqs{;+`e zzEs4?#Tivr%z7%S>y(_zP8^?l>bn*jTW$7~3no8Q_86a(dD$cQIeFfm0>ilFYj5`p zL}#4exiHYg@3y~nnM~u)>!#_cGLsIbb87EPYMecXkKx}I#ynZAcYoU3Ze==3uryWt zy85HUHt9z3a?X%1k!%j@9kV;W?6%IhW~@8WeRE8D8oS@C@m+91SO1^2JLCj>8G~;=iK|{KIfkEd+y~;^X36@l7q7Y0D=Gj z@(bX71T1Xb?X6F^xSL>t1GK{~1O{W`^>y?xxVV_m$Y6{!$q_?xwRgnC6Y&~an1H|_ zzqp84OjMj-L}+Z1Aa4$^1&{&)2mv?}fk2>8NI_vK5n&-AVL1s&F{wlHN{WZ%6%;UP zI#`T~ma2jR?x=>Ao<4yrX?iN{KDMrAa5kEP5|lY0D<`jh7>m=;Bp4Ep8X23| z+SxleIysY$pYZVf%Il=JKYv)kA)#S0v2pPUiAl-n8JU-Klme#iR?w;Ph{()zML*o;ZQ_o*a&&<*n78y%#-!1?4`v!}>`ToNe zXM1Pg1p?5|EdKr(_74}D?}ET!P#9w01ws<|3yOxpmGuQAtlbcPQIab7OGqi3f~uyc zC{+XZb?LLwV}dej1iJdhKJAn2-@z#VOZFG+Z`Uj!3vgst`F&Cuwp>n$`^d0I zDhH?68iF2A-cInG#7a20ln>KKNqIQ+juuTOP3&f<4#fpM9p)LSqs@$mN)OOd;4+1 zE1Tx{?Yjv^K+6G^^i@oL3ERn??dSB;?XuJn+>Q&q>(aSB1U<1n3RYIs)zR6W<-|UN zg<>n}M8_uDo@j+Y`^+@vbCiOrsyIE}FOuW9l*4fu>{adF#~tI?kV={z>y`qm)s@jM zfwVA4F&Q;8t`1dHUT=4lsf=Dgp(DLL^6!`C+G&?l>Sj!vwl0{I?L>Aaa;qQG2KQ{~ zZN6pXyyiajhcdXDCYAQ3A}G!B`n`(=EYS{MNN47*S=u=c`OB#;x(4f;SE14)#oWrr zL7O5i7QVv+e*6KiU8*!+0;McAQtlGxX##RpbO%IcFo@$9q35+rsFn@im{*=$f zi}wjn{jyxtosTgjM;FaG{Ezcwy_8DG@##4ux_RWLY+vWkV>5JO z6HLtA8djJ(;?Oyzo8qzHwHlDViy!hK`#6nVpzjrzIQYM@hz3X2V--qp--%K>LpXOA z$fhoNv#Cqma%OlHx5$X%)_F?FOz+u%fE96TZmZOoZ(!`K-sQF|9CGnwrBt?@ro}8p WzIs3|nJX7wG#Z9WxmhXkX8r(e-My9o literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionTransformationTest_testTransformSuccessJpeg_3 b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionTransformationTest_testTransformSuccessJpeg_3 new file mode 100644 index 0000000000000000000000000000000000000000..5922e936b25ff2ea4725afc22cec3a1db6d073b1 GIT binary patch literal 2331 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 VDe~b>slbSfc+(K9Th9LQKLA-{6afGL literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionTransformationTest_testTransformSuccessPng_1 b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionTransformationTest_testTransformSuccessPng_1 new file mode 100644 index 0000000000000000000000000000000000000000..ec5471099a43b45548ed60f8ecffae7b82e8a09a GIT binary patch literal 1455 zcmV;g1yK5lP)T@K^V|zTm`Olm==V)tdYie_IlU}dKojZ3BLLh`d z*L4bo0&m~GrPXS2_wHTBZFO~(-Q8U_HZ}n8JdakZMX%SxFboQX0+~#P6DLkEJ3C7@ zn%gele{hCUp!p6o14{QW%CoB9TBTh41^=wvF%mY;SLq$z;%Xc6KP2%goKqaqr$e z9LFJ@PNQiW0GBRZ;`s67IF7^p`}g_!^((Wpv&7?Z_V)HTefl)>^Yh`prcx=2#UjOG zk!&_gCX+!*iEZ0RDG@^8I1bv6A3xLqcm1E`^Lb3uob;Io4<68HG{OOcyQXP$IvpB~ z2CY_$X0u7V-9}1DCX*qZP9v2XRo=(;`?9Kgr_^E?kB1leqMq+j4@ za>AHLGSBnE^B#pp1qdO?<#HiBP%jT#-lH!0xY|JJxJfBT;J)uqRy;oQY2Zn~s3j7K z5x9hX?~OW06nYe|o;LYtJDE(9%jHl??SlgcavX2wf6P_0%+ zz`>pc6NsvhiV5DOQmK7#@KV=xT-RlLdz)^zi(wcnE-nJ_>C-2g%_fCH0n4&*T{i@p zritsi`_X6&8f{18g=w0|cDv21SFbP(gPS*Ra`oy}o48!2cl`9A#ux*<^fBpdfk8}alb=`0~f@h`Fe&+IhpF|=-xm+fhO!DsC zJ1$L$+48s_KX_^+Q^L-yFC9dldi^W24FqTpZy;7;rXf*iw z^C#VImtVhrv9-0uix)3OBG>!(?|Js@*~s!MrSLqDbUKaWIANlQev5j25I{W7Lt2)F zX`1M|PBxq6#*G^XV(-q?296HSoOPj%72iEWRky4J7LBRewo(7y2xq|Q)1&&9nK<)VZ1B!zWflW(`lM02v zizlUAP16o4{x=p?eAwWV#v4(5*o=8)e*rM$K;SOwgL?n~002ov JPDHLkV1kuG!vg>S literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionTransformationTest_testTransformSuccessPng_2 b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionTransformationTest_testTransformSuccessPng_2 new file mode 100644 index 0000000000000000000000000000000000000000..eba713f009cb09d5b4a69e39290548135af21411 GIT binary patch literal 346 zcmV-g0j2(lP)TbUO`2XhzLHQ-|hhJ(q}-9EJuiVd7iCk9!LH^ z4MfTcs3*%lt+cEFWTs}Ng4{KDREW6j^90cb;&+-O&p!HIvuk}t{Q?Y>R$CgaBhAJO zoQTffh@^@PD?3}yBi;r#s%;tZ8p9ctDXrVu_zGId zP726yCp!UCDkH5%vr`s?_l@xRC9{o}%WeC-x)i6)k@m}aS3%J;x>O3tOj~YUZkQJw s8Kw2a_0pD`#^|J7`KD>T*3*gq1Gbildi}fyxc~qF07*qoM6N<$f|5^_6#xJL literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionTransformationTest_testTransformSuccessPng_3 b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionTransformationTest_testTransformSuccessPng_3 new file mode 100644 index 0000000000000000000000000000000000000000..aba95a0ee623296083b7ebbb49d680e2e1266f7c GIT binary patch literal 9825 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 C1bMFj literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionTransformationTest_testTransformSuccessPng_4 b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionTransformationTest_testTransformSuccessPng_4 new file mode 100644 index 0000000000000000000000000000000000000000..e0651b9cdfa2da259d6c0348eba0f527cf75c488 GIT binary patch literal 2888 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 A@c;k- literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/gif_nonanimated.gif b/include/ezcomponents/ImageConversion/tests/data/gif_nonanimated.gif new file mode 100644 index 0000000000000000000000000000000000000000..511c33aa2c70670bac9d2f31555ffe95686cf469 GIT binary patch literal 15112 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/jpeg.jpg b/include/ezcomponents/ImageConversion/tests/data/jpeg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1646b523c4c5646b49288daee897ae98b9be3717 GIT binary patch literal 4903 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/png.png b/include/ezcomponents/ImageConversion/tests/data/png.png new file mode 100644 index 0000000000000000000000000000000000000000..f70805c1e0d3d5ef280516696484e474149acffe GIT binary patch literal 28726 zcmV)!K#;$QP)I~0MjMjQ zz90btjKB!YV#8n?7_c#$J!SxpKV#+%+ru*$FkZkIu(6)afPpc~1B`7Xgch_QwC_@@ zH}#_4tGc=>Gw(Sk-XC$!-7;HJHx1?QdwswDq+6M{GP7>RiSvtJ{33!x1jmo#$NxVL zK7I?1AIHu8_;LI=ZtlmAal}kK^Wk{5XCbH}~Vm@#DC; zA3u&C$Ibotar`)L?#GYg2LL2L`%8TEqepf*FgWwh_YYRe|e5UMN#DqSNS&An{m)kngQ z08HtE()B{%<2&4ObN_i5y4tkFlbRzBcF7fo&AEL8QZiY+tYY7_WkW+&NO4)Tc-BXb zAIHu8XSZ?;Saz^rE*UyN3@NRLVDtm9<7Jm83@JSnw8^<*Zou1+n(62 z*si#qSf2n5Ac3TU6w&|^AQef06p}(3LJ1@d|BwQsA{|Hzz5{7{X#;KeHbxBEB27U{ z(1f%EEt00EHlzhKMOs2FNK?>)G=Y|&1++x;q$$z_wM5t%u?aZ?XJ8Z3AHAW>z$dT< zE`=?gg-ysBWDR5~WhrceERE+WWht^$vcy_5Z877}wa}9piy4b)J#pAFh0TYsR*c1Dd(>a_Z84`jaBpgl*BOxS=bz^9!7)!AE z5cYP1p^N;izA5=Ry7SyLO~vV!ojOYBe9$Wou8^9`FTf9hb5~t@b`aTDUN%3U9dl2O zPy%O!j3)y!#9g2DyAF=10f>kv62J>mhzC4zL&OU_!RzA$FK}QBu|ye=K`da!wdr6R z4x$!sNgQASOJuz`A}eA6$8d$A2P?ObOn)S_jWjs}c~B}OAOQsIK?3qZ9!Q7;EMO55 zf&|kKYrqkuU=ecQl-LV7vXWqHv!aR;#oOboEp!DEejd2o+mn z+B(_XsYgS15Qp%T103K47Sv2!!Xh?NvxfD=0voN|3b6-yAQAG!VM73WGG0hv1nfvJ zHlEl^=D~i1Q)5kV?NqY+_^)ZuNzqBL`4A3e1(=yNbEl-@wu$P7UbB8R@v_5~>TlKE z^MK0_34;>DSR)q8IEQ)2gSmGPd&{hNcWNYTjVA*(ObLLxji)dGcPU zf$&JQb&=fM0S{P0CX|u4piF!QvdG$)Y$9S6vLc!Kc!(8pls_fGwR^TC0ndnJ1WRHC zP4=TnCgg<@A`w9d6+B(W&1FKSOoShvJ0BWr5|tcwDY^~xPEKO-05ydA zI-%La?uihCS*#ICJR1(SZiJY)=WMr|krz?CE(8xs0TFQ^PvV6d2FWnhhBXo(kHCr85`uREivZjmAp-?W6pS8DeZP?=TOz0_gS^;8@kz9G4=W%K z7GVJiu@uH_9I~(>5Ic|;<07ehz68f? zjHhm9o%axkfE3kuLJIN1UI9JeNm3z!E)4c04iZ5;GJ*wL>9xs@1cP=2>)|N4a7W10 z+(8b=1d3#$*Cz+)ZeU4TiA`B!XAhDB&{K}xy|7StDnzjwq=EzN5q1F=>FcmhIUS=U z`1q28*KvuglK`M~o#g(p67$b_^)%PpD_X0;` z#aluqu%Hay!nNpNTS8RIk_qLDBG@zqNaK|02`r6RAX7juWC<_JYrK@re1`L<0Hri5WK7(#-Av`HBW2Pi+A*uBh?)a{iA zn3k%K=V>-&zL<%w3c*`Kek)kn_I9&i_ zgbZ8bDS?~Gtax?df;6&_qEW2+R)`Xm9!lwm*MJq?LM+(AX97#zwzwqNcZgyGGou`3 zJP{PgUc+471O%2SgR~NBI2gKE4@xMvdlG>V1p+k^HHlaO>A4ppU{9GuK<~jqnQvri zLMDlkYvNF0ZwRAvXVKivfE|}pKU|?rhDMe=XyW>^7)BcA30JCMlDbre>bX^^x&PS@ zRnr7ym=ka!oQO4^66QqMur;6rj){#Y!)&}YL^ICXo`)ldK){Z~DNz&fJsg!HSAi3F zLPng4WF%HN3%reOW3nlhl&*mjI1)APh+&|pCNTF53pgLx8{IG*NsE0WvBUy0(D;=_ zSV-Z!^)Y5uWREgK5B8+6hh3oO*@IGI&s4;(Cg*J!34-a*a;RE2?rIEL)3MZWOW78O zs=)|VY!iRXgVDN#rew-AjIOEU`<}(=eV{QM-^4G9V+&o{R~+BzsDjjJSj-@nj5j zz3cWZB=GJe@E+tTko0MYStF#02uA`oSM1`gNCwI1P)Dq$qNvC&DG?chS0X18^HAgn znZ~#TE8;*FXc^yR&jp^5NXbheaDu;APp>3>q89HpGeut56Q^J=#-lG_FMZ$S)L2eR zq)kFF4rUga8BVH7!zyK7cF%*U(6W`+6p=#+nE}(!Z5>>7_GRj(1bZqJCqWpDS<9++ zsF5%wphVb+F~SCH#2SzhYnY6%fvyBLr8QtYhxpZ#c(4-@AlkYpnr{T^CIWrH1-b@G z$!AbE-)kcqkxZd}py4B+kG?;P87M~*7Jw+ekDNWBWn4l+A%snXtyB0|6xRUs!H9OC z9-TduspP=nz@*B}H#kixF?rgRUbA%N(Kf zTL71GOc;PPm_24D@st?WXf^Rjm;!VWN`%<6VHn{=EUV+!eE@8Py59DC7LE{!NKvLT zQ1XOSLO7d(L~%}#6G%pq!Q1HXJ2==Dr(^~ezYeI(#DJDUk*ft?hWV|ohNt5NpN z2wjMc*aXT;aw1kES_6hAUlCLZ5yL39$pWhb4y!^pfmW6#MC#yELPE2M-IF@Dt|1fR zAz2<7X4W+cz@T8g9up5lu{HiN@HRD6!-bX4qGqPUjfB_;GsuWDU?Xf`63G&!;f+fi z8Q74A@@xo6GyE?gTTt?saCPdZ9?I`5|qdY&LhOHRsv*4aPuHfltlJMGp_>cONlByaTG34^4{sQ z4Nem>>gJDHvwe)bdyPuZ?QgKaA{r}~S49=5R0zsyo~X`CBEpzlS&6z(j0eKjA(Z9p zF*8OuC})@wAw$l17-0spWNctOCt{5d!v@z*x&YXCPRPzUYsKdTJUM|UaYCtz%#_2C zpuN#+JUAmb@hT$AL?t&_8SPRFuzmP6Ix-FblEqoRhRkOQdgno^Qz zka$4_iw}`H=3&6loKcSNQTX`$BMB?QyCt z1AAn?!RgVN?o<6v*%sdO9(?@cPsY1fHIn%<0O8WVd~d)Wgze`&Z}W4n%<(rzo4feq z@6AP?+b??FmKR((BuiTTXp}^QF4H?GK2Kr&sAgeRCJ90C_ygYJz3(l~pZ7dmdF8RU zckjVqP>WJy$apf|B}@s}NM?l2zVRbgyo0ymH!eHpz7sA?h?2lp5(@?Cf!e(%!`u_w z>p7^I6 zcn>mwj8I~j4QwLBWRT{IKy;@Y$6%RM!MYzTrM~8WGNVZ7UjelQIHT9)Qz+fYl7#F zAU-HFX;=xq5L8N$ic*%wfj!s>HyG_%lZdJ1UG=q%xmESY#>rGTkU_^^$#)Lu z=M~@AEOp3=%FVr;iW)@i;auIhnnKy!X9di7{j363<&oi34LSjF)qkWgZEhIP%F-Cm z#&F`9g$VRB#e(J<#_-ZVadDc?J4F(A7XINQz`_%eWB^;$diz${v(>rvxepMgmup2uTo= z1yb>8=@dIsMD8Jt?ke^ zs=9LuCay}W**QdSwuX{2?iKhe<1PDTV zT8q14CDE*mpr5CoKpx@<4T;hkCFT+GRw3salr(DhhuXO#m&nSKg#_FZ)$^7lXv?&y zFfjXp-)s?DX%>h`62&uQeMB`0Y*5VS;2wlfCZdH=YU`XHt&4f`*-TFZyMOw}06`eP zdr@)mU9W%7kKglg5Z->)Q<&4|H_BVqKE*X(+#_o4Z<=3RdEb9|&rkp4;}s|>>zdJdJ&wUQx{VpDQ2)p(|yfnsKXN6mEid%e6 zZ{3UCg42k2!6zC|{t-U)+qZSab-k8#$NFw>d*057>xu1&z45DWC~oqpFZjs$uarh8 z@!t9ur6~5Y=l|6Uf9ajq{`-sWyZ3~B`+8~e)Aeir;*~GF@xqg&g_EDy@q1tT!EX8gP-`fr+d$jId&f+E##sm^{I)Sr%CM(cz5OR{)!>b&IdN?$l3y@`kT{dCw&mQN_VaL^Vh0pYg#D;=>^U_5=FO}B z;<^Vv`6CCNzU7R1)@$PrygCE3U-Vxikrb5dgyxDV-unuk#Ney9Z3OU| z^NMR8e&bv2de8gHa&{UPs^$es3vapkluvysf9BD*zGdTYzOJ`q$=D+gpZWd|%)8?* z0Lj$Ud2j!{tFQl86#QfU4;3E_U~TbX@RqmWeebLP)i>Xa(mUdM_8ezT8z)~x*RZ+z8(h0XW>$K*&-l!z^T!{1=-aYqDoN-!}mZ_Tinl<&mWzL)-4}Rt|#rYfGh|hjDoUdPxGtR)ORpG}Q zZoobF;EXc>pxZ5eD-b3$z|Gb3};xhHzD)>{_a z@iuTc!cir!GBPcDCBrpy=QgE=sVA=2uQ=?!N#1s9zSsY-`=9X zGXI9hCS&c$y06|@81!h;`#*1@#q;6Vo&0>7oHn2Nx6)tkB(*9%;BS5Fi0}E&C98@d zNTX8CRAXjLUFY~DocdvjNB|*kE{jX6dEHh2u!B^S`j#bAV|TUB;iWK>^LuP6)rgS zfy=bUK>%rP+x~QwDm!*6?|xV?^E8ib+n(-~J9dPV4}1VGe|f*#0Dr?IXA=U)lK_0d;Gu6OM8x6ypcw1wAH+2?MA0h;Y znY2RiZJf6leSs%xh)pVAa5C*_BJ}Y{jQjk5{^E z03*bPw5D4HWC6QJKHes}45}i61l%$W-2qrCuiQgIJ%|G}AhoAB;U0-5U#rw8^*{%- z5gGlrzxubQv~@iWQc&QOZ+ag%s6sT&M%Cnw>?O5OzI9b}nGg#&c5j?hP^>N<)=kbtSMTbcs_DPjJ;YbwC%SmEhIiLJxdE zD?ae*e=gdS9+=nszyI{*_g}c$w;D~z?|k^*U;OvC7FmZ_Fg3k+Y;4Q^;DEO5pA4n3 zWC3j2*Q$IzM@bgCdMueo+x8ssJwN8=KBU08TDswrgl$;0ob_u}*m^EWLh%}t_46>4 zLfU`OG__Vo2(tUKi*s{d{_XGG|AGJJMn}qUg#a@>z3R*Vyy>@IS9-O>gP9~j{4nVE zhg@*kWrewa``h@y2QWHXzh-(GU;Z+F>$eL0vtk7RjE>@*bNZ`CK-@p|_2d6|Ua|Qc z*Z^@50W&y3gy7`*Bu>N-c`y-4lhY&=ZU@mkdu89P_VcLxHDub{h&w=?v>BD8+s{I8 zrt)`a3H?wVQhN#xG)1t249j;O$RGaaSD*9wH(fYNXaODTPrT#tN|G(ehGpvot4@pN zKL1CL_VyjJ^IIw}oBQS4Ys`$KHZ(i9U_E_f&yn5pqc``-$>Iwxhame$W|k}y8V0_j zQlPhBVe^Td`qavQ{m!P>ymn^A3J`3&-Cev$1;E{f3!6K`H7maJoz1WPwdobh3F6wV z-lBzr<{klw5M;yK-@N7@z7lwp2OfU@C09KB-gg{$)-xsHk-hup-2337Yi?Njy{ps7 zgPVTqKg9qSd17_QAG>fN;)lU^zJu4kHdt!AjYW$9;O%e6Kg59efd_EOC3x?9@vLVd zNw9Y>?!6b+T!Zg@50jI{tzWeYmtKk&y$ENYja946)xGup=t!xr^pg@0SC&kcf7N7?}R>n<+tv+_OfT(f8Meac22zefBj(nUE6D5M*Do+ z`nq#Y`}$qM1P}GkdG!|`{O~Wk#hvl*+&}lvud7CeUeZiu!|n~2@i%TdvU`5?=KlH5 z%eE3CYp8M^8y=`a?C@0Q$pMTM+?|d_41UGGb$qO#k^DVD>^>ttUx_b9L7hSaS zoAH{B8((zkbM$=ct6zEJ*S{n~jMC@kzVG65A9>f?)_*E6Q*-aQ=YrpO`|!O8t`w&N zhr=@$U4-~yuyG?U4IdbCFe9Yem`u9lbgrC_TsSFob)RPuly1K5*VU3rH0v%VPWH)@x-Q{RZWT8oEoA; z21y&!qLi79aM#&Ea~BVCGU(mWhqes+-g#%e`Cr2ywRrdB|MSK#=2z`s(4M#VP#Mf* zkPNux%2O}9Y~6|1KNft;ty?a=B7Ap#G@+85(~=RKDPopTtK#@)VbyaKh96D$MjH|HI8$4e=zN#COm79dI%{ z`RX0KgE+l%luVn`4mCQQb~x=&+U7>hraRPVQ=>&`iz@U>3T|_w&8hyYd^HZ}fqH~K zp*H|#x}YA=#m8R$%MY(uI)n_o?4*DC^>eFWh7J-PB$^=enJ>M5*E1H?9YShu|NLt! zF+#$J7(Q{5W|C(1!!Ngg_%bAXboV?tCe|LJ)xmf)(l5I&x#auTTz~o}KDOxAn@4x= z&M`Wuz~y@`x$p_$=%GVa|k@V|C`n9Uz?}EqLkISsL8pi(WjIy2rpP#6&1~6{*;8+xBN!(GCTvn z@MGdPZ_#~CbO)r+oky69-r;0GB*ovZwd`;2rj&)y2pifNTP1Mi##7 zDDL^O(9D!aETLXiRPR$)GS=MqN|d5-=>i#Iuf7D_%c}*EDk~#$DPKdy>+1a6C+1m+c@_$FPx)XR;>2^_ zUz=k|c+T(y?Tsfx)V0=$P;6mxZgrAL+z6cJeJwvde!ohX0% zkH6dO+1p-m#`behu#Ln5>4BMZ{`c({y|3614xYN?@rzfr5UK~YTD+OqWERUi3M9i7 z`>u>YDx7PP;;DLQKj4go1|F%JZ@wPN1xnxwz39vSo(dYi@b@&E)l49Pgz^qiw-HOb zh{7imcu>f)dV+xv7$QPsNJP8=g~dPszzN7uYM2sFOj`UJR0hVgA=1pN0VO_^{~1Gx zXXCB5tu$hl@G;C?Z~Hw*UP6x=ZDr#isrDkKVC4dFpfvU$jd9LmgKJ~59a`XBAva{RKgl=G`Zokzcx+m04tPfYhs86HQA5Ombq63^Pj_ zSV&k1#R-^1gkqaN$$bcG?kTh%2+b`BBqNj>)mFm{ zN`yGH>B|fghx%9Q^_}yg6VdczDlHTG8n{>)sHIZE+G|6y(4dd4_)r){huUHjWR&NT z{G8oWwR^Mgq=n!A!fW?ku(}QHN*TL=#9o$jXUp7!Duyeqj!Iy9h?$m+yNbvMAH+b# zUE$^<{`M&4O=)0x3_y95k&wcVD89gia5Y&Qw~9&V8vMYjC7Ppzk|R0{pajlHs}1CH?MnW*Zkd6N#>bLE#;HK`+E(T0o? z){3ayMzmiSL%2yvV#p|7SC6h8$W(fumhFS^#t<7&!kp+ZKn@N17{+kc^S0Y_u^^vmd_@brT*YraBe6UhJw zrP)F5OCstsq?9#|p)7^TqIvHE1@T}ZfiP4-Nepes=!KXiOdo#z zK`n9O*$^dOeYrKHkj5ELiP5I5p^l`RSsUAGtH07dti>bRYdf}15)XDH7GfcpaK=82 z4WVuuwjnMIwG92{iynU8ioptGkM@f@CIVnziy*63RRoJ%?|3o9+?713dgbto zQl%6J%(qxkRIoQFU0i`WPaz`s#hAM=DHSXNG6W|v6p_3ex6fNZg@#)o7G}UJdqc&l z6%h_`l-DjUOr-E0hN(lTVGgb0S!Fh4zzK0^f8Z%Gjzj!P3}(tSie*?P3J6EI>ule< ze9~peyh>137AXOzO>87U9W4flGtyLYW7{;@4l!r|Enx~89P%#2$V8V+=rlij=3XMs zhmqnn#&FR64?*W#EC$NaJXd{l)n}s=zap1U4)8xHt%};hn~hMF156`g03u9GlHXND zH5!Am5E!JOU9=$>QFw${LmcA4Y#GFe`6@U`?)HIOZXkOIk+NP3ib z{R-7s+8jbW5K+SH5bwdzsg!Eal^)SNAOsVlRZXCRHCh#fX^+GP;Sq)xz<_nXU=T<+ zvYA4}f{=ez#k^r-gcHvS?hQB*O7a~b#dRq1Plwvo@Ugn4gk7 z1*`NW8(8h(%3Sn8(82ancy!T;QE()U2xb~OXe6|sCxK+}+IBb-v5<_sMXwFl$Ol}K z6KH-m&Iy#+^zH;lD7w;d$t82N>}n?84P9>`N}FdSz@7i((brhiM|2@!WG+-#ew=5u#WsAiI7XN6=}3nqhZfC&(L9 zW?{03?a;v%oDSDPXipiZVa_UcS99bcAY^!cv{X1(=f%qgDi!*rKpoW#kx-RvDdTl1 zOuz2tsq|{ImsRydfRy_9i4ZB+mMFL|@Cc)*!SEtl!|SytI)g)^N}@sM$x0Egk*i`P zaCjqS=Sc*_+HrT3i~%R0K+#Z`p^*64#)CKknNS^KjVERs=P$6~%m{+$Ky0^XLpex{ zP;+M=Pjrz+rHyj)Ivvdl#nA{plj$~W5(l9XGDMDY7Kg;=`J-V3d0pF>%d_Y(>tTS< zL=DiFn3iDNwT*%+i6o$o*K6=bW)HhNfxxq>>w;Yd5?%ef{!fTWG=9})-4H~H0ennR zdFV9Z$Vz!YI~wHLG6Y;iEFm2mq{aXmpoAMtmetBRkd-VPAPuoG#`vt<_9M;-R8~HS z%$TTeZ5Ay%=2=O6=pc+n$V`Qm(4a5~*2bxTR$!rn75Z(mqmq-7j*tmime~X|1A4>5 zi4!YnpmHOCq1mMx93R9gWp=XUxyu*VPcVdgKrbZl0%r0OCSwMcMnl%XB#Oc@ zL;}8eJle$Vg*ZY0Fd_mXU@2@o=-v zyL;57=b+)5#0ucy(yHJgEaV_8sgz~ZfPQs_)Cie6s=@4o87G{J8$*tP0EiHiKqBjc zl17LD7s=Dyky8Nf%wbx*ZWht;3zw4~tS_vHh&b|A%qm3743qKJm;n8I-u8Q5qQC||pM5E%@gbqLyzcQ~Vs}QcFe)Cl zFcz*QlWpjP%vlCAH4;z;kVXwcP(6OdfD!=%DcAy;NQr14bn_)EuV5Iiye46GA&ofl zETn9sD7hYo)P*Fd21TL?q9}C~D#VW@0u>@e=20c@K|~o;!5p(v1P)9km1vxRc36Uz zRTw0rlq3|}Hc5~Q8_tZ7G5M$*Hn}7rV0SWNV-Aa0*mz=by}nf)ybnIU&`zp=K1{$V z0e$wOvyM4af>H;;Vx|q3%%*oQOI&;vnIKQNNfTnZAuay^6EMG?|^VjLMG9b05Xy# zLEbJhxFCd9U;J%QK5m{s#KkQm0qk_a9Qej*k`M?KQ6X@x*x z)e*?Rw5ef2c8L;j5ZL6MhnYf$O2zj*PtQO`NmNDF1iN^ zJVZGh7jmlnGf*?fL?SkrPxS+AI%-+Zfxrfj?|L%IZMluQz}1~D*I(4x*hjD}4-aWUVR4UAzMgI!L96IdhE?c2yg zMo%9`VM?wx3oUNa678od;r{>Nj@7;tyv%RA|>Txh)Q$@uNGwoM2}$NK43ILk$$8ihsuR# z$un6L3ai2$CS7|RcrZm#U;a+I2fBH}pFI}Fbeo9O%n&&E*RnA><_4h7(< z9}aYT3BHRLio&QMAr|et5z6>xSu<0M{|0e9D%DBlY!M9=5ug%`7XPi*E6K26G=I%v z5(2_>c&d5#*$!1DFpt8a!c=_d=|BNhmjk4L?}_ z0wE>}!;GWcMnZp^SQwr=_@c}TLf|H++OH-$Z1v?PfzdLN+}U$3Fa~SJDsKdmz%oEsluG(n%<#^+?UyL)OGEHs)5QY z)aJ#b)Ly&X9|XsyP3BSEH}3*q@KM{yp0v-mQiu666cJ(~QOFYb%Dgf~h}Z~R&aE=RNIXL&V-GH=n?= za1!c5LLh65R*-N)nepgl&PiVAEn4lG8@et4AJ+r^0~GJ+-S=F`w#w)w2kVfElF^r` z5*d&K#AbSsN<@p2n!k<8rG=4yK@>JYZ9-NuYXtFvk)UNNr?CR!3MEuIw?mQ;x498yz}_ZY zG;A_L3edIEk6n~oN=Y{#3r7rdBDQO7-#PI_X)OQCtGpw)heLop$I9HNr*ZSm*suWy z4j{|IgJ+z9m%Z$;-&^iA)70Twb!<)&{RJxQDY-PGaO^qNYorNFf%!ctFFSqgGa>7co`maN_7ZLMay2p z9#Rc1F+?DcTX3QBt@d#uf?V^_XFvT<{)+eA`gAP*qaS_hm%8|3Tz>fxI`@!7VZ|5_ zx&D+FAm)Kq9N4yY_hyO$7%9L>_`niC3&;4Q)Nn5Jt}(HiNJNd81k9x-xUpu+b0HoM zgioosBsvSJ^s%9c=>_1F$Z#X^Y)I=rV1PuBP<dhzN+6aInr=~g*-}=0mC9O#4S#YgbF|t$6r>>ol}!`Ju}-vYZ=Du zupw(0Dmm_Y*Xvo-^H7L+sAB|XHf$))mn^}{UWSno0H{tN91^PLkiDwoMYT=9pwMMV zVyN^WYAb=N6NO`s;lRutQP4Ts&UpBg%U=|jfrp0>Q6coLL_|7LIOL3S#iQ<~A+(L4 zMPj>PAhz6ybY%E~OsS#v?xf9(X8fugUmtmS&@4PpHSo25i+5l zho)DF&)xk*&$%9KPi)_1JsL5bMc^K}c}4k(_{ADwMrH)P%(~dIL$x%Lhp@-Q+{**{ z)~vze#ZSvkQ4yHdwB|*|XIK-j8q-qPJy$$^xH!h09Eq2F+-g3Nk}iMe9l0>J#Lu92 zD82E^r`Vo}+kssCsttj;I1+<@*0b>JVQ@*E!jXFSSh6HCIGI*FybE2ep|z@c1uExE zX2=2M9cg0KYlQVCRB{lARA>-vH22Mgwz^2;3Y-vmVUDtR6X*Wv`-F@v=?f~90uc0; z+%ahgKs_bi&4_e`xgL!r}Z3{@$KP5eyE(I#Sya4+_6LRu(omC^K8K3;BhZmf(X8@~|qg7&1cmL@2JC+{UJhyvb)b>m=YC8*O7Omg6 z>g*?|;maILYrL=CCLcenWb&QgTbJ89fHN<9`okm^wV)B86!@Yy8Y8wpe|lo={%z0PxgqryWb&9&g#Yq_mln%)*XHw{*nInvHJj!vJlGh? z*t~el!zUix|LN0FM6ViRryNCb#bG?o+W%w`Y~5nPbLJZJoZNx#G|M480ykN3n1r*00CeXQRUbQ3BgKe}dmXKQ+A>xo+zFS~f>%I7_HaNqHs7-RoL4SiUID0cENE#S5-Z#nrdB(Z>N7|KaS9P*YpZOar*Y0lw&7mcFyxDxb z**x#S{__q@fSAbT?OKc9B7AdR^FV28QUdPO=0Fj5xS@C*W@K{7YD&`b2Q(&an(^l7 z_=52hI?eI!mYZ@7X3x2^mYjRe()0BDQW!EljV)WSWeaY(1+RM5QxC#AvK-6RSL4S& z#*>V<*>Tg-EmyCkdK0|(HQ&9cYU_&2eYIbE7}}@$mJL5xx9R$ohkM7~RO2UKIdyt> zE6N0Ph6~3zXkgIZ&13gpzdZkyvH9JLuiVU)D}TPn-FH`PJwG-tUVs0pbE3}mX($fF z1Ma$KTzbpe3*<1_fdEA`v8}fjmb&unCssUj z_eeXN-rs!a+Le<}v;o+@x##<9FMIt1rKD1xZ<79@^pbdBi{(4y}2CA+q@tlQEVziH7@A6M5+^XISKx+QcqlX~(c z5jl5iW@XPY(VjG!d|N5tA?t_rDhEs39y}aq*b*~H0 z&YQo#wRrlj&z>PJ+>~9nFCKg8V?*)GDX(~N{`!4--d;Fe$~u*0TdWUm`{}X*ft<1X z%$ICb-#=%5Z|Eyelj)#a5SqvPH2)e{FE3ll^px6BzjDWJ7zdj9%-)l?{I)5`L>eE{}v zEdcl9_bht+o<)cIY0YAREu7jfT>lp4&rGh} zzdcMzC~8V7Z@uEsM62Hojmo^NpV*t5JAhpyjV0X~kgu8Y{485DJssPX<%L(3cTeIp zW8-zlrM!VC0A=3^n($=+miVSoQHlF5Z>rFLkb1Zjlo^x*r zvM*ddeZdR2MIjB<1U5fA5&0xYrfloA42BR#BF_&(KY|xw3T>7Mz|`p2)BK!=(ou*H z^{=I4>A`)J&tw%TDQ!y7t2ZO!DWn2;ygyUXn6L@mEvv`kUSE3}=cOd#1zcalDacU6 zuzlvV{qcCBZ|v9{YK;NmuOsi9hxVF1n-beKoEhOXX&!}@{;bT*VbUc-yQB|kznG5N zs5|GXNK2?X@a9OZ(Ah98de zAOJ~3K~(YcAR-TE-^II@B1H;G1wSA}lGp)^kk8(Gnm2@bs8No%KD^g7ZmE=)>uGZB za26zJ10k6B!9_9>f@y*B@oE6|e2^y*23nk+WZmdQ_ugi*J2k#`QY`xof zGDlLpWbH9B_f7`~4iwaTEvq`SuULPLPM?Mq`BNN&i@FMzhAOw3WBuugkiU7x#XC+s zXEzF}5#^nsG2)_ZhDdPZx7N%YN^|pi-mh%w%*jf~o=WAavnCNMh!F%4SnY{0&88Ug z#+{kT$yPv&=WV#@%q@57m``D%FjCm4OKv!;gpbsmP9Rk{1O<6hr_wRe7=agJufIE) zR9KpJ)+a?-H28sS(9>u^)*!wYNGNKN5i)C>Upm=81iPCt!I(6(XLMvb4I8DTqoZSs z&Eyk?SZt5d@G*Apd349VNB`!}Uwk-!bZm&oRjW!Q+Gb2l6h_>i7@62yIKAU}qIiL~ou>q4`v2SyJ z!DCC-w`LB`ncg>NX8-u~fw4pT=NvjPXL^6DcWCRp6{FdVh=X@EPCd>Ca~$4RFQ{Cz ztuuc*F@gFN_waZHjV+#;3NvVG{Hb{ILSEIn4&KuMSqXR&N8XY5)8q`OZ5nf^vBJ^1 zzCU@ocUIYt0!gFQ=0=-R>K2wTK4)p_-1s3W8~e>IR|&&9ls2RuY3j1 ze?As0!2W%6H(tFqr)2;vKX*rY>}1K@iHiWS?#sCXX^0>vp1XVNz2ROT+|#`Fs#8wB z=!yADW|*ZvlN{LHd}7ns_6>8go>_m^K7GNRo5t?BVQK!3il~H*2s)jg!Mh8Hq}iJ~G#X;-jZ05G`SH6tGY0`meb($v1ANxTTOT+f zkTd%_3%~m8H=Og>&5IB2CSWFQ?VYn|>-^Q57Om|kjnlW?7s{8aA}x|!ilg;SKxphy z!UN3z@4B;|z5UU4*55q7@b*PTd_3OoE}5PLGx_?yL86nHD5!`T5UwXoL;~O;d}&^D zY35JJWPwYY-iXgKB#)0)401$h#5595(+BtV#}>sfsdM7G%kH}mOO}8cGc(w|8=E#^ z!v^$vIP0uqWbVtCfNa%JqIeZOudA3 z;fksC7d-LEt$`NU|3vHNZ>>E{{1ATq`fsf%-{RfdTVMUmDNpi8z2klNACYgr^G@7( z=a9#jF2$SQe3b4z?{lBd;UK?_Z@n^e%rlQ-ufkoEZe*JoDDy|{lrTG zp)tPn`)9vm_ze*kYXa*Q2k(hRNauWjz`kmgiFdnObG~`fIfE~I@y;y}FHTitRNFNm z4nEYNg!!-4c!MDDPM4VgJ5t^eAg2M+f$tOxdtFbdVKV*xt)scu zN0w52;R|u`#ZL-&E`I!^7i?5qVIm?g{{cCuP&{J_=n~olRL|+07e0RGbGOrzHaKpN zWjX$tIg}jX->;5n)(+Caydvb~ya#^3!!xW3X@tZ-_nv>ba@Mg1kFM=6~q|5T%kN&40eDc;)e`&{pwKJm~U&Ml{-6I&tF!AvYHHI;gV>blimd)3~_9gW7W z)Er36l%b3WKtnLc$->O8oavd&cDa#28+C9ZWDf41K6KzvXRaOXwC0a>yI@AMi3JO= zd^y&wtAv+_+4SUR?JIN>Zj1^ose%*K5;|q_vBt5Kb4(@pUT!6j*CJQafJ$q|HhTGG zMVk!@T~~yP7K{aI(*L$`@-N=b`=`E101yi?Kt%cGM?!f-o!^^~R}jh*3@k)MBw&g+ zShyq|A{G$H5b19*z~It3G2&BydFgKy!TpX$F5PmU3SAouznsE(k6Y%w^4CH zZth_V*9Lq!HK1Z80#Y(`vHY}ebaWL>c{-gdq1BKt3&JLf3w z`7z+#O<}~0m=LX*d#)_6B>Agqb(C^XaXkoE)<&M0DiiZLiJoVv%H1Kk^x5=9m?{kT zY?fwIpxc$Qq2oJF}yaWQO_>LxK_l$lzDwT>5jp9 zui0uq>GINVAp+;U3_M`Svt~}Ua65KgHI)|UVq%vvAeP}G@6GLF|6xK=6dOJ?$fHS# z&Z;+(C7$9Kdp67oaUw^FKaWWlF)ceFu4Zs*#0!;_DpYN0^#8T@rBQa4M|xFt`}V56 z)#_Ha8tp;?vB?Zz5}QRCz+qSg*dE3NjL)&hXFSPxP7>ol#`t*b9FH>x$4(CRIo<}v z5D;U7u@M*ycsyP(h($62NeJz|XkU8o@2&i(s(1Om+sXtKe@u?k)~Qs4oeL8kTTO)_bEKC zF2EMZAUE2iB#S4}T!?ju`HYmLYJ~LIM8pJ+|ElzGXLcg(0;<{@{xd{@@Kgeg(Mebf zp9lc})k{)@WMl;pjB&us=qk3WEp}%NL>$z91Srl#>Y59SRH}hPfapLLw?)v8$gV2H zY5=Gy#>+?nbyt3Y|-UJ2nC z8qJ(^kuPa5Ut2@1nmb2mshP-=G>=I=6PGUWBNHU8Fqa$gs12j8$60VnYL|65PY&}E zN@TJPq&0xD45V*z;wgwopbqm6O)FUCvn??xM**3ck#kL_OasK;3>ocZ0;`O$lv2os zWClrizqHC=T6}0$;A(?h0m$qFV%rwi%@vSUDLZU(gc`6?sfYw0R!D8^OU&*Vl_GIP z4moKT2&Fm485a^gUMyzrG@a+RvvpCDYUFGz6fNX`|6PE|s1J{_(vd_~29UrxCPK)h zc|joNOzio99jY+9lAM_c{2%HHlURF+H=hKSX^e^Xs;uBif#d*?|NLj)MAFvQdQ%n9 zLyBY6lQ*M;Ei5;cwGq815``x9>6UcvYynCYYjncUzrFT_U(@|`iqB~6SDl@#w*luI)x zIvik0US&IwQ1bSLFtICYvg z9zL5%jyQTl@UT~tksy^56oq4g8cMT~MY94WRv0y3t`e>aRH6DhH(qWrleChQ&#Xyp zlba|(;6#UE6NmPfX@X*%3yRgbpF{e>AVn(Ep0$+ulJoyou+mdYvCx>R|F4)FD8WWT zB+xqbpF$7UfW{+<94eVOB$|P5Mc!sqeaZL?n1~JgIgzxRR@Xa55t!G*3CgcjOArL- z7%MVS(25*=;U0{OA(r6NI-P+0x=GN@<*0B1WCCiUYU$ygjD#Rkmxc&+q1xSKn7`Sz zg5$GMC}47hQyy@H!U5yNs{_+}ORL>6RMi&ZLTW%~I(PaWn5l*&bd{-Qh%S2yx(k@? zkfpp4tVYC-q-{k;0?w?n)N6z}BvqtZMq(A95kSUwx)f5cIi-Or#H*T3S|iDy1At4E z3(zb9855;)6@?|Q66IYOy!1B4dgmpCd#ptYDFj(yAR;95CWI8egro$=7|w^n%r!>= zh`|;w-BEzpATyV6z+1xs_p#sPu?9`+>-9qt`P_PL9H{ z0IVA?b}CHePcPkGPP9bay;!*C=1NeA(flEaA~MuDwczvovv7EJzYR$7V{#rHN+c-D zi+FQLX0iNrC|gG8D{>Dyt#+g}bat=)0y44Ri_|{{bXKA`$7qi9njk6| zSJkn#0c%+g;U^$sxLT3>CRG(w*^qTb-yI4+$4e0FNz(($9LWP#(7ePwt{*JI*=7>u z;qEyC4CaU{aWz7D%F0CedXC?cr`bT#?}F8TNwW))J53td=|(n}6!JDMWupUd9GXCA zDv#{_8Kl-#hheYR?uFdJ4gjliDNDoWRFqHr^_Z2!VxAx<%ocDg4T7=ZwQO+07WS6{ z0H+paR=WeDDOWlMbPN^EF=Cy@tTxD@r18IO2PXcA&>Yn4_gRgR0Yf)jUNHlO;eVQ^ z<2r}Zei0+huwrc!cDFe+07(Ip*6zf~S_%3#DEB(k>tSigj5?r(t`tzP8ma3!%JHht z;N*IM!B|E*)KKk+axZwJZKMc@q)0W}_P$96TYz$b33!P0iy=E$9fa(Fl}Etlf$6C) zisv&|08rufxFj;!$}l|>6DFy_bZF%}R7N{#qIS>3=t?bSa%KTh4yJf?pPO;!N|YQ_ zlEV`zEqIERiDxL}xH0JoNxibUOyr%J0Wt|kg}j*)sr3uU@pebZl#21y)S z0b}igr=T6rg)e^p*&Q;~(?vw9Iy9Xdl^|-1)XW;uu~W9N+8H>qFXJd+OA*c}htA4s zijqAWb}I(+@2DH5iZFA4EDxPVyP*D^kn&xJ(bOT(R9+JqqI`9 zdqQFXJ=K)pukHZNR6EEoG)a0YmhD${vHGw<1KKZ$+ z$7vY=Q5+#%T(}#3z+r;c+gr;rrp>ezMrGru#f?8vVpX75M`za=QfC{G!$Qi|G6Igk z{fHr>3uuE5L|05!Rg4uwhyX;$nNp6Gn;97^==F?3vFSV@C-t6m$r&SI@SG}-L{P~G zZqc$7k3&_5sM?N0KT>kk_^0GV<-it56!5svj56d6hI1a>CBTplL%(MG8SFH~rOOk5 zLiaNekYrSZHh(pA2HBqzv5gnLqULpH1N?}pz!>s$0D?Fo(}Q_as+S0g<&(sp#=6XF z)$>gL3K`4+iWyiZW-2!CXXb1sx$1Uy4WELulaFtV{9X~Ff~yo{#*lJZSGBi}*@or*ZPchE zBdJKCB5OoCY4XH(-=}Iz=&1@yJRn<)GNWQNk|DdvgCT6H5h>?zE94n>0GqW1C?e>&L8NFI9 zZsZwXxGM>a%(vcUh=D@Gz=#!gPTg|!m6ch6WlKyp~+5;1cSRQnz{GZqr zKrfBy|IV10pfLwz10q*rNFAI?;)q4MH)VKX-$tnx1zwdFLuyg_* ziA6IK6fzBZijIt6D-5I(I_0*iIdVA{luc`HAr&T|fHg)}=!b|2&Zc(71?Se}YYGIU zP}@Y~fwEv3$+!YKDvJt1Sv0~XAl*)qTHG^D*)c>7C5Iht70#wm?PzrA^vEdk-Wu5H zf(M5|rCcJ6h%ZM&s(A(==j#@Zn2h>gpl><@K|tSor`Qe}=aF@{gAI|4oda1Tc z)NPow!;nQn4y)fBhEs|jnh8Dn-pdxo<dq3`U>K!p$_TpwqtzNT5|6MfUEFSJ!we*b^Z*1ID+x_^ru4L+ zS`eGrH`->P9bQG?Y+R=Fcb%e1ZAR||SvbM9dk!*(30LW`2#9#eq$mwX{biDjtpoFi z!9iYfm{Xy#PzXjQ-mYBIyNksIP-O+=WmclAzCz|Iu%SyyagJC1aHzi#qx6g*%XsW* zGvGU+urH;ig=oB&MBnNRrh#cA?p zNHHEN6h&nrGi?2Y${_&?2A{Fd*1mrUx{PR-Gl~|S2r!E{?y~cQ7%rUFgT_QLC9c4ZBcN77|;f-pjIat7oA!>ED_Y?m*FjD_T=qb1L?SBimO z{$OhZ2m#9EyVsIKI-UkbuHcD==ajEi5{r2bmczLj7sOWY82B0pK_f1|sTW_0${I6q z*ewb*8yR~sGwv>{uA<=F?AXhZm?RB@)9=tBYl|s$v7Ia5?>dib$sAXT{y-r{l=*D{ z={-hi$SImTefZdIawU`;ulVGZ2pCnvOg2K;wDOcSFC<@`J&{M^j6+XB+EqzzrM9YR z^+LJ%O}uc#c}FC)nhiG%?D*xuS6?4^t7l~2(eVKWZl=cehSr5mb5=}QcJ7qrRjlUc zrZvj+T3_VSIYe82WiB&0kG>%)_Yb4c46Ap7QKC*&(eskjHXZ{G<69b;N}5Lm2JQeM zWjgRz8cQ^a(qE7s8dO^*!Y)0EuMdR|nC`oNkB@@WwoF;Eak`Gc*y|*ia1v6`)bSg! z2G<0A4m6a;i1O;5V2j)6pv+<>ntIk)292o!RAaW!TZi_1W9P#gkG++917BMFMRll#bk;64!_7}kRKzfAu(n$@Q;9lSbmIDPfrqT7!Dw^&W+H9-3;*9rHL5) zir-B`%pyXP2C4T_XJz$BeNq9;5XnRDX#WJL(yHO~M0V`~D7SWpWOT~uoIm+V5ixx3 zz)Sya`~748CwH|YhQ#A)P&klFXKB~WQP#c9L&#Egob5VAl(o?oDaJ~9D02ER7tz){}m zMl5UOsZxDtSGk(sRyyW8P=gn{GY{bSvH@stL&&$W&_|@T8M%-wjNu8*Ai5gsnym}u) z*lC+&^L)mrRgDR^kr>;k%f7b#0Uzsx^yl4weCdqyS$}x^a7(3m*`%d6&R(^oWl`=Q zzxst6!UMKneN*SEH9bH0?V%U?M*FK+UDUGR+V-p8GxeOBZ`$tRJ!?PNvEl4VeY5L_ znyG2f&FURn{>tFxKR(jAYfR>yhH=sLYrFg(Ui0?@AN>B{qt`V(e?db}XJxzs9lh>- zKOejLk+JHyGuopiY=)k8{OM(t4X1NoI}bIv=0WJ*h3BrL%bu=l7zxVylCy8TFW9VI zwYKS|M<)H~@}U>b8R=;sAFn{i-nxJJe9M(jPN~n7E%U*9x8(k>$1dF)*ESFQyK|)$ zA8r_b>cak)mL1&FHZ;&Y?ueU)>sk*tcJ)u1zh~;%Z*+9+o19=T%Bhses`8OhiSo>E zcg%DG+&dg>!vJYV49AIPoQhK6lly=5^&JoR$GN%V$`7`GAety~A^T!ny07kgbWQ)- znp{u>T-A2PN7}E)sGf?${o-lw-8i_pZ**VouRb;JPp4Ia3T?@A}*z24O;E!Uu1vK6GQHCIxQBLHzVr>y~b=Snel8 zyy3p!=Xmii8n({Qc68;7%rjqW{OniTkqHn#_>HZ{kBtZZ?Kue4H*@UsfA;#m>7x_< z+WXgaed6J>#C4aE5XfvuDjZxu2$0YWKc=j?>}{clCkB~`c9$5FIY5G-d$m^tz+WF) z?;oVO(sXUx%6uys|1CrYAAsNLS@Tf;;}h|o8Fk#3 z@vX0Hy(bsz0FZI^^=c^O@X)$gc3h{Az%fbd~$Zt;vAy|r`m`wxQAKmw~|J$yH z_S-sc=&GN+d$jL6y$|gk>6M>9vhT_FPd#sO)BGY2jDZ(4&Aom0A5X1JzOQf1Z;q^! zpO3f^09e?(;A7plPO6*qyrc8>1uZv5^iJ9l@h<@2MfroZp$ z!;3eKu%q1cnGxFhvya|;c+Rfz=Pzu!@77>8_w$RYmpnbnkRi~fQ|li4qwwKg_EY!% z=iJmI*fX2%{}8@49{^yu5x#l*_!sW3s^(;x`xv2ZAKm)><~e(+&!0Q`KW`ZDcm3l0 zflGeTi~#@rjxGlLvoD3uapgZwy>9JHt@u$m{kUOqxM*DeWY>A?Tbo9z1I<~_tl>>_ zkF8&F0GQc1V*-=0_>5O$Y8<*3!hlp>xCe$?Lf1?QSnOiLy@vn*4~R)bK~%W_?0E)< z$HTkOR-KV2HpUeZCWmM3fuDze0PF6a`xmnsW&%T3W5>LPu1{>fbKG#A#}7QWxNAXC zTBC|}cg_8a*6IuZxVe3m4|f2lV)f2NpJ}b10RXpk-{Qj^0JaTon<(5HsNp{^{_OPX zGys^>*flUd@V|Q2$X$Dedo~ZeDW(6~y-$Q!KE`){def}lQAX_CIXrLc(4VeeHeS^i z`ovY!7JsG3OHhZ)v4cDB>_25k28dk`j=!{`VZ)i~s=jT$?EwL={Xh^6z4)2z`sjvbdePg~JtmZ% zwtW>&Ph-;%we7D9vX$r%aI6|0`Lcg(n|7ogkQnP1?3{Grx>-Pr1{=kCGB#MXmMebp_YSuTHGTR!~z0sbi=@=P)fEeoz*bYgEO=0+s>S{ zbluSn^6l>i-bh*ZdRyMIw6!`zUTQ}}TXNUr(i&2{0uue%XfMQ+AAK z^~l(@Ys`oHu}QLy;Q)B!X@L~}>?M_FFPV@dzHzBLWe3;cx92DDu<2r*Z2kLvsIr`1c!@y*asKZ)5xZrtaRBdAldqxk~epK%(q7 zQ#Beqe^`}SnThZnj7m;OxJTMBA*Lr-7==)mPpzALU`(NaePaisqvGo#PNLt~BL~I< zfY8~{9^igPK$u7oThITZxALrXcV~4CF zIv79pc6{sJKB^%_1iB*#p-Ct`MqLSdZJoKy7yRc3WJ{5)m}zd0+s35_F_3tnmc(Bt!_ z9&Hpp8Dk}^IDx5h6N)>UnfJWScs~(_(M(Z{rcjI#n=R8Pa%;l#l*8kpscd(^Tqtq5aFXzA|XRKk^p>t|}4URHb zE4gO>^!ztk4;ZYjqbC{xc7pml0GF?pJ-;nY0ZL4FnF5IH0J0SuT0VEryt7}MTpiDU zI>Qawv*-1H?vt;MRL8(cV>*uPq(cR>;YPhnzAd>`O<_kMzc+3PI$a>LYr+Ln&VJ#D zrs2VC=#hO--!$uAM}!vR+Hho+$^Zy6>ZbOND!996v@fz@MF8#@>Gv;ddfha;m|*Ru z;{-7XdPn+>^X)XNb7oYh`@8mZH|hM+>X|)V4dIm^7(?e6i&_cH;G*^i zkM8%IA^oHKUme&O*XXH~e65M_iBKYV_2~M8Rt~JF4qfObJlc%g5LXE8&md5T_ey>n9j_o z8~yy|FW%Puk=APK3y0UO>HUGfYj#7&;+BQ-^%ZTGKeg`}edSg9t9#D4?dxxKZ5!G> zulYNln(tv50QkTU`*p>x29j-Db631PsWsmfKOT7Q(nk5wuI|cbzC7ugAB@c3>d4`- zDY$(uZ8)=T-HOU!Gp>AkMES${rc+owXv?hm%ZO>MyU9oC&{U1T7tb2H@VCP=4pjiC zVT`66t7D)~erfB{Elp=`Y?;5Sapr+){aD@6mh9OJ55=l~SIxZaNBf@C zf&57C7q;J1{PnA6Ua`1&LCxAd5FJhs2e_W<-yGa}=Noqy@A@}${={Egmb5Ios{P6z z_5E01`P}9&{LSe#UipJPi(fk`s*6}8r8sAcp_I$+;2aVG!>JpG|LBJUk6qg$KYnXL z-93Lf!Dp?jfT9OkNjeAbp$Y}>Rnr(iz$I_iJ-)vG*Ght#{P}b!bs43WdFaY31)6W0O!aJ5W zFFgKpOsSg`N!rlIW`FpGwkwZQqpWJX>h{i?O|Z4leyFU80ZNQ9>VWAfkYk6xEvwU`EC&d6dciT4)-u!n*D%tT~ zcI$o)i>Jl@&nBIgZqq~Jq`~E@f6`d{S(t$xb9VfoYpho zGH_NMac0k3E)WSZ9O;4c0s%dy;~KcWplR-x7v8aHaO*D*uiH4dWzT5;v1|Z-J#2W*gI$YkZQ2h>L4+Ied*96>M(Un)WNFzk6irJ;7_lZ zwEnF6-E-;&T8JD^Il`U0vn89db6(1pzLuHFO`+stjvxnDm`nR68&2I!pa1L0k6byj zdExkx$u6rT&=Vqj@rxZBmyEnQcXU_h*#7C`!;K6K%|q0&xBj%vEtmXqddI#7S#Z%Q zx+rcd3tw|NvMFNI+b-Qt1Vs!+`;)4sxGD;fLkDmTyf!X}LV52~Z>s8;kK%&I9_Osb z;%DUi7NKs6zMYWIF(Nx>XwN-7n8h=jD(Q?Y( zwt~8_KOR^};7o<~nDVUT_-iUt6*VkivNv`lCPcO8B9ni1sy$)43#t@}Y7&nostPI= z0A?L*RyK?#QSD^=6Va)Fy6!{CJO>kJRv<6Ir`5c&>J{!}uRrXJD-Q&aF_J2o$?Bkk zaGrItMhKaHs~>Biy6duwcN|7S5|d<%?Ltcm_n`R|&6TiVQvk7$U4-N$yV^wz2Wr4O zu|k>Gd`!feaz3iH9zS(zD*dLiMd;9>HA`0OBVH_f{C<1tyjZ`^4 zQd+gJ);%0DUl1SV5HDmhBD%=VnPv#3ZDBB1(%m6@6E$`v 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 D4aI55 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/text.txt b/include/ezcomponents/ImageConversion/tests/data/text.txt new file mode 100644 index 000000000..bb2863ca5 --- /dev/null +++ b/include/ezcomponents/ImageConversion/tests/data/text.txt @@ -0,0 +1 @@ +Litte test file, which is no valid image... diff --git a/include/ezcomponents/ImageConversion/tests/data/watermark.png b/include/ezcomponents/ImageConversion/tests/data/watermark.png new file mode 100644 index 0000000000000000000000000000000000000000..797a0d9c49ab093cdbb580ea8cf7f6b6c1cceb81 GIT binary patch literal 797 zcmV+&1LFLNP)MS00004XF*Lt007q5 z)K6G40000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!uSrBfRCwCF zRy}YMK@@&FLm4RSgv1%GLJP^!O2(8phLpyHHUToD>Rha{P{%s`ra^{?U7>$PyRk zQUL)KMM2}I0cuYr!XL-%-X3V0j&F~SocZtF4t~72fc^bfP`kXG%loxBY9no{f5tTg z{r(=N(?5{OWPA$!J(=(|rawSKmig(Giltd4p^yiazsS;wF(g?N=wKIS(Y{+IkZ|WOe7MZ>pH~aagOFl(?QeC#zf}bZdclM z32~N2z^%jr@bVN!1FJkOx}k1pU7Sp(u4{2!3r%#Xw c #8996FF", +", c #8997FF", +"' c #8999FF", +") c #8A9BFF", +"! c #8A9CFF", +"~ c #8A9EFF", +"{ c #8A9FFF", +"] c #8BA1FF", +"^ c #8BA2FF", +"/ c #8BA3FF", +"( c #8CA4FF", +"_ c #8CA6FF", +": c #8CA7FF", +"< c #8CA9FF", +"[ c #8CAAFF", +"} c #8DABFF", +"| c #8EADFF", +"1 c #8EAFFF", +"2 c #8EB0FF", +"3 c #8EB1FF", +"4 c #8EB3FF", +"5 c #8FB4FF", +"6 c #8FB6FF", +"7 c #8FB7FF", +"8 c #90B8FF", +"9 c #90BAFF", +"0 c #91BBFF", +"a c #91BDFF", +"b c #92BDFF", +"c c #92BFFF", +"d c #92C0FF", +"e c #92C1FF", +"f c #92C3FF", +"g c #93C4FF", +"h c #94C5FF", +"i c #94C7FF", +"j c #94C8FF", +"k c #94C9FF", +"l c #94CAFF", +"m c #8586FF", +"n c #8688FF", +"o c #868CFF", +"p c #878FFF", +"q c #8791FF", +"r c #8892FF", +"s c #8995FF", +"t c #8998FF", +"u c #899AFF", +"v c #8A9DFF", +"w c #8BA0FF", +"x c #8AA1FF", +"y c #8BA4FF", +"z c #8CA5FF", +"A c #8DA8FF", +"B c #8DA9FF", +"C c #8EACFF", +"D c #8DAEFF", +"E c #8FB1FF", +"F c #8FB2FF", +"G c #8FB5FF", +"H c #90B6FF", +"I c #90B7FF", +"J c #91B9FF", +"K c #91BAFF", +"L c #91BCFF", +"M c #91BEFF", +"N c #92C4FF", +"O c #93C5FF", +"P c #93C6FF", +"Q c #95CBFF", +"R c #94CCFF", +"S c #96CEFF", +"T c #878BFF", +"U c #868EFF", +"V c #8894FF", +"W c #8896FF", +"X c #8B9FFF", +"Y c #8CA8FF", +"Z c #8CABFF", +"` c #8DACFF", +" . c #8EAEFF", +".. c #8EB2FF", +"+. c #8FB3FF", +"@. c #90B9FF", +"#. c #91BFFF", +"$. c #93C3FF", +"%. c #95CDFF", +"&. c #95CEFF", +"*. c #96CFFF", +"=. c #96D0FF", +"-. c #8587FF", +";. c #878CFF", +">. c #8897FF", +",. c #899DFF", +"'. c #90BCFF", +"). c #92BEFF", +"!. c #92C2FF", +"~. c #95CAFF", +"{. c #95CCFF", +"]. c #95CFFF", +"^. c #97D1FF", +"/. c #96D3FF", +"(. c #97D4FF", +"_. c #4658A8", +":. c #3E56A4", +"<. c #3755A0", +"[. c #2F549C", +"}. c #275399", +"|. c #205295", +"1. c #1E5695", +"2. c #1E5C95", +"3. c #1E6095", +"4. c #1D6594", +"5. c #1D6A94", +"6. c #1C7094", +"7. c #1C7494", +"8. c #1C7993", +"9. c #1B7E93", +"0. c #1B8393", +"a. c #1A8893", +"b. c #198E92", +"c. c #1A9292", +"d. c #199792", +"e. c #189C92", +"f. c #17A192", +"g. c #17A692", +"h. c #17AE91", +"i. c #16BA91", +"j. c #15C491", +"k. c #13D091", +"l. c #12DB8F", +"m. c #11E68F", +"n. c #11F18F", +"o. c #0FFC8F", +"p. c #16FF8F", +"q. c #21FE8E", +"r. c #2AFD8E", +"s. c #34FC8E", +"t. c #3DFC8D", +"u. c #47FB8D", +"v. c #51FC8C", +"w. c #5AFA8D", +"x. c #65FA8C", +"y. c #6FFA8C", +"z. c #78F98B", +"A. c #82F88C", +"B. c #8CF88B", +"C. c #95F78B", +"D. c #9FF78A", +"E. c #A8F78A", +"F. c #B2F68A", +"G. c #BCF68A", +"H. c #C6F589", +"I. c #D0F489", +"J. c #DAF489", +"K. c #E3F388", +"L. c #ECF389", +"M. c #F6F288", +"N. c #F8EF8B", +"O. c #F7EB8F", +"P. c #F8E892", +"Q. c #F8E595", +"R. c #F8E199", +"S. c #F9DE9C", +"T. c #F8DAA0", +"U. c #F9D8A3", +"V. c #FAD3A6", +"W. c #FAD1AA", +"X. c #FACDAD", +"Y. c #FACAB2", +"Z. c #FAC6B5", +"`. c #FAC3B8", +" + c #FABFBC", +".+ c #FBBCBF", +"++ c #FBB8C3", +"@+ c #FCB4C6", +"#+ c #FCAFCC", +"$+ c #FCAAD1", +"%+ c #FDA5D6", +"&+ c #FDA1DA", +"*+ c #FD9CDF", +"=+ c #FD97E4", +"-+ c #FE92E9", +";+ c #FE8EEE", +">+ c #FF89F3", +",+ c #FF84F8", +"'+ c #FE7FFC", +")+ c #FA7BFF", +"!+ c #F077FF", +"~+ c #E774FF", +"{+ c #DF70FF", +"]+ c #D56CFF", +"^+ c #CC69FF", +"/+ c #C365FF", +"(+ c #BA61FF", +"_+ c #B05EFF", +":+ c #A75AFF", +"<+ c #9E57FF", +"[+ c #804BFF", +"}+ c #6140FF", +"|+ c #4333FF", +"1+ c #3D31FF", +"2+ c #3C31FF", +"3+ c #868DFF", +"4+ c #8CA3FF", +"5+ c #8DAAFF", +"6+ c #90B5FF", +"7+ c #96D1FF", +"8+ c #96D2FF", +"9+ c #97D5FF", +"0+ c #97D7FF", +"a+ c #515AAE", +"b+ c #4959A9", +"c+ c #4157A6", +"d+ c #3A56A2", +"e+ c #32559E", +"f+ c #2A549A", +"g+ c #235297", +"h+ c #1F5495", +"i+ c #1F5A95", +"j+ c #1E5F94", +"k+ c #1E6394", +"l+ c #1D6894", +"m+ c #1D6D93", +"n+ c #1C7293", +"o+ c #1B7894", +"p+ c #1B7C93", +"q+ c #1B8193", +"r+ c #1B8793", +"s+ c #198B93", +"t+ c #199093", +"u+ c #199592", +"v+ c #189A92", +"w+ c #18A092", +"x+ c #17A491", +"y+ c #17AA91", +"z+ c #16B592", +"A+ c #14C091", +"B+ c #14CC90", +"C+ c #13D790", +"D+ c #11E18F", +"E+ c #10EC8F", +"F+ c #0FF88F", +"G+ c #13FE8E", +"H+ c #1CFE8E", +"I+ c #26FE8E", +"J+ c #30FD8E", +"K+ c #3AFD8D", +"L+ c #43FC8D", +"M+ c #4DFC8D", +"N+ c #57FB8D", +"O+ c #61FA8C", +"P+ c #6AFA8C", +"Q+ c #74F98B", +"R+ c #7EF98B", +"S+ c #87F98B", +"T+ c #91F78B", +"U+ c #9BF88B", +"V+ c #A5F78A", +"W+ c #AEF68A", +"X+ c #B8F689", +"Y+ c #C2F589", +"Z+ c #CCF489", +"`+ c #D6F389", +" @ c #DFF389", +".@ c #E8F388", +"+@ c #F3F288", +"@@ c #F7F08A", +"#@ c #F8ED8D", +"$@ c #F7E991", +"%@ c #F8E694", +"&@ c #F9E397", +"*@ c #F8E09B", +"=@ c #F9DB9F", +"-@ c #F9D8A2", +";@ c #F9D5A6", +">@ c #F9D2A9", +",@ c #FACFAD", +"'@ c #FACBB0", +")@ c #FAC7B3", +"!@ c #FAC4B7", +"~@ c #FAC1BA", +"{@ c #FBBEBD", +"]@ c #FBBAC1", +"^@ c #FBB6C5", +"/@ c #FCB2CA", +"(@ c #FCADCE", +"_@ c #FCA8D4", +":@ c #FDA3D9", +"<@ c #FC9EDD", +"[@ c #FD9AE3", +"}@ c #FE94E8", +"|@ c #FE8FEC", +"1@ c #FE8BF1", +"2@ c #FF86F6", +"3@ c #FF81FB", +"4@ c #FE7DFF", +"5@ c #F478FF", +"6@ c #EB75FF", +"7@ c #E271FF", +"8@ c #D96EFF", +"9@ c #D06AFF", +"0@ c #C666FF", +"a@ c #BD63FF", +"b@ c #B45FFF", +"c@ c #AB5CFF", +"d@ c #A258FF", +"e@ c #8B50FF", +"f@ c #6E44FF", +"g@ c #4F39FF", +"h@ c #3C30FF", +"i@ c #8890FF", +"j@ c #8793FF", +"k@ c #8898FF", +"l@ c #8B9EFF", +"m@ c #8CA2FF", +"n@ c #93C2FF", +"o@ c #96D4FF", +"p@ c #97D6FF", +"q@ c #98D7FF", +"r@ c #98D9FF", +"s@ c #99DAFF", +"t@ c #5C5CB3", +"u@ c #545BAF", +"v@ c #4D59AC", +"w@ c #4458A7", +"x@ c #3D56A3", +"y@ c #35559F", +"z@ c #2D539C", +"A@ c #255297", +"B@ c #1F5294", +"C@ c #1E5795", +"D@ c #1F5D95", +"E@ c #1E6294", +"F@ c #1D6694", +"G@ c #1D6C94", +"H@ c #1C7093", +"I@ c #1C7593", +"J@ c #1B7A93", +"K@ c #1B7F94", +"L@ c #1B8593", +"M@ c #1A8992", +"N@ c #1A8E93", +"O@ c #199393", +"P@ c #199892", +"Q@ c #189D92", +"R@ c #18A291", +"S@ c #17A792", +"T@ c #16B191", +"U@ c #15BC91", +"V@ c #15C791", +"W@ c #13D290", +"X@ c #12DD90", +"Y@ c #12E88F", +"Z@ c #10F38F", +"`@ c #0FFE8F", +" # c #19FE8E", +".# c #22FE8E", +"+# c #2CFD8E", +"@# c #36FD8D", +"## c #40FD8D", +"$# c #49FC8D", +"%# c #53FC8D", +"&# c #5DFA8C", +"*# c #67FA8C", +"=# c #70F98B", +"-# c #7AF98B", +";# c #84F98B", +"># c #8EF88B", +",# c #97F88A", +"'# c #A1F78A", +")# c #AAF68A", +"!# c #B4F58A", +"~# c #BEF58A", +"{# c #C8F489", +"]# c #D1F489", +"^# c #DBF389", +"/# c #E4F389", +"(# c #EFF389", +"_# c #F8F288", +":# c #F7EE8B", +"<# c #F8EA90", +"[# c #F8E793", +"}# c #F8E496", +"|# c #F9E09A", +"1# c #F9DD9D", +"2# c #F9D9A1", +"3# c #F9D6A4", +"4# c #F9D3A7", +"5# c #F9CFAB", +"6# c #FACCAF", +"7# c #FAC9B2", +"8# c #FAC6B6", +"9# c #FAC2B9", +"0# c #FBBEBC", +"a# c #FBBBC0", +"b# c #FCB3C8", +"c# c #FCAECD", +"d# c #FDA4D6", +"e# c #FDA0DC", +"f# c #FD9BE0", +"g# c #FD96E5", +"h# c #FE91EA", +"i# c #FE8DEF", +"j# c #FE87F4", +"k# c #FF83F9", +"l# c #FF7EFD", +"m# c #F87AFF", +"n# c #EF77FF", +"o# c #E673FF", +"p# c #DD70FF", +"q# c #D36BFF", +"r# c #CA68FF", +"s# c #C165FF", +"t# c #B761FF", +"u# c #AE5DFF", +"v# c #A55AFF", +"w# c #9754FF", +"x# c #7949FF", +"y# c #5B3DFF", +"z# c #8589FF", +"A# c #8891FF", +"B# c #899BFF", +"C# c #8AA0FF", +"D# c #8BA6FF", +"E# c #93C7FF", +"F# c #95C9FF", +"G# c #94CBFF", +"H# c #97D2FF", +"I# c #98D6FF", +"J# c #99DCFF", +"K# c #99DDFF", +"L# c #665EB8", +"M# c #5F5CB5", +"N# c #575BB1", +"O# c #4F5AAD", +"P# c #4758A9", +"Q# c #4056A5", +"R# c #3855A1", +"S# c #31549D", +"T# c #29539A", +"U# c #215296", +"V# c #1F5595", +"W# c #1E5B95", +"X# c #1E6594", +"Y# c #1D6994", +"Z# c #1C6E93", +"`# c #1C7893", +" $ c #1B7D93", +".$ c #1B8293", +"+$ c #1A8793", +"@$ c #1A8C92", +"#$ c #199193", +"$$ c #199693", +"%$ c #199B92", +"&$ c #18A592", +"*$ c #17AC92", +"=$ c #16B891", +"-$ c #15C391", +";$ c #14CD90", +">$ c #13D990", +",$ c #12E490", +"'$ c #11EF8F", +")$ c #10FA8F", +"!$ c #15FF8E", +"~$ c #1FFE8E", +"{$ c #28FE8E", +"]$ c #32FD8E", +"^$ c #3CFC8D", +"/$ c #46FC8D", +"($ c #4FFC8D", +"_$ c #59FB8C", +":$ c #63FA8C", +"<$ c #6CFA8B", +"[$ c #76F98B", +"}$ c #80F98B", +"|$ c #8AF88B", +"1$ c #93F78B", +"2$ c #9DF78B", +"3$ c #A7F68A", +"4$ c #B1F689", +"5$ c #BAF58A", +"6$ c #C4F589", +"7$ c #CEF489", +"8$ c #D8F489", +"9$ c #E1F389", +"0$ c #EBF289", +"a$ c #F4F288", +"b$ c #F8F08A", +"c$ c #F7EC8E", +"d$ c #F7E992", +"e$ c #F8E695", +"f$ c #F8E298", +"g$ c #F9DF9C", +"h$ c #F9DBA0", +"i$ c #F9D1AA", +"j$ c #FACEAD", +"k$ c #FACAB0", +"l$ c #FAC6B4", +"m$ c #FAC3B7", +"n$ c #FBC0BB", +"o$ c #FBBDBE", +"p$ c #FBB9C2", +"q$ c #FBB5C6", +"r$ c #FCB1CB", +"s$ c #FCABD0", +"t$ c #FCA7D5", +"u$ c #FCA2D9", +"v$ c #FD9DDF", +"w$ c #FE98E4", +"x$ c #FD94E8", +"y$ c #FE8FED", +"z$ c #FE8AF2", +"A$ c #FE85F7", +"B$ c #FF80FC", +"C$ c #FB7CFF", +"D$ c #F378FF", +"E$ c #E974FF", +"F$ c #E071FF", +"G$ c #D76DFF", +"H$ c #CE6AFF", +"I$ c #C466FF", +"J$ c #BB62FF", +"K$ c #B25EFF", +"L$ c #A95BFF", +"M$ c #A057FF", +"N$ c #854EFF", +"O$ c #6741FF", +"P$ c #4836FF", +"Q$ c #8AA2FF", +"R$ c #97D3FF", +"S$ c #98DAFF", +"T$ c #99DBFF", +"U$ c #9ADDFF", +"V$ c #99DEFF", +"W$ c #9ADFFF", +"X$ c #715FBE", +"Y$ c #6A5EBA", +"Z$ c #625CB6", +"`$ c #5A5BB3", +" % c #525AAE", +".% c #4B59AA", +"+% c #4357A6", +"@% c #3B56A3", +"#% c #34559F", +"$% c #2C549B", +"%% c #245297", +"&% c #1F5994", +"*% c #1E5E95", +"=% c #1E6794", +"-% c #1C6C93", +";% c #1D7293", +">% c #1C7693", +",% c #1B7C94", +"'% c #1B8093", +")% c #1A8593", +"!% c #1A8A93", +"~% c #199492", +"{% c #189992", +"]% c #199E92", +"^% c #18A392", +"/% c #17A892", +"(% c #16B391", +"_% c #16BE91", +":% c #14C991", +"<% c #14D490", +"[% c #12DF8F", +"}% c #12EB8F", +"|% c #10F68E", +"1% c #11FF8E", +"2% c #1BFE8E", +"3% c #24FE8E", +"4% c #2EFD8E", +"5% c #38FC8D", +"6% c #41FC8D", +"7% c #4BFC8D", +"8% c #55FB8C", +"9% c #5FFA8C", +"0% c #69FA8C", +"a% c #72F98C", +"b% c #7CF98C", +"c% c #86F88B", +"d% c #8FF88B", +"e% c #99F88A", +"f% c #A3F68B", +"g% c #ADF68A", +"h% c #B6F68A", +"i% c #C0F58A", +"j% c #CAF489", +"k% c #D3F489", +"l% c #DDF488", +"m% c #E7F388", +"n% c #F0F288", +"o% c #F8F089", +"p% c #F7ED8C", +"q% c #F7EA90", +"r% c #F8E794", +"s% c #F8E497", +"t% c #F9DF9B", +"u% c #F9DC9E", +"v% c #F9D3A8", +"w% c #FACFAC", +"x% c #F9CBAF", +"y% c #FAC8B3", +"z% c #FAC4B6", +"A% c #FBC1B9", +"B% c #FBBAC0", +"C% c #FBB7C4", +"D% c #FBB2C9", +"E% c #FCAECE", +"F% c #FCA8D3", +"G% c #FDA3D7", +"H% c #FD9FDC", +"I% c #FD9AE1", +"J% c #FE95E7", +"K% c #FE91EB", +"L% c #FE8BF0", +"M% c #FE86F5", +"N% c #FE82FA", +"O% c #FF7DFF", +"P% c #F679FF", +"Q% c #ED76FF", +"R% c #E472FF", +"S% c #DB6FFF", +"T% c #D16BFF", +"U% c #C867FF", +"V% c #BF64FF", +"W% c #B660FF", +"X% c #AC5DFF", +"Y% c #A459FF", +"Z% c #9152FF", +"`% c #7346FF", +" & c #553AFF", +".& c #8DADFF", +"+& c #90BBFF", +"@& c #98D8FF", +"#& c #9AE0FF", +"$& c #9AE1FF", +"%& c #9BE3FF", +"&& c #7C61C4", +"*& c #7560BF", +"=& c #6C5EBC", +"-& c #645DB8", +";& c #5D5CB4", +">& c #565AB0", +",& c #4E59AC", +"'& c #3E57A4", +")& c #3756A0", +"!& c #2E559D", +"~& c #275299", +"{& c #1F5194", +"]& c #1F5794", +"^& c #1E5B94", +"/& c #1E6094", +"(& c #1D6F94", +"_& c #1B7993", +":& c #1B7E94", +"<& c #1A8393", +"[& c #198D93", +"}& c #199392", +"|& c #18A192", +"1& c #18A692", +"2& c #16AE91", +"3& c #15BA91", +"4& c #14C490", +"5& c #14D090", +"6& c #13DB90", +"7& c #12E68F", +"8& c #17FF8E", +"9& c #20FE8D", +"0& c #2AFE8E", +"a& c #33FD8E", +"b& c #3EFC8D", +"c& c #47FC8D", +"d& c #51FB8C", +"e& c #5BFB8C", +"f& c #64FB8C", +"g& c #82F98B", +"h& c #8BF88A", +"i& c #96F78B", +"j& c #9EF78B", +"k& c #BCF58A", +"l& c #C6F58A", +"m& c #CFF489", +"n& c #DAF389", +"o& c #E3F389", +"p& c #EDF388", +"q& c #F7EE8C", +"r& c #F8EB8F", +"s& c #F9E595", +"t& c #F8DB9F", +"u& c #F9D7A3", +"v& c #F9D4A7", +"w& c #FACDAE", +"x& c #FAC9B1", +"y& c #FBC6B5", +"z& c #FCB4C7", +"A& c #FCA6D6", +"B& c #FCA1DB", +"C& c #FD9CE0", +"D& c #FE97E4", +"E& c #FD8EEE", +"F& c #FE89F3", +"G& c #FE84F8", +"H& c #FF7FFD", +"I& c #DE70FF", +"J& c #D56DFF", +"K& c #CB69FF", +"L& c #C265FF", +"M& c #B962FF", +"N& c #A75BFF", +"O& c #7F4BFF", +"P& c #613FFF", +"Q& c #9ADEFF", +"R& c #9AE2FF", +"S& c #9BE4FF", +"T& c #9CE5FF", +"U& c #8763C9", +"V& c #7F61C5", +"W& c #7860C1", +"X& c #705FBE", +"Y& c #685DB9", +"Z& c #605CB5", +"`& c #595CB2", +" * c #5159AD", +".* c #4958A9", +"+* c #4257A6", +"@* c #3956A2", +"#* c #2A539A", +"$* c #225296", +"%* c #1F5594", +"&* c #1F5A94", +"** c #1D5F94", +"=* c #1E6395", +"-* c #1D6D94", +";* c #1C7294", +">* c #1B7793", +",* c #1C7C93", +"'* c #1A8693", +")* c #1A8B93", +"!* c #199092", +"~* c #199692", +"{* c #189F92", +"]* c #18A492", +"^* c #17AB92", +"/* c #16B591", +"(* c #15C091", +"_* c #13D690", +":* c #12E290", +"<* c #11ED8F", +"[* c #10F88F", +"}* c #13FF8E", +"|* c #27FE8E", +"1* c #30FE8D", +"2* c #3AFC8D", +"3* c #44FC8D", +"4* c #57FB8C", +"5* c #61FB8C", +"6* c #6AFA8B", +"7* c #74FA8B", +"8* c #88F88B", +"9* c #9BF78A", +"0* c #A5F68A", +"a* c #C2F58A", +"b* c #CCF48A", +"c* c #D6F489", +"d* c #E9F388", +"e* c #F7EC8D", +"f* c #F8E990", +"g* c #F8DF9B", +"h* c #F9DB9E", +"i* c #FAD1A9", +"j* c #FACEAC", +"k* c #FBC7B4", +"l* c #FBC0BA", +"m* c #FCB1CA", +"n* c #FCADCF", +"o* c #FDA8D4", +"p* c #FDA2D9", +"q* c #FD9EDD", +"r* c #FD99E3", +"s* c #FE8AF1", +"t* c #FD7CFF", +"u* c #F479FF", +"v* c #CF6BFF", +"w* c #C667FF", +"x* c #AA5CFF", +"y* c #A158FF", +"z* c #6D44FF", +"A* c #4E37FF", +"B* c #8DA7FF", +"C* c #9CE4FF", +"D* c #9CE6FF", +"E* c #9CE7FF", +"F* c #9DE7FF", +"G* c #9365CF", +"H* c #8B64CA", +"I* c #8262C6", +"J* c #7B61C3", +"K* c #7360BE", +"L* c #6B5EBB", +"M* c #635DB7", +"N* c #535AAF", +"O* c #4C59AC", +"P* c #4558A8", +"Q* c #3D57A4", +"R* c #35569F", +"S* c #2D549C", +"T* c #255397", +"U* c #1F5295", +"V* c #1E5794", +"W* c #1E5C94", +"X* c #1D6294", +"Y* c #1D6794", +"Z* c #1D6B94", +"`* c #1C7194", +" = c #1B7F93", +".= c #1A8493", +"+= c #1A8993", +"@= c #198E93", +"#= c #17B191", +"$= c #14C790", +"%= c #13DD8F", +"&= c #11E98F", +"*= c #0FFE8E", +"== c #18FE8E", +"-= c #23FD8E", +";= c #2CFE8D", +">= c #35FD8E", +",= c #3FFD8D", +"'= c #49FC8C", +")= c #53FB8C", +"!= c #70FA8B", +"~= c #AAF78A", +"{= c #B4F689", +"]= c #BEF589", +"^= c #C7F58A", +"/= c #D2F489", +"(= c #DCF389", +"_= c #E5F389", +":= c #EFF288", +"<= c #F7F289", +"[= c #F8E396", +"}= c #F9DAA0", +"|= c #F9D0AB", +"1= c #FACDAF", +"2= c #FBBFBC", +"3= c #FABCC0", +"4= c #FBB7C3", +"5= c #FCB4C8", +"6= c #FCAFCD", +"7= c #FCAAD2", +"8= c #FCA4D6", +"9= c #FDA0DB", +"0= c #FD9AE0", +"a= c #FD96E6", +"b= c #FF88F4", +"c= c #FF82F9", +"d= c #FF7EFE", +"e= c #F87BFF", +"f= c #E572FF", +"g= c #DC6FFF", +"h= c #C064FF", +"i= c #AF5EFF", +"j= c #9755FF", +"k= c #7948FF", +"l= c #8A9AFF", +"m= c #8FB8FF", +"n= c #94C6FF", +"o= c #93C8FF", +"p= c #96CDFF", +"q= c #9BE1FF", +"r= c #9CE8FF", +"s= c #9DEAFF", +"t= c #9E67D5", +"u= c #9666D0", +"v= c #8D64CC", +"w= c #8562C8", +"x= c #7D61C4", +"y= c #7660C1", +"z= c #6E5FBC", +"A= c #665DB8", +"B= c #5F5DB4", +"C= c #575AB1", +"D= c #4F5AAC", +"E= c #4858A9", +"F= c #3856A1", +"G= c #30549D", +"H= c #205296", +"I= c #1F5B95", +"J= c #1E6494", +"K= c #1C6F93", +"L= c #1B7893", +"M= c #1B8893", +"N= c #1A9192", +"O= c #189B92", +"P= c #17AD92", +"Q= c #14C391", +"R= c #13CE90", +"S= c #11E48F", +"T= c #10EF8F", +"U= c #10FA8E", +"V= c #15FE8E", +"W= c #29FD8E", +"X= c #32FD8D", +"Y= c #3BFC8D", +"Z= c #45FC8D", +"`= c #4FFB8D", +" - c #59FA8C", +".- c #62FB8C", +"+- c #6CFA8C", +"@- c #7FF98C", +"#- c #94F88B", +"$- c #A6F78A", +"%- c #B0F58A", +"&- c #BAF589", +"*- c #CDF489", +"=- c #D8F389", +"-- c #EAF388", +";- c #F8EC8E", +">- c #F8E992", +",- c #F8E594", +"'- c #F8E198", +")- c #F9DE9B", +"!- c #F9D4A6", +"~- c #F9D0AA", +"{- c #FAC7B4", +"]- c #FCB0CB", +"^- c #FD98E3", +"/- c #FD93E8", +"(- c #FE8EED", +"_- c #FE8AF3", +":- c #FF85F7", +"<- c #FE80FC", +"[- c #FC7CFF", +"}- c #D76EFF", +"|- c #BB63FF", +"1- c #B25FFF", +"2- c #9F58FF", +"3- c #8FB0FF", +"4- c #90B4FF", +"5- c #91C0FF", +"6- c #95D0FF", +"7- c #98D5FF", +"8- c #9BE2FF", +"9- c #9BE5FF", +"0- c #9DE9FF", +"a- c #9EEBFF", +"b- c #9DECFF", +"c- c #9EEDFF", +"d- c #A968DA", +"e- c #A267D6", +"f- c #9966D2", +"g- c #9164CE", +"h- c #8963CA", +"i- c #8162C6", +"j- c #7960C2", +"k- c #725FBE", +"l- c #5A5CB2", +"m- c #4A59AB", +"n- c #33549F", +"o- c #1E5895", +"p- c #1E5E94", +"q- c #1D6394", +"r- c #1D7194", +"s- c #1B7B93", +"t- c #198F93", +"u- c #199493", +"v- c #199992", +"w- c #189E91", +"x- c #15BE91", +"y- c #14CA90", +"z- c #13D490", +"A- c #11EB8F", +"B- c #11F68F", +"C- c #1BFF8F", +"D- c #25FE8E", +"E- c #38FC8E", +"F- c #42FC8D", +"G- c #4CFC8C", +"H- c #68FA8B", +"I- c #72FA8C", +"J- c #7CF98B", +"K- c #85F88B", +"L- c #90F88B", +"M- c #99F78B", +"N- c #A3F78B", +"O- c #ACF78A", +"P- c #B7F58A", +"Q- c #D3F389", +"R- c #DDF389", +"S- c #F1F288", +"T- c #F8EE8D", +"U- c #F8E693", +"V- c #F8E397", +"W- c #F8DD9E", +"X- c #F9D6A5", +"Y- c #F9D2A8", +"Z- c #FACFAB", +"`- c #FACBAF", +" ; c #FAC5B6", +".; c #FBC2BA", +"+; c #FCB2C9", +"@; c #FDA8D3", +"#; c #FCA4D8", +"$; c #FE9AE2", +"%; c #FD95E6", +"&; c #FD90EB", +"*; c #FF87F5", +"=; c #FE81FA", +"-; c #E372FF", +";; c #DA6FFF", +">; c #C868FF", +",; c #BF63FF", +"'; c #B661FF", +"); c #AD5DFF", +"!; c #99D9FF", +"~; c #98DBFF", +"{; c #9DE8FF", +"]; c #9DEBFF", +"^; c #9EEEFF", +"/; c #9EEFFF", +"(; c #9FF0FF", +"_; c #B46BE0", +":; c #AC69DC", +"<; c #A467D7", +"[; c #9C66D3", +"}; c #9465CF", +"|; c #8C64CB", +"1; c #8462C7", +"2; c #745FBF", +"3; c #6D5FBC", +"4; c #655DB8", +"5; c #555AB0", +"6; c #4658A9", +"7; c #3F57A4", +"8; c #2F559C", +"9; c #1F5795", +"0; c #1E6194", +"a; c #1E6694", +"b; c #1C6A94", +"c; c #1B7994", +"d; c #1A8D92", +"e; c #199292", +"f; c #16AE92", +"g; c #15C591", +"h; c #10F18F", +"i; c #10FD8E", +"j; c #17FE8E", +"k; c #34FD8D", +"l; c #3EFD8D", +"m; c #48FC8D", +"n; c #52FB8C", +"o; c #6EF98B", +"p; c #78F98C", +"q; c #82F88B", +"r; c #96F88A", +"s; c #9FF78B", +"t; c #A9F68B", +"u; c #B2F58A", +"v; c #F9E596", +"w; c #F9D7A4", +"x; c #FAD0AA", +"y; c #FBBFBB", +"z; c #FBAFCC", +"A; c #FCA5D6", +"B; c #FCA1DA", +"C; c #FD93E9", +"D; c #FE83F8", +"E; c #F97BFF", +"F; c #F177FF", +"G; c #C266FF", +"H; c #B961FF", +"I; c #9BE6FF", +"J; c #9DE6FF", +"K; c #9EECFF", +"L; c #9FEFFF", +"M; c #9EF1FF", +"N; c #A0F1FF", +"O; c #A0F3FF", +"P; c #C06CE6", +"Q; c #B86BE1", +"R; c #B069DD", +"S; c #A868D9", +"T; c #9F67D6", +"U; c #9766D1", +"V; c #8F64CD", +"W; c #7760C1", +"X; c #705FBD", +"Y; c #685EBA", +"Z; c #585BB1", +"`; c #4958AA", +" > c #4258A6", +".> c #2A539B", +"+> c #225297", +"@> c #1E5F95", +"#> c #1C6D94", +"$> c #1C7793", +"%> c #1A8792", +"&> c #189692", +"*> c #199A92", +"=> c #15C191", +"-> c #12E18F", +";> c #12FF8E", +">> c #4DFC8C", +",> c #7DF98B", +"'> c #92F78B", +")> c #9CF78A", +"!> c #A5F78B", +"~> c #AFF68A", +"{> c #B8F58A", +"]> c #E9F389", +"^> c #F8DB9E", +"/> c #F9D4A5", +"(> c #FAD2A9", +"_> c #FACAAF", +":> c #FBC1BA", +"<> c #FBB9C1", +"[> c #FCACCF", +"}> c #FDA2D8", +"|> c #FD9EDE", +"1> c #FD99E2", +"2> c #FE94E7", +"3> c #FE90EC", +"4> c #FF8BF1", +"5> c #FE86F6", +"6> c #FE7CFF", +"7> c #E171FF", +"8> c #D86EFF", +"9> c #CF6AFF", +"0> c #C766FF", +"a> c #93C1FF", +"b> c #99DFFF", +"c> c #9CE9FF", +"d> c #9EEAFF", +"e> c #9FF1FF", +"f> c #9FF2FF", +"g> c #9FF3FF", +"h> c #A0F4FF", +"i> c #A0F5FF", +"j> c #CB6EEB", +"k> c #C46CE7", +"l> c #BC6CE3", +"m> c #B36ADE", +"n> c #AB69DB", +"o> c #A367D6", +"p> c #9B66D2", +"q> c #9264CE", +"r> c #8A63CB", +"s> c #7B61C2", +"t> c #725FBF", +"u> c #6B5EBA", +"v> c #3D57A3", +"w> c #3555A0", +"x> c #255398", +"y> c #1F5394", +"z> c #1C6C94", +"A> c #1B7A94", +"B> c #1B8493", +"C> c #18A792", +"D> c #16BC91", +"E> c #12E890", +"F> c #11F48F", +"G> c #0FFF8E", +"H> c #19FE8F", +"I> c #23FE8E", +"J> c #2CFE8E", +"K> c #36FC8E", +"L> c #3FFC8D", +"M> c #53FB8D", +"N> c #5DFB8C", +"O> c #66FA8C", +"P> c #70FA8C", +"Q> c #8DF88B", +"R> c #97F88B", +"S> c #A1F78B", +"T> c #ABF68A", +"U> c #B5F589", +"V> c #DBF488", +"W> c #E6F388", +"X> c #EEF288", +"Y> c #F7F188", +"Z> c #F7EA8F", +"`> c #F9DAA1", +" , c #FAD3A8", +"., c #FAC5B5", +"+, c #FBB3C8", +"@, c #FBAECD", +"#, c #FDA5D7", +"$, c #FD9BE1", +"%, c #FD91EA", +"&, c #FE8DF0", +"*, c #FE88F4", +"=, c #FE7EFE", +"-, c #EF76FF", +";, c #E573FF", +">, c #DD6FFF", +",, c #9BE0FF", +"', c #A1F6FF", +"), c #A1F8FF", +"!, c #D770F1", +"~, c #CF6FED", +"{, c #C76EE9", +"], c #BE6CE4", +"^, c #B66BE1", +"/, c #AE69DD", +"(, c #A668D8", +"_, c #9E66D5", +":, c #9665D0", +"<, c #8E64CC", +"[, c #8662C8", +"}, c #7E62C5", +"|, c #765FC0", +"1, c #6E5EBC", +"2, c #665DB9", +"3, c #5F5CB4", +"4, c #4859A8", +"5, c #4057A5", +"6, c #285399", +"7, c #1E5A95", +"8, c #1C6E94", +"9, c #1C7493", +"0, c #1C7994", +"a, c #1A8C93", +"b, c #1A9193", +"c, c #199B93", +"d, c #18A591", +"e, c #15B791", +"f, c #14CE90", +"g, c #13D98F", +"h, c #0FFA8E", +"i, c #28FD8E", +"j, c #3CFC8E", +"k, c #46FC8C", +"l, c #6CF98B", +"m, c #76F98C", +"n, c #80F88B", +"o, c #94F78A", +"p, c #9DF78A", +"q, c #A7F68B", +"r, c #B1F68A", +"s, c #BBF68A", +"t, c #D7F489", +"u, c #E1F489", +"v, c #F5F288", +"w, c #F8E991", +"x, c #F9D7A2", +"y, c #FAD4A6", +"z, c #F9CAB0", +"A, c #FBC4B8", +"B, c #FBBCBE", +"C, c #FBB4C6", +"D, c #FBB0CB", +"E, c #FCA6D4", +"F, c #FC9CDF", +"G, c #FD98E4", +"H, c #FE93E9", +"I, c #FD8FED", +"J, c #FE89F2", +"K, c #FE84F7", +"L, c #FC7BFF", +"M, c #F278FF", +"N, c #DF71FF", +"O, c #A1F7FF", +"P, c #A2F9FF", +"Q, c #A2FBFF", +"R, c #E272F7", +"S, c #DA71F2", +"T, c #D270EF", +"U, c #CA6DEA", +"V, c #C26CE7", +"W, c #B96BE2", +"X, c #B26ADE", +"Y, c #A969DB", +"Z, c #A167D5", +"`, c #9064CE", +" ' c #8863C9", +".' c #8062C5", +"+' c #695EBA", +"@' c #615CB6", +"#' c #5A5BB2", +"$' c #4B58AA", +"%' c #4357A7", +"&' c #1E5894", +"*' c #1E5D94", +"=' c #1D6395", +"-' c #1C7193", +";' c #1B8693", +">' c #1A8A92", +",' c #189E92", +"'' c #17B491", +")' c #14CA91", +"!' c #12E08F", +"~' c #10F68F", +"{' c #1AFE8E", +"]' c #38FD8E", +"^' c #55FB8D", +"/' c #5FFB8C", +"(' c #72FA8B", +"_' c #7CF88B", +":' c #90F78B", +"<' c #99F78A", +"[' c #A3F68A", +"}' c #ACF68A", +"|' c #C0F589", +"1' c #CAF589", +"2' c #DDF489", +"3' c #E7F389", +"4' c #F7F189", +"5' c #FAD2A8", +"6' c #FAC8B2", +"7' c #FAC1B9", +"8' c #FABEBD", +"9' c #FBBBC1", +"0' c #FCA8D2", +"a' c #FDA4D7", +"b' c #FD9FDD", +"c' c #FD9AE2", +"d' c #FE90EB", +"e' c #FE8CF0", +"f' c #FF82FA", +"g' c #F67AFF", +"h' c #9AE3FF", +"i' c #9DEDFF", +"j' c #A0F2FF", +"k' c #A1F5FF", +"l' c #A0F6FF", +"m' c #A2FAFF", +"n' c #A3FCFF", +"o' c #EB73FB", +"p' c #E672F8", +"q' c #DD71F4", +"r' c #D570F1", +"s' c #CD6EEC", +"t' c #C56DE8", +"u' c #BD6CE4", +"v' c #B46AE0", +"w' c #AD69DC", +"x' c #9465D0", +"y' c #8362C7", +"z' c #7C61C3", +"A' c #755FC0", +"B' c #5D5CB3", +"C' c #3655A0", +"D' c #2E549C", +"E' c #265399", +"F' c #1F5695", +"G' c #1D6A93", +"H' c #1D7093", +"I' c #1C7594", +"J' c #1B8992", +"K' c #199793", +"L' c #199D92", +"M' c #17AF91", +"N' c #15C590", +"O' c #12E78F", +"P' c #10F18E", +"Q' c #10FC8F", +"R' c #2BFD8E", +"S' c #34FD8E", +"T' c #48FB8C", +"U' c #95F88B", +"V' c #A9F68A", +"W' c #BCF689", +"X' c #EDF288", +"Y' c #F7F288", +"Z' c #F8EE8B", +"`' c #F9DE9D", +" ) c #FACCAD", +".) c #FAC2B8", +"+) c #FAC0BC", +"@) c #FBB8C2", +"#) c #FD97E5", +"$) c #FE8DEE", +"%) c #FF83F8", +"&) c #FE7FFD", +"*) c #F97AFF", +"=) c #FF0000", +"-) c #CE5673", +";) c #95D1FF", +">) c #D26873", +",) c #A1F9FF", +"') c #A3FBFF", +")) c #A2FCFF", +"!) c #A3FDFF", +"~) c #A3FEFF", +"{) c #A4FFFF", +"]) c #EC72F8", +"^) c #EB73FA", +"/) c #E973F9", +"() c #E172F6", +"_) c #D970F2", +":) c #D06FED", +"<) c #C86EEA", +"[) c #B86AE1", +"}) c #B069DE", +"|) c #9765D1", +"1) c #8663C8", +"2) c #7F62C5", +"3) c #6F5EBD", +"4) c #685EB9", +"5) c #605CB6", +"6) c #595BB2", +"7) c #505AAE", +"8) c #4959AA", +"9) c #1D6494", +"0) c #983842", +"a) c #1A8193", +"b) c #1A9092", +"c) c #17A492", +"d) c #17AB91", +"e) c #12D790", +"f) c #12E28F", +"g) c #1DFE8E", +"h) c #30FD8D", +"i) c #58FB8C", +"j) c #91F88B", +"k) c #9CF78B", +"l) c #B9F58A", +"m) c #D5F389", +"n) c #E0F389", +"o) c #F8E398", +"p) c #F9DC9F", +"q) c #F9D5A5", +"r) c #F9CEAC", +"s) c #FBC4B6", +"t) c #FABDBE", +"u) c #FCA7D4", +"v) c #FE99E2", +"w) c #FF7373", +"x) c #CE5773", +"y) c #CF5A73", +"z) c #CF5B73", +"A) c #CF5C73", +"B) c #B590B3", +"C) c #D16173", +"D) c #D16273", +"E) c #B79AB3", +"F) c #D36973", +"G) c #9EF0FF", +"H) c #A2F8FF", +"I) c #A2FDFF", +"J) c #A3FFFF", +"K) c #A4FFFE", +"L) c #A5FFFD", +"M) c #FFB3B3", +"N) c #EC70F6", +"O) c #EB72F8", +"P) c #EB72F9", +"Q) c #E473F7", +"R) c #DC71F3", +"S) c #D36FF0", +"T) c #CC6EEB", +"U) c #C46CE8", +"V) c #BB6BE3", +"W) c #B36ADF", +"X) c #D92F63", +"Y) c #D52E61", +"Z) c #D22E5F", +"`) c #CE2D5D", +" ! c #AD468F", +".! c #5B5CB3", +"+! c #545AAF", +"@! c #4C59AB", +"#! c #4458A8", +"$! c #3C57A4", +"%! c #265398", +"&! c #1F5395", +"*! c #1E5D95", +"=! c #993542", +"-! c #1C7A93", +";! c #1A8592", +">! c #189892", +",! c #18A292", +"'! c #17A791", +")! c #16B291", +"!! c #15BD91", +"~! c #15C790", +"{! c #13D390", +"]! c #10F48F", +"^! c #10FF8F", +"/! c #2DFE8D", +"(! c #36FD8E", +"_! c #40FC8E", +":! c #49FB8D", +"~ c #EB71F6", +",~ c #EC72F9", +"'~ c #EA73FA", +")~ c #DA71F3", +"!~ c #D26FEE", +"~~ c #C96EEA", +"{~ c #8863CA", +"]~ c #8162C5", +"^~ c #7160BE", +"/~ c #615DB6", +"(~ c #525AAF", +"_~ c #4258A7", +":~ c #3B57A2", +"<~ c #33559F", +"[~ c #2B539B", +"}~ c #3B4982", +"|~ c #3A4E82", +"1~ c #3A5181", +"2~ c #395781", +"3~ c #2C608A", +"4~ c #1A8F92", +"5~ c #17A392", +"6~ c #17A991", +"7~ c #17B391", +"8~ c #15BF91", +"9~ c #14D590", +"0~ c #12E090", +"a~ c #11EA8F", +"b~ c #11FF8F", +"c~ c #2FFD8D", +"d~ c #39FC8E", +"e~ c #4BFB8D", +"f~ c #56FB8C", +"g~ c #68F98C", +"h~ c #73FA8C", +"i~ c #A3F78A", +"j~ c #B7F589", +"k~ c #C1F58A", +"l~ c #CAF48A", +"m~ c #D4F489", +"n~ c #DEF488", +"o~ c #F7ED8D", +"p~ c #F8D9A1", +"q~ c #F9D5A4", +"r~ c #FC9FDC", +"s~ c #98DCFF", +"t~ c #D26773", +"u~ c #D46D73", +"v~ c #A3FFFE", +"w~ c #A6FFF7", +"x~ c #A6FFF6", +"y~ c #A7FFF6", +"z~ c #EC6DEE", +"A~ c #EC6EEF", +"B~ c #EC6EF2", +"C~ c #EC70F3", +"D~ c #EC70F5", +"E~ c #EC71F7", +"F~ c #E572F8", +"G~ c #DA2F63", +"H~ c #A568D8", +"I~ c #8462C8", +"J~ c #6C5EBB", +"K~ c #655DB7", +"L~ c #5D5BB4", +"M~ c #555BB0", +"N~ c #275398", +"O~ c #13D191", +"P~ c #12DC90", +"Q~ c #10F28F", +"R~ c #10FD8F", +"S~ c #17FE8F", +"T~ c #21FE8D", +"U~ c #2BFD8D", +"V~ c #6EFA8C", +"W~ c #8BF88B", +"X~ c #B3F68A", +"Y~ c #CFF589", +"Z~ c #EDF389", +"`~ c #F7EB8E", +" { c #F8E596", +".{ c #FAD4A7", +"+{ c #FAD0AB", +"@{ c #F9CDAE", +"#{ c #FACAB1", +"${ c #FBBCC0", +"%{ c #FBB4C7", +"&{ c #FCAAD0", +"*{ c #D05D73", +"={ c #D46E73", +"-{ c #AFD8DC", +";{ c #D47375", +">{ c #EC3434", +",{ c #F91212", +"'{ c #FE0404", +"){ c #F81414", +"!{ c #E93E3E", +"~{ c #CD8C8B", +"{{ c #A8F3F0", +"]{ c #A6FFFA", +"^{ c #A5FFF9", +"/{ c #A5FFF8", +"({ c #A7FFF5", +"_{ c #A8FFF4", +":{ c #FFDCDC", +"<{ c #FF7575", +"[{ c #FF3434", +"}{ c #FF1212", +"|{ c #FF0404", +"1{ c #FF1414", +"2{ c #FF3E3E", +"3{ c #FF8C8C", +"4{ c #FFF3F3", +"5{ c #FFF1F1", +"6{ c #FF8B8B", +"7{ c #FF4040", +"8{ c #FF1919", +"9{ c #FF0306", +"0{ c #FF0204", +"a{ c #FE0811", +"b{ c #FB142C", +"c{ c #F82754", +"d{ c #F53D86", +"e{ c #EE5FCE", +"f{ c #EC73FA", +"g{ c #8F64CC", +"h{ c #6F5FBD", +"i{ c #605DB5", +"j{ c #4858AA", +"k{ c #9A2943", +"l{ c #983D42", +"m{ c #2C8187", +"n{ c #974142", +"o{ c #DD1616", +"p{ c #F90404", +"q{ c #F20908", +"r{ c #BF2E29", +"s{ c #517F6D", +"t{ c #16B691", +"u{ c #3CA978", +"v{ c #A94E34", +"w{ c #E7170F", +"x{ c #FB0402", +"y{ c #EC140B", +"z{ c #B64F2C", +"A{ c #4DC870", +"B{ c #27FD8D", +"C{ c #8BB967", +"D{ c #B97642", +"E{ c #D64929", +"F{ c #EB2716", +"G{ c #F80F08", +"H{ c #FD0402", +"I{ c #F8140B", +"J{ c #ED381F", +"K{ c #DE7542", +"L{ c #C9D778", +"M{ c #CCF58A", +"N{ c #DFF388", +"O{ c #EAF389", +"P{ c #F8DE89", +"Q{ c #FC6F47", +"R{ c #FE2116", +"S{ c #FF0604", +"T{ c #FF100C", +"U{ c #FD3D2E", +"V{ c #FB9675", +"W{ c #FD5754", +"X{ c #FD8CBB", +"Y{ c #D56F73", +"Z{ c #A2FAFE", +"`{ c #D17E7F", +" ] c #FE0202", +".] c #F61A19", +"+] c #BAC5C0", +"@] c #A8FFF3", +"#] c #A8FFF2", +"$] c #FFFEFE", +"%] c #FF7F7F", +"&] c #FF0202", +"*] c #FF1A1A", +"=] c #FFC5C5", +"-] c #FFDEDE", +";] c #FF1E1E", +">] c #F82A5B", +",] c #EC71F5", +"'] c #EC72F7", +")] c #9B66D3", +"!] c #9265CF", +"~] c #8A64CA", +"{] c #7A60C3", +"]] c #5B5BB3", +"^] c #545BB0", +"/] c #4457A8", +"(] c #9A2543", +"_] c #1F5895", +":] c #AD2E35", +"<] c #E11113", +"[] c #FE0101", +"}] c #70675A", +"|] c #5A7E68", +"1] c #F90504", +"2] c #FA0503", +"3] c #5CB565", +"4] c #2DFE8E", +"5] c #40FC8D", +"6] c #4AFB8D", +"7] c #DA361E", +"8] c #FD0704", +"9] c #D59F5A", +"0] c #C9F489", +"a] c #F9DA7C", +"b] c #FE2516", +"c] c #FC7B5E", +"d] c #FD5952", +"e] c #FBB2C7", +"f] c #FE5766", +"g] c #FF0102", +"h] c #D06073", +"i] c #D57073", +"j] c #D77070", +"k] c #FB0C0C", +"l] c #B6D3CC", +"m] c #A9FFF1", +"n] c #A9FFF0", +"o] c #A9FFEF", +"p] c #FF7070", +"q] c #FF0C0C", +"r] c #FFD3D3", +"s] c #FF5151", +"t] c #F8295A", +"u] c #EB70F5", +"v] c #9E67D4", +"w] c #9565D0", +"x] c #7E61C4", +"y] c #7560C0", +"z] c #5E5CB4", +"A] c #575AB0", +"B] c #4F59AC", +"C] c #9E2545", +"D] c #215295", +"E] c #1E5A94", +"F] c #FE0001", +"G] c #F60606", +"H] c #F10A09", +"I] c #E7190F", +"J] c #1BFA8B", +"K] c #1FFF8E", +"L] c #29FE8D", +"M] c #D7361E", +"N] c #FD0603", +"O] c #C6CE73", +"P] c #D8F488", +"Q] c #E2F287", +"R] c #FA3B21", +"S] c #FF0302", +"T] c #FD5B50", +"U] c #FBC3B7", +"V] c #FD5155", +"W] c #A6C0DF", +"X] c #A6C1DF", +"Y] c #D75A65", +"Z] c #A8C7DF", +"`] c #A8C8DF", +" ^ c #A8C9DF", +".^ c #A8CADF", +"+^ c #A9CCDF", +"@^ c #D95F65", +"#^ c #AAD2DF", +"$^ c #ABD3DF", +"%^ c #ABD4DF", +"&^ c #ACD5DF", +"*^ c #D57273", +"=^ c #B8C7C7", +"-^ c #DB6765", +";^ c #BAC3BE", +">^ c #B3DAD5", +",^ c #C0B5AF", +"'^ c #EE312F", +")^ c #EA3C39", +"!^ c #A7FFF2", +"~^ c #A8FFF1", +"{^ c #A9FFEE", +"]^ c #A9FFED", +"^^ c #FFDFDF", +"/^ c #FF6565", +"(^ c #FFC7C7", +"_^ c #FF6767", +":^ c #FFC3C3", +"<^ c #FFDADA", +"[^ c #FFB5B5", +"}^ c #FF3131", +"|^ c #FF3C3C", +"1^ c #FF0F0F", +"2^ c #FF7C7C", +"3^ c #F055BA", +"4^ c #EF5BC6", +"5^ c #F154B9", +"6^ c #F34598", +"7^ c #F72E64", +"8^ c #FC1125", +"9^ c #EC6EF1", +"0^ c #EE62D5", +"a^ c #EE62D7", +"b^ c #F02D60", +"c^ c #D861D1", +"d^ c #D160CD", +"e^ c #CA5FC9", +"f^ c #C35EC6", +"g^ c #B169DE", +"h^ c #A067D6", +"i^ c #9065CD", +"j^ c #7960C1", +"k^ c #625DB6", +"l^ c #A32648", +"m^ c #2B549B", +"n^ c #D3171C", +"o^ c #555D6F", +"p^ c #416A7A", +"q^ c #B8292E", +"r^ c #D2201D", +"s^ c #4F7F6F", +"t^ c #3F9378", +"u^ c #BB372A", +"v^ c #53B267", +"w^ c #1BFF8E", +"x^ c #25FE8D", +"y^ c #2EFE8E", +"z^ c #C14E2C", +"A^ c #B36538", +"B^ c #8E9F59", +"C^ c #7BC46D", +"D^ c #77D577", +"E^ c #7ED879", +"F^ c #92C26D", +"G^ c #BC7F47", +"H^ c #FC0704", +"I^ c #DE6338", +"J^ c #E1A85E", +"K^ c #FE2B19", +"L^ c #FAAD6A", +"M^ c #F9C17C", +"N^ c #FB7850", +"O^ c #FC5D4E", +"P^ c #FB9791", +"Q^ c #D16373", +"R^ c #D67373", +"S^ c #DE5D5C", +"T^ c #DD5F5D", +"U^ c #B1E2D8", +"V^ c #B8D2C6", +"W^ c #AAFFED", +"X^ c #AAFFEC", +"Y^ c #AAFFEB", +"Z^ c #FF5D5D", +"`^ c #FF5F5F", +" / c #FFE2E2", +"./ c #FFD2D2", +"+/ c #FF0707", +"@/ c #FFE6E6", +"#/ c #ED66E2", +"$/ c #EE68E3", +"%/ c #EE69E5", +"&/ c #ED69E6", +"*/ c #EC6AE9", +"=/ c #ED6CEB", +"-/ c #EE66DF", +";/ c #ED6DEE", +">/ c #EC6EF0", +",/ c #F33470", +"'/ c #D670F0", +")/ c #BD6BE4", +"!/ c #A468D8", +"~/ c #7460BF", +"{/ c #6D5EBB", +"]/ c #A8274A", +"^/ c #F90304", +"// c #356384", +"(/ c #446878", +"_/ c #318B83", +":/ c #3B937A", +"( c #ED6BEB", +",( c #F63370", +"'( c #E472F8", +")( c #DB71F4", +"!( c #D46FEF", +"~( c #C36DE7", +"{( c #AB68DB", +"]( c #A267D7", +"^( c #9264CF", +"/( c #8262C7", +"(( c #7A61C2", +"_( c #B2294F", +":( c #4C58AB", +"<( c #A1273F", +"[( c #1C6B94", +"}( c #1E7092", +"|( c #9F393E", +"1( c #198F92", +"2( c #955A41", +"3( c #12DE90", +"4( c #12E98F", +"5( c #17EC8B", +"6( c #B74C2A", +"7( c #EC683B", +"8( c #F7E788", +"9( c #FC6447", +"0( c #FAD6A4", +"a( c #FF0403", +"b( c #D26673", +"c( c #D36B73", +"d( c #D77370", +"e( c #D9736A", +"f( c #ABFFE9", +"g( c #ADFFE7", +"h( c #ACFFE6", +"i( c #ADFFE6", +"j( c #FFC2C2", +"k( c #FF4949", +"l( c #FD0F21", +"m( c #EE65DE", +"n( c #ED6BEA", +"o( c #ED6CEC", +"p( c #F6336E", +"q( c #EC71F6", +"r( c #E773FA", +"s( c #DF72F5", +"t( c #C66DE9", +"u( c #B66AE0", +"v( c #9E66D4", +"w( c #B62951", +"x( c #565BB1", +"y( c #3F57A5", +"z( c #9A2743", +"A( c #1F5B94", +"B( c #983B42", +"C( c #199192", +"D( c #965341", +"E( c #14CF90", +"F( c #13DA90", +"G( c #8D6E45", +"H( c #81F98B", +"I( c #FC0804", +"J( c #E6683B", +"K( c #CEF48A", +"L( c #D7F389", +"M( c #E2F388", +"N( c #F5EB84", +"O( c #FC6645", +"P( c #F8DF9C", +"Q( c #D46C73", +"R( c #A4FFFB", +"S( c #D7736F", +"T( c #A7FFF4", +"U( c #D77770", +"V( c #B4DFD1", +"W( c #B5DFD1", +"X( c #B5DFCF", +"Y( c #B6DFCE", +"Z( c #B5DFCE", +"`( c #B6DFCC", +" _ c #B2EED9", +"._ c #AEFFE5", +"+_ c #AEFFE4", +"@_ c #FF7777", +"#_ c #FFEEEE", +"$_ c #FFF7F7", +"%_ c #FFCDCD", +"&_ c #F4418E", +"*_ c #F6336F", +"=_ c #FC142D", +"-_ c #F44290", +";_ c #F6326D", +">_ c #EC73F9", +",_ c #EA73FB", +"'_ c #E272F6", +")_ c #DA70F3", +"!_ c #C26CE6", +"~_ c #BA6BE2", +"{_ c #B16ADE", +"]_ c #A969D9", +"^_ c #9965D2", +"/_ c #9164CD", +"(_ c #BC2A54", +"__ c #4A58AA", +":_ c #9C2544", +"<_ c #1F5894", +"[_ c #1B8592", +"}_ c #1A8F93", +"|_ c #964C41", +"1_ c #E01C13", +"2_ c #EF1109", +"3_ c #749C57", +"4_ c #4AD376", +"5_ c #48DD7C", +"6_ c #51DD7B", +"7_ c #B76036", +"8_ c #F21E11", +"9_ c #E94A2A", +"0_ c #DEF389", +"a_ c #EBCB72", +"b_ c #FC6842", +"c_ c #FE1B14", +"d_ c #D26973", +"e_ c #FD0404", +"f_ c #D6676D", +"g_ c #D86D6D", +"h_ c #D7736E", +"i_ c #A7FFF3", +"j_ c #DF5D58", +"k_ c #F12926", +"l_ c #ADF7E6", +"m_ c #ABFFEC", +"n_ c #AFF5DF", +"o_ c #CD9C8D", +"p_ c #ADFFE5", +"q_ c #ADFFE4", +"r_ c #AEFFE3", +"s_ c #AEFFE2", +"t_ c #AEFFE1", +"u_ c #FF6D6D", +"v_ c #FF2929", +"w_ c #FFF5F5", +"x_ c #FF9C9C", +"y_ c #FFE4E4", +"z_ c #EE60D4", +"A_ c #EE61D6", +"B_ c #F05CCC", +"C_ c #F7326D", +"D_ c #ED68E3", +"E_ c #ED68E5", +"F_ c #ED6AE7", +"G_ c #F72F67", +"H_ c #ED6FF1", +"I_ c #EC6FF4", +"J_ c #EB73F8", +"K_ c #EB74FB", +"L_ c #E673F8", +"M_ c #D56FF0", +"N_ c #C56DE7", +"O_ c #BC6BE4", +"P_ c #B46ADF", +"Q_ c #AC69DB", +"R_ c #A468D7", +"S_ c #C02B57", +"T_ c #6D5EBC", +"U_ c #645DB7", +"V_ c #A12647", +"W_ c #993443", +"X_ c #964941", +"Y_ c #16AF91", +"Z_ c #FA0403", +"`_ c #9D643B", +" : c #0FFD8E", +".: c #2DFA8C", +"+: c #DA2F1A", +"@: c #6FF98C", +"#: c #79F98B", +"$: c #D5542F", +"%: c #FB0B06", +"&: c #B9E37F", +"*: c #EE7240", +"=: c #FB6A40", +"-: c #F8E893", +";: c #F8E19A", +">: c #FD5139", +",: c #A5CEE6", +"': c #9FEEFF", +"): c #F61718", +"!: c #F32021", +"~: c #B6BDC4", +"{: c #ADD8DF", +"]: c #ADD9DF", +"^: c #A9E4EA", +"/: c #F61818", +"(: c #F32121", +"_: c #B9C4C2", +":: c #AFDFDC", +"<: c #B0DFDB", +"[: c #ADEAE5", +"}: c #A7FFF7", +"|: c #D8736E", +"1: c #BCC6BA", +"2: c #EF312D", +"3: c #C9A597", +"4: c #B9D5C3", +"5: c #B8D9C5", +"6: c #BFC6B4", +"7: c #CD9A8C", +"8: c #E25850", +"9: c #FA0E0D", +"0: c #ADFFE3", +"a: c #AFFFE1", +"b: c #AFFFE0", +"c: c #FF1818", +"d: c #FF2121", +"e: c #FFC4C4", +"f: c #FFEAEA", +"g: c #FFC6C6", +"h: c #FFA5A5", +"i: c #FFD5D5", +"j: c #FFD9D9", +"k: c #FF9A9A", +"l: c #FF5858", +"m: c #FF0E0E", +"n: c #FF8484", +"o: c #F152B6", +"p: c #F24CA8", +"q: c #F82857", +"r: c #F63779", +"s: c #EE67E0", +"t: c #ED68E4", +"u: c #FD0A16", +"v: c #FD0E1F", +"w: c #F055B8", +"x: c #EE61D3", +"y: c #EE61D5", +"z: c #E873FA", +"A: c #E072F6", +"B: c #D970F1", +"C: c #D16EED", +"D: c #C86DE9", +"E: c #C52C59", +"F: c #A62749", +"G: c #993143", +"H: c #974542", +"I: c #E7130F", +"J: c #E9150E", +"K: c #5DA161", +"L: c #33D57A", +"M: c #4FBD6B", +"N: c #C14627", +"O: c #62FA8C", +"P: c #6BFA8C", +"Q: c #9FAD61", +"R: c #EB361E", +"S: c #C3B968", +"T: c #C3CF74", +"U: c #DF834A", +"V: c #FE0302", +"W: c #FC6C3E", +"X: c #F7ED8E", +"Y: c #FAAF76", +"Z: c #EB2E33", +"`: c #E14C50", +" < c #E15253", +".< c #E25050", +"+< c #E25351", +"@< c #A6FFF5", +"#< c #D8736C", +"$< c #A8FFF0", +"%< c #AAFFEE", +"&< c #DA7068", +"*< c #AFFFDF", +"=< c #B0FFDE", +"-< c #FF5050", +";< c #FF5353", +">< c #FF0103", +",< c #F155BA", +"'< c #ED66E0", +")< c #F92148", +"!< c #F9244F", +"~< c #EC71F8", +"{< c #E372F8", +"]< c #DC71F4", +"^< c #D370EF", +"/< c #CB6EEC", +"(< c #C36CE7", +"_< c #BA6CE3", +":< c #CA2D5B", +"<< c #7360BF", +"[< c #AB284C", +"}< c #3C56A3", +"|< c #3455A0", +"1< c #255298", +"2< c #992E43", +"3< c #974242", +"4< c #9D473E", +"5< c #EE130B", +"6< c #4AFC8D", +"7< c #68F98A", +"8< c #DC3D22", +"9< c #FD0804", +"0< c #F86D3D", +"a< c #F8EB90", +"b< c #FC6442", +"c< c #EB2F33", +"d< c #D36D73", +"e< c #B6BEC5", +"f< c #B9C5C3", +"g< c #E25350", +"h< c #D8736B", +"i< c #ABFEE9", +"j< c #D48479", +"k< c #F61C19", +"l< c #B0FFE0", +"m< c #B0FFDF", +"n< c #B1FFDE", +"o< c #B1FFDC", +"p< c #FF1C1C", +"q< c #FF0203", +"r< c #F53B82", +"s< c #EE63D9", +"t< c #EE64DC", +"u< c #F150AE", +"v< c #F9234E", +"w< c #CF6EEC", +"x< c #C66DE8", +"y< c #CF2E5E", +"z< c #8E63CC", +"A< c #B0284E", +"B< c #9A2B43", +"C< c #1C6F94", +"D< c #1C7393", +"E< c #973F42", +"F< c #279588", +"G< c #D91B18", +"H< c #C23D24", +"I< c #976D3E", +"J< c #59FA8D", +"K< c #72E27F", +"L< c #E92615", +"M< c #FD0503", +"N< c #CBA35B", +"O< c #F1713F", +"P< c #ECF388", +"Q< c #F5F289", +"R< c #F7F08B", +"S< c #F8E790", +"T< c #FB774D", +"U< c #FF0402", +"V< c #EC2F33", +"W< c #B6C2C7", +"X< c #E14F51", +"Y< c #F61919", +"Z< c #E15353", +"`< c #BAC7C2", +" [ c #E3514F", +".[ c #F61918", +"+[ c #E3534F", +"@[ c #ADFFE8", +"#[ c #B6E2CD", +"$[ c #D67E72", +"%[ c #EC3C36", +"&[ c #F81513", +"*[ c #FD0504", +"=[ c #FC0807", +"-[ c #EA433B", +";[ c #D97A6C", +">[ c #C2C1AA", +",[ c #AFFEDF", +"'[ c #B1FFDD", +")[ c #B1FFDB", +"![ c #FF7E7E", +"~[ c #FF0808", +"{[ c #FF4343", +"][ c #FF7A7A", +"^[ c #FFC1C1", +"/[ c #FFCACA", +"([ c #FF5757", +"_[ c #FF2E2E", +":[ c #FF1111", +"<[ c #FE0710", +"[[ c #FB152E", +"}[ c #F72C62", +"|[ c #F052B6", +"1[ c #EE62D9", +"2[ c #EE64DB", +"3[ c #EE65DD", +"4[ c #ED65DF", +"5[ c #F150B0", +"6[ c #F9234D", +"7[ c #EB72FA", +"8[ c #E271F6", +"9[ c #C96EEB", +"0[ c #D42E61", +"a[ c #9866D2", +"b[ c #8062C6", +"c[ c #B52950", +"d[ c #4358A6", +"e[ c #9A2843", +"f[ c #1D6C93", +"g[ c #983C42", +"h[ c #24978B", +"i[ c #914D45", +"j[ c #DD1815", +"k[ c #F30A07", +"l[ c #D2271C", +"m[ c #876D49", +"n[ c #19D98B", +"o[ c #946A40", +"p[ c #4CFC8D", +"q[ c #67EF86", +"r[ c #B77843", +"s[ c #EB2314", +"t[ c #F71109", +"u[ c #DC4D2C", +"v[ c #AEC66E", +"w[ c #ACDF7D", +"x[ c #E7854B", +"y[ c #F8F18A", +"z[ c #F9CC82", +"A[ c #A1F4FF", +"B[ c #A3FAFF", +"C[ c #AFFFE2", +"D[ c #B0FFDD", +"E[ c #B2FFDC", +"F[ c #B2FFDA", +"G[ c #B2FFD9", +"H[ c #F05BC8", +"I[ c #F05BCA", +"J[ c #F05CCB", +"K[ c #EF5DCD", +"L[ c #EF5ECF", +"M[ c #EF5FD1", +"N[ c #EF60D3", +"O[ c #EF60D4", +"P[ c #EE62D6", +"Q[ c #EE62D8", +"R[ c #EE63DA", +"S[ c #ED67E2", +"T[ c #ED67E3", +"U[ c #ED69E5", +"V[ c #ED69E7", +"W[ c #ED6EF0", +"X[ c #EC74FB", +"Y[ c #8B63CB", +"Z[ c #2E549D", +"`[ c #1F5694", +" } c #1F5C94", +".} c #1A8E92", +"+} c #189792", +"@} c #15BA90", +"#} c #14C691", +"$} c #13D090", +"%} c #13DC90", +"&} c #11E78F", +"*} c #11F28F", +"=} c #5CFB8C", +"-} c #83F98B", +";} c #C38E4F", +">} c #D4BC6A", +",} c #ABFFE8", +"'} c #B2FFDB", +")} c #B3FFDA", +"!} c #B3FFD9", +"~} c #B3FFD8", +"{} c #EF59C5", +"]} c #F05AC7", +"^} c #EF5BC9", +"/} c #EF5CCB", +"(} c #EF5ED0", +"_} c #EF5FD2", +":} c #EE60D3", +"<} c #EF61D6", +"[} c #EE63DB", +"}} c #EE64DD", +"|} c #EE67E3", +"1} c #EC6AE7", +"2} c #ED6BEC", +"3} c #ED6CED", +"4} c #EC6DF0", +"5} c #EB71F4", +"6} c #D870F2", +"7} c #D16FEE", +"8} c #C06CE5", +"9} c #AF6ADD", +"0} c #A768D9", +"a} c #8762C9", +"b} c #7E61C5", +"c} c #4157A5", +"d} c #31549E", +"e} c #1E6495", +"f} c #1A8692", +"g} c #15C190", +"h} c #14CC91", +"i} c #11EE8F", +"j} c #A27843", +"k} c #AB713F", +"l} c #77C16C", +"m} c #5DF488", +"n} c #6BF98B", +"o} c #7EE982", +"p} c #B58F50", +"q} c #FB0804", +"r} c #F22917", +"s} c #B8F588", +"t} c #CDF589", +"u} c #EAF289", +"v} c #ACFFE5", +"w} c #B0FFE1", +"x} c #B4FFD7", +"y} c #B5FFD6", +"z} c #F058C3", +"A} c #F059C5", +"B} c #F059C7", +"C} c #EF5BC8", +"D} c #EF5BCA", +"E} c #EF5CCC", +"F} c #EF5DCE", +"G} c #EE61D4", +"H} c #EF62D7", +"I} c #EE64DA", +"J} c #EE68E4", +"K} c #EC6AE8", +"L} c #EC6DEF", +"M} c #E472F7", +"N} c #DC70F3", +"O} c #B26ADF", +"P} c #AA68DB", +"Q} c #A268D6", +"R} c #9A66D3", +"S} c #6B5FBA", +"T} c #1D7094", +"U} c #1B7593", +"V} c #16BD90", +"W} c #14C890", +"X} c #14D390", +"Y} c #11E990", +"Z} c #AD6237", +"`} c #FD0302", +" | c #F1150C", +".| c #F2140B", +"+| c #B6C16C", +"@| c #DCF388", +"#| c #E6F389", +"$| c #AFFFE3", +"%| c #B3FFD7", +"&| c #B4FFD6", +"*| c #B5FFD5", +"=| c #F056C0", +"-| c #F057C2", +";| c #F059C4", +">| c #EF59C6", +",| c #EF5DCC", +"'| c #EF5DCF", +")| c #EF5FD0", +"!| c #EF62D8", +"~| c #EE67E1", +"{| c #ED6BE8", +"]| c #ED6EEF", +"^| c #DE71F5", +"/| c #CE6FEC", +"(| c #C66EE9", +"_| c #BE6BE5", +":| c #9D66D4", +"<| c #9566D0", +"[| c #565BB0", +"}| c #4758A8", +"|| c #3756A1", +"1| c #189C93", +"2| c #18A691", +"3| c #17AD91", +"4| c #16B991", +"5| c #12DA90", +"6| c #12E58F", +"7| c #10F08F", +"8| c #0FFB8E", +"9| c #16FF8E", +"0| c #A86337", +"a| c #ED2414", +"b| c #A5C06B", +"c| c #BBF589", +"d| c #CEF589", +"e| c #E2F389", +"f| c #B4FFD5", +"g| c #B5FFD4", +"h| c #F056BD", +"i| c #F158C1", +"j| c #F059C3", +"k| c #EF5AC7", +"l| c #EF60D2", +"m| c #EE61D7", +"n| c #EE65DC", +"o| c #ED65DE", +"p| c #EE66E0", +"q| c #EE68E2", +"r| c #EC6BEB", +"s| c #ED6DED", +"t| c #DA70F2", +"u| c #CA6EEA", +"v| c #C26DE6", +"w| c #B96CE2", +"x| c #A869DA", +"y| c #A067D5", +"z| c #9866D1", +"A| c #9065CE", +"B| c #7961C2", +"C| c #4A59AA", +"D| c #4257A7", +"E| c #33559E", +"F| c #2B549A", +"G| c #16B392", +"H| c #15BF90", +"I| c #15CB90", +"J| c #13D590", +"K| c #10F78F", +"L| c #3BD275", +"M| c #907C45", +"N| c #C54426", +"O| c #E71D10", +"P| c #F90804", +"Q| c #F40F08", +"R| c #E42817", +"S| c #C65A32", +"T| c #9AA75E", +"U| c #76F389", +"V| c #9AF88B", +"W| c #AEF78A", +"X| c #CBF589", +"Y| c #A9FFF2", +"Z| c #AAFFEF", +"`| c #B6FFD3", +" 1 c #B6FFD2", +".1 c #F154BC", +"+1 c #F155BD", +"@1 c #F056BF", +"#1 c #F057C0", +"$1 c #F058C2", +"%1 c #EF59C4", +"&1 c #F059C6", +"*1 c #F05BC9", +"=1 c #EE5FD1", +"-1 c #EF61D4", +";1 c #EE68E5", +">1 c #EC6CEB", +",1 c #EC6CEC", +"'1 c #CD6EEB", +")1 c #BC6CE4", +"!1 c #7B60C3", +"~1 c #745FC0", +"{1 c #5D5BB3", +"]1 c #555AAF", +"^1 c #3555A1", +"/1 c #275298", +"(1 c #14C690", +"_1 c #14D190", +":1 c #12DC8F", +"<1 c #11E790", +"[1 c #10FE8E", +"}1 c #35FD8D", +"|1 c #A0F68A", +"11 c #B3F58A", +"21 c #BDF589", +"31 c #B5FFD3", +"41 c #B7FFD1", +"51 c #F153B9", +"61 c #F154BA", +"71 c #F054BC", +"81 c #F056BE", +"91 c #F057C1", +"01 c #F058C4", +"a1 c #EF5CCA", +"b1 c #ED68E2", +"c1 c #D06EEE", +"d1 c #C86EE9", +"e1 c #B06ADD", +"f1 c #A769D9", +"g1 c #585BB2", +"h1 c #5059AD", +"i1 c #4158A6", +"j1 c #1E5595", +"k1 c #10F98F", +"l1 c #14FF8E", +"m1 c #1EFE8E", +"n1 c #27FD8E", +"o1 c #31FD8D", +"p1 c #4EFB8D", +"q1 c #75FA8C", +"r1 c #7EF88C", +"s1 c #89F88B", +"t1 c #92F88A", +"u1 c #B9F689", +"v1 c #B4FFD8", +"w1 c #B6FFD5", +"x1 c #B7FFD3", +"y1 c #B7FFD2", +"z1 c #B7FFD0", +"A1 c #B8FFD0", +"B1 c #B8FFCF", +"C1 c #F152B8", +"D1 c #F055BC", +"E1 c #F055BD", +"F1 c #F157C1", +"G1 c #F05AC6", +"H1 c #EF5AC8", +"I1 c #EE5FD3", +"J1 c #EF60D5", +"K1 c #EF61D7", +"L1 c #EF62D9", +"M1 c #ED66DE", +"N1 c #EE67E2", +"O1 c #EB71F8", +"P1 c #EB73F9", +"Q1 c #EC73FB", +"R1 c #C36DE6", +"S1 c #9A66D2", +"T1 c #8A64CB", +"U1 c #6A5EBB", +"V1 c #4B59AB", +"W1 c #1E6295", +"X1 c #1D6B93", +"Y1 c #14C891", +"Z1 c #12DE8F", +"`1 c #2DFD8D", +" 2 c #37FD8E", +".2 c #4AFC8C", +"+2 c #54FB8C", +"@2 c #5EFB8C", +"#2 c #71F98B", +"$2 c #84F88C", +"%2 c #98F88B", +"&2 c #A2F78A", +"*2 c #B8FFCE", +"=2 c #B9FFCD", +"-2 c #F150B3", +";2 c #F153B7", +">2 c #F053B9", +",2 c #F154BB", +"'2 c #F055BF", +")2 c #F157C0", +"!2 c #EF5CCD", +"~2 c #EF5ED1", +"{2 c #EE63D8", +"]2 c #D76FF1", +"^2 c #B56BE0", +"/2 c #30559D", +"(2 c #205195", +"_2 c #1D5F95", +":2 c #1A8293", +"<2 c #198C93", +"[2 c #199C92", +"}2 c #15B891", +"|2 c #14C390", +"12 c #13CF90", +"22 c #13DA8F", +"32 c #11F08F", +"42 c #29FE8E", +"52 c #3DFD8D", +"62 c #50FB8D", +"72 c #5AFA8C", +"82 c #6EF98C", +"92 c #77FA8B", +"02 c #94F78B", +"a2 c #BAFFCE", +"b2 c #BAFFCC", +"c2 c #F14FB1", +"d2 c #F251B5", +"e2 c #F153B8", +"f2 c #EF5AC6", +"g2 c #EF61D5", +"h2 c #EE61D8", +"i2 c #ED68E6", +"j2 c #EC6DED", +"k2 c #EB72F7", +"l2 c #D16FEF", +"m2 c #B96CE1", +"n2 c #B06ADE", +"o2 c #9165CD", +"p2 c #715FBD", +"q2 c #1C6D93", +"r2 c #1C7794", +"s2 c #13D58F", +"t2 c #12E190", +"u2 c #12FF8F", +"v2 c #25FD8E", +"w2 c #39FD8D", +"x2 c #60FA8C", +"y2 c #73F98C", +"z2 c #7DF88B", +"A2 c #B6FFD4", +"B2 c #B6FFD1", +"C2 c #B9FFCF", +"D2 c #BAFFCD", +"E2 c #BBFFCC", +"F2 c #F24EAF", +"G2 c #F14FB0", +"H2 c #F150B2", +"I2 c #F151B3", +"J2 c #F152B5", +"K2 c #F152B7", +"L2 c #F054B9", +"M2 c #F156BF", +"N2 c #EF5ECD", +"O2 c #EE60D5", +"P2 c #ED67E4", +"Q2 c #D570EF", +"R2 c #AB69DC", +"S2 c #5C5BB3", +"T2 c #555BAF", +"U2 c #4D5AAC", +"V2 c #4657A8", +"W2 c #3655A1", +"X2 c #265298", +"Y2 c #1A8892", +"Z2 c #16B091", +"`2 c #15C691", +" 3 c #13D190", +".3 c #17FF8F", +"+3 c #52FC8D", +"@3 c #6FF98B", +"#3 c #79F98C", +"$3 c #ABFFED", +"%3 c #B8FFD1", +"&3 c #BBFFCB", +"*3 c #BBFFCA", +"=3 c #F24DAC", +"-3 c #F14EAE", +";3 c #F14EAF", +">3 c #F151B5", +",3 c #F155BC", +"'3 c #F05AC5", +")3 c #EF5BCB", +"!3 c #EE66DE", +"~3 c #EE66E1", +"{3 c #B76AE1", +"]3 c #AF69DD", +"^3 c #9F67D4", +"/3 c #8E64CD", +"(3 c #8663C9", +"_3 c #6F5FBC", +":3 c #675EB9", +"<3 c #505AAD", +"[3 c #4057A6", +"}3 c #1D6993", +"|3 c #1D6E94", +"13 c #1B7D94", +"23 c #15B692", +"33 c #13D88F", +"43 c #10EE8F", +"53 c #27FE8D", +"63 c #31FD8E", +"73 c #3BFC8E", +"83 c #4EFC8D", +"93 c #58FB8D", +"03 c #6BFA8B", +"a3 c #75F98B", +"b3 c #B9FFCC", +"c3 c #BAFFCB", +"d3 c #BCFFC9", +"e3 c #F24CA9", +"f3 c #F24CAB", +"g3 c #F24EAD", +"h3 c #F153BA", +"i3 c #F055BE", +"j3 c #F058C1", +"k3 c #EF5ECE", +"l3 c #EE60D1", +"m3 c #ED6AE9", +"n3 c #E372F7", +"o3 c #DB71F3", +"p3 c #BB6CE2", +"q3 c #B369DF", +"r3 c #AA68DA", +"s3 c #9265CE", +"t3 c #8964CA", +"u3 c #7260BE", +"v3 c #635DB6", +"w3 c #3C56A4", +"x3 c #2C539C", +"y3 c #1C7694", +"z3 c #1C7B94", +"A3 c #17A292", +"B3 c #17A891", +"C3 c #10F58F", +"D3 c #1AFE8F", +"E3 c #2DFD8E", +"F3 c #37FD8D", +"G3 c #5EFA8C", +"H3 c #B9FFCE", +"I3 c #BBFFC9", +"J3 c #BDFFC8", +"K3 c #F24AA7", +"L3 c #F34BA9", +"M3 c #F34DAA", +"N3 c #F24FB0", +"O3 c #F24FB2", +"P3 c #F250B3", +"Q3 c #F054BA", +"R3 c #ED66E1", +"S3 c #ED6AE6", +"T3 c #ED6CEA", +"U3 c #E672F9", +"V3 c #DF71F4", +"W3 c #CE6EEC", +"X3 c #B66BE0", +"Y3 c #AE69DC", +"Z3 c #8D64CB", +"`3 c #8562C7", +" 4 c #4E59AD", +".4 c #1C7E94", +"+4 c #199293", +"@4 c #18A091", +"#4 c #15C490", +"$4 c #12E590", +"%4 c #10FB8F", +"&4 c #3CFD8E", +"*4 c #50FC8C", +"=4 c #B2FFD8", +"-4 c #BAFFCA", +";4 c #BCFFC8", +">4 c #BDFFC7", +",4 c #BEFFC7", +"'4 c #F349A4", +")4 c #F24AA6", +"!4 c #F24BA8", +"~4 c #F24BAA", +"{4 c #F24DAD", +"]4 c #F14FAF", +"^4 c #F24FB1", +"/4 c #F156BD", +"(4 c #F05AC9", +"_4 c #EF63D9", +":4 c #EC6BEA", +"<4 c #D971F2", +"[4 c #A167D6", +"}4 c #9865D2", +"|4 c #7860C2", +"14 c #245296", +"24 c #1E5994", +"34 c #16B491", +"44 c #14CB90", +"54 c #11EC8F", +"64 c #2FFD8E", +"74 c #BCFFCA", +"84 c #BEFFC6", +"94 c #F348A2", +"04 c #F24AA5", +"a4 c #F24BA7", +"b4 c #F24BA9", +"c4 c #F24DAB", +"d4 c #F251B4", +"e4 c #EE66DD", +"f4 c #ED6CEE", +"g4 c #D570F0", +"h4 c #CC6EEC", +"i4 c #A367D8", +"j4 c #8B64CB", +"k4 c #4557A8", +"l4 c #1F5C95", +"m4 c #18A791", +"n4 c #17B091", +"o4 c #16BB91", +"p4 c #11F28E", +"q4 c #BFFFC5", +"r4 c #F3469F", +"s4 c #F248A1", +"t4 c #F349A3", +"u4 c #F24CAA", +"v4 c #F24DAE", +"w4 c #F24FAF", +"x4 c #F150B1", +"y4 c #ED66DF", +"z4 c #ED69E8", +"A4 c #EC72FA", +"B4 c #E072F5", +"C4 c #9F66D5", +"D4 c #8763C8", +"E4 c #7F61C4", +"F4 c #7760C0", +"G4 c #4859AA", +"H4 c #16B791", +"I4 c #12D890", +"J4 c #0FFA8F", +"K4 c #13FE8F", +"L4 c #BCFFCB", +"M4 c #BFFFC6", +"N4 c #C0FFC4", +"O4 c #F3459D", +"P4 c #F3479E", +"Q4 c #F347A1", +"R4 c #F248A2", +"S4 c #F24EAE", +"T4 c #F053B8", +"U4 c #EE5FD2", +"V4 c #D36FEF", +"W4 c #9A65D3", +"X4 c #9165CE", +"Y4 c #8A63CA", +"Z4 c #8162C7", +"`4 c #7960C3", +" 5 c #535AAE", +".5 c #3C57A3", +"+5 c #1C7B93", +"@5 c #1A8093", +"#5 c #15C891", +"$5 c #12EA90", +"%5 c #10FF8E", +"&5 c #C0FFC5", +"*5 c #C1FFC3", +"=5 c #F3449A", +"-5 c #F4459C", +";5 c #F3469E", +">5 c #F346A0", +",5 c #F249A3", +"'5 c #F249A5", +")5 c #F34AA6", +"!5 c #F250B2", +"~5 c #EE65DF", +"{5 c #ED6DEF", +"]5 c #B56AE0", +"^5 c #9565CF", +"/5 c #8463C8", +"(5 c #1D6094", +"_5 c #17A092", +":5 c #15B991", +"<5 c #15C390", +"[5 c #14CF91", +"}5 c #12E690", +"|5 c #C0FFC3", +"15 c #C1FFC4", +"25 c #C2FFC3", +"35 c #F34297", +"45 c #F44499", +"55 c #F4459B", +"65 c #F3469D", +"75 c #F347A0", +"85 c #F348A3", +"95 c #F34AA4", +"05 c #F34BAA", +"a5 c #F250B1", +"b5 c #F151B4", +"c5 c #F156C0", +"d5 c #F05CCA", +"e5 c #E172F7", +"f5 c #C16CE6", +"g5 c #A968D9", +"h5 c #9865D1", +"i5 c #8061C5", +"j5 c #7861C2", +"k5 c #695DB9", +"l5 c #3A56A3", +"m5 c #32559F", +"n5 c #235397", +"o5 c #198B92", +"p5 c #18A391", +"q5 c #17A992", +"r5 c #10F78E", +"s5 c #BDFFC6", +"t5 c #C1FFC2", +"u5 c #C2FFC2", +"v5 c #C3FFC3", +"w5 c #F34295", +"x5 c #F44297", +"y5 c #F4449B", +"z5 c #F3459C", +"A5 c #F14DAC", +"B5 c #F14EB0", +"C5 c #F150B4", +"D5 c #F155BB", +"E5 c #F05BC7", +"F5 c #EF5CC9", +"G5 c #EE5ED1", +"H5 c #C46DE7", +"I5 c #BC6BE3", +"J5 c #8362C6", +"K5 c #7C60C3", +"L5 c #6C5FBB", +"M5 c #4D59AB", +"N5 c #1E6195", +"O5 c #1A9392", +"P5 c #199893", +"Q5 c #15BB91", +"R5 c #15C690", +"S5 c #11E890", +"T5 c #BDFFC9", +"U5 c #C3FFC2", +"V5 c #C4FFC2", +"W5 c #C4FFC3", +"X5 c #C5FFC4", +"Y5 c #F44193", +"Z5 c #F44195", +"`5 c #F44396", +" 6 c #F44397", +".6 c #F3459B", +"+6 c #F348A1", +"@6 c #F349A5", +"#6 c #F14FB2", +"$6 c #F054BB", +"%6 c #F154BD", +"&6 c #EE60D2", +"*6 c #E873F9", +"=6 c #CF6FEE", +"-6 c #BF6CE5", +";6 c #A668D9", +">6 c #675DB9", +",6 c #3856A2", +"'6 c #31559E", +")6 c #17A592", +"!6 c #13CC91", +"~6 c #C5FFC3", +"{6 c #C6FFC4", +"]6 c #C7FFC3", +"^6 c #C7FFC4", +"/6 c #F43F90", +"(6 c #F44092", +"_6 c #F34397", +":6 c #F34499", +"<6 c #F05AC8", +"[6 c #BA6BE3", +"}6 c #AA69DA", +"|6 c #8963CB", +"16 c #5B5CB2", +"26 c #535BAE", +"36 c #4B58AB", +"46 c #4457A7", +"56 c #189993", +"66 c #BFFFC4", +"76 c #C6FFC3", +"86 c #C8FFC4", +"96 c #C9FFC5", +"06 c #CAFFC5", +"a6 c #F43E8E", +"b6 c #F53E8F", +"c6 c #F44091", +"d6 c #F34398", +"e6 c #F2479F", +"f6 c #F347A2", +"g6 c #F151B6", +"h6 c #F155BE", +"i6 c #ED65DD", +"j6 c #EC6CEE", +"k6 c #D66FF1", +"l6 c #A667D8", +"m6 c #9D67D4", +"n6 c #5E5CB5", +"o6 c #565AB1", +"p6 c #4E5AAD", +"q6 c #C9FFC4", +"r6 c #CBFFC5", +"s6 c #CCFFC6", +"t6 c #F43C8B", +"u6 c #F53E8D", +"v6 c #F43E8F", +"w6 c #F43F91", +"x6 c #F44295", +"y6 c #F252B6", +"z6 c #EE69E6", +"A6 c #A869D9", +"B6 c #9064CD", +"C6 c #685DBA", +"D6 c #1E5995", +"E6 c #C8FFC5", +"F6 c #CDFFC6", +"G6 c #CEFFC7", +"H6 c #F43C89", +"I6 c #F53C8A", +"J6 c #F53D8C", +"K6 c #F43F8E", +"L6 c #F44194", +"M6 c #F34195", +"N6 c #F4459A", +"O6 c #F34AA5", +"P6 c #F24EAC", +"Q6 c #F058C5", +"R6 c #E573F8", +"S6 c #B36BE0", +"T6 c #9464CE", +"U6 c #3D56A4", +"V6 c #265299", +"W6 c #1C7A94", +"X6 c #1B8492", +"Y6 c #18A191", +"Z6 c #CDFFC5", +"`6 c #CEFFC6", +" 7 c #CFFFC6", +".7 c #D1FFC7", +"+7 c #F53A86", +"@7 c #F53B88", +"#7 c #F53D89", +"$7 c #F43D8C", +"%7 c #F43E8D", +"&7 c #F44090", +"*7 c #F34296", +"=7 c #F247A1", +"-7 c #EF62D6", +";7 c #E071F5", +">7 c #D770F2", +",7 c #C76EEA", +"'7 c #9665D1", +")7 c #4859A9", +"!7 c #31559D", +"~7 c #295399", +"{7 c #1D7393", +"]7 c #198C92", +"^7 c #BFFFC7", +"/7 c #CFFFC7", +"(7 c #D0FFC7", +"_7 c #D2FFC8", +":7 c #D3FFC8", +"<7 c #F53983", +"[7 c #F53A85", +"}7 c #F53B87", +"|7 c #F53C89", +"17 c #F43D8B", +"27 c #F53E8C", +"37 c #F4449A", +"47 c #F247A0", +"57 c #F249A2", +"67 c #F249A4", +"77 c #F34CA9", +"87 c #8161C6", +"97 c #7A61C3", +"07 c #5A5CB3", +"a7 c #2D549B", +"b7 c #F5F5FF", +"c7 c #BDBDFF", +"d7 c #9A9AFF", +"e7 c #8A8AFF", +"f7 c #B2B2FF", +"g7 c #BEFFC5", +"h7 c #CAFFC4", +"i7 c #CBFFC6", +"j7 c #D4FFC9", +"k7 c #F63882", +"l7 c #F53984", +"m7 c #F53985", +"n7 c #F43C8A", +"o7 c #F53D8B", +"p7 c #F53E8E", +"q7 c #F44294", +"r7 c #F44399", +"s7 c #F248A3", +"t7 c #F24DAF", +"u7 c #F05DCD", +"v7 c #EF5FD3", +"w7 c #E673F9", +"x7 c #DE71F4", +"y7 c #C56DE9", +"z7 c #B56AE1", +"A7 c #A567D8", +"B7 c #8175E4", +"C7 c #2F549D", +"D7 c #198D92", +"E7 c #F1F1FF", +"F7 c #9292FF", +"G7 c #B7FFCF", +"H7 c #D5FFC9", +"I7 c #D6FFC9", +"J7 c #D7FFCA", +"K7 c #BEBEFF", +"L7 c #F53780", +"M7 c #F53881", +"N7 c #F63B85", +"O7 c #B864CA", +"P7 c #B865CB", +"Q7 c #B765CC", +"R7 c #B865CC", +"S7 c #D355B1", +"T7 c #F44296", +"U7 c #F44398", +"V7 c #ED64DD", +"W7 c #C96EE9", +"X7 c #C16CE5", +"Y7 c #B96BE1", +"Z7 c #B16ADD", +"`7 c #8676E7", +" 8 c #7961C1", +".8 c #33549E", +"+8 c #235396", +"@8 c #1F5995", +"#8 c #1E6894", +"$8 c #B1B1FF", +"%8 c #D8FFCA", +"&8 c #D9FFCB", +"*8 c #F5367E", +"=8 c #F53880", +"-8 c #F63881", +";8 c #F53882", +">8 c #F53A83", +",8 c #F3449B", +"'8 c #F24DAA", +")8 c #F250B4", +"!8 c #EC6CEA", +"~8 c #EB70F3", +"{8 c #D46FF0", +"]8 c #8B77E9", +"^8 c #735FBF", +"/8 c #545AB0", +"(8 c #1D6195", +"_8 c #8E8EFF", +":8 c #9C9CFF", +"<8 c #E9E9FF", +"[8 c #F0F0FF", +"}8 c #C5FFC2", +"|8 c #CAFFC6", +"18 c #8D90FA", +"28 c #DAFFCB", +"38 c #DBFFCB", +"48 c #F6367C", +"58 c #F6367E", +"68 c #F5377F", +"78 c #F63983", +"88 c #F43F8F", +"98 c #F24BA6", +"08 c #D871F1", +"a8 c #B870E8", +"b8 c #B16DE5", +"c8 c #AA6DE1", +"d8 c #A36CDD", +"e8 c #9D69D8", +"f8 c #8662C9", +"g8 c #225295", +"h8 c #BCBCFF", +"i8 c #CCFFC5", +"j8 c #C6F0CE", +"k8 c #C7F0CE", +"l8 c #C7F0CF", +"m8 c #C8F0CE", +"n8 c #C9F0CF", +"o8 c #CAF0CF", +"p8 c #CBF0CF", +"q8 c #C4E5D4", +"r8 c #898CFC", +"s8 c #8687FE", +"t8 c #C6E2D7", +"u8 c #DBFFCC", +"v8 c #DCFFCC", +"w8 c #B5B5FF", +"x8 c #F7F7FF", +"y8 c #F6357A", +"z8 c #F5357C", +"A8 c #F6367D", +"B8 c #B864C9", +"C8 c #F53D8D", +"D8 c #F53F90", +"E8 c #F44192", +"F8 c #F251B6", +"G8 c #ED6DEC", +"H8 c #D36FEE", +"I8 c #A968DB", +"J8 c #635CB7", +"K8 c #EDEDFF", +"L8 c #9D9DFF", +"M8 c #8787FF", +"N8 c #888DFC", +"O8 c #8F9DF5", +"P8 c #9CBBE9", +"Q8 c #B1ECD5", +"R8 c #9EBCE6", +"S8 c #B9F7CC", +"T8 c #9FBDE5", +"U8 c #8F9AF6", +"V8 c #878AFD", +"W8 c #ACD7D9", +"X8 c #BCEECB", +"Y8 c #A2BDE3", +"Z8 c #929EF3", +"`8 c #8A8EFB", +" 9 c #8A8FFA", +".9 c #96A3F1", +"+9 c #ABC8DF", +"@9 c #C9F9C8", +"#9 c #D0FFC8", +"$9 c #D2FFC7", +"%9 c #D4FFC8", +"&9 c #D5FEC9", +"*9 c #9BA6F1", +"=9 c #B4C8E2", +"-9 c #DCFFCB", +";9 c #DDFFCD", +">9 c #DEFFCD", +",9 c #FAFAFF", +"'9 c #C3C3FF", +")9 c #8B8BFF", +"!9 c #8989FF", +"~9 c #C5C5FF", +"{9 c #F3367D", +"]9 c #F6357B", +"^9 c #F53F8F", +"/9 c #F44093", +"(9 c #E54CA6", +"_9 c #B767D1", +":9 c #9C78EB", +"<9 c #8D80F8", +"[9 c #8784FE", +"}9 c #8E80F8", +"|9 c #A076E9", +"19 c #C165CE", +"29 c #ED4DAB", +"39 c #B56FE0", +"49 c #E958C1", +"59 c #B76FE1", +"69 c #977DF5", +"79 c #8A83FC", +"89 c #CD67D9", +"99 c #B474EA", +"09 c #E762D6", +"a9 c #B674EC", +"b9 c #967FF9", +"c9 c #8984FE", +"d9 c #8C83FD", +"e9 c #A17CF6", +"f9 c #D06EE7", +"g9 c #B37BF9", +"h9 c #E570F4", +"i9 c #B57CFA", +"j9 c #9682FE", +"k9 c #8984FF", +"l9 c #C678FA", +"m9 c #DE72F5", +"n9 c #9B79F1", +"o9 c #8D66CE", +"p9 c #8472E0", +"q9 c #837CF0", +"r9 c #8381F9", +"s9 c #8484FD", +"t9 c #8584FE", +"u9 c #8282FA", +"v9 c #7C7DF0", +"w9 c #7276E3", +"x9 c #636CD0", +"y9 c #4A5EB3", +"z9 c #1F5195", +"A9 c #2C65A3", +"B9 c #5576CE", +"C9 c #707FE9", +"D9 c #8F8FFF", +"E9 c #A3A3FF", +"F9 c #C8C8FF", +"G9 c #F9F9FF", +"H9 c #FEFEFF", +"I9 c #BFBFFF", +"J9 c #8686FF", +"K9 c #9EBEE7", +"L9 c #BBFECB", +"M9 c #9BB4E9", +"N9 c #8E98F6", +"O9 c #ACD7D8", +"P9 c #A5C2E2", +"Q9 c #8C91F9", +"R9 c #BEE3D3", +"S9 c #D1FFC8", +"T9 c #D6FFCA", +"U9 c #D7FFC9", +"V9 c #B0C3E4", +"W9 c #A1ADEE", +"X9 c #DDFFCC", +"Y9 c #DEFFCC", +"Z9 c #DFFFCC", +"`9 c #DFFFCD", +" 0 c #E0FFCE", +".0 c #B3B3FF", +"+0 c #A46FDA", +"@0 c #F53479", +"#0 c #F63579", +"$0 c #BC64C9", +"%0 c #8684FE", +"&0 c #907FF6", +"*0 c #DA57BA", +"=0 c #F14CAC", +"-0 c #AF72E4", +";0 c #967EF4", +">0 c #CD67D7", +",0 c #AE76EC", +"'0 c #967FF7", +")0 c #B975EE", +"!0 c #AD7CF9", +"~0 c #9581FD", +"{0 c #CA78FC", +"]0 c #A07AF3", +"^0 c #9D6ADB", +"/0 c #8781FA", +"(0 c #6F75DF", +"_0 c #526DCA", +":0 c #8485FE", +"<0 c #9191FF", +"[0 c #E3E3FF", +"}0 c #BBBBFF", +"|0 c #9DBBE8", +"10 c #8686FE", +"20 c #ADD7D7", +"30 c #A2BBE5", +"40 c #898BFC", +"50 c #C5EAD1", +"60 c #D9FFCA", +"70 c #C5E0D7", +"80 c #9297F7", +"90 c #DAF9CF", +"00 c #E0FFCD", +"a0 c #E1FFCE", +"b0 c #E2FFCE", +"c0 c #CB52AB", +"d0 c #F63477", +"e0 c #F73479", +"f0 c #F43F8D", +"g0 c #B666CE", +"h0 c #8A82FB", +"i0 c #DF54B5", +"j0 c #F34BA7", +"k0 c #CD66D5", +"l0 c #8685FE", +"m0 c #CD6EE7", +"n0 c #ED65E0", +"o0 c #8685FF", +"p0 c #CA78FA", +"q0 c #A57BF6", +"r0 c #C46DE8", +"s0 c #B36BDF", +"t0 c #917CF4", +"u0 c #7375E1", +"v0 c #3556A0", +"w0 c #5F6FD4", +"x0 c #EAEAFF", +"y0 c #E5E5FF", +"z0 c #9797FF", +"A0 c #DADAFF", +"B0 c #ABDADB", +"C0 c #8D98F7", +"D0 c #B1E6D3", +"E0 c #A4C6E0", +"F0 c #B5E9CF", +"G0 c #B7EBCD", +"H0 c #ABD3D9", +"I0 c #B5E7CF", +"J0 c #BAE4D1", +"K0 c #A2B6E8", +"L0 c #BDE2D3", +"M0 c #C4EDCE", +"N0 c #BADCD7", +"O0 c #939CF4", +"P0 c #98A2F2", +"Q0 c #DAFFCA", +"R0 c #D4F4CF", +"S0 c #8E91FA", +"T0 c #898AFD", +"U0 c #CFEAD6", +"V0 c #E3FFCE", +"W0 c #E3FFCF", +"X0 c #9494FF", +"Y0 c #D9D9FF", +"Z0 c #ECECFF", +"`0 c #C6C6FF", +" a c #A36FDB", +".a c #F73276", +"+a c #F73378", +"@a c #E93E89", +"#a c #E83E8A", +"$a c #B266CD", +"%a c #E74292", +"&a c #E74392", +"*a c #E74393", +"=a c #E74394", +"-a c #DC4DA5", +";a c #B26AD4", +">a c #DA52AF", +",a c #E44DA7", +"'a c #D457B7", +")a c #9A79EC", +"!a c #9F77E9", +"~a c #F24AA4", +"{a c #F34AA7", +"]a c #8983FC", +"^a c #BF6AD8", +"/a c #DE5CC6", +"(a c #E05CC6", +"_a c #C966D5", +":a c #DB5FCB", +"b c #8684FD", +",b c #F73172", +"'b c #F73173", +")b c #F63275", +"!b c #F63377", +"~b c #B861C4", +"{b c #937CF0", +"]b c #C561C7", +"^b c #977CF1", +"/b c #A478EE", +"(b c #DE63D5", +"_b c #C271E7", +":b c #9780FA", +"c c #D1F0D2", +",c c #D2F0D2", +"'c c #D3F0D2", +")c c #D9F7CF", +"!c c #DFFFCE", +"~c c #E1FECE", +"{c c #9DA5F2", +"]c c #CCDEDD", +"^c c #EBFFD3", +"/c c #F72E6D", +"(c c #F7306F", +"_c c #B860C2", +":c c #F5367D", +"d c #969CF5", +",d c #BDD4DE", +"'d c #CFEBD5", +")d c #D1EDD4", +"!d c #CBE4D8", +"~d c #BBCFE1", +"{d c #A4AFEE", +"]d c #8A8CFC", +"^d c #CBDFDB", +"/d c #9A9FF5", +"(d c #DBEFD7", +"_d c #DCF0D7", +":d c #DCF0D8", +"e c #D5FFC8", +",e c #B3C4E5", +"'e c #9092FA", +")e c #F1FFD6", +"!e c #F1FFD7", +"~e c #F82A66", +"{e c #F82B67", +"]e c #F82C6A", +"^e c #DD418D", +"/e c #AA6AD2", +"(e c #F63378", +"_e c #BF5CBB", +":e c #917DF2", +"f c #F1FFD5", +",f c #F2FFD6", +"'f c #F3FFD8", +")f c #F4FFD8", +"!f c #F92860", +"~f c #F82860", +"{f c #F82962", +"]f c #F72A64", +"^f c #F72A65", +"/f c #F82B66", +"(f c #F82C69", +"_f c #F73171", +":f c #F73274", +"g c #EBFFD4", +",g c #F7FFDB", +"'g c #F92357", +")g c #F92459", +"!g c #F8265B", +"~g c #F8285F", +"{g c #F82862", +"]g c #F82B64", +"^g c #F72F70", +"/g c #F53C8B", +"(g c #F34399", +"_g c #F24AA8", +":g c #F14EAD", +"h c #FA1D49", +",h c #FA1D4B", +"'h c #F91F4E", +")h c #F92151", +"!h c #F92153", +"~h c #F9255B", +"{h c #F72A63", +"]h c #F53981", +"^h c #F53B8A", +"/h c #F152B9", +"(h c #FAFFDB", +"_h c #FFFEE2", +":h c #FB1C48", +"i c #FB173D", +",i c #FB183F", +"'i c #FA1942", +")i c #FA1B48", +"!i c #FA1E4B", +"~i c #FFF9E7", +"{i c #FFFAE8", +"]i c #FC163B", +"^i c #FB173E", +"/i c #FB1940", +"(i c #FB1A42", +"_i c #FB1B47", +":i c #F92154", +"j c #FFF8EE", +",j c #FFF7EE", +"'j c #FD0F2D", +")j c #FC1233", +"!j c #FA1941", +"~j c #FB1D48", +"{j c #FA2255", +"]j c #F5387F", +"^j c #F34193", +"/j c #F3469C", +"(j c #FDFFE0", +"_j c #D9F3C4", +":j c #9FE296", +"k c #F4F6DF", +",k c #A0E099", +"'k c #E4F1D4", +")k c #9DDF97", +"!k c #71D471", +"~k c #5ACE5E", +"{k c #59CE5D", +"]k c #70D471", +"^k c #9CDF97", +"/k c #E4F0D6", +"(k c #9DDF9A", +"_k c #F1F4E5", +":k c #9DDF9B", +"l c #92DF96", +",l c #A6E5A9", +"'l c #FEFFFE", +")l c #A2E4A5", +"!l c #4ECA53", +"~l c #A07241", +"{l c #FC112E", +"]l c #8F864A", +"^l c #6BAC4F", +"/l c #7C9B4F", +"(l c #F91B45", +"_l c #F91F4B", +":l c #A37550", +"m c #57C256", +",m c #9F856E", +"'m c #D55881", +")m c #DE5186", +"!m c #D35B83", +"~m c #BA717B", +"{m c #94906F", +"]m c #67B65D", +"^m c #8B976C", +"/m c #FFFFE2", +"(m c #FFFAE5", +"_m c #FFFBE7", +":m c #97DE91", +"n c #FEF9F6", +",n c #98E19B", +"'n c #99E19D", +")n c #FBFEFB", +"!n c #99763A", +"~n c #FE061A", +"{n c #FE071B", +"]n c #FE071E", +"^n c #98793D", +"/n c #54C351", +"(n c #957E45", +"_n c #FC1133", +":n c #9A7B47", +"o c #FFFAF9", +",o c #51C651", +"'o c #E91C1C", +")o c #FF0416", +"!o c #FE0517", +"~o c #E81F21", +"{o c #908140", +"]o c #FD0A23", +"^o c #FD0B24", +"/o c #9C7641", +"(o c #FD0F2F", +"_o c #9C7744", +":o c #8C894B", +"p c #9B7F53", +",p c #839959", +"'p c #84995D", +")p c #4FC954", +"!p c #DB517C", +"~p c #DDEFD0", +"{p c #75D576", +"]p c #FEF8F2", +"^p c #A1E09E", +"/p c #A0E0A0", +"(p c #9DE19E", +"_p c #FFFCFB", +":p c #98E19C", +"

    q c #FF000F", +",q c #FF0110", +"'q c #FF0111", +")q c #FF0213", +"!q c #FE0314", +"~q c #FE0315", +"{q c #FE0418", +"]q c #FD071D", +"^q c #FE081D", +"/q c #FE0920", +"(q c #FD0921", +"_q c #FD0A24", +":q c #FD0C26", +" , ' ) ! ~ { ] ^ / ( _ : < [ } | 1 2 3 4 5 6 7 8 9 0 a b c d e f g h i j k l ", +" . . . . . . . . . . . . . m n @ # o % p q r - s , t u ) v ~ w x ^ y z _ A B } C D 1 E F 5 G H I J K L a M d d f N O P i k l Q R S ", +" . . . . . . . . . . . m n @ T % U * = - V W t ' ) ) v X ] ^ / z _ Y A Z ` | .2 ..+.5 H I 8 @.0 a M #.d e $.g P i j k l Q %.&.*.=. ", +" . . . . . . . . m -.@ $ ;.% p * r V ; >.' ' ) ,.~ w ^ ^ y z : Y B } C .1 3 ..5 G 6 I @.K '.a ).c e !.$.O P i j ~.Q {.&.].=.^./.(. _.:.<.[.}.|.1.2.3.4.5.6.7.8.9.0.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.`. +.+++@+#+$+%+&+*+=+-+;+>+,+'+)+!+~+{+]+^+/+(+_+:+<+[+}+|+1+1+2+2+1+2+1+1+ ", +" . . . . . . -.n # $ 3+p * = - V > t ' u ! ~ X w ] 4+z _ Y B 5+} D .2 E +.5 6+7 8 J 0 L ).#.e e $.g O i j k l Q %.&.=.7+8+/.(.9+0+ a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+Z+`+ @.@+@@@#@$@%@&@*@=@-@;@>@,@'@)@!@~@{@]@^@/@(@_@:@<@[@}@|@1@2@3@4@5@6@7@8@9@0@a@b@c@d@e@f@g@2+1+2+h@1+1+1+ ", +" . . . m -.@ $ ;.& p i@j@V ; >.k@u ! ! l@w x m@( z : Y B } ` D 1 2 F 5 G H 8 @.9 '.L M d e n@N O P i k k Q {.&.].=.7+8+o@9+p@q@r@s@ t@u@v@w@x@y@z@A@B@C@D@E@F@G@H@I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@X@Y@Z@`@ #.#+#@###$#%#&#*#=#-#;#>#,#'#)#!#~#{#]#^#/#(#_#:#<#[#}#|#1#2#3#4#5#6#7#8#9#0#a#++b#c#$+d#e#f#g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v#w#x#y#1+2+2+1+1+1+ ", +" . m z#@ $ % & i@A#- ; W >.' B#! ~ { C#^ y y D#: B } C | .2 F +.5 H I @.@.0 L b ).e !.$.g O E#j F#G#{.%.*.].7+H#/.9+p@I#q@r@s@J#K# L#M#N#O#P#Q#R#S#T#U#V#W#j+X#Y#Z#7.`# $.$+$@$#$$$%$w+&$*$=$-$;$>$,$'$)$!$~${$]$^$/$($_$:$<$[$}$|$1$2$3$4$5$6$7$8$9$0$a$b$c$d$e$f$g$h$U.;@i$j$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$1+2+1+1+ ", +" @ $ o U * A#r V W , t ' ) ! ~ C#Q$^ ( _ : A [ } ` D 2 3 F 5 5 H 8 @.K L a #.#.e f $.O P i k l G#{.%.S =.7+R$(.9+p@q@r@S$T$J#U$V$W$ X$Y$Z$`$ %.%+%@%#%$%%%h+&%*%E@=%-%;%>%,%'%)%!%t+~%{%]%^%/%(%_%:%<%[%}%|%1%2%3%4%5%6%7%8%9%0%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%2#3#v%w%x%y%z%A%{@B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%`% &1+1+2+ ", +" 3+& * q - s W >.' u ! v { C#^ y z _ Y B 5+` .&1 2 3 4 5 6 7 8 9 +&L a c d e f g h P j l l R %.*.*.=.H#/.9+9+p@@&r@T$T$K#U$W$#&$&%& &&*&=&-&;&>&,&_.'&)&!&~&{&]&^&/&F@5.(&I@_&:&<&a.[&}&d.Q@|&1&2&3&4&5&6&7&n.o.8&9&0&a&b&c&d&e&f&y.z.g&h&i&j&E.F.k&l&m&n&o&p&M.q&r&P.s&R.S.t&u&v&W.w&x&y&`. +.+++z&#+s$A&B&C&D&-+E&F&G&H&)+!+~+I&J&K&L&M&_+N&<+O&P&|+1+ ", +" i@= V W , ' u B#v { w ] ^ y _ : A 5+} .&D 1 2 F +.G H I J 0 0 a ).d e $.$.O P j k k Q %.S S =.8+/.(.9+p@q@r@r@S$J#V$Q&#&$&R&%&S&T& U&V&W&X&Y&Z&`& *.*+*@*e+#*$*%*&***=*l+-*;*>*,*q+'*)*!*~*v+{*]*^*/*(*B+_*:*<*[*}*H+|*1*2*3*M+4*5*6*7*R+8*T+9*0*W+X+a*b*c* @d*+@b$e*f*%@f$g*h*-@;@i*j*'@k*!@l*o$]@^@m*n*o*p*q*r*x$|@s*2@3@t*u*6@7@8@v*w*a@b@x*y*e@z*A* ", +" ; W t ' ) ! ~ { x ^ / ( : B*B 5+` | 1 2 F 4 5 6+I 8 @.0 L M c d !.$.g O E#j k ~.{.%.S ].7+8+R$(.9+I#@&r@S$T$U$V$Q&#&$&R&%&C*D*E*F* G*H*I*J*K*L*M*t@N*O*P*Q*R*S*T*U*V*W*X*Y*Z*`*I@J@ =.=+=@=O@P@Q@R@/%#=U@$=W@%=&=Z@*===-=;=>=,='=)=&#*#!=-#;#>#,#'#~={=]=^=/=(=_=:=<=q&O.[#[=|#1#}=3#4#|=1=7#y&9#2=3=4=5=6=7=8=9=0=a=K%i#b=c=d=e=n#f=g=q#r#h=t#i=v#j=k= ", +" ' l=! ! ~ { ] ^ y z : A 5+} .& .2 3 F 5 G I m=J 9 0 a M d e !.g O n=o=j l G#%.p=].=.7+8+(.9+p@@&r@r@T$J#V$V$W$q=q=%&S&T&D*E*r=s=s= t=u=v=w=x=y=z=A=B=C=D=E=Q#F=G=T#H=V#I=j+J=5.K=7.L=9.0.M=@$N=~*O=|&g.P==$Q=R=>$S=T=U=V=~$W=X=Y=Z=`= -.-+-[$@-|$#-2$$-%-&-6$*-=-9$--a$@@;->-,-'-)-=@U.!-~-j$k${-!@l*o$p$q$]-s$t$u$v$^-/-(-_-:-<-[-D$E$F$}-H$I$|-1-L$2- ", +" ! ~ X ] ^ 4+( _ B*< } ` .&1 3-F +.4-H I 8 @.0 L M #.5-!.!.O O E#j k l R %.].6-7+H#R$(.7-I#@&r@s@J#U$Q&W$#&q=8-C*9-D*E*r=0-s=a-b-c- d-e-f-g-h-i-j-k-Y$Z$l-N*m-+%@%n-$%g+h+o-p-q-=%G@r->%s-q+)%!%t-u-v-w-]*/%(%x-y-z-[%A-B-1%C-D-4%E-F-G-8%9%H-I-J-K-L-M-N-O-P-i%j%Q-R-m%S-@@T-<#U-V-|#W-2#X-Y-Z-`-y% ;.;0#]@C%+;(@@;#;H%$;%;&;L%*;=;O%P%Q%-;;;T%>;,;';); ", +" C#] m@y _ : Y B } ` .1 E F 5 G 6 8 @.9 L a c 5-e !.g O P i k l R {.&.*.=.8+H#(.7-p@@&@&!;~;J#Q&W$#&q=R&%&C*T&D*E*{;s=];b-c-^;/;(; _;:;<;[;};|;1;&&2;3;4;;&5;,&6;7;<.8;}.U*9;2.0;a;b;(&I@c;9.0.+=d;e;d.e.|&S@f;3&g;5&l.m.h;i;j;q.0&k;l;m;n;e&x.o;p;q;B.r;s;t;u;k&l&m&J.o&p&M.N.r&P.v;R.S.T.w;v&x;w&x&l$`.y;.+p$z&z;$+A;B;*+=+C;i#F&D;H&E;F;~+I&J&^+G;H; ", +" ( z : Y B 5+` .1 2 ..+.5 6+7 8 J 0 L ).#.d e f g P i j l G#{.%.*.=.7+8+o@(.p@q@@&S$S$T$K#Q&W$#&q=%&C*T&I;J;r=0-s=];K;^;^;L;M;N;O; P;Q;R;S;T;U;V;U&V&W;X;Y;Z&Z;a+`; >d+e+.>+>V#i+@>k+Y##>n+$>p+q+%>)*!*&>*>w+x+y+/*=>B+_*-><*[*;>H+|*1*2*3*>>4*5*P+Q+,>8*'>)>!>~>{>Y+Z+c* @]>+@@@#@f*e$f$t%^>U./>(>j$_>)@z%:>o$<>^@m*[>_@}>|>1>2>3>4>5>3@6>u*6@7>8>9>0> ", +" : B 5+} .& .2 3 F 5 6+7 8 @.K 0 a #.c a>!.g g P E#j l G#{.&.*.=.8+8+(.9+p@q@r@S$T$J#K#b>W$#&R&%&9-9-E*E*c>0-d>];c-^;/;(;e>f>g>h>i> j>k>l>m>n>o>p>q>r>I*s>t>u>M*t@N*O*w@v>w>S*x>y>C@2.E@Y*z>6.I@A>K@B>!%b.}&v-Q@R@C>#=D>V@W@X@E>F>G>H>I>J>K>L>$#M>N>O>P>-#;#Q>R>S>T>U>]={#/=V>W>X>Y>q&Z>P.}#R.1#`>3# ,Z-6#7#.,9#{@a#+++,@,7=#,H%$,a=%,&,*,k#=,m#-,;,>,q# ", +" } ` | 1 3-F 4 5 G I 8 9 +&L b c d a>f g O E#j k G#{.%.S =.=.8+R$9+7-q@@&!;T$T$K#V$W$,,R&8-S&9-I;E*{;s=s=a-b-c-^;L;(;e>O;h>i>i>',), !,~,{,],^,/,(,_,:,<,[,},|,1,2,3,C=D=4,5,F=G=6,U#V#7,j+X#5.8,9,0, $<&+$a,b,&>c,w+d,P=e,-$f,g,,$T=h,!$~$i,a&j,k,`=_$:$l,m,n,|$o,p,q,r,s,6$7$t,u,0$v,b$;-w,Q.'-S.t&x,y,W.j$z,{-A,n$B,<>C,D,s$E,&+F,G,H,I,J,K,<-L,M,E$N, ", +" D 1 3 ..5 G 7 I @.+&L M ).d e f f O i o=k l Q {.&.S =.7+R$o@9+q@q@@&s@T$J#V$W$#&$&$&%&C*D*D*{;r=s=s=K;c-^;L;(;e>f>O;h>i>',O,),P,Q, R,S,T,U,V,W,X,Y,Z,f-`, '.'j-k-+'@'#' %$'%'@%n-$%g+h+&'*'='Y*G@-'>%s-'%;'>'!*~%{%,'^%/%''x-)'z-!'A-~'1%{'3%4%]'F-7%^'/'0%('_'c%:'<'['}'h%|'1'k%2'3'S-4'T-q%[#V-|#W-2#X-5'Z-`-6' ;7'8'9'C%+;(@0'a'b'c'%;d'e'*;f'O%g'Q% ", +" ..4 G H I 8 @.0 L b c e e $.O O P k l l {.%.&.*.7+H#(.(.p@q@@&r@S$J#J#Q&W$#&q=h'S&C*D*E*r=0-s=];i'c-/;L;e>e>j'O;k'',l'O,),m'm'Q,n' o'p'q'r's't'u'v'w'<;[;x'|;y'z'A'=&-&B'5;v@_.'&C'D'E'B@F'2./&4.G'H'I'8. =<&J'N@}&K'L'R@g.M'3&N'5&6&O'P'Q'8&q.R'S'b&T'd&e&x.y.z.q;B.U'D.V'u;W'l&I.n&K.X'Y'Z'O.P.}#R.`'}=u&v&~- )x&l$.)+).+@)5=#+$+A;&+F,#)-+$)>+%)&)*) ", +" G 7 m==)=)=)=)-)d e n@g O P j k ~.G#%.&.S ;)8+H#(.9+p@q@@&s@T$J#K#W$W$$&=)=)=)=)>)E*c>0-];K;b-^;/;(;e>g>O;h>l'l'O,,),)m'')))!)~){) ])^)/)()_):)<)P;[)})S;T;|)V;1)2)W;3)4)5)6)7)8)c+@*e+f+$*h+i+@>9)=)=)=)=)0)a)'*@$b)u+%$w+c)d)/*=>B+e)f)<*[*}*g)|*h)2*3*M+i)5*P+Q+R+8*j)k)V+W+l)a*Z+m)n)d*+@@@#@w,%@o)t%p)-@q)i*r)k$)@s)l*t)p$^@m*[>u)u$|>v)}@3>1@5>3@ ", +" =)=)=)=)w) 8 9 0 =)=)=)=)x)$.O P E#y)z)z)A)B)*.*.7+8+R$(.7-C)C)D)D)E)K#Q&W$#&q=%&S&=)=)=)=)F)];a-K;c-^;G)e>e>g>h>h>',O,H)H)m'Q,n'I)!)J)K)K)L) w)w)w)w)M) N)O)P)o'Q)R)S)T)U)V)W)X)Y)Z)`) !I*s>K*u>M*.!+!@!#!$!y@S*%!&!&'*!=)=)=)=)=!-!'%;!!%N@u->!L',!'!)!!!~!{!X@&=]!^! #I>/!(!_!:!M>N>*#|!]=1!/=V>2!3!4!5!O.[#}#|#1#6!w;v%7!6#7#8!A%2=a#+++,c#7=9!9=$,0!K%e'b= ", +" =)=)=)=)w) '.b M =)=)=)=)a!P j k l =)=)=)=)b!7+R$(.9+p@@&@&=)=)=)=)c!#&$&8-%&S&T&D*=)=)=)=)d!c-^;/;G)e>f>O;h>k'',),),,)m'')n'!)~){)K)e!f!g!h! =)=)=)=)w) i!j!k!O)o'l!m!!,n!o!p!=)=)=)=)q!<,r!s!t!z=A=3,u!v!E=5,F=G=T#H=%*=)=)=)=)w!x!y! $0.+$z!e;&>%$w+&$P==$Q=f,>$A!'$B!!$C!D!]$E!/$F!G!H!I!J!n,|$K!p,3$L!M!N!7$t,9$O!v,N.P!w,e$Q!R!h$x,S!i*T!k$U!A,V!B,p$q$D,s$t$W!X!^-/-E& ", +" =)=)=)=)w) c d !.Y!Z!`! ~.~k Q {.%.=)=)=)=)+~(.p@q@@&s@~;T$=)=)=)=)@~%&S&9-D*E*r=c>=)=)=)=)#~G)e>f>g>O;i>',O,O,,),)m'Q,!)!)$~K)K)%~%~g!h!&~*~ =)=)=)=)w) =~-~;~>~O),~'~R,)~!~~~=)=)=)=)Y)f-g-{~]~j-^~Y$/~`$(~m-_~:~<~[~%%}~|~1~2~3~G@;*>%p+a)'*!%4~u-v-{*5~6~7~8~)'9~0~a~|%b~2%D-c~d~F-e~f~9%g~h~J-c%d%M-i~g%j~k~l~m~n~m%S-4!o~<#[#V-|#u%p~q~>@j*6#6' ;~@8'a#C%+;c#F%G%r~c'%; ", +" =)=)=)=)w) !.g O n=i j l R {.S ].=.=)=)=)=)C)@&r@s@s~J#V$Q&=)=)=)=)t~T&E*r=r=s=];b-=)=)=)=)u~g>g>h>i>',),),,)m'Q,!)I)~){)v~e!f!g!h!&~&~w~x~y~ =)=)=)=)w) z~A~B~C~D~E~,~o'F~q'r'=)=)=)=)G~H~[;G*|;I~z'2;J~K~L~M~,&_.'&C'[.N~B@1.2./&F@5.H@9,-!:&B>a.N@e;P@e.|&S@M'i.N'O~P~7&Q~R~S~T~U~k;l;c&n;e&x.V~z.A.W~i&D.V'X~k&l&Y~n&o&Z~Y'N.`~P. {Q!S.h$u&.{+{@{#{Z..)2=${++%{#+&{%+&+*+ ", +" =)=)=)=)w) h n=o==)=)=)=)*{=.7+=)=)=)=)=)=)=)=)=)=)=)W$=)=)=)=)=)=)=)=)=)=)=)K;c-^;=)=)=)=)={k'l'O,),,)P,-{;{>{,{'{){!{~{{{g!]{^{/{w~x~y~({_{ =)=)=)=)=)=)=)=)=)=)=) :{<{[{}{|{1{2{3{4{ 5{6{7{8{9{0{a{b{c{d{e{O)f{=)=)=)=)=)=)=)=)=)=)=)g{U&V&W;h{4)i{Z; *j{c+d+=)=)=)=)k{p-9)Y#8,=)=)=)=)l{m{n{o{p{q{r{s{t{(*u{v{w{x{y{z{A{B{J+K+3*M+4*C{D{E{F{G{H{H{I{J{K{L{M{m)N{O{+@@@#@P{Q{R{S{T{U{V{i*=)=)=)=)W{o$]@^@m*[>u)X{<{[{}{|{1{2{3{4{ ", +" =)=)=)=)w) k l R =)=)=)=)+~8+(.=)=)=)=)=)=)=)=)=)=)=)8-=)=)=)=)=)=)=)=)=)=)=)/;(;e>=)=)=)=)Y{O,P,m'm'Z{`{ ]=)=)=)=)=)=)=).]+]*~w~y~({_{@]@]#] =)=)=)=)=)=)=)=)=)=)=) $]%]&]=)=)=)=)=)=)=)*]=] -];]=)=)=)=)=)=)=)=)=)>],]']=)=)=)=)=)=)=)=)=)=)=))]!]~]I*{]t>u>M*]]^]@!/]=)=)=)=)(]_]*'0;Y*=)=)=)=):]<]=)=)=)=)=)[]}]|]1]=)=)=)=)=)2]3]I>4]@#5]6]7]=)=)=)=)=)=)=)=)=)8]9]0]/=(=_=3!a]b]=)=)=)=)=)=)c]=)=)=)=)d]7'0#a#4=e]f]g]=)=)=)=)=)=)=)*]=] ", +" =)=)=)=)w) {.%.S =)=)=)=)h]I#0+=)=)=)=)=)=)=)=)=)=)=)S&=)=)=)=)=)=)=)=)=)=)=)f>g>O;=)=)=)=)i]m'Q,')n'j]=)=)=)=)=)=)=)=)=)=)k]l]({@]#]#]m]n]o] =)=)=)=)=)=)=)=)=)=)=) p]=)=)=)=)=)=)=)=)=)=)q]r] s]=)=)=)=)=)=)=)=)=)=)t]C~u]=)=)=)=)=)=)=)=)=)=)=)H~v]w]v=r!x]y]1,L#z]A]B]=)=)=)=)C]D]F'E]/&=)=)=)=)F]=)=)=)=)=)=)=)G]H]=)=)=)=)=)=)=)I]J]K]L]X=E!M]=)=)=)=)=)=)=)=)=)=)N]O]N!7$P]Q]R]=)=)=)=)=)=)=)S]=)=)=)=)T]{-U]V!o$V]=)=)=)=)=)=)=)=)=)=)q]r] ", +" =)=)=)=)w) ].=.8+=)=)=)=)C)!;S$W]X]=)=)=)=)Y]Z]`] ^.^F*+^+^=)=)=)=)@^#^$^%^&^h>k'',=)=)=)=)*^n'~)$~=^=)=)=)=)-^;^>^,^'^=)=)=))^!^~^~^n]o]{^]^ ^^^^=)=)=)=)/^^^^^^^^^ (^=)=)=)=)_^:^<^[^}^=)=)=)|^ 1^=)=)=)2^3^4^5^6^7^8^t]9^-~0^a^=)=)=)=)b^c^d^e^f^g^d-h^f-i^ 'i-j^X$+'k^6)=)=)=)=)l^m^%%h+_]=)=)=)=)=)n^o^p^q^=)=)=)=)=)r^s^t^u^=)=)=)=)v^1%w^x^y^z^A^B^C^D^E^F^G^H^=)=)=)I^j~|'1'J^=)=)=)=)K^L^M^N^S]=)=)=)=)O^`-y% ;P^=)=)=)=)_^:^<^[^}^=)=)=)|^ ", +" =)=)=)=)w) /.(.(.=)=)=)=)Q^J#K#V$W$=)=)=)=)t~T&E*r=0-s=];i'=)=)=)=)u~O;h>h>l'O,),,)=)=)=)=)R^{)K)e!S^=)=)=)T^*~w~x~x~U^=)=)=)=)V^n]o]{^W^X^Y^ =)=)=)=)w) Z^=)=)=)`^ /=)=)=)=)./ +/=)=)=)@/#/$/%/&/*/=/-/;/>/9^i!=)=)=)=),/q''/s't')/v':;!/[;};|;y'z'~/{/4;=)=)=)=)]/C'D'}.|.=)=)=)=)^///I@_&(/=)=)=)=)p{_/f.'!:/=)=)=)=)S/=)=)=)T/U/+@b$V/W/=)=)=)=)X/q)i*j$Y/=)=)=)=)=)=)=)=)=)=)=)=)=)e/ ", +" =)=)=)=)w) @&!;T$=)=)=)=)c!8-R&C*9-=)=)=)=)d!a-c-^;/;(;e>e>=)=)=)=)Y{),H)Z/Q,')!)~)=)=)=)=)`/g!h!^{ (=)=)=)=)=)=)=)=)=)=)=)=)=).(+(+(@(c/#($( =)=)=)=)w) %(=)=)=)=)=)=)=)=)=)=)=)=)=)2^ &(&]=)=)=)=)=)=)=)*(=(-(;(>(o/;/=)=)=)=),(,~o''()(!(j>~(V)W){(](p>^(r>/(((=)=)=)=)_(:(w@x@#%=)=)=)=)<(E@Y*[(}(=)=)=)=)|(1(O@v-Q@=)=)=)=)2({!3(4(5(6(=)=)=)=)=)=)=)=)=)=)=)=)>#}!'#8]=)=)=)7(^#_=:=Y'8(=)=)=)=)9(}=0(Y-a(=)=)=)=)=)=)=)=)=)=)=)=)=)2^ ", +" =)=)=)=)w) T$J#K#=)=)=)=)b(S&T&E*r==)=)=)=)c(^;G)(;e>j'O;i>=)=)=)=)i]Q,')n'!)~)J)v~=)=)=)=)d(*~*~w~ (=)=)=)=)=)=)=)=)=)=)=)=)=)e(f(c/$(g(h(i( =)=)=)=)w) %(=)=)=)=)=)=)=)=)=)=)=)=)=)w) j(k(+/=)=)=)=)=)=)=)l(m(l/n(o(=)=)=)=)p(q(P)^)r(s(!,~,t(],u(w'(,v(:,v=w==)=)=)=)w(x(v!P#y(=)=)=)=)z(A(**4.5.=)=)=)=)B(M=z!C(d.=)=)=)=)D(Q=E(F(G(=)=)=)=)=)=)=)=)=)=)=)=)=)H(|$#-I(=)=)=)J(K(L(M(O!N(=)=)=)=)O(P(t&U.a(=)=)=)=)=)=)=)=)=)=)=)=)=)w) ", +" =)=)=)=)w) Q&W$#&=)=)=)=)>)r=r=0-s==)=)=)=)Q(e>e>j'O;k'',O,=)=)=)=)*^))!){)v~e!%~R(=)=)=)=)S(y~y~T(0/=)=)=)U(V(W(X(X(Y(Z(Y(`(`( _#(g(h(._+_+_ =)=)=)=)w) d/=)=)=)@_^^^^^^^^^^^^^^^^^^#_ $_%_&_*_=_=)=)=)=)-_&/l/m/=)=)=)=);_;~,]O)>_,_'_)_T,U,!_~_{_]_h^^_/_=)=)=)=)(_Z$6) %__=)=)=)=):_&!<_*!E@=)=)=)=)0)'%[_>'}_=)=)=)=)|_(%8~)'1_=)=)=)2_3_4_5_6_7_=)=)=)=)h~,>c%8_=)=)=)9_i%j%m~0_a_=)=)=)=)b_&@t%u%c_=)=)=)@_^^^^^^^^^^^^^^^^^^#_ ", +" =)=)=)=)w) q=R&%&=)=)=)=)d_0-];K;c-e_=)=)=)f_O;h>i>O,O,),,)'{=)=)=)g_J)v~e!e!g!h!^{=)=)=)=)h__{i_#]j_=)=)=)k_l_W^m_+(b/f(c/n_o_i(i(p_q_r_s_t_ |{=)=)=)u_ Z^=)=)=)v_$_ w_x_ y_ z_A_B_=)=)=)=)C_D_E_F_0{=)=)=)G_H_I_N)']J_K_L_q'M_s'N_O_P_Q_R_[;=)=)=)=)S_T_U_B'5;=)=)=)=)V_~&B@]&A(=)=)=)=)W_A>9.<&a.=)=)=)=)X_S@Y_3&Z_=)=)=)`_ :j;q..:+:=)=)=)=)x.@:#:$:=)=)=)%:&:1/H.I.*:=)=)=)=)=:-:}#;:>:=)=)=)v_$_ w_x_ ", +" =)=)=)=)/^^^^^^^^^^^^^^^,:T&I;=)=)=)=)d!b-c-':G)):=)=)=)!:~:{:]:^:Z/Q,')/:=)=)=)(:_:::<:[:&~*~}:=)=)=)=)|:#]~^n]1:=)=)=)=)2:3:4:5:6:7:8:9:=)p_0:s_s_t_a:b: c:=)=)=)d:e:^^^^f: g:=)=)=)=)}^h:i:j:g:k:l:m:=) &]2{n:[^r]o:p:q:=)=)=)=)r:s:D_t:u:=)=)=)v:w:x:y:s:>~])^)z:A:B:C:D:P;w/R;S;=)=)=)=)E:W;3)Y&5)=)=)=)=)F:e+#*$*V#=)=)=)=)G:x!`#,%q+=)=)=)=)H:{*x+y+I:=)=)=)J:K:L:M:N:=)=)=)=)=)i)O:P:Q:=)=)=)=)R:S:T:U:V:=)=)=)=)W:X:w,e$Y:=)=)=)=)}^h:i:j:g:k:l:m:=) ", +" =)=)=)=)=)=)=)=)=)=)=)=)Z:F*0-=)=)=)=)c(/;(;e>f>`:=)=)=)=)=)=)=) <,7<8<=)=)=)=)=)=)=)9<=)=)=)=)0q&a<[#b<=)=)=)=)=)=)=)=)=)=)=)=) ", +" =)=)=)=)=)=)=)=)=)=)=)=)cO;O;h>e<'{=)=)=)=)=)=) <{)J)e!f<'{=)=)=)=)=)=)g<({i_i_=)=)=)=)h<]^W^X^Y^il'',O,),W[,[m<=<'['[o<)[)[ (^s]8{|{=)=)=);< /![|^f/%(~[p<{[][^[$] /[6{([_[:[><0{<[[[}[|[y:a^1[2[3[4[5[)/-~;~N)~<7[^)8[)~!~9[=)=)=)=)0[a[/_ 'b[=)=)=)=)c[ %__d[@%=)=)=)=)e[p-k+l+f[=)=)=)=)g[)*4~u-{%h[i[j[Z_k[l[m[n[o[=)=)=)=)4%]'F-p[8%q[r[s[P/t[u[v[w[=)=)=)=)x[0_.@S-y[o~f*z[![|^f/%(~[p<{[][^[$] ", +" L;L;e>f>g>O;A[l'O,),,)m'B[))!)~)~){)e!f!%~g!h!/{*~}:x~({({i_i_#]~^n]o]o]%=b&m;d&=}x.y.#:-}B.;}=)=)=)=)>}I.n&K.X'Y'5!r& ", +" e>O;O;k'i>',O,),,)m'')n'!)~)J)K)e!f!g!]{^{&~*~y~y~({_{@]#]m]$i>i>O,),P,m'Q,))I)~)J)K)K)L)R(g!^{&~*~w~w~y~T(i_@]#]m]n]o]{^%/-~j!q(]),~o'M}N}^~(V)O}P}Q}R}^(~]I*((t>S}M*]]+!@!w@$!y@S*x>&!<_*'E@F@z>T}U}s-'%L@+=}_O@P@Q@R@S@)!V}W}X}3(Y}]!G>{'I>Z}=)=)`} |.|[]=)=)=)=)I(+|}'|!~#1!/=@|#|:= ", +" l'O,H)m'm'')n'!)J)J)v~e!f!g!h!]{&~w~y~y~({T(@]#]#]n]o]%<%|C}^}/},|'|)|_}z_P[!|R[t<}}4[~|T[U[&/{|n(=/z~]|9^i!D~q(J_o'l!^|!,/|(|_|^,/,(,:|<|v=w=x]y]z=4;3,[|O#}|y(||G=6,U#1.^&/&4.5.C<7.`#9..$a.z!C(~*1||&2|3|4|-$E(5|6|7|8|9|0|=)=)=)=)=)=)=)=)=)a|b|1$j&3$r,c|N!d|8$e| ", +" H),)Q,))I)!)J){)e!f!R(h!h!^{*~w~y~({({@]#]#]m]n]o]o]W^X^X^+(b/b/f(#($(i(i(p_q_0:$|s_C[b:b:l<=<=/-~;~q(])P)'~R,t|7}u|v|w|{_x|y|z|A|{~b[B|^~+'/~6) %C|D|@%E|F|g+h+&%p-k+l+z>r->%,*a);')*1(u-{%,'^%6~G|H|I|J|0~A-K|L|M|N|O|P|`}Q|R|S|T|U|b%c%:'V|i~W|j~|'X|m~ ", +" ))I)!)~)J)K)e!f!g!h!&~*~*~w~({({T(i_#]Y|n]o]Z|{^%1,1;/4}-~i!,]']P)o'L_q'M_'1t')1v':;R_[;G*Y[y'!1~1J~4;{1]1v@P*:.^1D'/1U*9;^&0;a;5.H'9,8. =0.a.z!e;P@e.f.C>Y_3&(1_1:1<1Q~[1==q.R'}1b&T'v.=}x.@:#:-}Q>i&|1V'1121^= ", +" !)~){)e!f!f!g!h!&~*~w~y~({_{T(@]#]~^$V+~>u1 ", +" e!f!%~g!h!&~*~w~w~y~T(T(@]@]m]m]n]o]%<%(3};/>/B~I_,]O1P1Q1{R1~_W){(e-S1q>T1i-((k-U1Z$.!+!V1%'}<#%S*1<&!o-*!W1Y*X1-'U}s-'%L@!%@=u-v-,',!S@)!U@Y1{!Z1&=]!^!{'I>`1 25].2+2@2*##2-#$2d%%2&2T> ", +" %~g!^{&~*~w~x~({({_{#]~^m]n]o]{^{^W^X^+(b/b/f(#($(i(i(p_+_+_s_r_a:b:b:m<=<=<'['[o<)['}F[F[!}~}%|x}y}f|f|*|g|`|`|y1y141A1z1A1B1*2=2 -2o:;2>2,2+1'2)2$1;|A}]}D}/}!2L[~2N[z_P[{2R[t,']*6~(%H|y-s2t2A-K|u22%v2c~w2L+p[f~x20%y2z2c%:' ", +" }:y~y~({T(@]#]~^$~k2P)f{F~q'Q2s'N_l>v'R2R_)]G*Y[y'J*~/J~K~S2T2U2V2'&W2D'X2B@]&W*/&a;Z*T}9,J@ =0.Y2N@e;P@Q@,!g.Z23&`2 3P~&}Q~ :.3q.U~}1b&$#+3e&x.@3#3-} ", +" ({T(@]#]m]~^n]o]%<]^$3Y^+(b/c/#($($(i(p_p_+_r_$|C[a:b:m3K25161,381#1-|01'3]}^})3B_L[)|_}z_<}Q[s<2[3[!3~3N1t:&/l/m/o(o/A~9^i!;~k!O)^)z:A:t/:)D:8}{3]3f1^3|)/3(3V&W;_3:3M#Z;<3.*[3@*S#T#U#V#E]j+J=}3|3DB+33:*43k1l1g)5363733*8393O:03a3 ", +" #]Y|~^$|^}a1E}k3(}l3N[y:a^Q[R[t1j2L}9^-~;~>~']P)K_n3o3^~(p3q3r3](R}s3t3I*B|u3U1v3]]N*@!w@w3#%x3A@y>_]*'X*=%G@r-y3z3'%)%+=@=O@{%Q@A3B3#=!!W}X}3(&=C3^!D33%E3F36%6<+2G3*# ", +" n]n]Z|%4,4 '4)4!4~4=3{4]4^4-2d2K2e2h3.1/4=|91z}A}]}(4)3,|F}(}_}O[y:a^_42[n|o|R3N1J}&/l/:4>(3}L}>/-~;~>~O),~'~()<4!~~~!_W,n2d-[4}4A| 'b[|4X&+'/~#'a+C|+%d+<~f+14h+24p-=*l+-*;*>%s-q+;'s+!*~%v+,']*6~34(*44_*!'54K|;>2%I+64w2F-G- ", +" X^Y^+(b/c/c/$(g(i(i(p_+_r_s_a:a:b:l<=4>4848484 94'404a4b4c4=3;3^4H2d4>3;251,2+1@1#1z}%1G1H1D}B_K[L[M[_}G}H}Q[R[n|e4-/~||}E_V[l/n(,1f4>/-~C~D~O1P)Q1F~q'g4h4t')1v':;i4[;G*j4y'z'~/=&4;;&+!v@k4:.C'D'E'B@]&l40;a;Z*(&I@-!9.B>+=@=O@P@Q@|&m4n4o4(1 3X@<1p4 :8&T~U~k;L> ", +" +(f(f(#($(g(p_p_+_+_s_s_a:a:b:m<=<=<'[o4,4848484q4q4 r4s4t4'4K3b4u4=3v4w4x4I2>3K2e261+1@1#1j3j|{}]}^}a1E}F})|l|O[<}H}s<2[}}y4'{*d,*$H4g}h}I4f)i}J4K4m153h) ", +" c/#(g(i(p_q_+_+_C[s_a:b:b:m<=4,4>484M4q4q4q4N4N4 O4P4Q4R4'4)4a4e3f3{4S4N3H2>3o:T461,281@191z}A}k|H[a1,|k3L[U4:}g2K11[[}t/-~;~D~~~(V)X,{(Q}W4X4Y4Z4`4u3Y$M*]] 5V1%'.5y@$%T*&!&'*'X*Y*Z*`*>%+5@5)%>'}_u-{%,'R@B3)!!!#5z-3($5]!%5H>I> ", +" i(p_p_+_r_r_C[t_a:l4>4>484M4q4q4N4&5N4N4*5 =5-5;5>5Q4,5'5)5!4c4{4;3N3!5-2J2;251,2E1@1#1$101'3]}^}/}K[L[M[_}-1P[Q[I}2[m(~5s:T[t:&/l/:4,1j2{5p/i!,]k2J_o'l!^|'//|t(_|]5Y3H~:|^5v=/5x=y]T_A=z][|D=6;7;||[.}.|.F'A((54.5.(&9,_&9.<&+$a,+4+}[2_52|3|:5<5[55|}532%49| ", +" ._q_r_r_a:a:b:m4>48484M4M4q4&5q4N4|515*5*525 35455565r4758595)4a405=3S4F2a5-2b5o:e2Q371h|c5-|01A}k|^}d5E}'|(}=1G}<}a^{22[3[y4p|S[D_E_l/;(>(s|]|=~C~j!>~])^),_e5_)7}~~f5W,})g5y|h5i^{~i5j5X;k5@'6)a+8)+*l5m5[~n5h+24p-k+l+-*`*$>p+q+'*o5b)u+v+{*p5q5348~44J|!'A-r5 ", +" s_C[a:b:b:m4,4s5,484M4q4&5q4N4N4|5*5t5u5u5v5 w5x545y5z5;57594'4'5a4b4f3A5F2B5H2C5o:T45^D5E18191$101&1E5F5B_K[L[G5N[O[<}{2R[t<3[y4R3|}E_V[l/T3o(;/W[-~i!D~O)P)Q1F~q'M_T)H5I5v':;!/[;G*Y[J5K52;L5-&B']1M5k4'&C'Z[%!U*C@W*N5a;X1T}I@-! =.=+=.}O5P5Q@A3g.n4Q5R5 3:1S5 ", +" a:b:b:*<=<=<'[o4>484848484q4q4N4N4N4*5*5*5u5u5U5V5W5X5 Y5Z5`5 645.66575+6,5@6)4!4f3=3g3N3#6I2J2o:e2$6%681=|j301{}k|^}/}!2F})|&6z_<}!|s<2[}}-/k/q|t:&/K}n(2}z~L}9^C~;~k2,~^)*6B46}=6{,-6[)9};6y/U;V;a}s!W;h{>6M#N#<3b+c+,6'6T#U#V#&*j+J=Y#E/D!6I4 ", +" *<=<=3o:e261D1+1M291z};|B}<6d5E}F}(}M[:}g2H}1[2[t/-~;~>~']7[o'n3o3^(<[6O}}6](S1s3|6i-((k-u>k^16263646.5#%$%1<&!<_*'E@Y*G@H@y3J@K@L@!%4~~%56Q@,!S@)!!!W} ", +" n<'[o4J3,484M4M4q4&566N415*515*5u5t5u5U5~6~676^6869606 a6b6c6Y5Z5`5d6=5-5;5e6f6t4'5a4!4c4=3S4w4H2C5g6K251Q3,3h6#1-|;|'3<6^}/}K[L[=1_}J1A_Q[R[t4>48484M4M4M4q4N4151515*5*5u5u5v5W5~6{67686q69606r6s6 t6u6v6w6(6Y5x6 6:6.6O4r47594'4)4!4u4=3{4;3c2H2>3y6e261,3i3@1-|z}A}]}^}/}K[k3(}U4z_y:Q[s~])f{,_'__)!~~~P;W,e1A6y|z|B6 '.'j-X;C6/~`&a+8)+*d+e+m^g+h+D6p-k+l+-*;*>*p+q+'*)*t-u+v-,'p5q5 ", +" F[F[G[!}%|x}x}&|*|*|A2`|`| 1 14141A1A1B1*2B1H3D2b2b2E2&3*3&374d3d3J3J3,4,4>484M4M4q4q4&5N415N4*5u525u5U5W5W576{6]6E60606r6s6F6F6G6 H6I6J6K6/6(6L6M6x545N6z5;57594t4O6a4e3c4P6S4G2P3b5J2C151,2h|@191$1Q6G1C}D}B_K[L[M[N[J1m|!|R[t2;L*-&B'T2v@P*U6C'S*V6U*C@W*0;F@Z*T}I@W69.X6+=b.}&P@[2Y6 ", +" ~}~}x}&|x}&|*|A2g|`|x1 1y1%3z1A1B1C2*2=2H3=2b2b2E2&3&37474d3J3T5J3J3>4,48484q4q466N4N4*5*5*5*5t5u5U5W5~6{6^68686q6r6r6Z6F6`6 7 7.7 +7@7#7$7%7v6&7Y5x6*7_6=5z5;5r4=794@6)4b4u4=3S4G2c2d4>3K25161D181#1$1j|A}]}*1D}B_k3)|U4O[-7Q[s<2[3[M1s:S[t:&/l/:4r|j2]|9^i!D~>~O)A4z:;7>7:),7-6{39}0}v]'7g{(3V&y=h{>6Z&Z;h1)7c}@*!7~7$*F'7,3.9)Y#|3{7y! $.$r+]7N=~*O= ", +" x}&|&|y}f|A2g|`| 1y141%3z1B1C2C2*2=2=2D2b2b2&3&3L4*374d3J3J3J3>4,4^784q4q4q4&5N4|515*5t5u5u5U5v5W5~6^6^6q6q606r6r6s6F6G6/7(7.7_7:7 <7[7}7|71727a6/6(6L6Z535:637O4;5475767)4a477f3{4F2c2H2>3o:e261,2E1=|91$1;|]}<6a1,|K[(}M[N[y:a^s(3};/9^-~j!N)E~>_o'n3o3V4j>V,_o-*'X*Y*f[`*y3s-@5)%+=4~~% ", +" b7c7d7e7. . . f7 &|f|*|A2`|`|y1414141A1B1H3H3H3=2=2D2E2E2&3*3*374T5J3T5J3>4,4,484g7q4q4&566N415|5*52525u5U5W5~6{6^68686h706i7Z6F6`6`6(7(7.7_7:7j7j7 k7l7m7+7@7n7o7p7v6w6Y5q735r7=5z565r4f6s7'5a4L3u4=3t7;3a5I2g6;25^61D1@191$1;|G1]}*1/}u7L[)|v7G}<}Q[R[2[3[y4~|$/E_V[l/:4o(j2A~-~C~,]k!P)^)w7x7'/n!y7p!z7w'A7. . . . B7y]T_L#z]>&v!6;y(||C76,(2F'^&/&4.5.C<7.c;9.0.a.D7 ", +" E7F7. . . . . . f7 A231`| 1y14141z1G7B1C2C2H3=2D2b2&3c3&3L47474T5d3J3J3,4,4,4M4q4q4N4N4N4N415*5*525u5U5V5V576{6]6. . . . . . . . . . . . . . . H7I7J7 . . . . . . . . . . . . K7 L7M7<7l7N7}7O7P7Q7R7S7(6L6T7U7:6.665r4758567)4!4u4=3g3]4x4-2>3o:51,2D1h6@191z}'3f2^}J[,|k3(}_}:}y:H}1[[}V7~5p|S[t:U[l/;(=/o/A~>/-~;~>~O)P1r/8[<4l2W7X7Y7Z7. . . . `7V& 8X$Y;5)6) %8) >l5.8f++8h+@8p-q-#8m+n+r2,%q+;' ", +" $8. . . . . . . f7 `|y1 141A1z1B1*2*2*2=2D2b2b2&3&3&374I3T5T5J3J3>4,4848484M4M4q4&5N4N4*5*5*5u5u5v5W57676{6869696. . . . . . . . . . . . . . . J7%8&8 . . . . . . . . . . . . K7 *8=8-8;8>8l7. . . . Q7/6c6Y5Z5x5r7,8-5P47594'4'5K3e3'8=3F2N3H2)8o:K2h371E1@1#1$1;|G1C}D},|K[L[M[N[z_a^!|R[n|3[-/S[P2E_&/m3!83};/>/-~~8,]k!,~f{F~q'{8T)H5I5. . . . ]8H*y'J*^8J~U_t@/8O*k4x@C'D'V6U*V*2.(8a;[(6.I@J@ = ", +" _8. . . :8<8[8[8b7 4141A1z1B1H3H3=2D2D2b2E2c3&3&374d3d3d3J3,4>4,48484q4q4N466N4N4N4*525u5u5v5V5}87676^6E6q606|8s6. . . . . . . . . . . . . . 18&82838 . . . . . . . . . . . . K7 485868-8k778. . . . P7u688w6(6Z5T7d6=5.665r4+6,5'498!4u4=3S4F2c2C5>3K2e2,2D1i3=|-|z}A}]}*1)3,|L[)|_}O[A_{2R[2[}}-/'4>4,48484q4q4q4&5N4N415*5*5*5u5u5U5}8~6{6]6869696r6i8s6F6G6j8k8k8l8m8n8o8p8q8r8. . . s8t8u838v8 . . . . w8[8[8[8[8[8[8[8x8 y8z8A85868M7. . . . B8I6C8p7D8E8L6x6 6:6.6O4r47594t4)4a4e3=3{4F2G2-2b5F8C1h3D5+1@1F1z}A}G1^}a1,|K[L[_}:}O2<}{22[t<-/p|~|D_&/V[m/r|G8;/9^-~j!q(O)7[X[n3o3H8j>V,~_X,I8e-S1X4h-i-B|k-Y$J8]]N*.%46}<|<$%A@y>o-*!X*Y*f[-' ", +" . . . . . . . . . . K8h8L8_8M8N8O8P8Q8b2b2&3&3&3*3. . . . R8S8T8U8V8. W8q4q4N4N4N4*515*5t5u525W5X8Y8Z8`8s8 9.9+9@9s6F6`6/7(7#9$9_7%9H7H7I7&9*9. . . . =9-9v8;9>9 . . . . h8 . . . . h8,9'9L8)9!9d7~9{9y8]948. . . . . . . . . . . ^9c6/9q7_6(9_9:9<9[9}9|91929!4f3=3-3N3#6. . . . 3949596979. 89<6. . . . 9909a9b9c9d9e9f9y4~|b1U[F_l/. . . . g9h9i9j9k9. l9m9. . . . n9w'H~m6^5o9p9q9r9s9t9u9v9w9x9y9||C7}.z9F'^&A9B9C9_8M8D9E9F9G9 ", +" . . . . . . . . . . H9I9J9. . . . . . . . K9L9*3*3d3d3. . . . M9N9. . . . O9&5N4*5*5*5u5u5u5v5V5~6P9J9. . . . . . . Q9R9/7.7S9:7:7%9H7H7T9U9%8V9. . . . W9X9Y9Z9`9 0 . . . . h8 . . . . .0d7. . . . . . +0@0#0]9. . . . . . . . . . . u6a6/6(6$0%0. . . . . . . &0*0!4u4=0-3G2. . . . -0;0. . . . >0A}. . . . ,0'0. . . . . . )04[R3N1J}&/. . . . !0~0. . . . {0'~. . . . ]0W,Z7A6^0/0. . . . . . . . . (0+*d+e+#*n5_0:0. . . . . . . <0[0 ", +" . . . . . . . . . . }0. . . . . . . . . . . |0d3d3;4J3. . . . 10. . . . . 20*5*5t5u5u5u5v5~6~67630. . . . . . . . . . 4050_7:7j7H7T9J7J760607010. . . 8090`900a0a0b0 . . . . h8 . . . . . . . . . . . . . c0d0e0. . . . . . . . . . . I6$7f0g0. . . . . . . . . . h0i0j0~4f3{4. . . . %0. . . . . k0-|. . . . l0. . . . . . . . m0o|n0~|t:. . . . o0. . . . . p0,~. . . . q0r0V)s0t0. . . . . . . . . . u0v@P*v>v0w0. . . . . . . . . . )9x0 ", +" [8[8. . . . w8[8[8[8 y0. . . . z0A0K8B0C0. . . . D0J3,4,4. . . . . V8E0F0G0H0I0*5u5U5v5W5X576]686J0. . . . K0L0M0N0O0. . . P0H7H7U9U9%860&8Q0R0S0. . . T0U000a0b0V0W0W0 . . . . . . . . . . . . G9 . . . . . X0Y0Z0`0. . . . a.a+a@a#a. . . . $a%a&a*a=a@7I6-a. . . . ;a>a,a'a)a. . . !a~a{a!4u4. . . . . ]a^a/a(a_a:a#1. . . . . /-~;~. . . . Tao3V4u|[9. . . UaS1g-h-I*j-u3VaM*Wa 5Xa. . . Ya%% E7. . . . <8 ", +" . . . . h8 Za. . . `a d3T5 b. . . .bM4q4q4. . . . +b*5u5u5u5U5V5~676]686q696h7i8i8@b. . . . . . . . . . . . . #b&828u8-9X9X9$b. . . . %bb0W0xa&b&b*b=b-b . . . . . . . . . . . . G9 . . . . E9 ;b. . . >b,b'b)b!b. . . . ~b*868M7k7<7m7{b. . . . . . . . . . . . . ]bQ4,504. . . . ^bG2H2b5y6K251,2. . . . /bA}E5I[/}(b. . . . _b!|s<2[. . . . :b&/{|n(o(j6>/p/. . . . (o/A~. . . . zbP1r/()Abo0. . . . . . . BbCbDb|4X;Y;Eb. . . . . . . . . . . . . Fb ", +" . . . . h8 !9. . . 0b ,484Gb. . . V8N4*5*5. . . . HbV5~6{6^686q606Ibi8F6F6`6/7(7.7s8. . . . . . . . . . . . . JbX9>9Z9`9KbLb. . . MbNb&bya*bObgbPbQbQbRb . . . . h8 . . . . h8 h8. . . . SbTb,b'b. . . . Ub]948A8Vb68pbrb. . . . . . . . . . . . . Wbz5;575. . . . Xbf3=3;3c2H2b5g6. . . . Yb)2$101&1Zb. . . . `b:}y:P[. . . . cS[D_E_S3l/n(o(. . . . .c])P)K_'(+c@c[9. . . . . . . #c$cJ*<c>c,c'c)c`9!c 0~c{c. . . J9]c*bOb-bgbPbhbQbRb^c^c . . . . h8 . . . . h8 h8. . . . /cSb(cjb. . . . _cFa#0]948:cob9vcwc00a0a0b0xc. . . . yc-b-bgbhbQbRbzc^cAcAcBc . . . . h8 . . . . h8 h8. . . . CcDcEcFcrb. . . GcHc+aIcy8JcA8Kc. . . LcMc}7|7o7$7a6/6NcOcT7_6r7Pc. . . . Qc)4a4Rcc4g3S4x4. . . . OaSc+1@191Tc. . . . UcF}Vc_}. . . . Wc}}m(p|k/P2U[F_. . . . Xc-~;~N)Yc^)K_n3ZcV4`c d. . . . .dg-h-+d. . . @d#d ,9$d ", +" . . . . h8 y0. . . . %dA0K8&dN9. . . . *dV5~676. . . . =dr6s6F6F6`6/7(7S9S9-d%9H7H7T9U9;d. . . . >d,d'd)d!d~d{d]d. b0b0V0^dJ9. . . /d(d_d_d:d/p/;~o0zdAdBdCdDdEdFd. . . . Gdm6^5Hd. . . . IdJdzaK8KdLdMdNd. ", +" . . . . h8 Od. . . . . . . . . . . Pd~6{6^686. . . . Qd`6G6/7/7.7S9_7:7j7H7I7T9J7%86060Rd. . . . . . . . . . . . W0SdyaTd. . . . . . . . . . . . . . . 2dUd . . . . . . . . . . . . L8 . . . . h8 h8. . . . VdWdXdYdZd. . . . . . . `dFaIc]9 e. . . . . . . . . . . . D8E8.ex6. . . . +eQ4@e0498!4Rc#e. . . . ]a. . . . . . . . 89]}H1J[B_. . . . $ea^s<2[}}o|p|S[. . . . %eo/{59^. . . . . . . . . . . o0&eS;y|h5*e. . . . . . . . . . . . ", +" . . . . h8 H9K7. . . . . . . . . =e-e^6860606. . . . ;e/7(7.7_7_7j7j7>eI7U9%8%860Q03838v8,es8. . . . . . . . . 'eya*b-b. . . . . . . . . . . . . . . . )e!e . . . . . . . . . . . . L8 . . . . h8 h8. . . . ~e{e4d]e^erb. . . . . . /eHc(ee0Jc_erb. . . . . . . . . :ea6/6c6Y5. . . . 7e)]8et9. . . . . . . . . F7 ", +" . . . . h8 Z0h8L89eJ90eae30be86E696r6s6s6. . . . ce.7-d:7j7H7H7I7U9%8&8Q02838v8v8X9Y9`9deeefegeheiejekelemeOb-bgbgb. . . . . . . . . . . . . . . . neoe . . . . . . . . . . . . L8 . . . . h8 h8. . . . peqe{e{e4dreseterb. . . uembDa!bvecdwexeyezeAeBeCeDeEeFeI6o7%788&7. . . . Wb-5;5r4s485'5)5. . . . GeHeIeJeKeLeMeNe@1#1j301&1]}. . . . Oel|O[g2!|s<2[3[. . . . Pel/:4,1QeReSeTeUeVeVeWeXeYeZe`e{,-6 f]3.ft=+f@f#fD9M8!9F7$fI9%f ", +" {686E6h706r6i8F6`6 7&f(7S9_7:7%9>eI7I7I7J7%8602838u8-9X9X9>9`9 0 0b0b0W0V0W0ya*b*b*b=bPbgbQbRbRb^c^cAcBc*f=f=f-fUd;f>f)e,fneoe'f)f !f~f{f]f^f/f{e(f]eCc/c6d(cTb_f'b:fmb!bFaIc3o:e2h3.1h6=|j3z}A}k|<6D},|K[L[M[:}A_a^s/-~;~N)E~,~K_n3)~H8`c3f[6X,}6[4^_o2 ", +" q6h7r6s6i8`6`6/7(7.7$9_7j7%9H7I7U9U9%8%8Q038u8v8-9X9>9`9 0 000b0W0W0W0xaya*bOb-bgbgbPbRbRb^c^c4fAcBcBc5f=f2dUd)e)e)eneoeoe'f)f6f7f 8f9f!f0f{fpeafbfcf(fCcdfefSbTbjb'bffmbDa!bIcy8gfA8*8obM7;878|fIahfif27a6^9(6Y5x6_6jfPc-5;5kfs4. . . . lf=3S4B5O3-2J2;25^61E1M2mfz}01G1H[^}E}u7L[)|l|J1-7Q[R[t<3[p|~|D_U[&/l/:4,1;/W[-~i!D~k2,~Q1p'^|'/W3t')/]5w'H~m6 ", +" i7i8s6`6`6&f(7.7$9:7%9H7H7I7J7U9%8&82838v8v8X9;9>9`900 0a0b0V0W0xayayaOb-b-bgbPbQbQbzc^cAc4f*fBc=f-f2dUd;f;f)eneoene'f'f)fnf7fofof pfqfrfsftf{fufaf/fbfVdXdDcDc6dSbjbvf'bwf.a!bFacd(o/;/p/i!D~q(O)f{r/()<47}<)BfQ;{_S; ", +" F6G6/7/7.7S9_7:7%9H7H7J7J7%8&86038u8u8X9;9>9>9`9a0a0a0b0W0xaxaya*b*b-bgbgbhbhbRbCf^c^c*fBc5f5f2dDfUd>f)e,f,foe'fEfEfnf7f7fofFfGfGf HfIfJfKf9f~f{fLfuf/fbfVdXdMfDc6dSbTbvf'b:fmbHc+aIcy8gfA858NfL7xf78[7OfPfn7Qfa6^9c6Y5T7 6r75565. . . . Qc{ab4c4P6S4G2O3C5o:e25^D5E1Rf#1z}A}G1C}I[B_K[L[M[N[O2P[{2R[t<3[p|k/$/U[V[m/>13}Sf>/9^;~,]])7[Q1Q)N}TfUfk>)1P_ ", +" &f(7S9$9_7:7j7I7T9J7%8%860&8u8-9X9X9Y9`9`9 0a0a0VfVfW0xa&bya*b=b-bgbgbQbRbCf^cAcAc*fBc5f-f2d;f;f)eneneneoeoe)f)f7fnf7fofGfWfXfYfZf `f g.gJfKfrf!f+g{fufafbf@g4dXdDcDc#gTb$gkb%g)bHc!bIccd]9JcA8ob-8;8<7&g[7@7|7o7%7^9*gY5.eT7jf37. . . . =g@6K3L3u4A5g3G2x4)8F8K25161+1i3#1-|01&1]}D}J[,|F}~2_}G}A_{2s9Z900 0;gb0VfW0Sd&bya*b=b-b-bhbQbQbRbCf^c>g4fBc5f5f-fUd2d)e)e,fneoeoe'f)fnf7fofofFfGfYf,gYfZfZfZf 'g`f)gHf!g8fKf~g0f{g]f]g/fbf(f4dCc/c6dSb^gvf'b%gHc!b(ey8y8JcA8*868M7qbl7[7}7|7/g27K6w6(6L6T7 6(g55z5r4759467)4_ge3=3:gw4N3H2b5o:e26171/4#1F1z};|G1H1J[E}K[(}U4:}g2a^s(s|{5>/-~;~q(O)P1o'n3)_V4j> ", +" j7%9H7I7U9J7%8&8Q038v8-9X9>9Y900`9a0a0VfV0xaxaSdya*b-bgbgbhbRbRbRbzcAc4fBcBc5f=f2d2d;f;f)enene/-~i!D~k!O)9gL_x7}b ", +" I7T9J7%86060283838-9Y9Y9`9`900a0b0VfW0W0ya&byaOb=bgbgbhbQbRbCf^c4f4fBc5f-f2d2dDf;f)e)e,foeoeoe)fnfnfofofofGfGfXfZfZfZfZf[g[g}g}g0g agbg1g2g3gcg.gJfdgrf~ftf{fufafegbf4dXdYd/c6dTbjb,b5gmb)b!b(ecd]9fgA8obpbM7<7|f+7@7I6/g%7a6&7(6L6T7d6=5gg;5kf75s7@6)5!4u4hgS4B5c2-2b5K2e26171E1=|$1j|A}k|(4a1,|F}(}_}N[g2Q[s<2[t<4['<|}J}&/l/m/=/o/{59^i!;~E~])7[r/8[ ", +" %8%8&8282838X9;9>9`9`900a0a0b0b0W0Sd&bya*bObgbgbgbQbzcCfRb>g4fAc5f=f2d2dUd;f)e,f!eneoe)f)f)fnfig7fofWfGfGfYfZfZfjgjgkg[g}glgmgmgng ogpgqgrg1g2gsg g!gqfKf~gtf{fLf^f/f{e(f(fCcDc#gSbTbjb,b:ftgHc(eIccdgf:cug68-8vg>8|f}7hfwg27a6/6(6L6Z5_645.6z5;54794xg)4!4e3f3=3F2^4H2b5g6e25^D5h6yg91zg;|G1H1D},|K[L[M[:}y:a^{2R[t(,1;/>/-~;~q(k2P1o' ", +" 282838v8v8Y9Y9Y9`9a0a0a0W0W0W0yaya*b-b-b-bgbPbRbRbRbAc4fAcBcBc5f2d2dUd;f)e)e,foeoe'f)fnf7f7fofGfGfGfYfYfZfZf[gjgkgAg}g}gmgmgngngBg CgDgEgagbg1g2g`f gFgJf8fGg~f0f{fufafbfVd(fHgDc/c#gSb_fvf%g)bHcEaFay8]948Vbob}f-8<7l7+7@7I6o7p788Ig/9x6T7Jg:6.6O4r4f685@6a4!4u4hgS4G2#6I2J2K2>2,2,381=|$1z}{}<6*1/}K[L[=1l|O[<}a^Kgt<3[~5R3T[8g&/l/:4o(o/L}9^i!;~E~P) ", +" u8v8;9>9>9`900a0a0b0W0W0xa&b*bOb*b-bgbQbQbQbCf^cAcAcBcBcBc=f-f2d>f)e)e!e,foeoe)f)f7fofofofGfWfXfYfXfYfjgjg[gAgkg}g}glgmgmgLgLgMgMg NgOgPgEgQgqgrgRg`fsg gpfdgrf~g0f{fLfuf~eSg(f]eCcDc/c(cTb_f,b%g.a!bTg#0y8JcA8ug=8M7;8|f[7Ia|7ifu6a6/6(6L6x6_6375565kf[e94'4O6K3~4#eS4]4^4-2b5g6T4Q3D1h6@1F1z}A}&1UgI[,|k3(}_}N[y:K1s(3}L}=~-~j!>~ ", +" X9Y9`90000a0b0b0W0Sdxaya*b*b-b-bgbhbQbRb^cAcAc*fBc5f=f-f2dUd;f)e!enene'f'f)f)f7fofofGfFfGfXfYfZfZf[g[gAg}glg}gmgmgngngMgMgMgVgVgWg XgYgZg`gDgpgagqg1g2g`fHfFgqfrf~g~f{fLfuf h{eVd.hCc+h/cSb^gjb,blbmbHcd0Iccd]9A858}f@hk7<7[7}7Pf#h$7u6/6c6Y5$h%hd6.6-5;575+68504{ab4u4=3F2B5H2C5o:C151,2+181#1&h%1&1H[*1J[K['|M[N[G}-7{2R[2[m(~5~|T[U[&/m3n(o(z~L}p/j! ", +" 000000a0b0W0W0SdSdya*b-b-bgbPb*hRbCf^cAcAc4fBc5f=f2d2dUd)e!e,fneoeoe)f)f)f7fofofFfGfGfXf=hjgZf[g[gAg}g}gmglgngLgLgMgMgVgWg-h-h-h;h >h,hXg'hOgPg)h!hqgrg'g`fsg~hJfqfKfsf0fLf{haf/fVd4dXdCcef#g^gTb,bff)bDaEaFay8]948A8Vb=8]h<7l7[7@7^h17u688/6(6L6*7_6=5.6O4kfQ4R404{a!4u4hgv4F2^4P3d4K2/h,2.181@1j3z}A}k|^}a1,|F}(}_}O[A_Q[s<2[3[~5~3N1t:&/K}*/,1s|{5p/ ", +" a0a0b0VfW0xaya*bOb=b-bPbQbQbRb^c^c4fAcBc=f5f5f2d;f;f;f,fneoe'f)f)fnf)fofofFfGfGfGfYfZf(h[g[g}gkg}glglgmgngLgLgLgVgVgWg-h-h;h;h;h_h :h(2h;/ ", +" V0W0xaxa*b*b*b-bgbPbhbRbCf^cAcAcBcBc=f2d2dUd;f)e,fneneoeoe)f)f7f7f7fofWfGfXfYfYfZfZf[g[g[g}g}gmgngmgLgLgMgMgVgWgWg-h-h;h_h_h3h3h4h 5h6h>h2$6E1i3#191;|A}k|^}/}K[F}M[v7z_<}a^s<[}3[-/~3D_%/V[l/;(=/ ", +" Sdya*bObObgbgbQbQbzczcAcAcBcBcBc=f=f;f;f)e)e!enene'f)fEfnf7fofFfWfFfGfXfXfYfZf(h[gkgAg}gmgmgmgngngLgMgMgVgWg-h-h;h;h_h_h3h4h4hfhgh hhihjhkh3o:T461uh/4@191z}A}k|*1a1,|F}vh=1N[g2m|1[R[th2$6+1@1#1$101G1<6*1/}K['|M[l|O[A_!|s<2[m(-/N1T[E_&/ ", +" -bgbhb*hRbRbCf4f4fBc5f=f-fUdUd;f)e,fneneoe)f)f6fnfofFfFfGfGfYfYfZfZf(hjgkg}g}glglgKhLgLgMgLgMgVgVgLh;h;h;h_h3h3h3hfhfhMhghghNhwhxh OhyhPhQhRh6hBhf;fne,foe)f)f)f)fnfofofWfGfGfXfZfZfZfjgjgAgAglgmg}gngngngLgMgMg-iLhWg-h;h;h_h_h_h4h4h4hfhghNhwhNhxh`hZhZh;i;i >i,i.iOh'iPhihRh)ikh3K251Q3E1i3c591;|>|]}D}/}K[F})|_}-1P[Q[R[[}3[y4 ", +" 4fBcBc5f2d2d;fUd)e,f,fneoe'f)f)f6fofofFfGfXfXfYfXfZf[gZfkgAg}glg}gmgngmgngLgVgVgWgWg-h-h;h_h3h_h3h4hfh4hghghwhxhxhZhxhZh`h`h~i~i{i ]i>i^i,i/i(iPhhhRh_i:h>h,hXgYg$i`gEgag:irg1gDh)g gpfVhGg~g0f{f8[i}7H6ifu6a6&7(6L6x6d645,8z5r47594'404_gu4c4g3F2^4-2b5o:T4Yh,381#191z}A}]}*1a1u7F}(}M[O[<}a^{22[3[ ", +" 5f5f2d2d;f;f)e,fneneoe'f)f7f7fofofofGfXfYfYfZfZfZf[gAg[g}g0gmgmgngngngLgMgMg-h-h}i-h_h_h_h_h3h4hghghghwhNhxhZhxhZhZh;i`h;i;i~i{i|i 1i2i3i>i4i,iyh(i@iAh5iBh6i,hXgTh'hOg)h%i0hqg1g2g)gHf!gdgrf~g~f{fLfuf h{eVd4dCc5dEcSb^g_f'blbmbDa!bIcy8JcA858NfM7;8<7|f+77iI6J6u6D8c6Y5x6`5:6y5z5;575+6s704K3e3f3{4-3G2H2b5J2e251$6E181c5-|01G1k|D}E}K[L[(}l|g2a^!|R[ ", +" 2dUd;f)e,f,foene'f)fnfnfnfofFfGfGfXfYfZfZf(h[g[g}g}glg}gmgmgngLgVgLgMgWgWgWg-h;h_h_h4h4h4h4hghghghghxhxhZhxhZh`h;i;i;i8i{i{i|i|i|i 9i0iai]i>ibi,i+i'iPhcidi5hkhi i.iyhPhniAh5iBh>h!iXgNgZgPgEg!hoiCh1g3gsg gpiqfKfsfqi0fibi i+iDi@iihdi6h6ii^i.iOi'izhnidi_iBh3o:5161D5h6M291z}A}&1H1a1E}F}(} ", +" )fnf7fofFfWfGfYfXfYfZfZf[g[g[g}g}glgmgngngngLgLgVgWg-h-h-h_h;h_h_h4hfh4hfhghwhghxhxhZhxh`h`h;i;i;i;i8i8i8i|iiiii|iiiwijiwiwiQiIiRi SiJiKiLikiMiNiaiaiTi^i4i.iUiDi@iAhdi:h>hViXgYg'hPgDgpg:iCh1g2g)gWiFgpfXi~g~f{g{fuf/fbfVdHgMf5dEcSbTb_f,b%gmbHcEaIccdgf:c58obL7vg>8[7IaPfwgo7a688w6Y5Z5x545Pcz5;575Yis704K3b4f3g3S4ZiH2b5>3K251,2E1yg)2$101G1<6*1/}u7 ", +" 7fofWfGfXfGfYfYfZf[g[g[g[g}g}glgmgLgLgLgVgMg-i-hWg;h;h_h3h4h4h4hfh4hghghghxhxhxhxhZhZh;i;i;i~i8i{i8i|i|i|iiijijiwiwiwiIiIiIiQiRi`i j.j+j@jKiLi#jzi$j%j3iTi^i.i+iyhzhnidi6hkh&j!i*jYgOgog)h=jqgrg'g`fcg gpfdgGg~gtfLfufafeg{e4dXdCcDc#gSbjbvf'bmbHh-j(eIc]9A8dh68}f-8qbl7[7@7I617;j88c6(6L6x6d6=5gg65r4+657@6)5!4~4hg:gG2x4P3d4o:e2h3,3h6Rf91z}A}]}*1/} ", +" GfGfGfXfZfZfjgjg[gkg}g}g0gmgngLgLgLgMgVgWgVg-h-h_h_h_h3h4h3hfhghghwhghxhxh`h`h`h`h;i;i;i8i{i8i|i|i|ihi|iwiwijiwiwiIiIiIiRiRi>j,j>j 'j j.jSiJi)jKiyi9i1i$j2i3i>i,i+i!jPh@idi6h~j8m7}7hf/gJ6a688c6^jw5 6:655/j;575R4'4)4a4~4c4{4;3G2H2)8g6C151,2E1Rf91z}Q6&1C} ", +" XfYfjgZfZfkg[gAg}glglgngmgngBg(jVgVgWgWg-h-h;h_h_j:jj6j7j 8j9j0j.jajbjcjKidjMiej1iBi2i^i^ifj+i'i@iihRh6h6iVi7hNgei9hPg)hagqg1g'g`fsg~hJfahgjqitfhjufaf{eSgbhXd5dEcijjj$g,b:f)bHc!bFacd]9fg*8ob@hkjljljmjnj#717%7b6w6(6L6T7U7=5z5ojkf=7t4~aa4!4f3=3S4]4a5-2>3;251$6+1i3#1-|01&1 ", +" Zfjg[g[gkg}g}g}gmgmgngBgMgMgVgWg-h-h-h;h_hpjqjrjsjsjsjsjsjsjsjsjsjsjtj;i;i`h{i~i8i8i8i|i|iii|iiijiwiwiIiIiIiQi`iRiRi>j,j,j7j>j7j6j uj8jvjwj.jSi+j@j)jxjyjzi1i2i3izj^i,i+i!jPhAjdi6hBh>h!iXgei$i`gpg%iqgrgBj`fCjHfJfqfKfDjnh{fj`i,j,j>j6j6jGjHjGj IjJjKjLj9jMj.j+jJi)jLiNjMi1iBi]iCi>i,i/iyhyhPhih5i:h6iVi!iOj'h`g)hpgqgrg1g'g`fCjFgqfVhGg~f0fLfuf h{e4dHgCcDc6dSbjjjbkb%gPj!b(eIcy8JcA8sjsjsjsjlj[7+7@7n7$7a688w6/9M6_6jf=5-5;5r4f6t4O6K3e3u4=3S47gH2d4o:K251,2E1@1#1 ", +" }glg0gmgmgngMgMgVg-iVg-h-h-h;hpj_h3h4h3hQjRjsjsjsjsjSjTjUjVjWjXjYjZjsj8i8i|i|iiiiiiiiiwiwiwiIiIiRiRi`iRi`iRi>j>j6j7j6jHj7jGj`j k.k +kIj@kJj#k$k0j%k&k+j)jKidjyjej1i%j2izjbi,i+i(i@iQhRh6h6i261.1yg ", +" mgmgmgngMgMgVgVgWgWgWg;h_h3h3h4h3h4hfh*k=ksjsjsj-k;kZhZh`h;i~i{i8i>k,k|ihiji|ijiii'k)k!k~k|j{k]k^k/k>jRi,j>j,j6jsjsjsjsj(k_k:khlaksjsjsjsjsjsj,l 'l)lRjsjsjsjsjsjsjsj!l~l{l.j&k@j)jsjsjsjsj]l^lsjsjsjsjsjsj/l(ldi6h>h3K2 ", +" VgWgWg;h;h_hpj3h3h4h4hghghxhghwhxhxhZholsjsjsjpl{i8i8i|i|i|iji|iiiHijiwiwiwiqlsjsjsjsjrlsltlulmsjsjsj,m'm)m!m~m{m]m^m(g=5z5;57594,504K3b4c4=3S4N3#6Jh ", +" -h/m_h;h_h_h4hfh4hfhghghxhxhZh(mZh`h_m|jsjsjsj:m8i8i|iiiiiiiwijiwinsjsjsjsj,n sjsjsjsj8k sjsjsjsj'n )nsjsjsjsj0m bksjsjsj!n~n{nMm]ndm^nsjsjsj/nIjJjKjsjsjsjsj(n@j_nLiLi:nsjsjsjsj>i,i.iBksjsjsjsjsjsjsjsjsjsjsjsjsjjRi>j7j7j6jbksjsjsj7n`j k k.k2m=nsjsjsjZj-n-n4msjsjsjsj8n9n9n9n9nsjsjsjsj8k sjsjsjsj8k sjsjsjsj'n )nsjsjsjsj0m bksjsjsj0nan~nbnMmcn^nsjsjsj/ndnen@ksjsjsjsjfngn+j@jUmhnsjsjsjsj3i>iinjnsjsjsjsjsjsjsjsjsjsjsjsjsjkn%iqgrgsjsjsjsjlnqf9fmh0fmnsjsjsjsjVdXdDcDcsjsjsjsjnn%g)b!bIccdy848onpnumsjsjsjsjsjsjsjqnrn/6(6Y5T7U745.6O4r4Q485'4)4!4u4 ", +" ghghNhxhxhZh(m;i;i;i~i{i{i8i|i|i|i|ijisnsjsjsjsjtnIiIi`i`i>jRi>j6j>j6j7j6j7jxmsjsjsjun2m2m2mvn2mwnsjsjsjxn-nDmEmsjsjsjsj8nynznynynsjsjsjsj8k sjsjsjsj8k sjsjsjsjIm FlsjsjsjsjJm KmsjsjsjAnBnCnanbnMmDnsjsjsjEnFnGn+ksjsjsjsjHn j.jSi+jhnsjsjsjsjai2iCiInsjsjsjJnKnLnMnMnNnOnPnQnRnSnogpg0hsjsjsjsjTnIfVhrf9fUnsjsjsjsj{eVd4dCcsjsjsjsjVnWn%g)b!bd0Iccdgf48XnYnZn`n osjsjsjsj.ou6+o(6/9M6x5r7=5z5;575+6t4@o{a ", +" xhxhZhxhZh`h;i~i;i8i8i8i|i|ihihijijiwi#o$osjsjsj-k%oRi`i`i,j,j7j,j&o$l6jGjGj*osjsjsj}m=ovnBmBm=o}msjsjsj-oDm;o;osjsjsjsj8nyn>o>o>osjsjsjsj8k sjsjsjsj8k sjsjsjsjbk9m 0msjsjsjsj7k amsjsjsj,o'o)o!oCn~obmsjsjsj{ofm]o^osjsjsjsj/oOl'j(oSi_osjsjsjsjMi$jai:osjsjsjooopoposjsjsjsj8k sjsjsjsj8k sjsjsjsjsjzlElfkqo4ksjsjsjro'l 7ksjsjsjsjsotouovowosjsjsjsjxoyoPm]osjsjsjsjzoKjAowj0jBosjsjsjsjyj9iCoDosjsjsjsjEoFoGoHoUlIoJoKosjXgTh$iPgsjsjsjsjLoDh)gHfpf2osjsjsjsjMo]f/fbfNosjsjsjOoPoQoRoSo:fHc!lToUoVoWoXoYoZosjsjsjsj`o|7I6Qfa6/6(6Y5x6 6JgN6/j;5[e94 ", +" `h;i;i{i{i8i|i|i|i|iiijiiijiwiwiwiIiIiRiIi p}msjsjsjsjsjsjsjsjsjsjsjsj`j2m2m.k.psjsjsjsjsjsjsjsjsjsjsj+p;o9n9nynsjsjsjsjnooo@p@p#psjsjsjsj8k sjsjsjsj8k sjsjsjsjbksjsjsjsjsjsjsjsj$p %psjsjsjsjsjsjsjsjsjsjsj&pNm*pOm=psjsjsjsj-p@kJj8jwjHnsjsjsjsjKiyjMiNi;psjsjsjsjsjsjsjsjsjsjsjsjp1g'g`fsglnsjsjsjsj{fnynyn>o>osjsjsjsj(p@p#p_p#psjsjsjsj8k sjsjsjsj8k sjsjsjsj:ppqgrg1g`fTnsjsjsjsj~fqi{fuf9pBksjsjsjsjsjsj0pTb&isjsjsjsjsjsjsjsjsjsjUkap<7&g[7}7|7n7C8a6&7(6L6*7U7:6y565 ", +" 8i8i|i|ijiiiiiHiwijiwiwiIiIiRi`iRi>j`i>j,j,j7j7jbpcpdpep4k|jfpgphpipjpBmBmBm-n-n-nkplpmpnp-knpwl+popynznynzn>o>osjsjsjsjppqpqpqprpsjsjsjsj8k sjsjsjsj8k sjsjsjsj8ksptpup;lvpwpxp fkypzpApBpApCpDpEpFpGpHpbnMmNmsjsjsjsjIpdn+k4pJpKpsjsjsjsj+jJi)jxjyi9iLpMpNpOpjntkPpQpRpSp(lRhBhjRi,j>j7j7j7j7j6jGjGj k k k`j.kBmBm2mBm*q-n-n4m-n4m4m4mEm;o9n9nyn=qynyn>o>o@poopo@p#p@p_pqpqprprpqp-q sjsjsjsj8k ;q>q;q>q,q'q)q!q~qFp{qGp~n{n]q^qdm/q(qFn_q:qIj4pJj#k$kwj%k&kJi_nxiyii4i}q!jDiPhQh5iBh>h>h,hXgei$iPgpg0hqgrg'g`fsg~hpfdg9f~ftfhjpe/f/fVd(f.h5d/c6d$gjbvf5gmb.aEaIcIc]9A8A8ugpb;8vg|f[7}7H6J6u6K6c6E8q7*7U7 ", +" ji|iHijiwiHiwiwiIi`iIi`iRi,j>j6j>j6jGj6jHjGjHj k`j.k k.kvnvnBmBmBm-n-n-n4m;o4mEmEm9n;o9n9n9nyn|q>o>o>ooo@p#p#p#p_p_p_pqprp-q-q1q2q sjsjsjsj8k ;q;q;q;q;q3q4q5q6q7q8q9qCn~nbn1p0qdmaq(qFn_qGn+kJpJj5pAo'j0jgnnk@j)jLibq9i$jBi2iCi^i,ifjyhzhniRh5h~j>hViXgYgOgPg)h!hqgChRgDh)g g!gdgrf9ftf{fj,j6j6jHjGjGj k k`j`j.k2m2m2m2mBmBm-n-n4m4m4mEmEm;o;o;o9n=qyn9nyn>o>ooopooo@p_p#p#p_pqpqprp-q-q-q1q$]$]$] sjsjsjsj8k ;q;q;q;q;q;q>q4q'qdq6q~qBnCnan~neqMmOmem=pfqgqGn+k@kJp5p#k'jhq.j+j+j)jxiLiMizi1iBi3i>ibi.i!j(iPhcidijh&jj>j,j6j6j7jGjGj`j`j`j k.k.k2m.kBmBm-n-n4m4m4mDmEm4m;o;o9n=q9n9nzn>o>ooooopo@p@p@p_p_pqpqpqpqp-q$]-q$]kqkqkq sjsjsjsj8k ;q;q;q;q>q>q;q;q,q'qlq)qmqFpnqCnan{nMm0qdm/qfm]ooq+kIj4ppq8jLjwj jgnnk@jxiLiyiziziai2i>i^i.iqq'iDiciAhjhBhj,j,j7j6jHj7jGjHj`j k k`j.k2m.kBmBmBmBm-n4m-n4m4mDm;o;o9n9n9nynznzn>o>o>o>o>o@p@p@p_p_prprpqp-q-q2q$]$]kqkq sjsjsjsj8k ;q;q;q;q;q;q;q>q>q>q,quqvq!qwqBnCnanbnMmNmcnyo(qfm^oGn:q@k4ppq#kwj0jxq&k@j)jxjyi9i$jai2iTi^i,i.i!jPhAjRh5i6h>hViXgThEi$i)h%ibgCh1g2g)g gpfJfdgmh~f{fj>j,j7jGj7jHjHjGj k`j k`j.k2mBmvn-nBm-n4m-n4m;oDm;oEm;o9n9n=qznzn|qznoopo@ppo#p@p_p_p_pqprp-q-q2q2q$]$]$] ;q;q;q;q;q;q;q;q;q;q>q,qyq)q!q8q)ozqAqBq{nMm^qaq=pCqFn_qdnDqJjSm8jOlMj j&k+j)jEqki#jej1i]iCi>i^i,i!jyhniihdiBh>hj,j>j,j6j6jGjGj k k k`j2m.kBm2mvnvnBm*q-nDmDm4m;oEm;o;o;o9n9n9n9nznzn>o>o>o@p@p#p#p_pqp_pqp-qrp-q-q-q$]kqGq ;q;q;q;q;q;q;q;q;q;q;q;q3q,qlqHq!qFpIqCnBqbneqNmOmem(qFnJqGn:q4pJj8j#kwj(oSi+j@j)jLiyiMi1iai]iKq^i,i/iyhPh@iRh6h:h>h!iXgNgOg`gEg%ibgrg'g`fsg gpiqfKfmhqiLqLfuf hcf(fXdCc5d/c#gTbGh5g%gDa!b+a#0]9JcA858ob-8xfFq[7tq*i ", +" ,j6j6j6j6jGj`jHj k k`j2m.k2mvn-n-nBm-n4m4m4mDm;o;o9n9n9n9nzn9n>o>o>o>ooo@ppo#p#p_pqpqp_pqprp-q-q2q$]$]$] ;q>q;q;q;q;q;q>q;q;q;q;q;q;qMqNqdq7qOqBn!oAqbnMmNmPq/qemfm^o^o:q4pJjKjvjQq'j.jRq+j_nKiLiMiej1i2iKqTi^i.i+iyhPhih5h6hSqo>o>opo>o@p#pUq_pVqqpqpWq-qrp$]1q$]$]$]Gq ;q;q;q;q;q;q;q;q>q>q;q;q;q;q;q,qXqvqHq~q)oBnCnBq{nMm]ndm/qYqFn_qGnIj4puj8j#kZq j.j+jJiKixibqMiziBi3iCi^i.i!j'izhhhih6h>h&j!iShNg'h`gUh!hqg`q1g`f)g.g!g8fKf!ftf{gLf h/fSgbh.hCcDc#g^gjbjb'b:f.a!bFacdy8JcA8qh=8M7<7<7 ", +" ;q;q;q;q;q;q;q;q;q;q;q;q>q;q;q;q>q,q5qdq!q rFpCnAqbnMm]q.raq(qfm^oGn:qIjJj5p8jQq0jxqSi@j)jEqkiMiejai2iCi>i,ifjyh(ini+r5iBh>hhandler ); + $obj = new ReflectionObject( $this->handler ); + echo "\n--- Handler reflection object ---\n"; + var_dump( $obj ); + $atts = $obj->getProperties(); + echo "\n--- Handler reflection attribute objects ---\n"; + var_dump( $atts ); + echo "\n--- Handler reflection has property activeReference ---\n"; + var_dump( $obj->hasProperty( "activeReference" ) ); + echo "\n--- Now trying ->getProperty( activeReference ) ---\n"; + $att = $obj->getProperty( "activeReference" ); + echo "\n--- Handler reflection attribute object for activeReference ---\n"; + var_dump( $att ); + $activeReference = $this->readAttribute( $this->handler, "activeReference" ); + $references = $this->readAttribute( $this->handler, "references" ); + */ + $handlerArr = ( array) $this->handler; + $reference = $handlerArr["\0ezcImageMethodcallHandler\0activeReference"]; + $referenceData = $handlerArr["\0ezcImageMethodcallHandler\0references"][$reference]; + return $referenceData["resource"]; + } + + public static function suite() + { + return new PHPUnit_Framework_TestSuite( "ezcImageConversionFiltersGdTest" ); + } + + protected function setUp() + { + try + { + $this->handler = new ezcImageGdHandler( ezcImageGdHandler::defaultSettings() ); + } + catch ( Exception $e ) + { + $this->markTestSkipped( $e->getMessage() ); + } + $this->imageReference = $this->handler->load( $this->testFiles["jpeg"] ); + } + + protected function tearDown() + { + unset( $this->handler ); + } + + public function testScaleBoth() + { + $this->handler->scale( 500, 500, ezcImageGeometryFilters::SCALE_BOTH ); + $this->assertEquals( + 500, + imagesx( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + $this->assertEquals( + 377, + imagesy( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + } + + public function testScaleDown_do() + { + $oldDim = array( + "x" => imagesx( $this->getActiveResource() ), + "y" => imagesy( $this->getActiveResource() ), + ); + $this->handler->scale( 500, 2, ezcImageGeometryFilters::SCALE_DOWN ); + $this->assertEquals( + 3, + imagesx( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + $this->assertEquals( + 2, + imagesy( $this->getActiveResource() ), + "Height of scaled image incorrect." + ); + } + + public function testScaleDown_dont() + { + $oldDim = array( + "x" => imagesx( $this->getActiveResource() ), + "y" => imagesy( $this->getActiveResource() ), + ); + $this->handler->scale( 500, 200, ezcImageGeometryFilters::SCALE_DOWN ); + $this->assertEquals( + 150, + imagesx( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + $this->assertEquals( + 113, + imagesy( $this->getActiveResource() ), + "Height of scaled image incorrect." + ); + } + + public function testScaleUp_do() + { + $oldDim = array( + "x" => imagesx( $this->getActiveResource() ), + "y" => imagesy( $this->getActiveResource() ), + ); + $this->handler->scale( 500, 300, ezcImageGeometryFilters::SCALE_UP ); + $this->assertEquals( + 398, + imagesx( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + $this->assertEquals( + 300, + imagesy( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + } + + public function testScaleUp_dont() + { + $oldDim = array( + "x" => imagesx( $this->getActiveResource() ), + "y" => imagesy( $this->getActiveResource() ), + ); + $this->handler->scale( 500, 2, ezcImageGeometryFilters::SCALE_UP ); + $this->assertEquals( + 150, + imagesx( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + $this->assertEquals( + $oldDim["y"], + imagesy( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + } + + public function testScaleFailureInvalidParam() + { + try + { + $this->handler->scale( 500, 2, 23 ); + $this->fail( 'Exception not throwen on invalid scale direction.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->scale( -23, 2, ezcImageGeometryFilters::SCALE_UP ); + $this->fail( 'Exception not throwen on invalid scale direction.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->scale( 500, -23, ezcImageGeometryFilters::SCALE_UP ); + $this->fail( 'Exception not throwen on invalid scale direction.' ); + } + catch ( ezcBaseValueException $e ) + {} + } + + public function testScaleWidthBoth() + { + $oldDim = array( + "x" => imagesx( $this->getActiveResource() ), + "y" => imagesy( $this->getActiveResource() ), + ); + $this->handler->scaleWidth( 50, ezcImageGeometryFilters::SCALE_BOTH ); + $this->assertEquals( + 50, + imagesx( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + $this->assertEquals( + 37, + imagesy( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + } + + public function testScaleWidthUp_1() + { + $oldDim = array( + "x" => imagesx( $this->getActiveResource() ), + "y" => imagesy( $this->getActiveResource() ), + ); + $this->handler->scaleWidth( 50, ezcImageGeometryFilters::SCALE_UP ); + $this->assertEquals( + 150, + imagesx( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + $this->assertEquals( + 113, + imagesy( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + } + + public function testScaleWidthUp_2() + { + $oldDim = array( + "x" => imagesx( $this->getActiveResource() ), + "y" => imagesy( $this->getActiveResource() ), + ); + $this->handler->scaleWidth( 300, ezcImageGeometryFilters::SCALE_UP ); + $this->assertEquals( + 300, + imagesx( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + $this->assertEquals( + 226, + imagesy( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + } + + public function testScaleWidthDown_1() + { + $oldDim = array( + "x" => imagesx( $this->getActiveResource() ), + "y" => imagesy( $this->getActiveResource() ), + ); + $this->handler->scaleWidth( 300, ezcImageGeometryFilters::SCALE_DOWN ); + $this->assertEquals( + 150, + imagesx( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + $this->assertEquals( + 113, + imagesy( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + } + + public function testScaleWidthDown_2() + { + $oldDim = array( + "x" => imagesx( $this->getActiveResource() ), + "y" => imagesy( $this->getActiveResource() ), + ); + $this->handler->scaleWidth( 50, ezcImageGeometryFilters::SCALE_DOWN ); + $this->assertEquals( + 50, + imagesx( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + $this->assertEquals( + 38, + imagesy( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + } + + public function testScaleWidthFailureInvalidParam() + { + try + { + $this->handler->scaleWidth( 'foo', ezcImageGeometryFilters::SCALE_DOWN ); + $this->fail( 'Exception not throwen on invalid width.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->scaleWidth( -23, ezcImageGeometryFilters::SCALE_DOWN ); + $this->fail( 'Exception not throwen on invalid width.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->scaleWidth( 42, 23 ); + $this->fail( 'Exception not throwen on invalid width.' ); + } + catch ( ezcBaseValueException $e ) + {} + } + + public function testScaleHeightBoth() + { + $oldDim = array( + "x" => imagesx( $this->getActiveResource() ), + "y" => imagesy( $this->getActiveResource() ), + ); + $this->handler->scaleHeight( 50, ezcImageGeometryFilters::SCALE_BOTH ); + $this->assertEquals( + 66, + imagesx( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + $this->assertEquals( + 50, + imagesy( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + } + + public function testScaleHeightUp_1() + { + $oldDim = array( + "x" => imagesx( $this->getActiveResource() ), + "y" => imagesy( $this->getActiveResource() ), + ); + $this->handler->scaleHeight( 226, ezcImageGeometryFilters::SCALE_UP ); + $this->assertEquals( + 300, + imagesx( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + $this->assertEquals( + 226, + imagesy( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + } + + public function testScaleHeightUp_2() + { + $oldDim = array( + "x" => imagesx( $this->getActiveResource() ), + "y" => imagesy( $this->getActiveResource() ), + ); + $this->handler->scaleHeight( 50, ezcImageGeometryFilters::SCALE_UP ); + $this->assertEquals( + 150, + imagesx( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + $this->assertEquals( + 113, + imagesy( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + } + + public function testScaleHeightDown_1() + { + $oldDim = array( + "x" => imagesx( $this->getActiveResource() ), + "y" => imagesy( $this->getActiveResource() ), + ); + $this->handler->scaleHeight( 300, ezcImageGeometryFilters::SCALE_DOWN ); + $this->assertEquals( + 150, + imagesx( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + $this->assertEquals( + 113, + imagesy( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + } + + public function testScaleHeightDown_2() + { + $oldDim = array( + "x" => imagesx( $this->getActiveResource() ), + "y" => imagesy( $this->getActiveResource() ), + ); + $this->handler->scaleHeight( 50, ezcImageGeometryFilters::SCALE_DOWN ); + $this->assertEquals( + 66, + imagesx( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + $this->assertEquals( + 50, + imagesy( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + } + + public function testScaleHeightFailureInvalidParam() + { + try + { + $this->handler->scaleHeight( 'foo', ezcImageGeometryFilters::SCALE_DOWN ); + $this->fail( 'Exception not throwen on invalid width.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->scaleHeight( -23, ezcImageGeometryFilters::SCALE_DOWN ); + $this->fail( 'Exception not throwen on invalid width.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->scaleHeight( 42, 23 ); + $this->fail( 'Exception not throwen on invalid width.' ); + } + catch ( ezcBaseValueException $e ) + {} + } + + public function testScalePercent_1() + { + $oldDim = array( + "x" => imagesx( $this->getActiveResource() ), + "y" => imagesy( $this->getActiveResource() ), + ); + $this->handler->scalePercent( 50, 50 ); + $this->assertEquals( + 75, + imagesx( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + $this->assertEquals( + 57, + imagesy( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + } + + public function testScalePercent_2() + { + $oldDim = array( + "x" => imagesx( $this->getActiveResource() ), + "y" => imagesy( $this->getActiveResource() ), + ); + $this->handler->scalePercent( 200, 200 ); + $this->assertEquals( + 300, + imagesx( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + $this->assertEquals( + 226, + imagesy( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + } + + public function testScalePercentFailureInvalidParam() + { + try + { + $this->handler->scalePercent( -23, 100 ); + $this->fail( 'Exception not throwen on invalid width.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->scalePercent( 100, -23 ); + $this->fail( 'Exception not throwen on invalid height.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->scalePercent( -23, -23 ); + $this->fail( 'Exception not throwen on invalid width and height.' ); + } + catch ( ezcBaseValueException $e ) + {} + } + + public function testScaleExact_1() + { + $oldDim = array( + "x" => imagesx( $this->getActiveResource() ), + "y" => imagesy( $this->getActiveResource() ), + ); + $this->handler->scaleExact( 200, 200 ); + $this->assertEquals( + 200, + imagesx( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + $this->assertEquals( + 200, + imagesy( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + } + + public function testScaleExact_2() + { + $oldDim = array( + "x" => imagesx( $this->getActiveResource() ), + "y" => imagesy( $this->getActiveResource() ), + ); + $this->handler->scaleExact( 10, 200 ); + $this->assertEquals( + 10, + imagesx( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + $this->assertEquals( + 200, + imagesy( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + } + + public function testScaleExact_3() + { + $oldDim = array( + "x" => imagesx( $this->getActiveResource() ), + "y" => imagesy( $this->getActiveResource() ), + ); + $this->handler->scaleExact( 200, 10 ); + $this->assertEquals( + 200, + imagesx( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + $this->assertEquals( + 10, + imagesy( $this->getActiveResource() ), + "Width of scaled image incorrect." + ); + } + + public function testScaleExactFailureInvalidParam() + { + try + { + $this->handler->scaleExact( -23, 100 ); + $this->fail( 'Exception not throwen on invalid width.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->scaleExact( 100, -23 ); + $this->fail( 'Exception not throwen on invalid height.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->scaleExact( -23, -23 ); + $this->fail( 'Exception not throwen on invalid width and height.' ); + } + catch ( ezcBaseValueException $e ) + {} + } + + public function testScaleTransparent() + { + $ref = $this->handler->load( dirname( __FILE__ ) . "/data/watermark.png" ); + $this->handler->scale( 80, 80 ); + $this->handler->save( $ref, $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + 10000 + ); + } + + public function testCrop_1() + { + $this->handler->crop( 50, 38, 50, 37 ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testCrop_2() + { + $this->handler->crop( 100, 75, -50, -37 ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testCrop_3() + { + $this->handler->crop( 50, 75, 250, 38 ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testCrop_4() + { + $this->handler->crop( 50, 75, 38, 250 ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testCrop_0_Offset() + { + $this->handler->crop( 0, 0, 10, 10 ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testCropTransparent() + { + $ref = $this->handler->load( dirname( __FILE__ ) . "/data/watermark.png" ); + $this->handler->crop( 20, 0, 10, 5 ); + $this->handler->save( $ref, $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testCropNegativeOffset_1() + { + $this->handler->crop( -100, -100, 50, 50 ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testCropNegativeOffset_2() + { + $this->handler->crop( -50, -50, 50, 50 ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testCropNegativeOffset_3() + { + $this->handler->crop( -50, -50, -50, -50 ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testCropFailureInvalidParams() + { + try + { + $this->handler->crop( 'foo', 23, 23, 23 ); + $this->fail( 'Exception not thrown on crop with invalid x coordinate.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->crop( 23, 'foo', 23, 23 ); + $this->fail( 'Exception not thrown on crop with invalid y coordinate.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->crop( 23, 23, 'foo', 23 ); + $this->fail( 'Exception not thrown on crop with invalid width.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->crop( 23, 23, 23, 'foo' ); + $this->fail( 'Exception not thrown on crop with invalid height.' ); + } + catch ( ezcBaseValueException $e ) + {} + } + + public function testColorspaceGrey() + { + $this->handler->colorspace( ezcImageColorspaceFilters::COLORSPACE_GREY ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testColorspaceMonochrome() + { + $this->handler->colorspace( ezcImageColorspaceFilters::COLORSPACE_MONOCHROME ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testColorspaceSepia() + { + $this->handler->colorspace( ezcImageColorspaceFilters::COLORSPACE_SEPIA ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testColorspaceFailureInvalidParam() + { + try + { + $this->handler->colorspace( 23 ); + $this->fail( 'Exception not thrown on invalid colorspace.' ); + } + catch ( ezcBaseValueException $e ) + {} + } + + public function testWatermarkAbsoluteNoScale() + { + $this->handler->watermarkAbsolute( dirname( __FILE__ ) . "/data/watermark.png", 100, 80 ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testWatermarkAbsoluteScale() + { + $this->handler->watermarkAbsolute( dirname( __FILE__ ) . "/data/watermark.png", 10, 10, 130, 93 ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + 500 + ); + } + + public function testWatermarkAbsoluteNoScaleNegativeOffset() + { + $this->handler->watermarkAbsolute( dirname( __FILE__ ) . "/data/watermark.png", -50, -33 ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + strtr( $this->getReferencePath(), array( "NegativeOffset" => "" ) ), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testWatermarkPercentNoScale() + { + $this->handler->watermarkPercent( dirname( __FILE__ ) . "/data/watermark.png", 10, 90 ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testWatermarkAbsoluteFailureInvalidParam() + { + try + { + $this->handler->watermarkAbsolute( dirname( __FILE__ ) . "/data/foo.png", -140, -103, 130, 93 ); + $this->fail( 'Exception not throwen on invalid watermark file.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->watermarkAbsolute( dirname( __FILE__ ) . "/data/watermark.png", 'foo', -103, 130, 93 ); + $this->fail( 'Exception not throwen on invalid x coord.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->watermarkAbsolute( dirname( __FILE__ ) . "/data/watermark.png", -140, 'foo', 130, 93 ); + $this->fail( 'Exception not throwen on invalid x coord.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->watermarkAbsolute( dirname( __FILE__ ) . "/data/watermark.png", -140, -103, 'foo', 93 ); + $this->fail( 'Exception not throwen on invalid x coord.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->watermarkAbsolute( dirname( __FILE__ ) . "/data/watermark.png", -140, -103, 130, 'foo' ); + $this->fail( 'Exception not throwen on invalid x coord.' ); + } + catch ( ezcBaseValueException $e ) + {} + } + + public function testWatermarkPercentScale() + { + $this->handler->watermarkPercent( dirname( __FILE__ ) . "/data/watermark.png", 80, 80, 20 ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + 450 + ); + } + + public function testWatermarkPercentFailureInvalidParam() + { + try + { + $this->handler->watermarkPercent( dirname( __FILE__ ) . "/data/foo.png", 80, 80, 20 ); + $this->fail( 'Exception not throwen on invalid watermark file.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->watermarkPercent( dirname( __FILE__ ) . "/data/watermark.png", -80, 80, 20 ); + $this->fail( 'Exception not throwen on invalid x coord.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->watermarkPercent( dirname( __FILE__ ) . "/data/watermark.png", 80, -80, 20 ); + $this->fail( 'Exception not throwen on invalid x coord.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->watermarkPercent( dirname( __FILE__ ) . "/data/watermark.png", 80, 80, -20 ); + $this->fail( 'Exception not throwen on invalid x coord.' ); + } + catch ( ezcBaseValueException $e ) + {} + } + + public function testCropThumbnailVertical() + { + $this->handler->croppedThumbnail( 50, 50 ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testCropThumbnailHorizontal() + { + $this->handler->croppedThumbnail( 100, 50 ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testCroppedThumbnailFailures() + { + try + { + $this->handler->croppedThumbnail( -10, 50 ); + $this->fail( "CroppedThumbnail filter accepted incorrect value." ); + } + catch ( ezcBaseValueException $e ) + {} + try + { + $this->handler->croppedThumbnail( "foo", 50 ); + $this->fail( "CroppedThumbnail filter accepted incorrect value." ); + } + catch ( ezcBaseValueException $e ) + {} + try + { + $this->handler->croppedThumbnail( 50, -10 ); + $this->fail( "CroppedThumbnail filter accepted incorrect value." ); + } + catch ( ezcBaseValueException $e ) + {} + try + { + $this->handler->croppedThumbnail( 50, false ); + $this->fail( "CroppedThumbnail filter accepted incorrect value." ); + } + catch ( ezcBaseValueException $e ) + {} + } + + public function testFillThumbnailVertical() + { + $this->handler->filledThumbnail( 50, 50, array( 255, 0, 0 ) ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testFillThumbnailHorizontal() + { + $this->handler->filledThumbnail( 100, 50, array( 255, 0, 0 ) ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testFillThumbnailTooLargeColorArray() + { + $this->handler->filledThumbnail( 100, 50, array( 255, 0, 0, 400, 500, 600 ) ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testFilledThumbnailFailures() + { + try + { + $this->handler->filledThumbnail( -10, 50, array( 255, 0, 0 ) ); + $this->fail( "FilledThumbnail filter accepted incorrect value." ); + } + catch ( ezcBaseValueException $e ) + {} + try + { + $this->handler->filledThumbnail( "foo", 50, array( 255, 0, 0 ) ); + $this->fail( "FilledThumbnail filter accepted incorrect value." ); + } + catch ( ezcBaseValueException $e ) + {} + try + { + $this->handler->filledThumbnail( 50, -10, array( 255, 0, 0 ) ); + $this->fail( "FilledThumbnail filter accepted incorrect value." ); + } + catch ( ezcBaseValueException $e ) + {} + try + { + $this->handler->filledThumbnail( 50, false, array( 255, 0, 0 ) ); + $this->fail( "FilledThumbnail filter accepted incorrect value." ); + } + catch ( ezcBaseValueException $e ) + {} + try + { + $this->handler->filledThumbnail( 50, 50, array( 255, false, 0 ) ); + $this->fail( "FilledThumbnail filter accepted incorrect value." ); + } + catch ( ezcBaseValueException $e ) + {} + try + { + $this->handler->filledThumbnail( 50, 50, array( "bar", 0, 0 ) ); + $this->fail( "FilledThumbnail filter accepted incorrect value." ); + } + catch ( ezcBaseValueException $e ) + {} + } +} +?> diff --git a/include/ezcomponents/ImageConversion/tests/filtersshell_test.php b/include/ezcomponents/ImageConversion/tests/filtersshell_test.php new file mode 100644 index 000000000..7c6074c58 --- /dev/null +++ b/include/ezcomponents/ImageConversion/tests/filtersshell_test.php @@ -0,0 +1,1089 @@ +handler; + return $handlerArr["\0ezcImageMethodcallHandler\0activeReference"]; + } + + public static function suite() + { + return new PHPUnit_Framework_TestSuite( "ezcImageConversionFiltersShellTest" ); + } + + protected function setUp() + { + try + { + $this->handler = new ezcImageImagemagickHandler( ezcImageGdBaseHandler::defaultSettings() ); + } + catch ( Exception $e ) + { + $this->markTestSkipped( $e->getMessage() ); + } + $this->imageReference = $this->handler->load( $this->testFiles['jpeg'] ); + } + + protected function tearDown() + { + unset( $this->handler ); + } + + public function testScale() + { + $this->handler->scale( 500, 500, ezcImageGeometryFilters::SCALE_BOTH ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + 250 + ); + } + + public function testScaleDown_do() + { + $this->handler->scale( 500, 2, ezcImageGeometryFilters::SCALE_DOWN ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + 450 + ); + } + + public function testScaleDown_dont() + { + $this->handler->scale( 500, 500, ezcImageGeometryFilters::SCALE_DOWN ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testScaleUp_do() + { + $this->handler->scale( 500, 500, ezcImageGeometryFilters::SCALE_UP ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + 250 + ); + } + + public function testScaleUp_dont() + { + $this->handler->scale( 2, 2, ezcImageGeometryFilters::SCALE_UP ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testScaleFailureInvalidParam() + { + try + { + $this->handler->scale( 500, 2, 23 ); + $this->fail( 'Exception not throwen on invalid scale direction.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->scale( -23, 2, ezcImageGeometryFilters::SCALE_UP ); + $this->fail( 'Exception not throwen on invalid scale direction.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->scale( 500, -23, ezcImageGeometryFilters::SCALE_UP ); + $this->fail( 'Exception not throwen on invalid scale direction.' ); + } + catch ( ezcBaseValueException $e ) + {} + } + + public function testScaleWidthBoth() + { + $this->handler->scale( 2, 2, ezcImageGeometryFilters::SCALE_UP ); + $this->handler->scaleWidth( 50, ezcImageGeometryFilters::SCALE_BOTH ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + 450 + ); + } + + public function testScaleWidthUp_1() + { + $this->handler->scaleWidth( 50, ezcImageGeometryFilters::SCALE_UP ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testScaleWidthUp_2() + { + $this->handler->scaleWidth( 300, ezcImageGeometryFilters::SCALE_UP ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + 250 + ); + } + + public function testScaleWidthDown_1() + { + $this->handler->scaleWidth( 300, ezcImageGeometryFilters::SCALE_DOWN ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testScaleWidthDown_2() + { + $this->handler->scaleWidth( 50, ezcImageGeometryFilters::SCALE_DOWN ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + 450 + ); + } + + public function testScaleWidthFailureInvalidParam() + { + try + { + $this->handler->scaleWidth( 'foo', ezcImageGeometryFilters::SCALE_DOWN ); + $this->fail( 'Exception not throwen on invalid width.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->scaleWidth( -23, ezcImageGeometryFilters::SCALE_DOWN ); + $this->fail( 'Exception not throwen on invalid width.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->scaleWidth( 42, 23 ); + $this->fail( 'Exception not throwen on invalid width.' ); + } + catch ( ezcBaseValueException $e ) + {} + } + + public function testScaleHeightUp_1() + { + $this->handler->scaleHeight( 300, ezcImageGeometryFilters::SCALE_UP ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + 250 + ); + } + + public function testScaleHeightUp_2() + { + $this->handler->scaleHeight( 300, ezcImageGeometryFilters::SCALE_DOWN ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testScaleHeightDown_1() + { + $this->handler->scaleHeight( 30, ezcImageGeometryFilters::SCALE_UP ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testScaleHeightDown_2() + { + $this->handler->scaleHeight( 30, ezcImageGeometryFilters::SCALE_DOWN ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + 550 + ); + } + + public function testScaleHeightFailureInvalidParam() + { + try + { + $this->handler->scaleHeight( 'foo', ezcImageGeometryFilters::SCALE_DOWN ); + $this->fail( 'Exception not throwen on invalid width.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->scaleHeight( -23, ezcImageGeometryFilters::SCALE_DOWN ); + $this->fail( 'Exception not throwen on invalid width.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->scaleHeight( 42, 23 ); + $this->fail( 'Exception not throwen on invalid width.' ); + } + catch ( ezcBaseValueException $e ) + {} + } + + public function testScalePercent_1() + { + $this->handler->scalePercent( 50, 50 ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + 500 + ); + } + + public function testScalePercentFailureInvalidParam() + { + try + { + $this->handler->scalePercent( -23, 100 ); + $this->fail( 'Exception not throwen on invalid width.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->scalePercent( 100, -23 ); + $this->fail( 'Exception not throwen on invalid height.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->scalePercent( -23, -23 ); + $this->fail( 'Exception not throwen on invalid width and height.' ); + } + catch ( ezcBaseValueException $e ) + {} + } + + public function testScalePercent_2() + { + $this->handler->scaleExact( 200, 200 ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + 300 + ); + } + + public function testScaleExact_1() + { + $this->handler->scaleExact( 200, 200 ); + $this->handler->scaleExact( 200, 200 ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + 300 + ); + } + + public function testScaleExact_2() + { + $this->handler->scaleExact( 10, 200 ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + 400 + ); + } + + public function testScaleExact_3() + { + $this->handler->scaleExact( 200, 10 ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + 450 + ); + } + + public function testScaleExactFailureInvalidParam() + { + try + { + $this->handler->scaleExact( -23, 100 ); + $this->fail( 'Exception not throwen on invalid width.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->scaleExact( 100, -23 ); + $this->fail( 'Exception not throwen on invalid height.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->scaleExact( -23, -23 ); + $this->fail( 'Exception not throwen on invalid width and height.' ); + } + catch ( ezcBaseValueException $e ) + {} + } + + public function testCrop_1() + { + $this->handler->crop( 50, 38, 50, 37 ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testCrop_2() + { + $this->handler->crop( 100, 75, -50, -37 ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testCrop_3() + { + $this->handler->crop( 50, 75, 250, 38 ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testCrop_0_Offset() + { + $this->handler->crop( 0, 0, 10, 10 ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testCropNegativeOffset_1() + { + $this->handler->crop( -100, -100, 50, 50 ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testCropNegativeOffset_2() + { + $this->handler->crop( -50, -50, 50, 50 ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testCropNegativeOffset_3() + { + $this->handler->crop( -50, -50, -50, -50 ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testCropFailureInvalidParams() + { + try + { + $this->handler->crop( 'foo', 23, 23, 23 ); + $this->fail( 'Exception not thrown on crop with invalid x coordinate.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->crop( 23, 'foo', 23, 23 ); + $this->fail( 'Exception not thrown on crop with invalid y coordinate.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->crop( 23, 23, 'foo', 23 ); + $this->fail( 'Exception not thrown on crop with invalid width.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->crop( 23, 23, 23, 'foo' ); + $this->fail( 'Exception not thrown on crop with invalid height.' ); + } + catch ( ezcBaseValueException $e ) + {} + } + + public function testColorspaceGrey() + { + $this->handler->colorspace( ezcImageColorspaceFilters::COLORSPACE_GREY ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + 300 + ); + } + + public function testColorspaceMonochrome() + { + $this->handler->colorspace( ezcImageColorspaceFilters::COLORSPACE_MONOCHROME ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + 10000 + ); + } + + public function testColorspaceSepia() + { + $this->handler->colorspace( ezcImageColorspaceFilters::COLORSPACE_SEPIA ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + 5000 + ); + } + + public function testColorspaceFailureInvalidParam() + { + try + { + $this->handler->colorspace( 23 ); + $this->fail( 'Exception not thrown on invalid colorspace.' ); + } + catch ( ezcBaseValueException $e ) + {} + } + + public function testNoiseUniform() + { + $this->handler->noise( 'Uniform' ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + // Noise is normally different each time + 200 + ); + } + + public function testNoiseGaussian() + { + $this->handler->noise( 'Gaussian' ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + // Noise is normally different each time + 30000 + ); + } + + public function testNoiseMultiplicative() + { + $this->handler->noise( 'Multiplicative' ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + // Noise is normally different each time + 30000 + ); + } + + public function testNoiseImpulse() + { + $this->handler->noise( 'Impulse' ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + // Noise is normally different each time + 10000 + ); + } + + public function testNoiseLaplacian() + { + $this->handler->noise( 'Laplacian' ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + // Noise is normally different each time + 22000 + ); + } + + public function testNoisePoisson() + { + $this->handler->noise( 'Poisson' ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + // Noise is normally different each time + 12000 + ); + } + + public function testNoiseFailureInvalidParam() + { + try + { + $this->handler->noise( 'foo' ); + $this->fail( 'Exception not thrown on invalid noise value.' ); + } + catch ( ezcBaseValueException $e ) + {} + } + + public function testSwirl_10() + { + $this->handler->swirl( 10 ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + 2000 + ); + } + + public function testSwirl_50() + { + $this->handler->swirl( 50 ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + 2000 + ); + } + + public function testSwirl_100() + { + $this->handler->swirl( 100 ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + 2000 + ); + } + + public function testSwirlFailureInvalidParam() + { + try + { + $this->handler->swirl( -23 ); + $this->fail( 'Exception not thrown on invalid swirl value.' ); + } + catch ( ezcBaseValueException $e ) + {} + } + + public function testBorder_2() + { + $this->handler->border( 2, array( 0x00, 0x00, 0xFF ) ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testBorder_5() + { + $this->handler->border( 5, array( 255, 0, 0 ) ); + $this->handler->save( $this->getActiveReference(), $this->getTempPath() ); + $this->handler->close( $this->getActiveReference() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testBorderFailures() + { + try + { + $this->handler->border( false, array( 255, 0, 0 ) ); + $this->fail( "Border filter accepted incorrect value." ); + } + catch ( ezcBaseValueException $e ) + {} + try + { + $this->handler->border( 10, array( 255, false, 0 ) ); + $this->fail( "Border filter accepted incorrect value." ); + } + catch ( ezcBaseValueException $e ) + {} + } + + public function testWatermarkAbsoluteNoScale() + { + $this->handler->watermarkAbsolute( dirname( __FILE__ ) . "/data/watermark.png", 100, 80 ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testWatermarkAbsoluteScale() + { + $this->handler->watermarkAbsolute( dirname( __FILE__ ) . "/data/watermark.png", 10, 10, 130, 93 ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + 100 + ); + } + + public function testWatermarkAbsoluteNoScaleNegativeOffset() + { + $this->handler->watermarkAbsolute( dirname( __FILE__ ) . "/data/watermark.png", -50, -33 ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + strtr( $this->getReferencePath(), array( "NegativeOffset" => "" ) ), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testWatermarkAbsoluteScaleNegativeOffset() + { + $this->handler->watermarkAbsolute( dirname( __FILE__ ) . "/data/watermark.png", -140, -103, 130, 93 ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + strtr( $this->getReferencePath(), array( "NegativeOffset" => "" ) ), + $this->getTempPath(), + "Image not rendered as expected.", + 100 + ); + } + + public function testWatermarkAbsoluteFailureInvalidParam() + { + try + { + $this->handler->watermarkAbsolute( dirname( __FILE__ ) . "/data/foo.png", -140, -103, 130, 93 ); + $this->fail( 'Exception not throwen on invalid watermark file.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->watermarkAbsolute( dirname( __FILE__ ) . "/data/watermark.png", 'foo', -103, 130, 93 ); + $this->fail( 'Exception not throwen on invalid x coord.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->watermarkAbsolute( dirname( __FILE__ ) . "/data/watermark.png", -140, 'foo', 130, 93 ); + $this->fail( 'Exception not throwen on invalid x coord.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->watermarkAbsolute( dirname( __FILE__ ) . "/data/watermark.png", -140, -103, 'foo', 93 ); + $this->fail( 'Exception not throwen on invalid x coord.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->watermarkAbsolute( dirname( __FILE__ ) . "/data/watermark.png", -140, -103, 130, 'foo' ); + $this->fail( 'Exception not throwen on invalid x coord.' ); + } + catch ( ezcBaseValueException $e ) + {} + } + + public function testWatermarkPercentNoScale() + { + $this->handler->watermarkPercent( dirname( __FILE__ ) . "/data/watermark.png", 10, 90 ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testWatermarkPercentScale() + { + $this->handler->watermarkPercent( dirname( __FILE__ ) . "/data/watermark.png", 80, 80, 20 ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + 100 + ); + } + + public function testWatermarkPercentFailureInvalidParam() + { + try + { + $this->handler->watermarkPercent( dirname( __FILE__ ) . "/data/foo.png", 80, 80, 20 ); + $this->fail( 'Exception not throwen on invalid watermark file.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->watermarkPercent( dirname( __FILE__ ) . "/data/watermark.png", -80, 80, 20 ); + $this->fail( 'Exception not throwen on invalid x coord.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->watermarkPercent( dirname( __FILE__ ) . "/data/watermark.png", 80, -80, 20 ); + $this->fail( 'Exception not throwen on invalid x coord.' ); + } + catch ( ezcBaseValueException $e ) + {} + + try + { + $this->handler->watermarkPercent( dirname( __FILE__ ) . "/data/watermark.png", 80, 80, -20 ); + $this->fail( 'Exception not throwen on invalid x coord.' ); + } + catch ( ezcBaseValueException $e ) + {} + } + + public function testCropThumbnailVertical() + { + $this->handler->croppedThumbnail( 50, 50 ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + 500 + ); + } + + public function testCropThumbnailHorizontal() + { + $this->handler->croppedThumbnail( 100, 50 ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + 500 + ); + } + + public function testCroppedThumbnailFailures() + { + try + { + $this->handler->croppedThumbnail( -10, 50 ); + $this->fail( "CroppedThumbnail filter accepted incorrect value." ); + } + catch ( ezcBaseValueException $e ) + {} + try + { + $this->handler->croppedThumbnail( "foo", 50 ); + $this->fail( "CroppedThumbnail filter accepted incorrect value." ); + } + catch ( ezcBaseValueException $e ) + {} + try + { + $this->handler->croppedThumbnail( 50, -10 ); + $this->fail( "CroppedThumbnail filter accepted incorrect value." ); + } + catch ( ezcBaseValueException $e ) + {} + try + { + $this->handler->croppedThumbnail( 50, false ); + $this->fail( "CroppedThumbnail filter accepted incorrect value." ); + } + catch ( ezcBaseValueException $e ) + {} + } + + public function testFillThumbnailVertical() + { + $this->handler->filledThumbnail( 50, 50, array( 255, 0, 0 ) ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + 500 + ); + } + + public function testFillThumbnailHorizontal() + { + $this->handler->filledThumbnail( 100, 50, array( 255, 0, 0 ) ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + 500 + ); + } + + public function testFillThumbnailTooLargeColorArray() + { + $this->handler->filledThumbnail( 100, 50, array( 255, 0, 0, 400, 500, 600 ) ); + $this->handler->save( $this->imageReference, $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not rendered as expected.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testFilledThumbnailFailures() + { + try + { + $this->handler->filledThumbnail( -10, 50, array( 255, 0, 0 ) ); + $this->fail( "FilledThumbnail filter accepted incorrect value." ); + } + catch ( ezcBaseValueException $e ) + {} + try + { + $this->handler->filledThumbnail( "foo", 50, array( 255, 0, 0 ) ); + $this->fail( "FilledThumbnail filter accepted incorrect value." ); + } + catch ( ezcBaseValueException $e ) + {} + try + { + $this->handler->filledThumbnail( 50, -10, array( 255, 0, 0 ) ); + $this->fail( "FilledThumbnail filter accepted incorrect value." ); + } + catch ( ezcBaseValueException $e ) + {} + try + { + $this->handler->filledThumbnail( 50, false, array( 255, 0, 0 ) ); + $this->fail( "FilledThumbnail filter accepted incorrect value." ); + } + catch ( ezcBaseValueException $e ) + {} + try + { + $this->handler->filledThumbnail( 50, 50, array( 255, false, 0 ) ); + $this->fail( "FilledThumbnail filter accepted incorrect value." ); + } + catch ( ezcBaseValueException $e ) + {} + try + { + $this->handler->filledThumbnail( 50, 50, array( "bar", 0, 0 ) ); + $this->fail( "FilledThumbnail filter accepted incorrect value." ); + } + catch ( ezcBaseValueException $e ) + {} + } +} +?> diff --git a/include/ezcomponents/ImageConversion/tests/handler_test.php b/include/ezcomponents/ImageConversion/tests/handler_test.php new file mode 100644 index 000000000..91efb21db --- /dev/null +++ b/include/ezcomponents/ImageConversion/tests/handler_test.php @@ -0,0 +1,214 @@ +handler = new $this->handlerClass( call_user_func( array( $this->handlerClass, "defaultSettings" ) ) ); + } + + protected function getReferences() + { + $handlerArr = ( array ) $this->handler; + $references = $handlerArr["\0ezcImageMethodcallHandler\0references"]; + return $references; + } + + public function testSaveOldfileNoconvert() + { + $srcPath = $this->testFiles["jpeg"]; + $dstPath = $this->getTempPath(); + + copy( $srcPath, $dstPath ); + + $ref = $this->handler->load( $dstPath ); + + unlink( $dstPath ); + + $this->handler->save( $ref ); + + $this->assertTrue( + file_exists( $dstPath ), + "File not correctly saved to old destination." + ); + $this->handler->close( $ref ); + } + + public function testSaveNewfileNoconvert() + { + $srcPath = $this->testFiles["jpeg"]; + $dstPath = $this->getTempPath(); + + $ref = $this->handler->load( $srcPath ); + $this->handler->save( $ref, $dstPath ); + + $this->assertTrue( + file_exists( $dstPath ), + "File not correctly saved to new destination." + ); + $this->handler->close( $ref ); + } + + public function testSaveNewfileConvert() + { + $srcPath = $this->testFiles["jpeg"]; + $dstPath = $this->getTempPath(); + + $ref = $this->handler->load( $srcPath ); + $this->handler->save( $ref, $dstPath, "image/png" ); + + $analyzer = new ezcImageAnalyzer( $dstPath ); + + $this->assertEquals( + "image/png", + $analyzer->mime, + "File not correctly saved to new destination." + ); + $this->handler->close( $ref ); + } + + public function testSaveIllegalFileNameFailure() + { + $srcPath = $this->testFiles["jpeg"]; + $dstPath = $this->getTempPath() . "$"; + + $ref = $this->handler->load( $srcPath ); + + $exceptionCaught = false; + try + { + $this->handler->save( $ref, $dstPath, "image/png" ); + } + catch ( ezcImageFileNameInvalidException $e ) + { + $this->handler->close( $ref ); + return; + } + $this->fail( "ezcImageFileNameInvalidException not thrown on illigal character $." ); + } + + public function testCloseFailure() + { + try + { + $this->handler->close( "abc" ); + } + catch ( ezcImageInvalidReferenceException $e ) + { + return; + } + $this->fail( "Exception not thrown on close of invalid reference." ); + } + + public function testAllowsInputSuccess() + { + $this->assertTrue( + $this->handler->allowsInput( "image/jpeg" ), + "Handler <{$this->handlerClass}> does not allow input of MIME type." + ); + } + + public function testAllowsInputFailure() + { + $this->assertFalse( + $this->handler->allowsInput( "foo/bar" ), + "Handler <{$this->handlerClass}> does allow input of weired MIME type." + ); + } + + public function testAllowsOutputSuccess() + { + $this->assertTrue( + $this->handler->allowsOutput( "image/jpeg" ), + "Handler <{$this->handlerClass}> does not allow input of MIME type." + ); + } + + public function testAllowsOutputFailure() + { + $this->assertFalse( + $this->handler->allowsOutput( "foo/bar" ), + "Handler <{$this->handlerClass}> does allow input of weired MIME type." + ); + } + + public function testHasFilterSuccess() + { + $this->assertTrue( + $this->handler->hasFilter( "scale" ), + "Does not every handler support the scale filter?" + ); + } + + public function testHasFilterFailure() + { + $this->assertFalse( + $this->handler->hasFilter( "ezc" ), + "Hey, who implements a filter called ??" + ); + } + + public function testGetFilterNamesSuccess() + { + $availFilters = $this->handler->getFilterNames(); + $geometryFilters = get_class_methods( "ezcImageGeometryFilters" ); + foreach ( $geometryFilters as $id => $filter ) + { + if ( substr( $filter, 0, 1 ) === "_" ) + { + unset( $geometryFilters[$id] ); + } + } + + $this->assertEquals( + array_intersect( $geometryFilters, $availFilters ), + $geometryFilters, + "Geometry filters seem not to be available in the filters for <{$this->handlerClass}>." + ); + } + + public function testGetFilterNamesFailure() + { + $availFilters = $this->handler->getFilterNames(); + $unavailFilters = array( "toby", "derick", "frederick", "ray", "__construct", "__destruct", "_whatever" ); + + $this->assertEquals( + array_intersect( $unavailFilters, $availFilters ), + array(), + "Weird filters seem not to be available in the filters for <{$this->handlerClass}>." + ); + } +} +?> diff --git a/include/ezcomponents/ImageConversion/tests/handlergd_test.php b/include/ezcomponents/ImageConversion/tests/handlergd_test.php new file mode 100644 index 000000000..bf4b502a2 --- /dev/null +++ b/include/ezcomponents/ImageConversion/tests/handlergd_test.php @@ -0,0 +1,374 @@ +markTestSkipped( $e->getMessage() ); + } + $this->handlerClass = "ezcImageGdHandler"; + parent::setUp(); + } + + public function testLoadSuccess() + { + $filePath = $this->testFiles["jpeg"]; + + $ref = $this->handler->load( $filePath ); + + $refProp = $this->getReferences(); + $imageRef = current( $refProp ); + + $this->assertEquals( + $imageRef["file"], + $filePath, + "Image reference not registered correctly." + ); + + $this->assertEquals( + $imageRef["mime"], + "image/jpeg", + "Image reference not registered correctly." + ); + } + + public function testLoadFailureFilenotexists() + { + $filePath = $this->testFiles["nonexistent"]; + + try + { + $ref = $this->handler->load( $filePath ); + } + catch ( ezcBaseFileNotFoundException $e ) + { + return; + } + $this->fail( "Required exception not thrown on not existing file." ); + } + + public function testLoadFailureUnknownmimetype() + { + $filePath = $this->testFiles["text"]; + + try + { + $ref = $this->handler->load( $filePath ); + } + catch ( ezcImageMimeTypeUnsupportedException $e ) + { + return; + } + $this->fail( "Required exception not thrown on not existing file." ); + } + + public function testLoadFailureUnknownMimeTypeParam() + { + $filePath = $this->testFiles['png']; + + try + { + $ref = $this->handler->load( $filePath, 'text/plain' ); + } + catch ( ezcImageMimeTypeUnsupportedException $e ) + { + return; + } + $this->fail( "Required exception not thrown on not existing file." ); + } + + public function testSaveOldfileNoconvert() + { + $srcPath = $this->testFiles["jpeg"]; + $dstPath = $this->getTempPath(); + + copy( $srcPath, $dstPath ); + + $copytime = filemtime( $dstPath ); + + $handler = new ezcImageGdHandler( ezcImageGdHandler::defaultSettings() ); + $ref = $handler->load( $dstPath ); + + unlink( $dstPath ); + + $handler->save( $ref ); + + $this->assertTrue( + file_exists( $dstPath ), + "File not correctly saved to old destination." + ); + } + + public function testSaveNewfileNoconvert() + { + $srcPath = $this->testFiles["jpeg"]; + $dstPath = $this->getTempPath(); + + $handler = new ezcImageGdHandler( ezcImageGdHandler::defaultSettings() ); + $ref = $handler->load( $srcPath ); + $handler->save( $ref, $dstPath ); + + $this->assertTrue( + file_exists( $dstPath ), + "File not correctly saved to new destination." + ); + } + + public function testSaveNewfileConvert() + { + $srcPath = $this->testFiles["jpeg"]; + $dstPath = $this->getTempPath(); + + $handler = new ezcImageGdHandler( ezcImageGdHandler::defaultSettings() ); + $ref = $handler->load( $srcPath ); + $handler->save( $ref, $dstPath, "image/png" ); + + $analyzer = new ezcImageAnalyzer( $dstPath ); + + $this->assertEquals( + "image/png", + $analyzer->mime, + "File not correctly saved to new destination." + ); + } + + public function testSaveNewfileQualityLow() + { + $srcPath = $this->testFiles["png"]; + $dstPath = $this->getTempPath(); + + $handler = new ezcImageGdHandler( ezcImageGdHandler::defaultSettings() ); + $ref = $handler->load( $srcPath ); + + $opts = new ezcImageSaveOptions(); + $opts->quality = 0; + + $handler->save( $ref, $dstPath, "image/jpeg", $opts ); + + $this->assertTrue( + filesize( $dstPath ) < 2000, + "File saved with too high quality." + ); + } + + public function testSaveNewfileQualityHigh() + { + $srcPath = $this->testFiles["png"]; + $dstPath = $this->getTempPath(); + + $handler = new ezcImageGdHandler( ezcImageGdHandler::defaultSettings() ); + $ref = $handler->load( $srcPath ); + + $opts = new ezcImageSaveOptions(); + $opts->quality = 100; + + $handler->save( $ref, $dstPath, "image/jpeg", $opts ); + + $this->assertTrue( + filesize( $dstPath ) > 30000, + "File saved with too low quality." + ); + } + + public function testSaveNewfileCompressionLow() + { + $srcPath = $this->testFiles["png"]; + $dstPath = $this->getTempPath(); + + $handler = new ezcImageGdHandler( ezcImageGdHandler::defaultSettings() ); + $ref = $handler->load( $srcPath ); + + $opts = new ezcImageSaveOptions(); + $opts->compression = 0; + + $handler->save( $ref, $dstPath, "image/png", $opts ); + + $this->assertTrue( + filesize( $dstPath ) > 100000, + "File saved with too high compression." + ); + } + + public function testSaveNewfileCompressionHigh() + { + $srcPath = $this->testFiles["png"]; + $dstPath = $this->getTempPath(); + + $handler = new ezcImageGdHandler( ezcImageGdHandler::defaultSettings() ); + $ref = $handler->load( $srcPath ); + + $opts = new ezcImageSaveOptions(); + $opts->compression = 9; + + $handler->save( $ref, $dstPath, "image/png", $opts ); + + $this->assertTrue( + filesize( $dstPath ) < 40000, + "File saved with too low compression." + ); + } + + public function testSaveFailureUnknownMimeType() + { + $srcPath = $this->testFiles['jpeg']; + $dstPath = $this->getTempPath(); + + $handler = new ezcImageGdHandler( ezcImageGdHandler::defaultSettings() ); + $ref = $handler->load( $srcPath ); + try + { + $handler->save( $ref, $dstPath, 'text/plain' ); + $this->fail( 'Exception not thrown on save with invalid MIME type.' ); + } + catch ( ezcImageMimeTypeUnsupportedException $e ) + {} + + $handler->close( $ref ); + } + + public function testConvertSuccess() + { + $filePath = $this->testFiles["jpeg"]; + + $ref = $this->handler->load( $filePath ); + $this->handler->convert( $ref, "image/png" ); + + $refProp = $this->getReferences(); + $imageRef = current( $refProp ); + + $this->assertTrue( + $imageRef["mime"] === "image/png", + "MIME type conversion not registered correctly." + ); + } + + public function testConvertFailure() + { + $filePath = $this->testFiles["jpeg"]; + + $ref = $this->handler->load( $filePath ); + + try + { + $this->handler->convert( $ref, "application/ezc" ); + } + catch ( ezcImageMimeTypeUnsupportedException $e ) + { + return; + } + $this->fail( "Exception for unknown conversion not thrown." ); + } + + public function testApplyFilterSingle() + { + $srcPath = $this->testFiles["jpeg"]; + $dstPath = $this->getTempPath(); + + $ref = $this->handler->load( $srcPath ); + $this->handler->applyFilter( $ref, new ezcImageFilter( "scale", array( "width" => 200, "height" => 200, "direction" => ezcImageGeometryFilters::SCALE_BOTH ) ) ); + $this->handler->save( $ref, $dstPath ); + $this->assertImageSimilar( + $this->getReferencePath(), + $dstPath, + "Applying single filter through handler failed.", + // ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + 60 + ); + } + + public function testApplyFilterMultiple() + { + $srcPath = $this->testFiles["jpeg"]; + $dstPath = $this->getTempPath(); + + $ref = $this->handler->load( $srcPath ); + $this->handler->applyFilter( $ref, new ezcImageFilter( "scale", array( "width" => 200, "height" => 200, "direction" => ezcImageGeometryFilters::SCALE_BOTH ) ) ); + $this->handler->applyFilter( $ref, new ezcImageFilter( "crop", array( "x" => 50, "width" => 100, "y" => 50, "height" => 100 ) ) ); + $this->handler->applyFilter( $ref, new ezcImageFilter( "colorspace", array( "space" => ezcImageColorspaceFilters::COLORSPACE_SEPIA ) ) ); + $this->handler->save( $ref, $dstPath ); + + $this->assertImageSimilar( + $this->getReferencePath(), + $dstPath, + "Applying multiple filter through handler failed.", + // ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + 80 + ); + } + + public function testApplyFilterFailureNonExistent() + { + $srcPath = $this->testFiles["jpeg"]; + $dstPath = $this->getTempPath(); + + $ref = $this->handler->load( $srcPath ); + + try + { + $this->handler->applyFilter( + $ref, + new ezcImageFilter( + "non-existent", + array( "width" => 200, "height" => 200, "direction" => ezcImageGeometryFilters::SCALE_BOTH ) + ) + ); + $this->fail( 'Exception not throwen on apply of non-existent filter.' ); + } + catch ( ezcImageFilterNotAvailableException $e ) + {} + } + + public function testConvertTransparentNonTransparent() + { + + $srcPath = $this->testFiles["png_transparent"]; + $dstPath = $this->getTempPath(); + + $ref = $this->handler->load( $srcPath ); + + $options = new ezcImageSaveOptions(); + $options->transparencyReplacementColor = array( 255, 0, 0 ); + + $this->handler->save( $ref, $dstPath, 'image/jpeg', $options ); + + $this->handler->close( $ref ); + $this->assertImageSimilar( + $this->getReferencePath(), + $dstPath, + "Converting transparent background failed.", + 500 + ); + } +} +?> diff --git a/include/ezcomponents/ImageConversion/tests/handlershell_test.php b/include/ezcomponents/ImageConversion/tests/handlershell_test.php new file mode 100644 index 000000000..933d2a928 --- /dev/null +++ b/include/ezcomponents/ImageConversion/tests/handlershell_test.php @@ -0,0 +1,281 @@ +markTestSkipped( $e->getMessage() ); + } + $this->handlerClass = "ezcImageImagemagickHandler"; + parent::setUp(); + } + + + public function testLoadSuccess() + { + $filePath = $this->testFiles["jpeg"]; + + $ref = $this->handler->load( $filePath ); + + $refProp = $this->getReferences(); + $imageRef = current( $refProp ); + + $this->handler->close( $ref ); + $this->assertSame( + $filePath, + $imageRef["file"], + "Image reference not registered correctly." + ); + + $this->assertSame( + $imageRef["mime"], + "image/jpeg", + "Image reference not registered correctly." + ); + + } + + public function testLoadFailureFilenotexists() + { + $filePath = $this->testFiles["nonexistent"]; + + try + { + $ref = $this->handler->load( $filePath ); + } + catch ( ezcBaseFileNotFoundException $e ) + { + return; + } + $this->fail( "Required exception not thrown on not existing file." ); + } + + public function testLoadFailureUnknownmimetype() + { + $filePath = $this->testFiles["text"]; + + try + { + $ref = $this->handler->load( $filePath ); + } + catch ( ezcImageMimeTypeUnsupportedException $e ) + { + return; + } + $this->fail( "Required exception not thrown on not existing file." ); + } + + public function testCloseSuccess() + { + $srcPath = $this->testFiles["jpeg"]; + $ref = $this->handler->load( $srcPath ); + + $refProp = $this->getReferences(); + $tmpFile = $refProp[$ref]["resource"]; + + $this->handler->close( $ref ); + + $refProp = $this->getReferences(); + + $this->assertFalse( + isset( $refProp[$ref] ), + "Reference not freed successfully." + ); + $this->assertFalse( + file_exists( $tmpFile ), + "Temporary file not deleted successfully." + ); + } + + public function testRemoveTempFilesInDtorSuccess() + { + $filePath = $this->testFiles["jpeg"]; + + $ref = $this->handler->load( $filePath ); + + $refProp = $this->getReferences(); + $imageRef = current( $refProp ); + + // Manually destruct handler + unset( $this->handler ); + + $this->assertFalse( + file_exists( $imageRef["resource"] ), + "Image reference not closed correctly in dtor." + ); + + } + + public function testApplyFilterSingle() + { + + $srcPath = $this->testFiles["jpeg"]; + $dstPath = $this->getTempPath(); + + $ref = $this->handler->load( $srcPath ); + $this->handler->applyFilter( $ref, new ezcImageFilter( "scale", array( "width" => 200, "height" => 200, "direction" => ezcImageGeometryFilters::SCALE_BOTH ) ) ); + $this->handler->save( $ref, $dstPath ); + $this->handler->close( $ref ); + $this->assertImageSimilar( + $this->getReferencePath(), + $dstPath, + "Applying single filter through handler failed.", + 300 + ); + } + + public function testApplyFilterMultiple() + { + $srcPath = $this->testFiles["jpeg"]; + $dstPath = $this->getTempPath(); + + $ref = $this->handler->load( $srcPath ); + + $this->handler->applyFilter( $ref, new ezcImageFilter( "scale", array( "width" => 200, "height" => 200, "direction" => ezcImageGeometryFilters::SCALE_BOTH ) ) ); + $this->handler->applyFilter( $ref, new ezcImageFilter( "crop", array( "x" => 50, "width" => 100, "y" => 50, "height" => 100 ) ) ); + $this->handler->applyFilter( $ref, new ezcImageFilter( "colorspace", array( "space" => ezcImageColorspaceFilters::COLORSPACE_SEPIA ) ) ); + + $this->handler->save( $ref, $dstPath ); + + $this->handler->close( $ref ); + $this->assertImageSimilar( + $this->getReferencePath(), + $dstPath, + "Applying multiple filter through handler failed.", + // ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + 12000 + ); + // @ todo: Orphan! Remove! + $this->removeTempDir(); + } + + public function testSaveNewfileQualityLow() + { + $srcPath = $this->testFiles["png"]; + $dstPath = $this->getTempPath(); + + $handler = new ezcImageGdHandler( ezcImageGdHandler::defaultSettings() ); + $ref = $handler->load( $srcPath ); + + $opts = new ezcImageSaveOptions(); + $opts->quality = 0; + + $handler->save( $ref, $dstPath, "image/jpeg", $opts ); + + $this->assertTrue( + filesize( $dstPath ) < 2000, + "File saved with too high quality." + ); + } + + public function testSaveNewfileQualityHigh() + { + $srcPath = $this->testFiles["png"]; + $dstPath = $this->getTempPath(); + + $handler = new ezcImageGdHandler( ezcImageGdHandler::defaultSettings() ); + $ref = $handler->load( $srcPath ); + + $opts = new ezcImageSaveOptions(); + $opts->quality = 100; + + $handler->save( $ref, $dstPath, "image/jpeg", $opts ); + + $this->assertTrue( + filesize( $dstPath ) > 30000, + "File saved with too low quality." + ); + } + + public function testSaveNewfileCompressionLow() + { + $srcPath = $this->testFiles["png"]; + $dstPath = $this->getTempPath(); + + $handler = new ezcImageGdHandler( ezcImageGdHandler::defaultSettings() ); + $ref = $handler->load( $srcPath ); + + $opts = new ezcImageSaveOptions(); + $opts->compression = 0; + + $handler->save( $ref, $dstPath, "image/png", $opts ); + + $this->assertTrue( + filesize( $dstPath ) > 100000, + "File saved with too high compression." + ); + } + + public function testSaveNewfileCompressionHigh() + { + $srcPath = $this->testFiles["png"]; + $dstPath = $this->getTempPath(); + + $handler = new ezcImageGdHandler( ezcImageGdHandler::defaultSettings() ); + $ref = $handler->load( $srcPath ); + + $opts = new ezcImageSaveOptions(); + $opts->compression = 9; + + $handler->save( $ref, $dstPath, "image/png", $opts ); + + $this->assertTrue( + filesize( $dstPath ) < 40000, + "File saved with too low compression." + ); + } + + public function testConvertTransparentNonTransparent() + { + + $srcPath = $this->testFiles["png_transparent"]; + $dstPath = $this->getTempPath(); + + $ref = $this->handler->load( $srcPath ); + + $options = new ezcImageSaveOptions(); + $options->transparencyReplacementColor = array( 255, 0, 0 ); + + $this->handler->save( $ref, $dstPath, 'image/jpeg', $options ); + + $this->handler->close( $ref ); + $this->assertImageSimilar( + $this->getReferencePath(), + $dstPath, + "Converting transparent background failed.", + 500 + ); + } +} +?> diff --git a/include/ezcomponents/ImageConversion/tests/save_options_test.php b/include/ezcomponents/ImageConversion/tests/save_options_test.php new file mode 100644 index 000000000..8d863ba51 --- /dev/null +++ b/include/ezcomponents/ImageConversion/tests/save_options_test.php @@ -0,0 +1,103 @@ +assertNull( $opt->compression ); + $this->assertNull( $opt->quality ); + $this->assertNull( $opt->transparencyReplacementColor ); + } + + public function testGetAccessFailure() + { + $opt = new ezcImageSaveOptions(); + + try + { + echo $opt->foo; + } + catch ( ezcBasePropertyNotFoundException $e ) + { + return; + } + $this->fail( "ezcBasePropertyNotFoundException not thrown on get access to invalid property foo." ); + } + + public function testSetAccessSuccess() + { + $opt = new ezcImageSaveOptions(); + + $this->assertSetProperty( + $opt, + 'compression', + range( 0, 9, 1 ) + ); + $this->assertSetProperty( + $opt, + 'quality', + range( 0, 100, 10 ) + ); + $this->assertSetProperty( + $opt, + 'transparencyReplacementColor', + array( + array( 23, 42, 13 ), + array( 0, 0, 0 ), + ) + ); + } + + public function testSetAccessFailure() + { + $opt = new ezcImageSaveOptions(); + + $this->assertSetPropertyFails( + $opt, + 'compression', + array( true, false, 23.42, 'foo', array(), new stdClass(), -1, 10, -23 ) + ); + $this->assertSetPropertyFails( + $opt, + 'quality', + array( true, false, 23.42, 'foo', array(), new stdClass(), -1, 101, -23 ) + ); + $this->assertSetPropertyFails( + $opt, + 'transparencyReplacementColor', + array( + true, false, 23.42, 'foo', array(), new stdClass(), -1, 101, + array( 42, 23 ), array( 'foo' => 42, 'bar' => 23 ), + array( 1 => 0, 2 => 0, 3 => 0 ), array( 'foo' => 'bar' ) + ) + ); + + try + { + $opt->foo = 23; + } + catch ( ezcBasePropertyNotFoundException $e ) + { + return; + } + $this->fail( "ezcBasePropertyNotFoundException not thrown on set access to invalid property foo." ); + } +} + +?> diff --git a/include/ezcomponents/ImageConversion/tests/suite.php b/include/ezcomponents/ImageConversion/tests/suite.php new file mode 100644 index 000000000..e5b03237c --- /dev/null +++ b/include/ezcomponents/ImageConversion/tests/suite.php @@ -0,0 +1,44 @@ +setName( "ImageConversion" ); + + $this->addTest( ezcImageConversionConverterTest::suite() ); + $this->addTest( ezcImageConversionTransformationTest::suite() ); + + $this->addTest( ezcImageConversionHandlerGdTest::suite() ); + $this->addTest( ezcImageConversionFiltersGdTest::suite() ); + + $this->addTest( ezcImageConversionHandlerShellTest::suite() ); + $this->addTest( ezcImageConversionFiltersShellTest::suite() ); + + $this->addTest( ezcImageConversionSaveOptionsTest::suite() ); + } + + public static function suite() + { + return new ezcImageConversionSuite( "ezcImageConversionSuite" ); + } +} +?> diff --git a/include/ezcomponents/ImageConversion/tests/test_case.php b/include/ezcomponents/ImageConversion/tests/test_case.php new file mode 100644 index 000000000..7badc94cd --- /dev/null +++ b/include/ezcomponents/ImageConversion/tests/test_case.php @@ -0,0 +1,100 @@ +testFiles[basename( $pathInfo["basename"], "." . $pathInfo["extension"] )] = realpath( $testFile ); + } + $this->testFiles["nonexistent"] = "nonexistent.jpg"; + $this->referencePath = "$dataDir/compare"; + } + + public function __destruct() + { + if ( ezcImageConversionTestCase::REMOVE_TEMP_DIRS === true ) + { + $this->removeTempDir(); + unset( ezcImageConversionTestCase::$tempDirs[get_class( $this )] ); + } + } + + protected function setUp() + { + if ( !ezcBaseFeatures::hasExtensionSupport( 'gd' ) ) + { + $this->markTestSkipped( 'ext/gd is required to run this test.' ); + } + } + + protected function getTempPath( $index = "" ) + { + return ezcImageConversionTestCase::REGENERATION_MODE === true + ? "{$this->referencePath}/{$this->getTestName( $index )}" + : "{$this->getTempBasePath()}/{$this->getTestName( $index )}"; + } + + protected function getReferencePath( $index = "" ) + { + return "{$this->referencePath}/{$this->getTestName( $index )}"; + } + + private function getTestName ( $index ) + { + $trace = debug_backtrace(); + if ( !isset( $trace[2]["class"] ) || !isset( $trace[2]["function"] ) ) + { + $this->fail( "BROKEN TEST CASE. MISSING OBJECT OR FUNCTION IN BACKTRACE" ); + } + return $trace[2]["class"] . "_" . $trace[2]["function"] . $index; + } + + private function getTempBasePath() + { + if ( !isset( ezcImageConversionTestCase::$tempDirs[get_class( $this )] ) ) + { + ezcImageConversionTestCase::$tempDirs[get_class( $this )] = $this->createTempDir( get_class( $this ) ); + } + return ezcImageConversionTestCase::$tempDirs[get_class( $this )]; + } +} + +?> diff --git a/include/ezcomponents/ImageConversion/tests/transformation_test.php b/include/ezcomponents/ImageConversion/tests/transformation_test.php new file mode 100644 index 000000000..90e1f1d19 --- /dev/null +++ b/include/ezcomponents/ImageConversion/tests/transformation_test.php @@ -0,0 +1,970 @@ +testFiltersSuccess = array( + 0 => array( + 0 => new ezcImageFilter( + "scaleExact", + array( + "width" => 50, + "height" => 50, + "direction" => ezcImageGeometryFilters::SCALE_BOTH, + ) + ), + 1 => new ezcImageFilter( + "crop", + array( + "x" => 10, + "width" => 30, + "y" => 10, + "height"=> 30, + ) + ), + 2 => new ezcImageFilter( + "colorspace", + array( + "space" => ezcImageColorspaceFilters::COLORSPACE_GREY, + ) + ), + ), + 1 => array( + 0 => new ezcImageFilter( + "scale", + array( + "width" => 50, + "height" => 1000, + "direction" => ezcImageGeometryFilters::SCALE_DOWN, + ) + ), + 2 => new ezcImageFilter( + "colorspace", + array( + "space" => ezcImageColorspaceFilters::COLORSPACE_MONOCHROME, + ) + ), + ), + 2 => array( + 0 => new ezcImageFilter( + "scaleHeight", + array( + "height" => 70, + "direction" => ezcImageGeometryFilters::SCALE_BOTH, + ) + ), + 2 => new ezcImageFilter( + "colorspace", + array( + "space" => ezcImageColorspaceFilters::COLORSPACE_SEPIA, + ) + ), + ), + // Optional parameter dismissed + 3 => array( + 0 => new ezcImageFilter( + "scale", + array( + "width" => 50, + "height" => 50, + ) + ), + ), + ); + $this->testFiltersFailure = array( + // Nonexistant filter + 0 => array( + 0 => new ezcImageFilter( + "toby", + array( + "width" => 50, + "height" => 50, + "direction" => ezcImageGeometryFilters::SCALE_BOTH, + ) + ), + 1 => new ezcImageFilter( + "crop", + array( + "x" => 10, + "width" => 30, + "y" => 10, + "height"=> 30, + ) + ), + 2 => new ezcImageFilter( + "colorspace", + array( + "space" => ezcImageColorspaceFilters::COLORSPACE_GREY, + ) + ), + ), + // Missing option + 1 => array( + 0 => new ezcImageFilter( + "scale", + array( + ) + ), + 2 => new ezcImageFilter( + "colorspace", + array( + "space" => ezcImageColorspaceFilters::COLORSPACE_MONOCHROME, + ) + ), + ), + ); + + $conversionsIn = array( + "image/gif" => "image/png", + "image/xpm" => "image/jpeg", + "image/wbmp" => "image/jpeg", + ); + if ( ezcBaseFeatures::os() === 'Windows' ) + { + unset( $conversionsIn["image/xpm"] ); + } + + $settings = new ezcImageConverterSettings( + array( new ezcImageHandlerSettings( "GD", "ezcImageGdHandler" ) ), + $conversionsIn + ); + $this->converter = new ezcImageConverter( $settings ); + } + catch ( Exception $e ) + { + $this->markTestSkipped( $e->getMessage() ); + } + } + + protected function tearDown() + { + unset( $this->converter ); + } + + public function testConstructSuccess() + { + $filtersIn = array( + 0 => new ezcImageFilter( + "scale", + array( + "width" => 50, + "height" => 50, + "direction" => ezcImageGeometryFilters::SCALE_BOTH, + ) + ), + 1 => new ezcImageFilter( + "scaleWidth", + array( + "width" => 40, + "direction" => ezcImageGeometryFilters::SCALE_BOTH, + ) + ), + 2 => new ezcImageFilter( + "crop", + array( + "xStart" => 10, + "xEnd" => 40, + "yStart" => 10, + "yEnd" => 40, + ) + ), + ); + + $mimeIn = array( "image/jpeg" ); + + $trans = new ezcImageTransformation( $this->converter, "test", $filtersIn, $mimeIn ); + + $this->assertAttributeEquals( + $mimeIn, + "mimeOut", + $trans, + "MIME types not registered correctly in transformation." + ); + $this->assertAttributeEquals( + $filtersIn, + "filters", + $trans, + "Filters not registered correctly in transformation." + ); + } + + public function testConstructFailureFilterNotAvailable() + { + $filtersIn = array( + 0 => new ezcImageFilter( + "toby", + array( + "width" => 50, + "height" => 50, + "direction" => ezcImageGeometryFilters::SCALE_BOTH, + ) + ), + ); + + $mimeIn = array( "image/jpeg" ); + + try + { + $trans = new ezcImageTransformation( $this->converter, "test", $filtersIn, $mimeIn ); + } + catch ( ezcImageFilterNotAvailableException $e ) + { + return; + } + $this->fail( "Transformation did not throw exception on invalid filter." ); + } + + public function testConstructFailureInvalidMimeType() + { + $filtersIn = array( + 0 => new ezcImageFilter( + "scale", + array( + "width" => 50, + "height" => 50, + "direction" => ezcImageGeometryFilters::SCALE_BOTH, + ) + ), + ); + + $mimeIn = array( "application/toby" ); + + try + { + $trans = new ezcImageTransformation( $this->converter, "test", $filtersIn, $mimeIn ); + } + catch ( ezcImageMimeTypeUnsupportedException $e ) + { + return; + } + $this->fail( "Transformation did not throw exception on invalid MIME type." ); + } + + public function testAddFilterSuccess() + { + $filtersIn = array( + 0 => new ezcImageFilter( + "scale", + array( + "width" => 50, + "height" => 50, + "direction" => ezcImageGeometryFilters::SCALE_BOTH, + ) + ), + ); + + $newFilter = new ezcImageFilter( + "scaleWidth", + array( + "width" => 40, + "direction" => ezcImageGeometryFilters::SCALE_BOTH, + ) + ); + + $filtersOut = $filtersIn; + $filtersOut[] = $newFilter; + + $mimeIn = array( "image/jpeg" ); + + $trans = new ezcImageTransformation( $this->converter, "test", $filtersIn, $mimeIn ); + + $trans->addFilter( $newFilter ); + + $this->assertAttributeEquals( + $filtersOut, + "filters", + $trans, + "Filters not added correctly to transformation." + ); + } + + public function testAddFilterFailure() + { + $filtersIn = array( + 0 => new ezcImageFilter( + "scale", + array( + "width" => 50, + "height" => 50, + "direction" => ezcImageGeometryFilters::SCALE_BOTH, + ) + ), + ); + + $newFilter = new ezcImageFilter( + "toby", + array( + "width" => 40, + "direction" => ezcImageGeometryFilters::SCALE_BOTH, + ) + ); + + $filtersOut = $filtersIn; + $filtersOut[] = $newFilter; + + $mimeIn = array( "image/jpeg" ); + + $trans = new ezcImageTransformation( $this->converter, "test", $filtersIn, $mimeIn ); + + try + { + $trans->addFilter( $newFilter ); + } + catch ( ezcImageFilterNotAvailableException $e ) + { + return; + } + $this->fail( "Transformation did not throw exception on invalid filter." ); + } + + public function testGetOutMimeSuccessNoTransform() + { + $filtersIn = array( + 0 => new ezcImageFilter( + "scale", + array( + "width" => 50, + "height" => 50, + "direction" => ezcImageGeometryFilters::SCALE_BOTH, + ) + ), + ); + + $mimeIn = array( "image/jpeg" ); + + $trans = new ezcImageTransformation( $this->converter, "test", $filtersIn, $mimeIn ); + + $this->assertEquals( + "image/jpeg", + $trans->getOutMime( $this->testFiles["jpeg"] ), + "Transformation returned incorrect output MIME type." + ); + } + + public function testGetOutMimeSuccessExplicitTransform() + { + $filtersIn = array( + 0 => new ezcImageFilter( + "scale", + array( + "width" => 50, + "height" => 50, + "direction" => ezcImageGeometryFilters::SCALE_BOTH, + ) + ), + ); + + $mimeIn = array( "image/jpeg", "image/png" ); + + $trans = new ezcImageTransformation( $this->converter, "test", $filtersIn, $mimeIn ); + + $this->assertEquals( + "image/png", + $trans->getOutMime( $this->testFiles["gif_nonanimated"] ), + "Transformation returned incorrect output MIME type." + ); + } + + public function testGetOutMimeSuccessImplicitTransform() + { + $filtersIn = array( + 0 => new ezcImageFilter( + "scale", + array( + "width" => 50, + "height" => 50, + "direction" => ezcImageGeometryFilters::SCALE_BOTH, + ) + ), + ); + + $mimeIn = array( "image/jpeg" ); + + $trans = new ezcImageTransformation( $this->converter, "test", $filtersIn, $mimeIn ); + + $this->assertEquals( + "image/jpeg", + $trans->getOutMime( $this->testFiles["gif_nonanimated"] ), + "Transformation returned incorrect output MIME type." + ); + } + + public function testTransformSuccessPng_1() + { + $trans = new ezcImageTransformation( + $this->converter, + "test", + $this->testFiltersSuccess[0], + array( "image/jpeg", "image/png" ) + ); + $trans->transform( $this->testFiles["png"], $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not generated successfully.", + // ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + 20 + ); + } + + public function testTransformFailureText() + { + $trans = new ezcImageTransformation( + $this->converter, + "test", + $this->testFiltersSuccess[0], + array( "image/jpeg", "image/png" ) + ); + + try + { + $trans->transform( $this->testFiles["text"], $this->getTempPath() ); + } + catch ( ezcImageTransformationException $e ) + { + return; + } + $this->fail( "Exception not thrown on invalid image input." ); + } + + public function testTransformSuccessPng_2() + { + $trans = new ezcImageTransformation( + $this->converter, + "test", + $this->testFiltersSuccess[1], + array( "image/jpeg", "image/png" ) + ); + $trans->transform( $this->testFiles["png"], $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not generated successfully.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testTransformSuccessPng_3() + { + $trans = new ezcImageTransformation( + $this->converter, + "test", + $this->testFiltersSuccess[2], + array( "image/jpeg", "image/png" ) + ); + $trans->transform( $this->testFiles["png"], $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not generated successfully.", + // ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + 40 + ); + } + + public function testTransformSuccessPng_4() + { + $trans = new ezcImageTransformation( + $this->converter, + "test", + $this->testFiltersSuccess[3], + array( "image/jpeg", "image/png" ) + ); + $trans->transform( $this->testFiles["png"], $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not generated successfully.", + // ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + 20 + ); + } + + public function testTransformSuccessJpeg_1() + { + $trans = new ezcImageTransformation( + $this->converter, + "test", + $this->testFiltersSuccess[0], + array( "image/jpeg", "image/png" ) + ); + $trans->transform( $this->testFiles["jpeg"], $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not generated successfully.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testTransformSuccessJpeg_2() + { + $trans = new ezcImageTransformation( + $this->converter, + "test", + $this->testFiltersSuccess[1], + array( "image/jpeg", "image/png" ) + ); + $trans->transform( $this->testFiles["jpeg"], $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not generated successfully.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testTransformSuccessJpeg_3() + { + $trans = new ezcImageTransformation( + $this->converter, + "test", + $this->testFiltersSuccess[2], + array( "image/jpeg", "image/png" ) + ); + $trans->transform( $this->testFiles["jpeg"], $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not generated successfully.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testTransformSuccessGif_1() + { + $trans = new ezcImageTransformation( + $this->converter, + "test", + $this->testFiltersSuccess[0], + array( "image/jpeg", "image/png" ) + ); + $trans->transform( $this->testFiles["gif_nonanimated"], $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not generated successfully.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testTransformSuccessGif_2() + { + $trans = new ezcImageTransformation( + $this->converter, + "test", + $this->testFiltersSuccess[1], + array( "image/jpeg", "image/png" ) + ); + $trans->transform( $this->testFiles["gif_nonanimated"], $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not generated successfully.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testTransformSuccessGif_3() + { + $trans = new ezcImageTransformation( + $this->converter, + "test", + $this->testFiltersSuccess[2], + array( "image/jpeg", "image/png" ) + ); + $trans->transform( $this->testFiles["gif_nonanimated"], $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not generated successfully.", + ezcImageConversionTestCase::DEFAULT_SIMILARITY_GAP + ); + } + + public function testTransformSuccessGifAnimated() + { + $trans = new ezcImageTransformation( + $this->converter, + "test", + $this->testFiltersSuccess[2], + array( "image/jpeg", "image/png" ) + ); + $trans->transform( $this->testFiles["gif_animated"], $this->getTempPath() ); + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not generated successfully.", + 7000 + ); + } + + public function testTransformFailureFilterNotAvailable() + { + try + { + $trans = new ezcImageTransformation( + $this->converter, + "test", + $this->testFiltersFailure[0], + array( "image/jpeg", "image/png" ) + ); + $trans->transform( $this->testFiles["jpeg"], $this->getTempPath() ); + } + catch ( ezcImageFilterNotAvailableException $e ) + { + return; + } + $this->fail( "Expected exception not thrown." ); + + } + + public function testTransformFailureMissingFilterOption() + { + $trans = new ezcImageTransformation( + $this->converter, + "test", + $this->testFiltersFailure[1], + array( "image/jpeg", "image/png" ) + ); + try + { + $trans->transform( $this->testFiles["jpeg"], $this->getTempPath() ); + } + catch ( ezcImageTransformationException $e ) + { + return; + } + $this->fail( "Expected exception not thrown." ); + + } + + public function testTransformFailureFileNotFound() + { + $trans = new ezcImageTransformation( + $this->converter, + "test", + $this->testFiltersFailure[1], + array( "image/jpeg", "image/png" ) + ); + try + { + $trans->transform( $this->testFiles["nonexistent"], $this->getTempPath() ); + } + catch ( ezcBaseFileNotFoundException $e ) + { + return; + } + $this->fail( "Expected exception not thrown." ); + + } + + // Test for bug #8137: ImageConversion - ezcImageTransformation fails on + public function testMultiTransform() + { + $mimeOut = array( "image/jpeg" ); + $trans = new ezcImageTransformation( $this->converter, "test", $this->testFiltersSuccess[0], $mimeOut ); + + $trans->transform( $this->testFiles["jpeg"], $this->getTempPath( "jpeg" ) ); + $trans->transform( $this->testFiles["png"], $this->getTempPath( "png" ) ); + + $this->assertImageSimilar( + $this->getReferencePath( "jpeg" ), + $this->getTempPath( "jpeg" ), + "Transformation did not produce correct output.", + 2000 + ); + $this->assertImageSimilar( + $this->getReferencePath( "png" ), + $this->getTempPath( "png" ), + "Transformation did not produce correct output.", + 2000 + ); + } + + // Test for bug #10949: rename php error if file allread exists + public function testDoubleTransform() + { + $mimeOut = array( "image/jpeg" ); + $trans = new ezcImageTransformation( $this->converter, "test", $this->testFiltersSuccess[0], $mimeOut ); + + $resFile = $this->getTempPath( "jpeg" ); + $trans->transform( $this->testFiles["jpeg"], $resFile ); + $trans->transform( $this->testFiles["jpeg"], $resFile ); + + // Should not fail or produce a notice + } + + public function testTransformQualityLow() + { + $mimeOut = array( "image/jpeg" ); + $opts = new ezcImageSaveOptions(); + $opts->quality = 0; + // irrelevant, but set! + $opts->compression = 9; + $dstPath = $this->getTempPath( "jpeg" ); + + $trans = new ezcImageTransformation( $this->converter, "test", array(), $mimeOut, $opts ); + $trans->transform( $this->testFiles["png"], $dstPath ); + + $this->assertThat( + filesize( $dstPath ), + $this->lessThan( 2000 ), + "File saved with too high quality." + ); + } + + public function testTransformQualityHigh() + { + $mimeOut = array( "image/jpeg" ); + $opts = new ezcImageSaveOptions(); + $opts->quality = 100; + // irrelevant, but set! + $opts->compression = 9; + $dstPath = $this->getTempPath( "jpeg" ); + + $trans = new ezcImageTransformation( $this->converter, "test", array(), $mimeOut, $opts ); + $trans->transform( $this->testFiles["png"], $dstPath ); + + $this->assertThat( + filesize( $dstPath ), + $this->greaterThan( 30000 ), + "File saved with too low quality." + ); + } + + public function testTransformCompressionLow() + { + $mimeOut = array( "image/png" ); + $opts = new ezcImageSaveOptions(); + $opts->compression = 0; + // irrelevant, but set! + $opts->quality = 100; + $dstPath = $this->getTempPath( "png" ); + + $trans = new ezcImageTransformation( $this->converter, "test", array(), $mimeOut, $opts ); + $trans->transform( $this->testFiles["png"], $dstPath ); + + $this->assertThat( + filesize( $dstPath ), + $this->greaterThan( 100000 ), + "File saved with too high compression." + ); + } + + public function testTransformCompressionHigh() + { + $mimeOut = array( "image/png" ); + $opts = new ezcImageSaveOptions(); + $opts->compression = 9; + // irrelevant, but set! + $opts->quality = 100; + $dstPath = $this->getTempPath( "png" ); + + $trans = new ezcImageTransformation( $this->converter, "test", array(), $mimeOut, $opts ); + $trans->transform( $this->testFiles["png"], $dstPath ); + + $this->assertThat( + filesize( $dstPath ), + $this->lessThan( 40000 ), + "File saved with too low compression." + ); + } + + public function testApplyTransformationFailureFileNotReadable() + { + $tmpDir = $this->createTempDir( __CLASS__ ); + $srcFile = "$tmpDir/non_readable_png.png"; + + copy( $this->testFiles['png'], $srcFile ); + chmod( $srcFile, 0000 ); + + $trans = new ezcImageTransformation( $this->converter, "test", array(), array( 'image/jpeg' ) ); + try + { + $trans->transform( $srcFile, $srcFile ); + $this->fail( 'Exception not throwen with unreadable file.' ); + } + catch ( ezcBaseFilePermissionException $e ) + {} + + $this->removeTempDir(); + } + + public function testApplyTransformationFailureDestinationNotOverwriteable() + { + $tmpDir = $this->createTempDir( __CLASS__ ); + $dstFile = "$tmpDir/non_writeable_png.png"; + + touch( $dstFile ); + chmod( dirname( $dstFile ), 0555 ); + clearstatcache(); + + $trans = new ezcImageTransformation( $this->converter, "test", array(), array( 'image/jpeg' ) ); + try + { + $trans->transform( $this->testFiles['png'], $dstFile ); + $this->fail( 'Exception not throwen with not writeable file.' ); + } + catch ( ezcImageFileNotProcessableException $e ) + {} + + chmod( dirname( $dstFile ), 0777 ); + clearstatcache(); + + $this->removeTempDir(); + } + + public function testCreateTransformationFailureInvalidFilters() + { + $filters = $this->testFiltersSuccess[0]; + $filters[] = new stdClass(); + + try + { + $trans = new ezcImageTransformation( $this->converter, 'test', $filters, array( 'image/jpeg' ) ); + $this->fail( 'Exception not throwen on invalid filter in initial filter array.' ); + } + catch ( ezcBaseSettingValueException $e ) + {} + } + + public function testAddFilterBefore() + { + $newFilter = new ezcImageFilter( + 'scale', + array( 'width' => 10, 'height' => 10 ) + ); + $filtersBefore = $this->testFiltersSuccess[0]; + $filtersAfter = $filtersBefore; + array_splice( $filtersAfter, 1, 0, array( $newFilter ) ); + + $trans = new ezcImageTransformation( $this->converter, 'test', $filtersBefore, array( 'image/jpeg' ) ); + + $trans->addFilter( $newFilter, 1 ); + + $this->assertAttributeEquals( + $filtersAfter, + 'filters', + $trans + ); + } + + public function testTransformationChangingHandlersForFilters() + { + $gdSettings = new ezcImageHandlerSettings( 'GD', 'ezcImageGdHandler' ); + $imSettings = new ezcImageHandlerSettings( 'IM', 'ezcImageImagemagickHandler'); + try + { + $gd = new ezcImageGdHandler( $gdSettings ); + $im = new ezcImageImagemagickHandler( $imSettings ); + } + catch ( ezcImageHandlerNotAvailableException $e ) + { + $this->markTestSkipped( 'Needs both image handlers.' ); + } + + $conv = new ezcImageConverter( + new ezcImageConverterSettings( + array( $gdSettings, $imSettings ) + ) + ); + + $trans = new ezcImageTransformation( + $conv, + 'test', + array( + new ezcImageFilter( + 'scale', + array( 'width' => 100, 'height' => 100 ) + ), + new ezcImageFilter( + 'swirl', + array( 'value' => 100 ) + ), + ), + array( 'image/png' ) + ); + + + $trans->transform( $this->testFiles['png'], $this->getTempPath() ); + + $this->assertImageSimilar( + $this->getReferencePath(), + $this->getTempPath(), + "Image not generated successfully", + 500 + ); + } + + public function testTransformationChangingHandlersForConversion() + { + $gdSettings = new ezcImageHandlerSettings( 'GD', 'ezcImageGdHandler' ); + $imSettings = new ezcImageHandlerSettings( 'IM', 'ezcImageImagemagickHandler'); + try + { + $gd = new ezcImageGdHandler( $gdSettings ); + $im = new ezcImageImagemagickHandler( $imSettings ); + } + catch ( ezcImageHandlerNotAvailableException $e ) + { + $this->markTestSkipped( 'Needs both image handlers.' ); + } + + $conv = new ezcImageConverter( + new ezcImageConverterSettings( + array( $gdSettings, $imSettings ) + ) + ); + + $trans = new ezcImageTransformation( + $conv, + 'test', + array( + new ezcImageFilter( + 'scale', + array( 'width' => 100, 'height' => 100 ) + ), + ), + array( 'image/g3fax' ) + ); + + + $trans->transform( $this->testFiles['png'], $this->getTempPath() ); + + // No assertion, must simply not throw an exception and just raises code coverage + } + +} +?> diff --git a/include/ezcomponents/LICENSE b/include/ezcomponents/LICENSE new file mode 100644 index 000000000..7c28222ef --- /dev/null +++ b/include/ezcomponents/LICENSE @@ -0,0 +1,32 @@ +eZ Components Licence +===================== + +New BSD Licence +--------------- + +Copyright (c) 2005-2008, eZ Systems A.S. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. +* Neither the name of eZ Systems A.S. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/include/ezcomponents/autoload/archive_autoload.php b/include/ezcomponents/autoload/archive_autoload.php new file mode 100644 index 000000000..bfb1d9a57 --- /dev/null +++ b/include/ezcomponents/autoload/archive_autoload.php @@ -0,0 +1,45 @@ + 'Archive/exceptions/archive_exception.php', + 'ezcArchiveBlockSizeException' => 'Archive/exceptions/archive_block_size.php', + 'ezcArchiveChecksumException' => 'Archive/exceptions/archive_checksum.php', + 'ezcArchiveEmptyException' => 'Archive/exceptions/archive_empty.php', + 'ezcArchiveEntryPrefixException' => 'Archive/exceptions/archive_entry_prefix.php', + 'ezcArchiveInternalException' => 'Archive/exceptions/archive_internal_exception.php', + 'ezcArchiveIoException' => 'Archive/exceptions/archive_io.php', + 'ezcArchiveUnknownTypeException' => 'Archive/exceptions/archive_unknown_type.php', + 'ezcArchiveValueException' => 'Archive/exceptions/archive_value.php', + 'ezcArchive' => 'Archive/archive.php', + 'ezcArchiveV7Header' => 'Archive/tar/headers/tar_v7.php', + 'ezcArchiveV7Tar' => 'Archive/tar/v7_tar.php', + 'ezcArchiveFile' => 'Archive/file/file.php', + 'ezcArchiveLocalFileHeader' => 'Archive/zip/headers/zip_local_file.php', + 'ezcArchiveUstarHeader' => 'Archive/tar/headers/tar_ustar.php', + 'ezcArchiveUstarTar' => 'Archive/tar/ustar_tar.php', + 'ezcArchiveBlockFile' => 'Archive/file/block_file.php', + 'ezcArchiveCentralDirectoryEndHeader' => 'Archive/zip/headers/zip_central_directory_end.php', + 'ezcArchiveCentralDirectoryHeader' => 'Archive/zip/headers/zip_central_directory.php', + 'ezcArchiveCharacterFile' => 'Archive/file/character_file.php', + 'ezcArchiveChecksums' => 'Archive/checksums.php', + 'ezcArchiveEntry' => 'Archive/archive_entry.php', + 'ezcArchiveFileStructure' => 'Archive/file_structure.php', + 'ezcArchiveGnuHeader' => 'Archive/tar/headers/tar_gnu.php', + 'ezcArchiveGnuTar' => 'Archive/tar/gnu_tar.php', + 'ezcArchiveMime' => 'Archive/archive_mime.php', + 'ezcArchiveOptions' => 'Archive/options/archive.php', + 'ezcArchivePaxHeader' => 'Archive/tar/headers/tar_pax.php', + 'ezcArchivePaxTar' => 'Archive/tar/pax_tar.php', + 'ezcArchiveStatMode' => 'Archive/stat_mode.php', + 'ezcArchiveZip' => 'Archive/zip/zip.php', +); +?> diff --git a/include/ezcomponents/autoload/authentication_autoload.php b/include/ezcomponents/autoload/authentication_autoload.php new file mode 100644 index 000000000..11dbba85c --- /dev/null +++ b/include/ezcomponents/autoload/authentication_autoload.php @@ -0,0 +1,52 @@ + 'Authentication/exceptions/authentication_exception.php', + 'ezcAuthenticationLdapException' => 'Authentication/exceptions/ldap_exception.php', + 'ezcAuthenticationOpenidException' => 'Authentication/exceptions/openid_exception.php', + 'ezcAuthenticationTypekeyException' => 'Authentication/exceptions/typekey_exception.php', + 'ezcAuthenticationBignumLibrary' => 'Authentication/math/bignum_library.php', + 'ezcAuthenticationCredentials' => 'Authentication/credentials/credentials.php', + 'ezcAuthenticationDataFetch' => 'Authentication/interfaces/data_fetch.php', + 'ezcAuthenticationFilter' => 'Authentication/interfaces/authentication_filter.php', + 'ezcAuthenticationFilterOptions' => 'Authentication/options/filter_options.php', + 'ezcAuthenticationOpenidStore' => 'Authentication/filters/openid/openid_store.php', + 'ezcAuthenticationOpenidStoreOptions' => 'Authentication/options/openid_store_options.php', + 'ezcAuthentication' => 'Authentication/authentication.php', + 'ezcAuthenticationBcmathLibrary' => 'Authentication/math/bcmath_library.php', + 'ezcAuthenticationGmpLibrary' => 'Authentication/math/gmp_library.php', + 'ezcAuthenticationGroupFilter' => 'Authentication/filters/group/group_filter.php', + 'ezcAuthenticationGroupOptions' => 'Authentication/options/group_options.php', + 'ezcAuthenticationHtpasswdFilter' => 'Authentication/filters/htpasswd/htpasswd_filter.php', + 'ezcAuthenticationHtpasswdOptions' => 'Authentication/options/htpasswd_options.php', + 'ezcAuthenticationIdCredentials' => 'Authentication/credentials/id_credentials.php', + 'ezcAuthenticationLdapFilter' => 'Authentication/filters/ldap/ldap_filter.php', + 'ezcAuthenticationLdapInfo' => 'Authentication/filters/ldap/ldap_info.php', + 'ezcAuthenticationLdapOptions' => 'Authentication/options/ldap_options.php', + 'ezcAuthenticationMath' => 'Authentication/math/math.php', + 'ezcAuthenticationOpenidAssociation' => 'Authentication/filters/openid/openid_association.php', + 'ezcAuthenticationOpenidFileStore' => 'Authentication/filters/openid/openid_file_store.php', + 'ezcAuthenticationOpenidFileStoreOptions' => 'Authentication/options/openid_file_store_options.php', + 'ezcAuthenticationOpenidFilter' => 'Authentication/filters/openid/openid_filter.php', + 'ezcAuthenticationOpenidOptions' => 'Authentication/options/openid_options.php', + 'ezcAuthenticationOptions' => 'Authentication/options/authentication_options.php', + 'ezcAuthenticationPasswordCredentials' => 'Authentication/credentials/password_credentials.php', + 'ezcAuthenticationSession' => 'Authentication/session/authentication_session.php', + 'ezcAuthenticationSessionOptions' => 'Authentication/options/session_options.php', + 'ezcAuthenticationStatus' => 'Authentication/status/authentication_status.php', + 'ezcAuthenticationTokenFilter' => 'Authentication/filters/token/token_filter.php', + 'ezcAuthenticationTokenOptions' => 'Authentication/options/token_options.php', + 'ezcAuthenticationTypekeyFilter' => 'Authentication/filters/typekey/typekey_filter.php', + 'ezcAuthenticationTypekeyOptions' => 'Authentication/options/typekey_options.php', + 'ezcAuthenticationUrl' => 'Authentication/url/url.php', +); +?> diff --git a/include/ezcomponents/autoload/authentication_database_autoload.php b/include/ezcomponents/autoload/authentication_database_autoload.php new file mode 100644 index 000000000..e7caf5bcd --- /dev/null +++ b/include/ezcomponents/autoload/authentication_database_autoload.php @@ -0,0 +1,17 @@ + 'AuthenticationDatabaseTiein/filters/database/database_filter.php', + 'ezcAuthenticationDatabaseInfo' => 'AuthenticationDatabaseTiein/filters/database/database_info.php', + 'ezcAuthenticationDatabaseOptions' => 'AuthenticationDatabaseTiein/options/database_options.php', +); +?> diff --git a/include/ezcomponents/autoload/authentication_openid_autoload.php b/include/ezcomponents/autoload/authentication_openid_autoload.php new file mode 100644 index 000000000..76060495f --- /dev/null +++ b/include/ezcomponents/autoload/authentication_openid_autoload.php @@ -0,0 +1,16 @@ + 'AuthenticationDatabaseTiein/filters/openid/openid_db_store.php', + 'ezcAuthenticationOpenidDbStoreOptions' => 'AuthenticationDatabaseTiein/options/openid_db_store_options.php', +); +?> diff --git a/include/ezcomponents/autoload/base_autoload.php b/include/ezcomponents/autoload/base_autoload.php new file mode 100644 index 000000000..0a03efae5 --- /dev/null +++ b/include/ezcomponents/autoload/base_autoload.php @@ -0,0 +1,41 @@ + 'Base/exceptions/exception.php', + 'ezcBaseFileException' => 'Base/exceptions/file_exception.php', + 'ezcBaseAutoloadException' => 'Base/exceptions/autoload.php', + 'ezcBaseDoubleClassRepositoryPrefixException' => 'Base/exceptions/double_class_repository_prefix.php', + 'ezcBaseExtensionNotFoundException' => 'Base/exceptions/extension_not_found.php', + 'ezcBaseFileIoException' => 'Base/exceptions/file_io.php', + 'ezcBaseFileNotFoundException' => 'Base/exceptions/file_not_found.php', + 'ezcBaseFilePermissionException' => 'Base/exceptions/file_permission.php', + 'ezcBaseInitCallbackConfiguredException' => 'Base/exceptions/init_callback_configured.php', + 'ezcBaseInitInvalidCallbackClassException' => 'Base/exceptions/invalid_callback_class.php', + 'ezcBaseInvalidParentClassException' => 'Base/exceptions/invalid_parent_class.php', + 'ezcBasePropertyNotFoundException' => 'Base/exceptions/property_not_found.php', + 'ezcBasePropertyPermissionException' => 'Base/exceptions/property_permission.php', + 'ezcBaseSettingNotFoundException' => 'Base/exceptions/setting_not_found.php', + 'ezcBaseSettingValueException' => 'Base/exceptions/setting_value.php', + 'ezcBaseValueException' => 'Base/exceptions/value.php', + 'ezcBaseWhateverException' => 'Base/exceptions/whatever.php', + 'ezcBaseOptions' => 'Base/options.php', + 'ezcBaseStruct' => 'Base/struct.php', + 'ezcBase' => 'Base/base.php', + 'ezcBaseAutoloadOptions' => 'Base/options/autoload.php', + 'ezcBaseConfigurationInitializer' => 'Base/interfaces/configuration_initializer.php', + 'ezcBaseFeatures' => 'Base/features.php', + 'ezcBaseFile' => 'Base/file.php', + 'ezcBaseInit' => 'Base/init.php', + 'ezcBasePersistable' => 'Base/interfaces/persistable.php', + 'ezcBaseRepositoryDirectory' => 'Base/structs/repository_directory.php', +); +?> diff --git a/include/ezcomponents/autoload/cache_autoload.php b/include/ezcomponents/autoload/cache_autoload.php new file mode 100644 index 000000000..9bb0efddc --- /dev/null +++ b/include/ezcomponents/autoload/cache_autoload.php @@ -0,0 +1,63 @@ + 'Cache/exceptions/exception.php', + 'ezcCacheApcException' => 'Cache/exceptions/apc_exception.php', + 'ezcCacheInvalidDataException' => 'Cache/exceptions/invalid_data.php', + 'ezcCacheInvalidIdException' => 'Cache/exceptions/invalid_id.php', + 'ezcCacheInvalidMetaDataException' => 'Cache/exceptions/invalid_meta_data.php', + 'ezcCacheInvalidStorageClassException' => 'Cache/exceptions/invalid_storage_class.php', + 'ezcCacheMemcacheException' => 'Cache/exceptions/memcache_exception.php', + 'ezcCacheStackIdAlreadyUsedException' => 'Cache/exceptions/stack_id_already_used.php', + 'ezcCacheStackStorageUsedTwiceException' => 'Cache/exceptions/stack_storage_used_twice.php', + 'ezcCacheStackUnderflowException' => 'Cache/exceptions/stack_underflow.php', + 'ezcCacheUsedLocationException' => 'Cache/exceptions/used_location.php', + 'ezcCacheStackMetaDataStorage' => 'Cache/interfaces/meta_data_storage.php', + 'ezcCacheStackableStorage' => 'Cache/interfaces/stackable_storage.php', + 'ezcCacheStorage' => 'Cache/storage.php', + 'ezcCacheStackMetaData' => 'Cache/interfaces/meta_data.php', + 'ezcCacheStackReplacementStrategy' => 'Cache/interfaces/replacement_strategy.php', + 'ezcCacheStorageMemory' => 'Cache/storage/memory.php', + 'ezcCacheMemoryBackend' => 'Cache/backends/memory_backend.php', + 'ezcCacheStackBaseMetaData' => 'Cache/interfaces/base_meta_data.php', + 'ezcCacheStackBaseReplacementStrategy' => 'Cache/interfaces/base_replacement_strategy.php', + 'ezcCacheStorageApc' => 'Cache/storage/apc.php', + 'ezcCacheStorageApcOptions' => 'Cache/options/storage_apc.php', + 'ezcCacheStorageFile' => 'Cache/storage/file.php', + 'ezcCacheStorageMemcache' => 'Cache/storage/memcache.php', + 'ezcCacheApcBackend' => 'Cache/backends/apc/apc_backend.php', + 'ezcCacheManager' => 'Cache/manager.php', + 'ezcCacheMemcacheBackend' => 'Cache/backends/memcache/memcache_backend.php', + 'ezcCacheMemoryVarStruct' => 'Cache/structs/memory_var.php', + 'ezcCacheStack' => 'Cache/stack.php', + 'ezcCacheStackConfigurator' => 'Cache/interfaces/stack_configurator.php', + 'ezcCacheStackLfuMetaData' => 'Cache/stack/lfu_meta_data.php', + 'ezcCacheStackLfuReplacementStrategy' => 'Cache/replacement_strategies/lfu.php', + 'ezcCacheStackLruMetaData' => 'Cache/stack/lru_meta_data.php', + 'ezcCacheStackLruReplacementStrategy' => 'Cache/replacement_strategies/lru.php', + 'ezcCacheStackOptions' => 'Cache/options/stack.php', + 'ezcCacheStackStorageConfiguration' => 'Cache/stack/storage_configuration.php', + 'ezcCacheStorageApcPlain' => 'Cache/storage/apc/plain.php', + 'ezcCacheStorageFileApcArray' => 'Cache/storage/apc/apc_array.php', + 'ezcCacheStorageFileApcArrayDataStruct' => 'Cache/structs/file_apc_array_data.php', + 'ezcCacheStorageFileApcArrayOptions' => 'Cache/options/storage_apc_array.php', + 'ezcCacheStorageFileArray' => 'Cache/storage/file/array.php', + 'ezcCacheStorageFileEvalArray' => 'Cache/storage/file/eval_array.php', + 'ezcCacheStorageFileOptions' => 'Cache/options/storage_file.php', + 'ezcCacheStorageFilePlain' => 'Cache/storage/file/plain.php', + 'ezcCacheStorageMemcacheOptions' => 'Cache/options/storage_memcache.php', + 'ezcCacheStorageMemcachePlain' => 'Cache/storage/memcache/plain.php', + 'ezcCacheStorageMemoryDataStruct' => 'Cache/structs/memory_data.php', + 'ezcCacheStorageMemoryRegisterStruct' => 'Cache/structs/memory_register.php', + 'ezcCacheStorageOptions' => 'Cache/options/storage.php', +); +?> diff --git a/include/ezcomponents/autoload/configuration_autoload.php b/include/ezcomponents/autoload/configuration_autoload.php new file mode 100644 index 000000000..08f464d67 --- /dev/null +++ b/include/ezcomponents/autoload/configuration_autoload.php @@ -0,0 +1,43 @@ + 'Configuration/exceptions/exception.php', + 'ezcConfigurationGroupExistsAlreadyException' => 'Configuration/exceptions/group_exists_already.php', + 'ezcConfigurationInvalidReaderClassException' => 'Configuration/exceptions/invalid_reader_class.php', + 'ezcConfigurationInvalidSuffixException' => 'Configuration/exceptions/invalid_suffix.php', + 'ezcConfigurationManagerNotInitializedException' => 'Configuration/exceptions/manager_no_init.php', + 'ezcConfigurationNoConfigException' => 'Configuration/exceptions/no_config.php', + 'ezcConfigurationNoConfigObjectException' => 'Configuration/exceptions/no_config_object.php', + 'ezcConfigurationParseErrorException' => 'Configuration/exceptions/parse_error.php', + 'ezcConfigurationReadFailedException' => 'Configuration/exceptions/read_failed.php', + 'ezcConfigurationSettingWrongTypeException' => 'Configuration/exceptions/setting_wrong_type.php', + 'ezcConfigurationSettingnameNotStringException' => 'Configuration/exceptions/settingname_not_string.php', + 'ezcConfigurationUnknownConfigException' => 'Configuration/exceptions/unknown_config.php', + 'ezcConfigurationUnknownGroupException' => 'Configuration/exceptions/unknown_group.php', + 'ezcConfigurationUnknownSettingException' => 'Configuration/exceptions/unknown_setting.php', + 'ezcConfigurationWriteFailedException' => 'Configuration/exceptions/write_failed.php', + 'ezcConfigurationReader' => 'Configuration/interfaces/reader.php', + 'ezcConfigurationWriter' => 'Configuration/interfaces/writer.php', + 'ezcConfigurationFileReader' => 'Configuration/file_reader.php', + 'ezcConfigurationFileWriter' => 'Configuration/file_writer.php', + 'ezcConfiguration' => 'Configuration/configuration.php', + 'ezcConfigurationArrayReader' => 'Configuration/array/array_reader.php', + 'ezcConfigurationArrayWriter' => 'Configuration/array/array_writer.php', + 'ezcConfigurationIniItem' => 'Configuration/structs/ini_item.php', + 'ezcConfigurationIniParser' => 'Configuration/ini/ini_parser.php', + 'ezcConfigurationIniReader' => 'Configuration/ini/ini_reader.php', + 'ezcConfigurationIniWriter' => 'Configuration/ini/ini_writer.php', + 'ezcConfigurationManager' => 'Configuration/configuration_manager.php', + 'ezcConfigurationValidationItem' => 'Configuration/structs/validation_item.php', + 'ezcConfigurationValidationResult' => 'Configuration/validation_result.php', +); +?> diff --git a/include/ezcomponents/autoload/console_autoload.php b/include/ezcomponents/autoload/console_autoload.php new file mode 100644 index 000000000..922b4abe2 --- /dev/null +++ b/include/ezcomponents/autoload/console_autoload.php @@ -0,0 +1,70 @@ + 'ConsoleTools/exceptions/exception.php', + 'ezcConsoleArgumentException' => 'ConsoleTools/exceptions/argument.php', + 'ezcConsoleOptionException' => 'ConsoleTools/exceptions/option.php', + 'ezcConsoleArgumentAlreadyRegisteredException' => 'ConsoleTools/exceptions/argument_already_registered.php', + 'ezcConsoleArgumentMandatoryViolationException' => 'ConsoleTools/exceptions/argument_mandatory_violation.php', + 'ezcConsoleArgumentTypeViolationException' => 'ConsoleTools/exceptions/argument_type_violation.php', + 'ezcConsoleInvalidOptionNameException' => 'ConsoleTools/exceptions/invalid_option_name.php', + 'ezcConsoleInvalidOutputTargetException' => 'ConsoleTools/exceptions/invalid_output_target.php', + 'ezcConsoleNoPositionStoredException' => 'ConsoleTools/exceptions/no_position_stored.php', + 'ezcConsoleNoValidDialogResultException' => 'ConsoleTools/exceptions/no_valid_dialog_result.php', + 'ezcConsoleOptionAlreadyRegisteredException' => 'ConsoleTools/exceptions/option_already_registered.php', + 'ezcConsoleOptionArgumentsViolationException' => 'ConsoleTools/exceptions/option_arguments_violation.php', + 'ezcConsoleOptionDependencyViolationException' => 'ConsoleTools/exceptions/option_dependency_violation.php', + 'ezcConsoleOptionExclusionViolationException' => 'ConsoleTools/exceptions/option_exclusion_violation.php', + 'ezcConsoleOptionMandatoryViolationException' => 'ConsoleTools/exceptions/option_mandatory_violation.php', + 'ezcConsoleOptionMissingValueException' => 'ConsoleTools/exceptions/option_missing_value.php', + 'ezcConsoleOptionNoAliasException' => 'ConsoleTools/exceptions/option_no_alias.php', + 'ezcConsoleOptionNotExistsException' => 'ConsoleTools/exceptions/option_not_exists.php', + 'ezcConsoleOptionStringNotWellformedException' => 'ConsoleTools/exceptions/option_string_not_wellformed.php', + 'ezcConsoleOptionTooManyValuesException' => 'ConsoleTools/exceptions/option_too_many_values.php', + 'ezcConsoleOptionTypeViolationException' => 'ConsoleTools/exceptions/option_type_violation.php', + 'ezcConsoleTooManyArgumentsException' => 'ConsoleTools/exceptions/argument_too_many.php', + 'ezcConsoleDialogValidator' => 'ConsoleTools/interfaces/dialog_validator.php', + 'ezcConsoleQuestionDialogValidator' => 'ConsoleTools/interfaces/question_dialog_validator.php', + 'ezcConsoleDialog' => 'ConsoleTools/interfaces/dialog.php', + 'ezcConsoleDialogOptions' => 'ConsoleTools/options/dialog.php', + 'ezcConsoleMenuDialogValidator' => 'ConsoleTools/interfaces/menu_dialog_validator.php', + 'ezcConsoleQuestionDialogCollectionValidator' => 'ConsoleTools/dialog/validators/question_dialog_collection.php', + 'ezcConsoleArgument' => 'ConsoleTools/input/argument.php', + 'ezcConsoleArguments' => 'ConsoleTools/input/arguments.php', + 'ezcConsoleDialogViewer' => 'ConsoleTools/dialog_viewer.php', + 'ezcConsoleInput' => 'ConsoleTools/input.php', + 'ezcConsoleMenuDialog' => 'ConsoleTools/dialog/menu_dialog.php', + 'ezcConsoleMenuDialogDefaultValidator' => 'ConsoleTools/dialog/validators/menu_dialog_default.php', + 'ezcConsoleMenuDialogOptions' => 'ConsoleTools/options/menu_dialog.php', + 'ezcConsoleOption' => 'ConsoleTools/input/option.php', + 'ezcConsoleOptionRule' => 'ConsoleTools/structs/option_rule.php', + 'ezcConsoleOutput' => 'ConsoleTools/output.php', + 'ezcConsoleOutputFormat' => 'ConsoleTools/structs/output_format.php', + 'ezcConsoleOutputFormats' => 'ConsoleTools/structs/output_formats.php', + 'ezcConsoleOutputOptions' => 'ConsoleTools/options/output.php', + 'ezcConsoleProgressMonitor' => 'ConsoleTools/progressmonitor.php', + 'ezcConsoleProgressMonitorOptions' => 'ConsoleTools/options/progressmonitor.php', + 'ezcConsoleProgressbar' => 'ConsoleTools/progressbar.php', + 'ezcConsoleProgressbarOptions' => 'ConsoleTools/options/progressbar.php', + 'ezcConsoleQuestionDialog' => 'ConsoleTools/dialog/question_dialog.php', + 'ezcConsoleQuestionDialogMappingValidator' => 'ConsoleTools/dialog/validators/question_dialog_mapping.php', + 'ezcConsoleQuestionDialogOptions' => 'ConsoleTools/options/question_dialog.php', + 'ezcConsoleQuestionDialogRegexValidator' => 'ConsoleTools/dialog/validators/question_dialog_regex.php', + 'ezcConsoleQuestionDialogTypeValidator' => 'ConsoleTools/dialog/validators/question_dialog_type.php', + 'ezcConsoleStatusbar' => 'ConsoleTools/statusbar.php', + 'ezcConsoleStatusbarOptions' => 'ConsoleTools/options/statusbar.php', + 'ezcConsoleTable' => 'ConsoleTools/table.php', + 'ezcConsoleTableCell' => 'ConsoleTools/table/cell.php', + 'ezcConsoleTableOptions' => 'ConsoleTools/options/table.php', + 'ezcConsoleTableRow' => 'ConsoleTools/table/row.php', +); +?> diff --git a/include/ezcomponents/autoload/db_autoload.php b/include/ezcomponents/autoload/db_autoload.php new file mode 100644 index 000000000..5f456ebbf --- /dev/null +++ b/include/ezcomponents/autoload/db_autoload.php @@ -0,0 +1,32 @@ + 'Database/exceptions/exception.php', + 'ezcDbHandlerNotFoundException' => 'Database/exceptions/handler_not_found.php', + 'ezcDbMissingParameterException' => 'Database/exceptions/missing_parameter.php', + 'ezcDbTransactionException' => 'Database/exceptions/transaction.php', + 'ezcDbHandler' => 'Database/handler.php', + 'ezcDbUtilities' => 'Database/sqlabstraction/utilities.php', + 'ezcDbFactory' => 'Database/factory.php', + 'ezcDbHandlerMssql' => 'Database/handlers/mssql.php', + 'ezcDbHandlerMysql' => 'Database/handlers/mysql.php', + 'ezcDbHandlerOracle' => 'Database/handlers/oracle.php', + 'ezcDbHandlerPgsql' => 'Database/handlers/pgsql.php', + 'ezcDbHandlerSqlite' => 'Database/handlers/sqlite.php', + 'ezcDbInstance' => 'Database/instance.php', + 'ezcDbMssqlOptions' => 'Database/options/identifiers.php', + 'ezcDbUtilitiesMysql' => 'Database/sqlabstraction/implementations/utilities_mysql.php', + 'ezcDbUtilitiesOracle' => 'Database/sqlabstraction/implementations/utilities_oracle.php', + 'ezcDbUtilitiesPgsql' => 'Database/sqlabstraction/implementations/utilities_pgsql.php', + 'ezcDbUtilitiesSqlite' => 'Database/sqlabstraction/implementations/utilities_sqlite.php', +); +?> diff --git a/include/ezcomponents/autoload/db_schema_autoload.php b/include/ezcomponents/autoload/db_schema_autoload.php new file mode 100644 index 000000000..c9e0d3a09 --- /dev/null +++ b/include/ezcomponents/autoload/db_schema_autoload.php @@ -0,0 +1,68 @@ + 'DatabaseSchema/exceptions/exception.php', + 'ezcDbSchemaDropAllColumnsException' => 'DatabaseSchema/exceptions/drop_all_columns_exception.php', + 'ezcDbSchemaInvalidDiffReaderClassException' => 'DatabaseSchema/exceptions/invalid_diff_reader_class.php', + 'ezcDbSchemaInvalidDiffWriterClassException' => 'DatabaseSchema/exceptions/invalid_diff_writer_class.php', + 'ezcDbSchemaInvalidReaderClassException' => 'DatabaseSchema/exceptions/invalid_reader_class.php', + 'ezcDbSchemaInvalidSchemaException' => 'DatabaseSchema/exceptions/invalid_schema.php', + 'ezcDbSchemaInvalidWriterClassException' => 'DatabaseSchema/exceptions/invalid_writer_class.php', + 'ezcDbSchemaSqliteDropFieldException' => 'DatabaseSchema/exceptions/sqlite_drop_field_exception.php', + 'ezcDbSchemaUnknownFormatException' => 'DatabaseSchema/exceptions/unknown_format.php', + 'ezcDbSchemaUnsupportedTypeException' => 'DatabaseSchema/exceptions/unsupported_type.php', + 'ezcDbSchemaDiffWriter' => 'DatabaseSchema/interfaces/schema_diff_writer.php', + 'ezcDbSchemaWriter' => 'DatabaseSchema/interfaces/schema_writer.php', + 'ezcDbSchemaDbWriter' => 'DatabaseSchema/interfaces/db_writer.php', + 'ezcDbSchemaDiffDbWriter' => 'DatabaseSchema/interfaces/db_diff_writer.php', + 'ezcDbSchemaDiffReader' => 'DatabaseSchema/interfaces/schema_diff_reader.php', + 'ezcDbSchemaReader' => 'DatabaseSchema/interfaces/schema_reader.php', + 'ezcDbSchemaCommonSqlWriter' => 'DatabaseSchema/handlers/common_sql_writer.php', + 'ezcDbSchemaDbReader' => 'DatabaseSchema/interfaces/db_reader.php', + 'ezcDbSchemaDiffFileReader' => 'DatabaseSchema/interfaces/file_diff_reader.php', + 'ezcDbSchemaDiffFileWriter' => 'DatabaseSchema/interfaces/file_diff_writer.php', + 'ezcDbSchemaFileReader' => 'DatabaseSchema/interfaces/file_reader.php', + 'ezcDbSchemaFileWriter' => 'DatabaseSchema/interfaces/file_writer.php', + 'XMLWriter' => 'DatabaseSchema/handlers/xml/xmlwritersubstitute.php', + 'ezcDbSchema' => 'DatabaseSchema/schema.php', + 'ezcDbSchemaAutoIncrementIndexValidator' => 'DatabaseSchema/validators/auto_increment_index.php', + 'ezcDbSchemaCommonSqlReader' => 'DatabaseSchema/handlers/common_sql_reader.php', + 'ezcDbSchemaComparator' => 'DatabaseSchema/comparator.php', + 'ezcDbSchemaDiff' => 'DatabaseSchema/schema_diff.php', + 'ezcDbSchemaField' => 'DatabaseSchema/structs/field.php', + 'ezcDbSchemaHandlerDataTransfer' => 'DatabaseSchema/handlers/data_transfer.php', + 'ezcDbSchemaHandlerManager' => 'DatabaseSchema/handler_manager.php', + 'ezcDbSchemaIndex' => 'DatabaseSchema/structs/index.php', + 'ezcDbSchemaIndexField' => 'DatabaseSchema/structs/index_field.php', + 'ezcDbSchemaIndexFieldsValidator' => 'DatabaseSchema/validators/index_fields.php', + 'ezcDbSchemaMysqlReader' => 'DatabaseSchema/handlers/mysql/reader.php', + 'ezcDbSchemaMysqlWriter' => 'DatabaseSchema/handlers/mysql/writer.php', + 'ezcDbSchemaOptions' => 'DatabaseSchema/options/schema.php', + 'ezcDbSchemaOracleReader' => 'DatabaseSchema/handlers/oracle/reader.php', + 'ezcDbSchemaOracleWriter' => 'DatabaseSchema/handlers/oracle/writer.php', + 'ezcDbSchemaPersistentClassWriter' => 'DatabaseSchema/handlers/persistent/class_writer.php', + 'ezcDbSchemaPersistentWriter' => 'DatabaseSchema/handlers/persistent/writer.php', + 'ezcDbSchemaPgsqlReader' => 'DatabaseSchema/handlers/pgsql/reader.php', + 'ezcDbSchemaPgsqlWriter' => 'DatabaseSchema/handlers/pgsql/writer.php', + 'ezcDbSchemaPhpArrayReader' => 'DatabaseSchema/handlers/php_array/reader.php', + 'ezcDbSchemaPhpArrayWriter' => 'DatabaseSchema/handlers/php_array/writer.php', + 'ezcDbSchemaSqliteReader' => 'DatabaseSchema/handlers/sqlite/reader.php', + 'ezcDbSchemaSqliteWriter' => 'DatabaseSchema/handlers/sqlite/writer.php', + 'ezcDbSchemaTable' => 'DatabaseSchema/structs/table.php', + 'ezcDbSchemaTableDiff' => 'DatabaseSchema/structs/table_diff.php', + 'ezcDbSchemaTypesValidator' => 'DatabaseSchema/validators/types.php', + 'ezcDbSchemaUniqueIndexNameValidator' => 'DatabaseSchema/validators/unique_index_name.php', + 'ezcDbSchemaValidator' => 'DatabaseSchema/validator.php', + 'ezcDbSchemaXmlReader' => 'DatabaseSchema/handlers/xml/reader.php', + 'ezcDbSchemaXmlWriter' => 'DatabaseSchema/handlers/xml/writer.php', +); +?> diff --git a/include/ezcomponents/autoload/debug_autoload.php b/include/ezcomponents/autoload/debug_autoload.php new file mode 100644 index 000000000..e7a993b81 --- /dev/null +++ b/include/ezcomponents/autoload/debug_autoload.php @@ -0,0 +1,30 @@ + 'Debug/exceptions/exception.php', + 'ezcDebugOperationNotPermittedException' => 'Debug/exceptions/operation_not_permitted.php', + 'ezcDebugOutputFormatter' => 'Debug/interfaces/formatter.php', + 'ezcDebugStacktraceIterator' => 'Debug/interfaces/stacktrace_iterator.php', + 'ezcDebug' => 'Debug/debug.php', + 'ezcDebugHtmlFormatter' => 'Debug/formatters/html_formatter.php', + 'ezcDebugMemoryWriter' => 'Debug/writers/memory_writer.php', + 'ezcDebugMessage' => 'Debug/debug_message.php', + 'ezcDebugOptions' => 'Debug/options.php', + 'ezcDebugPhpStacktraceIterator' => 'Debug/stacktrace/php_iterator.php', + 'ezcDebugStructure' => 'Debug/structs/debug_structure.php', + 'ezcDebugSwitchTimerStruct' => 'Debug/structs/switch_timer.php', + 'ezcDebugTimer' => 'Debug/debug_timer.php', + 'ezcDebugTimerStruct' => 'Debug/structs/timer.php', + 'ezcDebugVariableDumpTool' => 'Debug/tools/dump.php', + 'ezcDebugXdebugStacktraceIterator' => 'Debug/stacktrace/xdebug_iterator.php', +); +?> diff --git a/include/ezcomponents/autoload/document_autoload.php b/include/ezcomponents/autoload/document_autoload.php new file mode 100644 index 000000000..d54a405dd --- /dev/null +++ b/include/ezcomponents/autoload/document_autoload.php @@ -0,0 +1,108 @@ + 'Document/exceptions/exception.php', + 'ezcDocumentErrnousXmlException' => 'Document/exceptions/errnous_xml.php', + 'ezcDocumentMissingVisitorException' => 'Document/exceptions/missing_visitor.php', + 'ezcDocumentParserException' => 'Document/exceptions/parser.php', + 'ezcDocumentRstTokenizerException' => 'Document/exceptions/rst_tokenizer.php', + 'ezcDocumentVisitException' => 'Document/exceptions/visitor.php', + 'ezcDocument' => 'Document/interfaces/document.php', + 'ezcDocumentConverter' => 'Document/interfaces/converter.php', + 'ezcDocumentOptions' => 'Document/options/document.php', + 'ezcDocumentRstDirective' => 'Document/document/rst/directive.php', + 'ezcDocumentRstNode' => 'Document/document/rst/node.php', + 'ezcDocumentRstVisitor' => 'Document/document/rst/visitor.php', + 'ezcDocumentRstXhtmlDirective' => 'Document/interfaces/rst_xhtml_directive.php', + 'ezcDocumentValidation' => 'Document/interfaces/validation.php', + 'ezcDocumentConverterOptions' => 'Document/options/converter.php', + 'ezcDocumentParser' => 'Document/interfaces/parser.php', + 'ezcDocumentRstBlockNode' => 'Document/document/rst/nodes/block.php', + 'ezcDocumentRstImageDirective' => 'Document/document/rst/directive/image.php', + 'ezcDocumentRstLinkNode' => 'Document/document/rst/nodes/link.php', + 'ezcDocumentRstMarkupNode' => 'Document/document/rst/nodes/markup.php', + 'ezcDocumentRstXhtmlVisitor' => 'Document/document/rst/visitor/xhtml.php', + 'ezcDocumentXhtmlConversion' => 'Document/interfaces/conversion_xhtml.php', + 'ezcDocumentXmlBase' => 'Document/document/xml_base.php', + 'ezcDocumentXmlOptions' => 'Document/options/document_xml.php', + 'ezcDocumentXsltConverter' => 'Document/converters/xslt.php', + 'ezcDocumentDocbook' => 'Document/document/xml/docbook.php', + 'ezcDocumentDocbookOptions' => 'Document/options/document_docbook.php', + 'ezcDocumentEzp3ToEzp4Converter' => 'Document/converters/xslt/ezp3_ezp4.php', + 'ezcDocumentEzp3ToEzp4ConverterOptions' => 'Document/options/converter_ezp3_ezp4.php', + 'ezcDocumentEzp3Xml' => 'Document/document/xml/ezp3.php', + 'ezcDocumentEzp3XmlOptions' => 'Document/options/document_ezp3.php', + 'ezcDocumentEzp4Xml' => 'Document/document/xml/ezp4.php', + 'ezcDocumentEzp4XmlOptions' => 'Document/options/document_ezp4.php', + 'ezcDocumentHtmlConversion' => 'Document/interfaces/conversions/html.php', + 'ezcDocumentManager' => 'Document/document_manager.php', + 'ezcDocumentParserOptions' => 'Document/options/document_parser.php', + 'ezcDocumentRelaxNgValidator' => 'Document/validator/realxng.php', + 'ezcDocumentRst' => 'Document/document/rst.php', + 'ezcDocumentRstAnonymousLinkNode' => 'Document/document/rst/nodes/link_anonymous.php', + 'ezcDocumentRstAnonymousReferenceNode' => 'Document/document/rst/nodes/anon_reference.php', + 'ezcDocumentRstAttentionDirective' => 'Document/document/rst/directive/attention.php', + 'ezcDocumentRstBlockquoteAnnotationNode' => 'Document/document/rst/nodes/blockquote_annotation.php', + 'ezcDocumentRstBlockquoteNode' => 'Document/document/rst/nodes/blockquote.php', + 'ezcDocumentRstBulletListListNode' => 'Document/document/rst/nodes/bullet_list_list.php', + 'ezcDocumentRstBulletListNode' => 'Document/document/rst/nodes/bullet_list.php', + 'ezcDocumentRstCommentNode' => 'Document/document/rst/nodes/comment.php', + 'ezcDocumentRstContentsDirective' => 'Document/document/rst/directive/contents.php', + 'ezcDocumentRstDangerDirective' => 'Document/document/rst/directive/danger.php', + 'ezcDocumentRstDefinitionListListNode' => 'Document/document/rst/nodes/definition_list_list.php', + 'ezcDocumentRstDefinitionListNode' => 'Document/document/rst/nodes/definition_list.php', + 'ezcDocumentRstDirectiveNode' => 'Document/document/rst/nodes/directive.php', + 'ezcDocumentRstDocbookVisitor' => 'Document/document/rst/visitor/docbook.php', + 'ezcDocumentRstDocumentNode' => 'Document/document/rst/nodes/document.php', + 'ezcDocumentRstEnumeratedListListNode' => 'Document/document/rst/nodes/enumerated_list_list.php', + 'ezcDocumentRstEnumeratedListNode' => 'Document/document/rst/nodes/enumerated_list.php', + 'ezcDocumentRstExternalReferenceNode' => 'Document/document/rst/nodes/link_reference.php', + 'ezcDocumentRstFieldListNode' => 'Document/document/rst/nodes/field_list.php', + 'ezcDocumentRstFigureDirective' => 'Document/document/rst/directive/figure.php', + 'ezcDocumentRstFootnoteNode' => 'Document/document/rst/nodes/footnote.php', + 'ezcDocumentRstIncludeDirective' => 'Document/document/rst/directive/include.php', + 'ezcDocumentRstLineBlockLineNode' => 'Document/document/rst/nodes/line_block_line.php', + 'ezcDocumentRstLineBlockNode' => 'Document/document/rst/nodes/line_block.php', + 'ezcDocumentRstLiteralBlockNode' => 'Document/document/rst/nodes/literal_block.php', + 'ezcDocumentRstLiteralNode' => 'Document/document/rst/nodes/literal.php', + 'ezcDocumentRstMarkupEmphasisNode' => 'Document/document/rst/nodes/markup_emphasis.php', + 'ezcDocumentRstMarkupInlineLiteralNode' => 'Document/document/rst/nodes/markup_inline_literal.php', + 'ezcDocumentRstMarkupInterpretedTextNode' => 'Document/document/rst/nodes/markup_interpreted_text.php', + 'ezcDocumentRstMarkupStrongEmphasisNode' => 'Document/document/rst/nodes/markup_strong_emphasis.php', + 'ezcDocumentRstMarkupSubstitutionNode' => 'Document/document/rst/nodes/markup_substitution.php', + 'ezcDocumentRstNamedReferenceNode' => 'Document/document/rst/nodes/named_reference.php', + 'ezcDocumentRstNoteDirective' => 'Document/document/rst/directive/note.php', + 'ezcDocumentRstNoticeDirective' => 'Document/document/rst/directive/notice.php', + 'ezcDocumentRstOptions' => 'Document/options/document_rst.php', + 'ezcDocumentRstParagraphNode' => 'Document/document/rst/nodes/paragraph.php', + 'ezcDocumentRstParser' => 'Document/document/rst/parser.php', + 'ezcDocumentRstReferenceNode' => 'Document/document/rst/nodes/reference.php', + 'ezcDocumentRstSectionNode' => 'Document/document/rst/nodes/section.php', + 'ezcDocumentRstSubstitutionNode' => 'Document/document/rst/nodes/substitution.php', + 'ezcDocumentRstTableBodyNode' => 'Document/document/rst/nodes/table_body.php', + 'ezcDocumentRstTableCellNode' => 'Document/document/rst/nodes/table_cell.php', + 'ezcDocumentRstTableHeadNode' => 'Document/document/rst/nodes/table_head.php', + 'ezcDocumentRstTableNode' => 'Document/document/rst/nodes/table.php', + 'ezcDocumentRstTableRowNode' => 'Document/document/rst/nodes/table_row.php', + 'ezcDocumentRstTargetNode' => 'Document/document/rst/nodes/target.php', + 'ezcDocumentRstTextLineNode' => 'Document/document/rst/nodes/text_line.php', + 'ezcDocumentRstTitleNode' => 'Document/document/rst/nodes/title.php', + 'ezcDocumentRstToken' => 'Document/document/rst/token.php', + 'ezcDocumentRstTokenizer' => 'Document/document/rst/tokenizer.php', + 'ezcDocumentRstTransitionNode' => 'Document/document/rst/nodes/transition.php', + 'ezcDocumentRstWarningDirective' => 'Document/document/rst/directive/warning.php', + 'ezcDocumentRstXhtmlBodyVisitor' => 'Document/document/rst/visitor/xhtml_body.php', + 'ezcDocumentXhtml' => 'Document/document/xml/xhtml.php', + 'ezcDocumentXhtmlOptions' => 'Document/options/document_xhtml.php', + 'ezcDocumentXhtmlToDocbookConverter' => 'Document/converters/xslt/xhtml_docbook.php', +); +?> diff --git a/include/ezcomponents/autoload/execution_autoload.php b/include/ezcomponents/autoload/execution_autoload.php new file mode 100644 index 000000000..f7fe43975 --- /dev/null +++ b/include/ezcomponents/autoload/execution_autoload.php @@ -0,0 +1,22 @@ + 'Execution/exceptions/exception.php', + 'ezcExecutionAlreadyInitializedException' => 'Execution/exceptions/already_initialized.php', + 'ezcExecutionInvalidCallbackException' => 'Execution/exceptions/invalid_callback.php', + 'ezcExecutionNotInitializedException' => 'Execution/exceptions/not_initialized.php', + 'ezcExecutionWrongClassException' => 'Execution/exceptions/wrong_class.php', + 'ezcExecutionErrorHandler' => 'Execution/interfaces/execution_handler.php', + 'ezcExecution' => 'Execution/execution.php', + 'ezcExecutionBasicErrorHandler' => 'Execution/handlers/basic_handler.php', +); +?> diff --git a/include/ezcomponents/autoload/feed_autoload.php b/include/ezcomponents/autoload/feed_autoload.php new file mode 100644 index 000000000..2c00b59a5 --- /dev/null +++ b/include/ezcomponents/autoload/feed_autoload.php @@ -0,0 +1,52 @@ + 'Feed/exceptions/exception.php', + 'ezcFeedAtLeastOneItemDataRequiredException' => 'Feed/exceptions/one_item_data_required.php', + 'ezcFeedOnlyOneValueAllowedException' => 'Feed/exceptions/only_one_value_allowed.php', + 'ezcFeedParseErrorException' => 'Feed/exceptions/parse_error.php', + 'ezcFeedRequiredMetaDataMissingException' => 'Feed/exceptions/meta_data_missing.php', + 'ezcFeedUndefinedModuleException' => 'Feed/exceptions/undefined_module.php', + 'ezcFeedUnsupportedElementException' => 'Feed/exceptions/unsupported_element.php', + 'ezcFeedUnsupportedModuleException' => 'Feed/exceptions/unsupported_module.php', + 'ezcFeedUnsupportedTypeException' => 'Feed/exceptions/unsupported_type.php', + 'ezcFeedElement' => 'Feed/interfaces/element.php', + 'ezcFeedModule' => 'Feed/interfaces/module.php', + 'ezcFeedParser' => 'Feed/interfaces/parser.php', + 'ezcFeedProcessor' => 'Feed/interfaces/processor.php', + 'ezcFeedTextElement' => 'Feed/structs/text.php', + 'ezcFeed' => 'Feed/feed.php', + 'ezcFeedAtom' => 'Feed/processors/atom.php', + 'ezcFeedCategoryElement' => 'Feed/structs/category.php', + 'ezcFeedCloudElement' => 'Feed/structs/cloud.php', + 'ezcFeedContentElement' => 'Feed/structs/content.php', + 'ezcFeedContentModule' => 'Feed/modules/content_module.php', + 'ezcFeedCreativeCommonsModule' => 'Feed/modules/creativecommons_module.php', + 'ezcFeedDateElement' => 'Feed/structs/date.php', + 'ezcFeedDublinCoreModule' => 'Feed/modules/dublincore_module.php', + 'ezcFeedEnclosureElement' => 'Feed/structs/enclosure.php', + 'ezcFeedEntryElement' => 'Feed/structs/entry.php', + 'ezcFeedGeneratorElement' => 'Feed/structs/generator.php', + 'ezcFeedGeoModule' => 'Feed/modules/geo_module.php', + 'ezcFeedITunesModule' => 'Feed/modules/itunes_module.php', + 'ezcFeedIdElement' => 'Feed/structs/id.php', + 'ezcFeedImageElement' => 'Feed/structs/image.php', + 'ezcFeedLinkElement' => 'Feed/structs/link.php', + 'ezcFeedPersonElement' => 'Feed/structs/person.php', + 'ezcFeedRss1' => 'Feed/processors/rss1.php', + 'ezcFeedRss2' => 'Feed/processors/rss2.php', + 'ezcFeedSkipDaysElement' => 'Feed/structs/skip_days.php', + 'ezcFeedSkipHoursElement' => 'Feed/structs/skip_hours.php', + 'ezcFeedSourceElement' => 'Feed/structs/source.php', + 'ezcFeedTextInputElement' => 'Feed/structs/text_input.php', +); +?> diff --git a/include/ezcomponents/autoload/file_autoload.php b/include/ezcomponents/autoload/file_autoload.php new file mode 100644 index 000000000..531250418 --- /dev/null +++ b/include/ezcomponents/autoload/file_autoload.php @@ -0,0 +1,15 @@ + 'File/file.php', +); +?> diff --git a/include/ezcomponents/autoload/graph_autoload.php b/include/ezcomponents/autoload/graph_autoload.php new file mode 100644 index 000000000..ac074428f --- /dev/null +++ b/include/ezcomponents/autoload/graph_autoload.php @@ -0,0 +1,124 @@ + 'Graph/exceptions/exception.php', + 'ezcGraphDatasetAverageInvalidKeysException' => 'Graph/exceptions/invalid_keys.php', + 'ezcGraphErrorParsingDateException' => 'Graph/exceptions/date_parsing.php', + 'ezcGraphFlashBitmapTypeException' => 'Graph/exceptions/flash_bitmap_type.php', + 'ezcGraphFontRenderingException' => 'Graph/exceptions/font_rendering.php', + 'ezcGraphGdDriverUnsupportedImageTypeException' => 'Graph/exceptions/unsupported_image_type.php', + 'ezcGraphInvalidArrayDataSourceException' => 'Graph/exceptions/invalid_data_source.php', + 'ezcGraphInvalidAssignementException' => 'Graph/exceptions/invalid_assignement.php', + 'ezcGraphInvalidDataException' => 'Graph/exceptions/invalid_data.php', + 'ezcGraphInvalidDisplayTypeException' => 'Graph/exceptions/invalid_display_type.php', + 'ezcGraphInvalidImageFileException' => 'Graph/exceptions/invalid_image_file.php', + 'ezcGraphMatrixInvalidDimensionsException' => 'Graph/exceptions/invalid_dimensions.php', + 'ezcGraphMatrixOutOfBoundingsException' => 'Graph/exceptions/out_of_boundings.php', + 'ezcGraphNoDataException' => 'Graph/exceptions/no_data.php', + 'ezcGraphNoSuchDataException' => 'Graph/exceptions/no_such_data.php', + 'ezcGraphNoSuchDataSetException' => 'Graph/exceptions/no_such_dataset.php', + 'ezcGraphNoSuchElementException' => 'Graph/exceptions/no_such_element.php', + 'ezcGraphOutOfLogithmicalBoundingsException' => 'Graph/exceptions/out_of_logarithmical_boundings.php', + 'ezcGraphReducementFailedException' => 'Graph/exceptions/reducement_failed.php', + 'ezcGraphSvgDriverInvalidIdException' => 'Graph/exceptions/invalid_id.php', + 'ezcGraphTooManyDataSetsExceptions' => 'Graph/exceptions/too_many_datasets.php', + 'ezcGraphToolsIncompatibleDriverException' => 'Graph/exceptions/incompatible_driver.php', + 'ezcGraphToolsNotRenderedException' => 'Graph/exceptions/not_rendered.php', + 'ezcGraphUnknownColorDefinitionException' => 'Graph/exceptions/unknown_color_definition.php', + 'ezcGraphUnknownFontTypeException' => 'Graph/exceptions/font_type.php', + 'ezcGraphUnregularStepsException' => 'Graph/exceptions/unregular_steps.php', + 'ezcGraphChart' => 'Graph/interfaces/chart.php', + 'ezcGraphChartElement' => 'Graph/interfaces/element.php', + 'ezcGraphChartOptions' => 'Graph/options/chart.php', + 'ezcGraphMatrix' => 'Graph/math/matrix.php', + 'ezcGraphAxisLabelRenderer' => 'Graph/interfaces/axis_label_renderer.php', + 'ezcGraphChartDataContainer' => 'Graph/data_container/base.php', + 'ezcGraphChartElementAxis' => 'Graph/element/axis.php', + 'ezcGraphColor' => 'Graph/colors/color.php', + 'ezcGraphCoordinate' => 'Graph/structs/coordinate.php', + 'ezcGraphDataSet' => 'Graph/datasets/base.php', + 'ezcGraphDataSetProperty' => 'Graph/interfaces/dataset_property.php', + 'ezcGraphDriver' => 'Graph/interfaces/driver.php', + 'ezcGraphDriverOptions' => 'Graph/options/driver.php', + 'ezcGraphLineChart' => 'Graph/charts/line.php', + 'ezcGraphOdometerRenderer' => 'Graph/interfaces/odometer_renderer.php', + 'ezcGraphPalette' => 'Graph/interfaces/palette.php', + 'ezcGraphRadarRenderer' => 'Graph/interfaces/radar_renderer.php', + 'ezcGraphRenderer' => 'Graph/interfaces/renderer.php', + 'ezcGraphRendererOptions' => 'Graph/options/renderer.php', + 'ezcGraphStackedBarsRenderer' => 'Graph/interfaces/stacked_bar_renderer.php', + 'ezcGraphTransformation' => 'Graph/math/transformation.php', + 'ezcGraph' => 'Graph/graph.php', + 'ezcGraphArrayDataSet' => 'Graph/datasets/array.php', + 'ezcGraphAxisBoxedLabelRenderer' => 'Graph/renderer/axis_label_boxed.php', + 'ezcGraphAxisCenteredLabelRenderer' => 'Graph/renderer/axis_label_centered.php', + 'ezcGraphAxisContainer' => 'Graph/axis/container.php', + 'ezcGraphAxisExactLabelRenderer' => 'Graph/renderer/axis_label_exact.php', + 'ezcGraphAxisNoLabelRenderer' => 'Graph/renderer/axis_label_none.php', + 'ezcGraphAxisRadarLabelRenderer' => 'Graph/renderer/axis_label_radar.php', + 'ezcGraphAxisRotatedLabelRenderer' => 'Graph/renderer/axis_label_rotated.php', + 'ezcGraphAxisStep' => 'Graph/structs/step.php', + 'ezcGraphBarChart' => 'Graph/charts/bar.php', + 'ezcGraphBoundings' => 'Graph/math/boundings.php', + 'ezcGraphCairoDriver' => 'Graph/driver/cairo.php', + 'ezcGraphCairoDriverOptions' => 'Graph/options/cairo_driver.php', + 'ezcGraphChartElementBackground' => 'Graph/element/background.php', + 'ezcGraphChartElementDateAxis' => 'Graph/axis/date.php', + 'ezcGraphChartElementLabeledAxis' => 'Graph/axis/labeled.php', + 'ezcGraphChartElementLegend' => 'Graph/element/legend.php', + 'ezcGraphChartElementLogarithmicalAxis' => 'Graph/axis/logarithmic.php', + 'ezcGraphChartElementNumericAxis' => 'Graph/axis/numeric.php', + 'ezcGraphChartElementText' => 'Graph/element/text.php', + 'ezcGraphChartSingleDataContainer' => 'Graph/data_container/single.php', + 'ezcGraphContext' => 'Graph/structs/context.php', + 'ezcGraphDataSetAveragePolynom' => 'Graph/datasets/average.php', + 'ezcGraphDataSetAxisProperty' => 'Graph/datasets/property/axis.php', + 'ezcGraphDataSetBooleanProperty' => 'Graph/datasets/property/boolean.php', + 'ezcGraphDataSetColorProperty' => 'Graph/datasets/property/color.php', + 'ezcGraphDataSetIntProperty' => 'Graph/datasets/property/integer.php', + 'ezcGraphDataSetStringProperty' => 'Graph/datasets/property/string.php', + 'ezcGraphFlashDriver' => 'Graph/driver/flash.php', + 'ezcGraphFlashDriverOptions' => 'Graph/options/flash_driver.php', + 'ezcGraphFontOptions' => 'Graph/options/font.php', + 'ezcGraphGdDriver' => 'Graph/driver/gd.php', + 'ezcGraphGdDriverOptions' => 'Graph/options/gd_driver.php', + 'ezcGraphLineChartOptions' => 'Graph/options/line_chart.php', + 'ezcGraphLinearGradient' => 'Graph/colors/linear_gradient.php', + 'ezcGraphNumericDataSet' => 'Graph/datasets/numeric.php', + 'ezcGraphOdometerChart' => 'Graph/charts/odometer.php', + 'ezcGraphOdometerChartOptions' => 'Graph/options/odometer_chart.php', + 'ezcGraphPaletteBlack' => 'Graph/palette/black.php', + 'ezcGraphPaletteEz' => 'Graph/palette/ez.php', + 'ezcGraphPaletteEzBlue' => 'Graph/palette/ez_blue.php', + 'ezcGraphPaletteEzGreen' => 'Graph/palette/ez_green.php', + 'ezcGraphPaletteEzRed' => 'Graph/palette/ez_red.php', + 'ezcGraphPaletteTango' => 'Graph/palette/tango.php', + 'ezcGraphPieChart' => 'Graph/charts/pie.php', + 'ezcGraphPieChartOptions' => 'Graph/options/pie_chart.php', + 'ezcGraphPolynom' => 'Graph/math/polynom.php', + 'ezcGraphRadarChart' => 'Graph/charts/radar.php', + 'ezcGraphRadarChartOptions' => 'Graph/options/radar_chart.php', + 'ezcGraphRadialGradient' => 'Graph/colors/radial_gradient.php', + 'ezcGraphRenderer2d' => 'Graph/renderer/2d.php', + 'ezcGraphRenderer2dOptions' => 'Graph/options/renderer_2d.php', + 'ezcGraphRenderer3d' => 'Graph/renderer/3d.php', + 'ezcGraphRenderer3dOptions' => 'Graph/options/renderer_3d.php', + 'ezcGraphRotation' => 'Graph/math/rotation.php', + 'ezcGraphSvgDriver' => 'Graph/driver/svg.php', + 'ezcGraphSvgDriverOptions' => 'Graph/options/svg_driver.php', + 'ezcGraphSvgFont' => 'Graph/driver/svg_font.php', + 'ezcGraphTools' => 'Graph/tools.php', + 'ezcGraphTranslation' => 'Graph/math/translation.php', + 'ezcGraphVector' => 'Graph/math/vector.php', + 'ezcGraphVerboseDriver' => 'Graph/driver/verbose.php', +); +?> diff --git a/include/ezcomponents/autoload/graph_database_autoload.php b/include/ezcomponents/autoload/graph_database_autoload.php new file mode 100644 index 000000000..26308ca38 --- /dev/null +++ b/include/ezcomponents/autoload/graph_database_autoload.php @@ -0,0 +1,19 @@ + 'GraphDatabaseTiein/exceptions/exception.php', + 'ezcGraphDatabaseMissingColumnException' => 'GraphDatabaseTiein/exceptions/missing_column.php', + 'ezcGraphDatabaseStatementNotExecutedException' => 'GraphDatabaseTiein/exceptions/statement_not_executed.php', + 'ezcGraphDatabaseTooManyColumnsException' => 'GraphDatabaseTiein/exceptions/too_many_columns.php', + 'ezcGraphDatabaseDataSet' => 'GraphDatabaseTiein/dataset.php', +); +?> diff --git a/include/ezcomponents/autoload/image_analyzer_autoload.php b/include/ezcomponents/autoload/image_analyzer_autoload.php new file mode 100644 index 000000000..12b965d6a --- /dev/null +++ b/include/ezcomponents/autoload/image_analyzer_autoload.php @@ -0,0 +1,22 @@ + 'ImageAnalysis/exceptions/exception.php', + 'ezcImageAnalyzerFileNotProcessableException' => 'ImageAnalysis/exceptions/file_not_processable.php', + 'ezcImageAnalyzerInvalidHandlerException' => 'ImageAnalysis/exceptions/invalid_handler.php', + 'ezcImageAnalyzerHandler' => 'ImageAnalysis/interfaces/handler.php', + 'ezcImageAnalyzer' => 'ImageAnalysis/analyzer.php', + 'ezcImageAnalyzerData' => 'ImageAnalysis/structs/analyzer_data.php', + 'ezcImageAnalyzerImagemagickHandler' => 'ImageAnalysis/handlers/imagemagick.php', + 'ezcImageAnalyzerPhpHandler' => 'ImageAnalysis/handlers/php.php', +); +?> diff --git a/include/ezcomponents/autoload/image_autoload.php b/include/ezcomponents/autoload/image_autoload.php new file mode 100644 index 000000000..9bc633424 --- /dev/null +++ b/include/ezcomponents/autoload/image_autoload.php @@ -0,0 +1,45 @@ + 'ImageConversion/exceptions/exception.php', + 'ezcImageFileNameInvalidException' => 'ImageConversion/exceptions/file_name_invalid.php', + 'ezcImageFileNotProcessableException' => 'ImageConversion/exceptions/file_not_processable.php', + 'ezcImageFilterFailedException' => 'ImageConversion/exceptions/filter_failed.php', + 'ezcImageFilterNotAvailableException' => 'ImageConversion/exceptions/filter_not_available.php', + 'ezcImageHandlerNotAvailableException' => 'ImageConversion/exceptions/handler_not_available.php', + 'ezcImageHandlerSettingsInvalidException' => 'ImageConversion/exceptions/handler_settings_invalid.php', + 'ezcImageInvalidFilterParameterException' => 'ImageConversion/exceptions/invalid_filter_parameter.php', + 'ezcImageInvalidReferenceException' => 'ImageConversion/exceptions/invalid_reference.php', + 'ezcImageMimeTypeUnsupportedException' => 'ImageConversion/exceptions/mime_type_unsupported.php', + 'ezcImageMissingFilterParameterException' => 'ImageConversion/exceptions/missing_filter_parameter.php', + 'ezcImageTransformationAlreadyExistsException' => 'ImageConversion/exceptions/transformation_already_exists.php', + 'ezcImageTransformationException' => 'ImageConversion/exceptions/transformation.php', + 'ezcImageTransformationNotAvailableException' => 'ImageConversion/exceptions/transformation_not_available.php', + 'ezcImageHandler' => 'ImageConversion/interfaces/handler.php', + 'ezcImageMethodcallHandler' => 'ImageConversion/interfaces/methodcall_handler.php', + 'ezcImageColorspaceFilters' => 'ImageConversion/interfaces/colorspace.php', + 'ezcImageEffectFilters' => 'ImageConversion/interfaces/effect.php', + 'ezcImageGdBaseHandler' => 'ImageConversion/handlers/gd_base.php', + 'ezcImageGeometryFilters' => 'ImageConversion/interfaces/geometry.php', + 'ezcImageImagemagickBaseHandler' => 'ImageConversion/handlers/imagemagick_base.php', + 'ezcImageThumbnailFilters' => 'ImageConversion/interfaces/thumbnail.php', + 'ezcImageWatermarkFilters' => 'ImageConversion/interfaces/watermark.php', + 'ezcImageConverter' => 'ImageConversion/converter.php', + 'ezcImageConverterSettings' => 'ImageConversion/structs/converter_settings.php', + 'ezcImageFilter' => 'ImageConversion/structs/filter.php', + 'ezcImageGdHandler' => 'ImageConversion/handlers/gd.php', + 'ezcImageHandlerSettings' => 'ImageConversion/structs/handler_settings.php', + 'ezcImageImagemagickHandler' => 'ImageConversion/handlers/imagemagick.php', + 'ezcImageSaveOptions' => 'ImageConversion/options/save_options.php', + 'ezcImageTransformation' => 'ImageConversion/transformation.php', +); +?> diff --git a/include/ezcomponents/autoload/input_autoload.php b/include/ezcomponents/autoload/input_autoload.php new file mode 100644 index 000000000..a50f41705 --- /dev/null +++ b/include/ezcomponents/autoload/input_autoload.php @@ -0,0 +1,25 @@ + 'UserInput/exceptions/exception.php', + 'ezcInputFormFieldNotFoundException' => 'UserInput/exceptions/field_not_found.php', + 'ezcInputFormInvalidDefinitionException' => 'UserInput/exceptions/invalid_definition.php', + 'ezcInputFormNoValidDataException' => 'UserInput/exceptions/no_valid_data.php', + 'ezcInputFormUnknownFieldException' => 'UserInput/exceptions/unknown_field.php', + 'ezcInputFormValidDataAvailableException' => 'UserInput/exceptions/valid_data_available.php', + 'ezcInputFormVariableMissingException' => 'UserInput/exceptions/input_variable_missing.php', + 'ezcInputFormWrongInputSourceException' => 'UserInput/exceptions/wrong_input_source.php', + 'ezcInputFilter' => 'UserInput/input_filter.php', + 'ezcInputForm' => 'UserInput/input_form.php', + 'ezcInputFormDefinitionElement' => 'UserInput/structs/definition_element.php', +); +?> diff --git a/include/ezcomponents/autoload/log_autoload.php b/include/ezcomponents/autoload/log_autoload.php new file mode 100644 index 000000000..ebe5fb9a9 --- /dev/null +++ b/include/ezcomponents/autoload/log_autoload.php @@ -0,0 +1,27 @@ + 'EventLog/exceptions/writer_exception.php', + 'ezcLogWrongSeverityException' => 'EventLog/exceptions/wrong_severity.php', + 'ezcLogWriter' => 'EventLog/interfaces/writer.php', + 'ezcLogFileWriter' => 'EventLog/writers/writer_file.php', + 'ezcLogMapper' => 'EventLog/interfaces/mapper.php', + 'ezcLog' => 'EventLog/log.php', + 'ezcLogContext' => 'EventLog/context.php', + 'ezcLogFilter' => 'EventLog/structs/log_filter.php', + 'ezcLogFilterRule' => 'EventLog/mapper/filter_rule.php', + 'ezcLogFilterSet' => 'EventLog/mapper/filterset.php', + 'ezcLogMessage' => 'EventLog/log_message.php', + 'ezcLogSyslogWriter' => 'EventLog/writers/writer_syslog.php', + 'ezcLogUnixFileWriter' => 'EventLog/writers/writer_unix_file.php', +); +?> diff --git a/include/ezcomponents/autoload/log_database_autoload.php b/include/ezcomponents/autoload/log_database_autoload.php new file mode 100644 index 000000000..d88bf7a8e --- /dev/null +++ b/include/ezcomponents/autoload/log_database_autoload.php @@ -0,0 +1,15 @@ + 'EventLogDatabaseTiein/writers/writer_database.php', +); +?> diff --git a/include/ezcomponents/autoload/mail_autoload.php b/include/ezcomponents/autoload/mail_autoload.php new file mode 100644 index 000000000..40ddbde74 --- /dev/null +++ b/include/ezcomponents/autoload/mail_autoload.php @@ -0,0 +1,81 @@ + 'Mail/exceptions/mail_exception.php', + 'ezcMailInvalidLimitException' => 'Mail/exceptions/invalid_limit.php', + 'ezcMailNoSuchMessageException' => 'Mail/exceptions/no_such_message.php', + 'ezcMailOffsetOutOfRangeException' => 'Mail/exceptions/offset_out_of_range.php', + 'ezcMailTransportException' => 'Mail/exceptions/transport_exception.php', + 'ezcMailTransportSmtpException' => 'Mail/exceptions/transport_smtp_exception.php', + 'ezcMailPart' => 'Mail/interfaces/part.php', + 'ezcMailPartParser' => 'Mail/parser/interfaces/part_parser.php', + 'ezcMailTransport' => 'Mail/interfaces/transport.php', + 'ezcMail' => 'Mail/mail.php', + 'ezcMailFilePart' => 'Mail/parts/file.php', + 'ezcMailMtaTransport' => 'Mail/transports/mta/mta_transport.php', + 'ezcMailMultipart' => 'Mail/parts/multipart.php', + 'ezcMailMultipartParser' => 'Mail/parser/parts/multipart_parser.php', + 'ezcMailParserSet' => 'Mail/parser/interfaces/parser_set.php', + 'ezcMailSmtpTransport' => 'Mail/transports/smtp/smtp_transport.php', + 'ezcMailTransportOptions' => 'Mail/options/transport_options.php', + 'ezcMailAddress' => 'Mail/structs/mail_address.php', + 'ezcMailCharsetConverter' => 'Mail/internal/charset_convert.php', + 'ezcMailComposer' => 'Mail/composer.php', + 'ezcMailComposerOptions' => 'Mail/options/composer_options.php', + 'ezcMailContentDispositionHeader' => 'Mail/structs/content_disposition_header.php', + 'ezcMailDeliveryStatus' => 'Mail/parts/delivery_status.php', + 'ezcMailDeliveryStatusParser' => 'Mail/parser/parts/delivery_status_parser.php', + 'ezcMailFile' => 'Mail/parts/fileparts/disk_file.php', + 'ezcMailFileParser' => 'Mail/parser/parts/file_parser.php', + 'ezcMailFileSet' => 'Mail/transports/file/file_set.php', + 'ezcMailHeaderFolder' => 'Mail/internal/header_folder.php', + 'ezcMailHeadersHolder' => 'Mail/parser/headers_holder.php', + 'ezcMailImapSet' => 'Mail/transports/imap/imap_set.php', + 'ezcMailImapSetOptions' => 'Mail/options/imap_set_options.php', + 'ezcMailImapTransport' => 'Mail/transports/imap/imap_transport.php', + 'ezcMailImapTransportOptions' => 'Mail/options/imap_options.php', + 'ezcMailMboxSet' => 'Mail/transports/mbox/mbox_set.php', + 'ezcMailMboxTransport' => 'Mail/transports/mbox/mbox_transport.php', + 'ezcMailMultipartAlternative' => 'Mail/parts/multiparts/multipart_alternative.php', + 'ezcMailMultipartAlternativeParser' => 'Mail/parser/parts/multipart_alternative_parser.php', + 'ezcMailMultipartDigest' => 'Mail/parts/multiparts/multipart_digest.php', + 'ezcMailMultipartDigestParser' => 'Mail/parser/parts/multipart_digest_parser.php', + 'ezcMailMultipartMixed' => 'Mail/parts/multiparts/multipart_mixed.php', + 'ezcMailMultipartMixedParser' => 'Mail/parser/parts/multipart_mixed_parser.php', + 'ezcMailMultipartRelated' => 'Mail/parts/multiparts/multipart_related.php', + 'ezcMailMultipartRelatedParser' => 'Mail/parser/parts/multipart_related_parser.php', + 'ezcMailMultipartReport' => 'Mail/parts/multiparts/multipart_report.php', + 'ezcMailMultipartReportParser' => 'Mail/parser/parts/multipart_report_parser.php', + 'ezcMailParser' => 'Mail/parser/parser.php', + 'ezcMailParserOptions' => 'Mail/options/parser_options.php', + 'ezcMailParserShutdownHandler' => 'Mail/parser/shutdown_handler.php', + 'ezcMailPartWalkContext' => 'Mail/structs/walk_context.php', + 'ezcMailPop3Set' => 'Mail/transports/pop3/pop3_set.php', + 'ezcMailPop3Transport' => 'Mail/transports/pop3/pop3_transport.php', + 'ezcMailPop3TransportOptions' => 'Mail/options/pop3_options.php', + 'ezcMailRfc2231Implementation' => 'Mail/parser/rfc2231_implementation.php', + 'ezcMailRfc822Digest' => 'Mail/parts/rfc822_digest.php', + 'ezcMailRfc822DigestParser' => 'Mail/parser/parts/rfc822_digest_parser.php', + 'ezcMailRfc822Parser' => 'Mail/parser/parts/rfc822_parser.php', + 'ezcMailSmtpTransportOptions' => 'Mail/options/smtp_options.php', + 'ezcMailStorageSet' => 'Mail/transports/storage/storage_set.php', + 'ezcMailStreamFile' => 'Mail/parts/fileparts/stream_file.php', + 'ezcMailText' => 'Mail/parts/text.php', + 'ezcMailTextParser' => 'Mail/parser/parts/text_parser.php', + 'ezcMailTools' => 'Mail/tools.php', + 'ezcMailTransportConnection' => 'Mail/transports/transport_connection.php', + 'ezcMailTransportMta' => 'Mail/transports/mta/transport_mta.php', + 'ezcMailTransportSmtp' => 'Mail/transports/smtp/transport_smtp.php', + 'ezcMailVariableSet' => 'Mail/transports/variable/var_set.php', + 'ezcMailVirtualFile' => 'Mail/parts/fileparts/virtual_file.php', +); +?> diff --git a/include/ezcomponents/autoload/persistent_autoload.php b/include/ezcomponents/autoload/persistent_autoload.php new file mode 100644 index 000000000..0ebc979bb --- /dev/null +++ b/include/ezcomponents/autoload/persistent_autoload.php @@ -0,0 +1,62 @@ + 'PersistentObject/exceptions/persistent_object_exception.php', + 'ezcPersistentDefinitionMissingIdPropertyException' => 'PersistentObject/exceptions/definition_missing_id_property.php', + 'ezcPersistentDefinitionNotFoundException' => 'PersistentObject/exceptions/definition_not_found.php', + 'ezcPersistentIdentifierGenerationException' => 'PersistentObject/exceptions/identifier_generation.php', + 'ezcPersistentInvalidObjectStateException' => 'PersistentObject/exceptions/invalid_object_state.php', + 'ezcPersistentObjectAlreadyPersistentException' => 'PersistentObject/exceptions/already_persistent.php', + 'ezcPersistentObjectNotPersistentException' => 'PersistentObject/exceptions/not_persistent.php', + 'ezcPersistentQueryException' => 'PersistentObject/exceptions/query_exception.php', + 'ezcPersistentRelatedObjectNotFoundException' => 'PersistentObject/exceptions/related_object_not_found.php', + 'ezcPersistentRelationInvalidException' => 'PersistentObject/exceptions/relation_invalid.php', + 'ezcPersistentRelationNotFoundException' => 'PersistentObject/exceptions/relation_not_found.php', + 'ezcPersistentRelationOperationNotSupportedException' => 'PersistentObject/exceptions/relation_operation_not_supported.php', + 'ezcPersistentSessionNotFoundException' => 'PersistentObject/exceptions/session_not_found.php', + 'ezcPersistentUndeterministicRelationException' => 'PersistentObject/exceptions/undeterministic_relation.php', + 'ezcPersistentDefinitionManager' => 'PersistentObject/interfaces/definition_manager.php', + 'ezcPersistentIdentifierGenerator' => 'PersistentObject/interfaces/identifier_generator.php', + 'ezcPersistentPropertyConverter' => 'PersistentObject/interfaces/property_converter.php', + 'ezcPersistentRelation' => 'PersistentObject/interfaces/relation.php', + 'ezcPersistentSessionHandler' => 'PersistentObject/interfaces/handler.php', + 'ezcPersistentCacheManager' => 'PersistentObject/managers/cache_manager.php', + 'ezcPersistentCodeManager' => 'PersistentObject/managers/code_manager.php', + 'ezcPersistentDeleteHandler' => 'PersistentObject/handlers/delete_handler.php', + 'ezcPersistentDoubleTableMap' => 'PersistentObject/structs/double_table_map.php', + 'ezcPersistentFindIterator' => 'PersistentObject/find_iterator.php', + 'ezcPersistentGeneratorDefinition' => 'PersistentObject/structs/generator_definition.php', + 'ezcPersistentLoadHandler' => 'PersistentObject/handlers/load_handler.php', + 'ezcPersistentManualGenerator' => 'PersistentObject/generators/manual_generator.php', + 'ezcPersistentManyToManyRelation' => 'PersistentObject/relations/many_to_many.php', + 'ezcPersistentManyToOneRelation' => 'PersistentObject/relations/many_to_one.php', + 'ezcPersistentMultiManager' => 'PersistentObject/managers/multi_manager.php', + 'ezcPersistentNativeGenerator' => 'PersistentObject/generators/native_generator.php', + 'ezcPersistentObject' => 'PersistentObject/interfaces/persistent_object.php', + 'ezcPersistentObjectColumns' => 'PersistentObject/object/persistent_object_columns.php', + 'ezcPersistentObjectDefinition' => 'PersistentObject/object/persistent_object_definition.php', + 'ezcPersistentObjectIdProperty' => 'PersistentObject/object/persistent_object_id_property.php', + 'ezcPersistentObjectProperties' => 'PersistentObject/object/persistent_object_properties.php', + 'ezcPersistentObjectProperty' => 'PersistentObject/object/persistent_object_property.php', + 'ezcPersistentObjectRelations' => 'PersistentObject/object/persistent_object_relations.php', + 'ezcPersistentOneToManyRelation' => 'PersistentObject/relations/one_to_many.php', + 'ezcPersistentOneToOneRelation' => 'PersistentObject/relations/one_to_one.php', + 'ezcPersistentPropertyDateTimeConverter' => 'PersistentObject/object/property_converters/date.php', + 'ezcPersistentRelationCollection' => 'PersistentObject/object/relation_collection.php', + 'ezcPersistentSaveHandler' => 'PersistentObject/handlers/save_handler.php', + 'ezcPersistentSequenceGenerator' => 'PersistentObject/generators/sequence_generator.php', + 'ezcPersistentSession' => 'PersistentObject/persistent_session.php', + 'ezcPersistentSessionInstance' => 'PersistentObject/persistent_session_instance.php', + 'ezcPersistentSingleTableMap' => 'PersistentObject/structs/single_table_map.php', + 'ezcPersistentStateTransformer' => 'PersistentObject/internal/state_transformer.php', +); +?> diff --git a/include/ezcomponents/autoload/persistent_object_autoload.php b/include/ezcomponents/autoload/persistent_object_autoload.php new file mode 100644 index 000000000..12b30c1e7 --- /dev/null +++ b/include/ezcomponents/autoload/persistent_object_autoload.php @@ -0,0 +1,15 @@ + 'PersistentObjectDatabaseSchemaTiein/generator.php', +); +?> diff --git a/include/ezcomponents/autoload/php_generator_autoload.php b/include/ezcomponents/autoload/php_generator_autoload.php new file mode 100644 index 000000000..c8b208949 --- /dev/null +++ b/include/ezcomponents/autoload/php_generator_autoload.php @@ -0,0 +1,19 @@ + 'PhpGenerator/exceptions/php_generator_exception.php', + 'ezcPhpGeneratorFlowException' => 'PhpGenerator/exceptions/flow_exception.php', + 'ezcPhpGenerator' => 'PhpGenerator/php_generator.php', + 'ezcPhpGeneratorParameter' => 'PhpGenerator/structs/php_generator_parameter.php', + 'ezcPhpGeneratorReturnData' => 'PhpGenerator/structs/php_generator_return_data.php', +); +?> diff --git a/include/ezcomponents/autoload/query_autoload.php b/include/ezcomponents/autoload/query_autoload.php new file mode 100644 index 000000000..90c4bc9fb --- /dev/null +++ b/include/ezcomponents/autoload/query_autoload.php @@ -0,0 +1,33 @@ + 'Database/exceptions/query_exception.php', + 'ezcQueryInvalidException' => 'Database/exceptions/query/invalid.php', + 'ezcQueryInvalidParameterException' => 'Database/exceptions/query/invalid_parameter.php', + 'ezcQueryVariableParameterException' => 'Database/exceptions/query/variable_parameter.php', + 'ezcQuery' => 'Database/sqlabstraction/query.php', + 'ezcQueryExpression' => 'Database/sqlabstraction/expression.php', + 'ezcQuerySelect' => 'Database/sqlabstraction/query_select.php', + 'ezcQueryDelete' => 'Database/sqlabstraction/query_delete.php', + 'ezcQueryExpressionMssql' => 'Database/sqlabstraction/implementations/expression_mssql.php', + 'ezcQueryExpressionOracle' => 'Database/sqlabstraction/implementations/expression_oracle.php', + 'ezcQueryExpressionPgsql' => 'Database/sqlabstraction/implementations/expression_pgsql.php', + 'ezcQueryExpressionSqlite' => 'Database/sqlabstraction/implementations/expression_sqlite.php', + 'ezcQueryInsert' => 'Database/sqlabstraction/query_insert.php', + 'ezcQuerySelectMssql' => 'Database/sqlabstraction/implementations/query_select_mssql.php', + 'ezcQuerySelectOracle' => 'Database/sqlabstraction/implementations/query_select_oracle.php', + 'ezcQuerySelectSqlite' => 'Database/sqlabstraction/implementations/query_select_sqlite.php', + 'ezcQuerySqliteFunctions' => 'Database/sqlabstraction/implementations/query_sqlite_function_implementations.php', + 'ezcQuerySubSelect' => 'Database/sqlabstraction/query_subselect.php', + 'ezcQueryUpdate' => 'Database/sqlabstraction/query_update.php', +); +?> diff --git a/include/ezcomponents/autoload/search_autoload.php b/include/ezcomponents/autoload/search_autoload.php new file mode 100644 index 000000000..ebf3d9e59 --- /dev/null +++ b/include/ezcomponents/autoload/search_autoload.php @@ -0,0 +1,46 @@ + 'Search/exceptions/exception.php', + 'ezcSearchBuildQueryException' => 'Search/exceptions/build_query.php', + 'ezcSearchCanNotConnectException' => 'Search/exceptions/can_not_connect.php', + 'ezcSearchDefinitionInvalidException' => 'Search/exceptions/definition_invalid.php', + 'ezcSearchDefinitionNotFoundException' => 'Search/exceptions/definition_not_found.php', + 'ezcSearchDoesNotProvideDefinitionException' => 'Search/exceptions/does_not_provide_definition.php', + 'ezcSearchFieldNotDefinedException' => 'Search/exceptions/field_not_defined.php', + 'ezcSearchIncompleteStateException' => 'Search/exceptions/incomplete_state.php', + 'ezcSearchQueryVariableParameterException' => 'Search/exceptions/query_variable_parameter.php', + 'ezcSearchTransactionException' => 'Search/exceptions/transaction.php', + 'ezcSearchQuery' => 'Search/interfaces/query.php', + 'ezcSearchDefinitionManager' => 'Search/interfaces/definition_manager.php', + 'ezcSearchDefinitionProvider' => 'Search/interfaces/definition_provider.php', + 'ezcSearchFindQuery' => 'Search/interfaces/query_find.php', + 'ezcSearchHandler' => 'Search/interfaces/handler.php', + 'ezcSearchIndexHandler' => 'Search/interfaces/index_handler.php', + 'ezcSearchDefinitionDocumentField' => 'Search/structs/document_field_definition.php', + 'ezcSearchDeleteQuery' => 'Search/interfaces/query_delete.php', + 'ezcSearchDocumentDefinition' => 'Search/document_definition.php', + 'ezcSearchEmbeddedManager' => 'Search/managers/embedded_manager.php', + 'ezcSearchQueryBuilder' => 'Search/query_builder.php', + 'ezcSearchQuerySolr' => 'Search/abstraction/implementations/solr.php', + 'ezcSearchQueryToken' => 'Search/structs/query_token.php', + 'ezcSearchQueryTools' => 'Search/abstraction/query_tools.php', + 'ezcSearchResult' => 'Search/structs/search_result.php', + 'ezcSearchResultDocument' => 'Search/structs/search_result_document.php', + 'ezcSearchRstXmlExtractor' => 'Search/extractors/rstxml.php', + 'ezcSearchSession' => 'Search/search_session.php', + 'ezcSearchSimpleArticle' => 'Search/extractors/helpers/simple.php', + 'ezcSearchSimpleImage' => 'Search/extractors/helpers/image.php', + 'ezcSearchSolrHandler' => 'Search/handlers/solr.php', + 'ezcSearchXmlManager' => 'Search/managers/xml_manager.php', +); +?> diff --git a/include/ezcomponents/autoload/signal_autoload.php b/include/ezcomponents/autoload/signal_autoload.php new file mode 100644 index 000000000..17db92de4 --- /dev/null +++ b/include/ezcomponents/autoload/signal_autoload.php @@ -0,0 +1,20 @@ + 'SignalSlot/exceptions/signalslot_exception.php', + 'ezcSignalStaticConnectionsBase' => 'SignalSlot/interfaces/static_connections_base.php', + 'ezcSignalCallbackComparer' => 'SignalSlot/internal/callback_comparer.php', + 'ezcSignalCollection' => 'SignalSlot/signal_collection.php', + 'ezcSignalCollectionOptions' => 'SignalSlot/options/options.php', + 'ezcSignalStaticConnections' => 'SignalSlot/static_connections.php', +); +?> diff --git a/include/ezcomponents/autoload/system_autoload.php b/include/ezcomponents/autoload/system_autoload.php new file mode 100644 index 000000000..454938127 --- /dev/null +++ b/include/ezcomponents/autoload/system_autoload.php @@ -0,0 +1,22 @@ + 'SystemInformation/system/exceptions/cant_scan.php', + 'ezcSystemInfoReader' => 'SystemInformation/system/interfaces/info_reader.php', + 'ezcSystemInfo' => 'SystemInformation/system/info.php', + 'ezcSystemInfoAccelerator' => 'SystemInformation/system/structs/accelerator_info.php', + 'ezcSystemInfoFreeBsdReader' => 'SystemInformation/system/readers/info_freebsd.php', + 'ezcSystemInfoLinuxReader' => 'SystemInformation/system/readers/info_linux.php', + 'ezcSystemInfoMacReader' => 'SystemInformation/system/readers/info_mac.php', + 'ezcSystemInfoWindowsReader' => 'SystemInformation/system/readers/info_windows.php', +); +?> diff --git a/include/ezcomponents/autoload/template_autoload.php b/include/ezcomponents/autoload/template_autoload.php new file mode 100644 index 000000000..d07e80d5f --- /dev/null +++ b/include/ezcomponents/autoload/template_autoload.php @@ -0,0 +1,299 @@ + 'Template/exceptions/template_exception.php', + 'ezcTemplateCompilationFailedException' => 'Template/exceptions/compilation_failed_exception.php', + 'ezcTemplateCustomBlockException' => 'Template/exceptions/custom_block_exception.php', + 'ezcTemplateFileFailedRenameException' => 'Template/exceptions/file_failed_rename_exception.php', + 'ezcTemplateFileFailedUnlinkException' => 'Template/exceptions/file_failed_unlink_exception.php', + 'ezcTemplateFileNotFoundException' => 'Template/exceptions/file_not_found_exception.php', + 'ezcTemplateFileNotReadableException' => 'Template/exceptions/file_not_readable_exception.php', + 'ezcTemplateFileNotWriteableException' => 'Template/exceptions/file_not_writeable_exception.php', + 'ezcTemplateInternalException' => 'Template/exceptions/internal_exception.php', + 'ezcTemplateInvalidCompiledFileException' => 'Template/exceptions/invalid_compiled_file_exception.php', + 'ezcTemplateNoManagerException' => 'Template/exceptions/no_manager_exception.php', + 'ezcTemplateNoOutputContextException' => 'Template/exceptions/no_output_context_exception.php', + 'ezcTemplateOutdatedCompilationException' => 'Template/exceptions/outdated_compilation_exception.php', + 'ezcTemplateParserException' => 'Template/exceptions/parser_exception.php', + 'ezcTemplateRuntimeException' => 'Template/exceptions/runtime_exception.php', + 'ezcTemplateSourceToTstParserException' => 'Template/exceptions/source_to_tst_parser_exception.php', + 'ezcTemplateTstNodeException' => 'Template/exceptions/tst_node_exception.php', + 'ezcTemplateTypeHintException' => 'Template/exceptions/typehint_exception.php', + 'ezcTemplateAstNode' => 'Template/syntax_trees/ast/interfaces/ast_node.php', + 'ezcTemplateParameterizedAstNode' => 'Template/syntax_trees/ast/interfaces/parameterized_ast.php', + 'ezcTemplateTstNode' => 'Template/syntax_trees/tst/interfaces/tst_node.php', + 'ezcTemplateExpressionTstNode' => 'Template/syntax_trees/tst/interfaces/expression_tst.php', + 'ezcTemplateOperatorAstNode' => 'Template/syntax_trees/ast/interfaces/operator_ast.php', + 'ezcTemplateAstNodeVisitor' => 'Template/syntax_trees/ast/interfaces/ast_visitor.php', + 'ezcTemplateBinaryOperatorAstNode' => 'Template/syntax_trees/ast/interfaces/binary_operator.php', + 'ezcTemplateCodeTstNode' => 'Template/syntax_trees/tst/interfaces/code_tst.php', + 'ezcTemplateOperatorTstNode' => 'Template/syntax_trees/tst/interfaces/operator_tst.php', + 'ezcTemplateSourceToTstParser' => 'Template/parsers/source_to_tst/interfaces/source_to_tst_parser.php', + 'ezcTemplateStatementAstNode' => 'Template/syntax_trees/ast/interfaces/statement_ast.php', + 'ezcTemplateTstNodeVisitor' => 'Template/syntax_trees/tst/interfaces/tst_visitor.php', + 'ezcTemplateAssignmentOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/assignment_operator.php', + 'ezcTemplateAstToPhpGenerator' => 'Template/parsers/ast_to_php/implementations/php_generator.php', + 'ezcTemplateAstWalker' => 'Template/parsers/ast_to_ast/implementations/ast_walker.php', + 'ezcTemplateBlockTstNode' => 'Template/syntax_trees/tst/nodes/block.php', + 'ezcTemplateBodyAstNode' => 'Template/syntax_trees/ast/nodes/body.php', + 'ezcTemplateCaseAstNode' => 'Template/syntax_trees/ast/nodes/control/case.php', + 'ezcTemplateCustomExtension' => 'Template/structs/custom_extension.php', + 'ezcTemplateFunctions' => 'Template/functions/functions.php', + 'ezcTemplateLiteralSourceToTstParser' => 'Template/parsers/source_to_tst/implementations/literal.php', + 'ezcTemplateLocation' => 'Template/interfaces/location.php', + 'ezcTemplateModifyingOperatorTstNode' => 'Template/syntax_trees/tst/interfaces/modifying_operator_tst.php', + 'ezcTemplateOutputContext' => 'Template/interfaces/output_context.php', + 'ezcTemplateTextTstNode' => 'Template/syntax_trees/tst/interfaces/text_tst.php', + 'ezcTemplateTreeOutput' => 'Template/parsers/interfaces/tree_output.php', + 'ezcTemplateTstToAstTransformer' => 'Template/parsers/tst_to_ast/implementations/tst_to_ast_transformer.php', + 'ezcTemplateTstWalker' => 'Template/parsers/tst_to_tst/implementations/tst_walker.php', + 'ezcTemplate' => 'Template/template.php', + 'ezcTemplateAdditionAssignmentOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/addition_assignment_operator.php', + 'ezcTemplateAdditionOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/addition_operator.php', + 'ezcTemplateArithmeticNegationOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/arithmetic_negation_operator.php', + 'ezcTemplateArray' => 'Template/functions/array_code.php', + 'ezcTemplateArrayAppendOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/array_append_assignment_operator.php', + 'ezcTemplateArrayAppendOperatorTstNode' => 'Template/syntax_trees/tst/nodes/array_append_operator.php', + 'ezcTemplateArrayFetchOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/array_fetch_operator.php', + 'ezcTemplateArrayFetchOperatorTstNode' => 'Template/syntax_trees/tst/nodes/array_fetch_operator.php', + 'ezcTemplateArrayFetchSourceToTstParser' => 'Template/parsers/source_to_tst/implementations/array_fetch.php', + 'ezcTemplateArrayFunctions' => 'Template/functions/array_functions.php', + 'ezcTemplateArrayRangeOperatorTstNode' => 'Template/syntax_trees/tst/nodes/array_range_operator.php', + 'ezcTemplateArraySourceToTstParser' => 'Template/parsers/source_to_tst/implementations/array.php', + 'ezcTemplateAssignmentOperatorTstNode' => 'Template/syntax_trees/tst/nodes/assignment_operator.php', + 'ezcTemplateAstBuilder' => 'Template/syntax_trees/ast/ast_builder.php', + 'ezcTemplateAstToAstAssignmentOptimizer' => 'Template/parsers/ast_to_ast/implementations/assignment_optimizer.php', + 'ezcTemplateAstToAstContextAppender' => 'Template/parsers/ast_to_ast/implementations/context_appender.php', + 'ezcTemplateAstToPhpStringGenerator' => 'Template/parsers/ast_to_php/implementations/php_string_generator.php', + 'ezcTemplateAstTreeOutput' => 'Template/parsers/ast/implementations/ast_tree_output.php', + 'ezcTemplateAutoloaderDefinition' => 'Template/structs/autoloader_definition.php', + 'ezcTemplateBitwiseAndAssignmentOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/bitwise_and_assignment_operator.php', + 'ezcTemplateBitwiseAndOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/bitwise_and_operator.php', + 'ezcTemplateBitwiseNegationOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/bitwise_negation_operator.php', + 'ezcTemplateBitwiseOrAssignmentOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/bitwise_or_assignment_operator.php', + 'ezcTemplateBitwiseOrOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/bitwise_or_operator.php', + 'ezcTemplateBitwiseXorAssignmentOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/bitwise_xor_assignment_operator.php', + 'ezcTemplateBitwiseXorOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/bitwise_xor_operator.php', + 'ezcTemplateBlockCommentAstNode' => 'Template/syntax_trees/ast/nodes/block_comment.php', + 'ezcTemplateBlockCommentSourceToTstParser' => 'Template/parsers/source_to_tst/implementations/block_comment.php', + 'ezcTemplateBlockCommentTstNode' => 'Template/syntax_trees/tst/nodes/block_comment.php', + 'ezcTemplateBlockSourceToTstParser' => 'Template/parsers/source_to_tst/implementations/block.php', + 'ezcTemplateBoolSourceToTstParser' => 'Template/parsers/source_to_tst/implementations/bool.php', + 'ezcTemplateBreakAstNode' => 'Template/syntax_trees/ast/nodes/control/break.php', + 'ezcTemplateCacheBlockAstNode' => 'Template/syntax_trees/ast/nodes/cache_block.php', + 'ezcTemplateCacheBlockTstNode' => 'Template/syntax_trees/tst/nodes/cache_block.php', + 'ezcTemplateCacheManager' => 'Template/interfaces/cache_manager.php', + 'ezcTemplateCacheSourceToTstParser' => 'Template/parsers/source_to_tst/implementations/cache.php', + 'ezcTemplateCacheTstNode' => 'Template/syntax_trees/tst/nodes/cache.php', + 'ezcTemplateCaptureSourceToTstParser' => 'Template/parsers/source_to_tst/implementations/capture.php', + 'ezcTemplateCaptureTstNode' => 'Template/syntax_trees/tst/nodes/capture.php', + 'ezcTemplateCaseTstNode' => 'Template/syntax_trees/tst/nodes/case.php', + 'ezcTemplateCatchAstNode' => 'Template/syntax_trees/ast/nodes/control/catch.php', + 'ezcTemplateCharsetSourceToTstParser' => 'Template/parsers/source_to_tst/implementations/charset.php', + 'ezcTemplateCharsetTstNode' => 'Template/syntax_trees/tst/nodes/charset.php', + 'ezcTemplateCloneAstNode' => 'Template/syntax_trees/ast/nodes/constructs/clone.php', + 'ezcTemplateCompiledCode' => 'Template/compiled_code.php', + 'ezcTemplateConcatAssignmentOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/concat_assignment_operator.php', + 'ezcTemplateConcatAssignmentOperatorTstNode' => 'Template/syntax_trees/tst/nodes/concat_assignment_operator.php', + 'ezcTemplateConcatOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/concat_operator.php', + 'ezcTemplateConcatOperatorTstNode' => 'Template/syntax_trees/tst/nodes/concat_operator.php', + 'ezcTemplateConditionBodyAstNode' => 'Template/syntax_trees/ast/nodes/condition_body.php', + 'ezcTemplateConditionBodyTstNode' => 'Template/syntax_trees/tst/nodes/condition_body.php', + 'ezcTemplateConfiguration' => 'Template/configuration.php', + 'ezcTemplateConstantAstNode' => 'Template/syntax_trees/ast/nodes/constant.php', + 'ezcTemplateContinueAstNode' => 'Template/syntax_trees/ast/nodes/control/continue.php', + 'ezcTemplateControlStructureSourceToTstParser' => 'Template/parsers/source_to_tst/implementations/control_structure.php', + 'ezcTemplateCurlyBracesAstNode' => 'Template/syntax_trees/ast/nodes/curly_braces.php', + 'ezcTemplateCursor' => 'Template/cursor.php', + 'ezcTemplateCustomBlock' => 'Template/interfaces/custom_block.php', + 'ezcTemplateCustomBlockDefinition' => 'Template/structs/custom_block_definition.php', + 'ezcTemplateCustomBlockSourceToTstParser' => 'Template/parsers/source_to_tst/implementations/custom_block.php', + 'ezcTemplateCustomBlockTstNode' => 'Template/syntax_trees/tst/nodes/custom_block.php', + 'ezcTemplateCustomFunction' => 'Template/interfaces/custom_function.php', + 'ezcTemplateCustomFunctionDefinition' => 'Template/structs/custom_function_definition.php', + 'ezcTemplateCycle' => 'Template/cycle.php', + 'ezcTemplateCycleControlTstNode' => 'Template/syntax_trees/tst/nodes/cycle_control.php', + 'ezcTemplateCycleSourceToTstParser' => 'Template/parsers/source_to_tst/implementations/cycle.php', + 'ezcTemplateDate' => 'Template/functions/date_code.php', + 'ezcTemplateDateFunctions' => 'Template/functions/date_functions.php', + 'ezcTemplateDebug' => 'Template/functions/debug_code.php', + 'ezcTemplateDebugFunctions' => 'Template/functions/debug_functions.php', + 'ezcTemplateDeclarationBlockSourceToTstParser' => 'Template/parsers/source_to_tst/implementations/declaration.php', + 'ezcTemplateDeclarationTstNode' => 'Template/syntax_trees/tst/nodes/declaration.php', + 'ezcTemplateDecrementOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/decrement_operator.php', + 'ezcTemplateDefaultAstNode' => 'Template/syntax_trees/ast/nodes/control/default.php', + 'ezcTemplateDelimiterSourceToTstParser' => 'Template/parsers/source_to_tst/implementations/delimiter.php', + 'ezcTemplateDelimiterTstNode' => 'Template/syntax_trees/tst/nodes/delimiter.php', + 'ezcTemplateDivisionAssignmentOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/division_assignment_operator.php', + 'ezcTemplateDivisionAssignmentOperatorTstNode' => 'Template/syntax_trees/tst/nodes/division_assignment_operator.php', + 'ezcTemplateDivisionOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/division_operator.php', + 'ezcTemplateDivisionOperatorTstNode' => 'Template/syntax_trees/tst/nodes/division_operator.php', + 'ezcTemplateDoWhileAstNode' => 'Template/syntax_trees/ast/nodes/control/do_while.php', + 'ezcTemplateDocCommentSourceToTstParser' => 'Template/parsers/source_to_tst/implementations/doc_comment.php', + 'ezcTemplateDocCommentTstNode' => 'Template/syntax_trees/tst/nodes/doc_comment.php', + 'ezcTemplateDynamicBlockAstNode' => 'Template/syntax_trees/ast/nodes/dynamic_block.php', + 'ezcTemplateDynamicBlockTstNode' => 'Template/syntax_trees/tst/nodes/dynamic_block.php', + 'ezcTemplateDynamicStringAstNode' => 'Template/syntax_trees/ast/nodes/dynamic_string.php', + 'ezcTemplateDynamicVariableAstNode' => 'Template/syntax_trees/ast/nodes/dynamic_variable.php', + 'ezcTemplateEchoAstNode' => 'Template/syntax_trees/ast/nodes/constructs/echo.php', + 'ezcTemplateEmptyAstNode' => 'Template/syntax_trees/ast/nodes/constructs/empty.php', + 'ezcTemplateEmptyBlockTstNode' => 'Template/syntax_trees/tst/nodes/empty_block.php', + 'ezcTemplateEolCommentAstNode' => 'Template/syntax_trees/ast/nodes/eol_comment.php', + 'ezcTemplateEolCommentSourceToTstParser' => 'Template/parsers/source_to_tst/implementations/eol_comment.php', + 'ezcTemplateEolCommentTstNode' => 'Template/syntax_trees/tst/nodes/eol_comment.php', + 'ezcTemplateEqualOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/equal_operator.php', + 'ezcTemplateEqualOperatorTstNode' => 'Template/syntax_trees/tst/nodes/equal_operator.php', + 'ezcTemplateExpressionBlockSourceToTstParser' => 'Template/parsers/source_to_tst/implementations/expression_block.php', + 'ezcTemplateExpressionSourceToTstParser' => 'Template/parsers/source_to_tst/implementations/expression.php', + 'ezcTemplateFetchCacheInformation' => 'Template/parsers/tst_to_tst/implementations/cache_information.php', + 'ezcTemplateFloatSourceToTstParser' => 'Template/parsers/source_to_tst/implementations/float.php', + 'ezcTemplateForAstNode' => 'Template/syntax_trees/ast/nodes/control/for.php', + 'ezcTemplateForeachAstNode' => 'Template/syntax_trees/ast/nodes/control/foreach.php', + 'ezcTemplateForeachLoopSourceToTstParser' => 'Template/parsers/source_to_tst/implementations/foreach_loop.php', + 'ezcTemplateForeachLoopTstNode' => 'Template/syntax_trees/tst/nodes/foreach_loop.php', + 'ezcTemplateFunctionCallAstNode' => 'Template/syntax_trees/ast/nodes/function_call.php', + 'ezcTemplateFunctionCallSourceToTstParser' => 'Template/parsers/source_to_tst/implementations/function_call.php', + 'ezcTemplateFunctionCallTstNode' => 'Template/syntax_trees/tst/nodes/function_call.php', + 'ezcTemplateGenericStatementAstNode' => 'Template/syntax_trees/ast/nodes/generic_statement.php', + 'ezcTemplateGreaterEqualOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/greater_equal_operator.php', + 'ezcTemplateGreaterEqualOperatorTstNode' => 'Template/syntax_trees/tst/nodes/greater_equal_operator.php', + 'ezcTemplateGreaterThanOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/greater_than_operator.php', + 'ezcTemplateGreaterThanOperatorTstNode' => 'Template/syntax_trees/tst/nodes/greater_than_operator.php', + 'ezcTemplateIdenticalOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/identical_operator.php', + 'ezcTemplateIdenticalOperatorTstNode' => 'Template/syntax_trees/tst/nodes/identical_operator.php', + 'ezcTemplateIdentifierAstNode' => 'Template/syntax_trees/ast/nodes/identifier.php', + 'ezcTemplateIdentifierSourceToTstParser' => 'Template/parsers/source_to_tst/implementations/identifier.php', + 'ezcTemplateIdentifierTstNode' => 'Template/syntax_trees/tst/nodes/identifier.php', + 'ezcTemplateIfAstNode' => 'Template/syntax_trees/ast/nodes/control/if.php', + 'ezcTemplateIfConditionSourceToTstParser' => 'Template/parsers/source_to_tst/implementations/if_condition.php', + 'ezcTemplateIfConditionTstNode' => 'Template/syntax_trees/tst/nodes/if_condition.php', + 'ezcTemplateIncludeAstNode' => 'Template/syntax_trees/ast/nodes/control/include.php', + 'ezcTemplateIncludeOnceAstNode' => 'Template/syntax_trees/ast/nodes/control/include_once.php', + 'ezcTemplateIncludeSourceToTstParser' => 'Template/parsers/source_to_tst/implementations/include.php', + 'ezcTemplateIncludeTstNode' => 'Template/syntax_trees/tst/nodes/include.php', + 'ezcTemplateIncrementOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/increment_operator.php', + 'ezcTemplateInstanceofOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/instanceof_operator.php', + 'ezcTemplateIntegerSourceToTstParser' => 'Template/parsers/source_to_tst/implementations/integer.php', + 'ezcTemplateIssetAstNode' => 'Template/syntax_trees/ast/nodes/constructs/isset.php', + 'ezcTemplateLessEqualOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/less_equal_operator.php', + 'ezcTemplateLessEqualOperatorTstNode' => 'Template/syntax_trees/tst/nodes/less_equal_operator.php', + 'ezcTemplateLessThanOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/less_than_operator.php', + 'ezcTemplateLessThanOperatorTstNode' => 'Template/syntax_trees/tst/nodes/less_than_operator.php', + 'ezcTemplateLiteralArrayAstNode' => 'Template/syntax_trees/ast/nodes/literalarray.php', + 'ezcTemplateLiteralArrayTstNode' => 'Template/syntax_trees/tst/nodes/literalarray.php', + 'ezcTemplateLiteralAstNode' => 'Template/syntax_trees/ast/nodes/literal.php', + 'ezcTemplateLiteralBlockSourceToTstParser' => 'Template/parsers/source_to_tst/implementations/literal_block.php', + 'ezcTemplateLiteralBlockTstNode' => 'Template/syntax_trees/tst/nodes/literal_block.php', + 'ezcTemplateLiteralTstNode' => 'Template/syntax_trees/tst/nodes/literal.php', + 'ezcTemplateLocationInterface' => 'Template/interfaces/location_interface.php', + 'ezcTemplateLocator' => 'Template/interfaces/locator.php', + 'ezcTemplateLogicalAndOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/logical_and_operator.php', + 'ezcTemplateLogicalAndOperatorTstNode' => 'Template/syntax_trees/tst/nodes/logical_and_operator.php', + 'ezcTemplateLogicalLiteralAndOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/logical_literal_and_operator.php', + 'ezcTemplateLogicalLiteralOrOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/logical_literal_or_operator.php', + 'ezcTemplateLogicalLiteralXorOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/logical_literal_xor_operator.php', + 'ezcTemplateLogicalNegateOperatorTstNode' => 'Template/syntax_trees/tst/nodes/logical_negate_operator.php', + 'ezcTemplateLogicalNegationOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/logical_negation_operator.php', + 'ezcTemplateLogicalOrOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/logical_or_operator.php', + 'ezcTemplateLogicalOrOperatorTstNode' => 'Template/syntax_trees/tst/nodes/logical_or_operator.php', + 'ezcTemplateLoopSourceToTstParser' => 'Template/parsers/source_to_tst/implementations/loop.php', + 'ezcTemplateLoopTstNode' => 'Template/syntax_trees/tst/nodes/loop.php', + 'ezcTemplateMathFunctions' => 'Template/functions/math_functions.php', + 'ezcTemplateMinusAssignmentOperatorTstNode' => 'Template/syntax_trees/tst/nodes/minus_assignment_operator.php', + 'ezcTemplateMinusOperatorTstNode' => 'Template/syntax_trees/tst/nodes/minus_operator.php', + 'ezcTemplateModifyingBlockTstNode' => 'Template/syntax_trees/tst/nodes/modifying_block.php', + 'ezcTemplateModuloAssignmentOperatorTstNode' => 'Template/syntax_trees/tst/nodes/modulo_assignment_operator.php', + 'ezcTemplateModuloOperatorTstNode' => 'Template/syntax_trees/tst/nodes/modulo_operator.php', + 'ezcTemplateModulusAssignmentOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/modulus_assignment_operator.php', + 'ezcTemplateModulusOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/modulus_operator.php', + 'ezcTemplateMultiplicationAssignmentOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/multiplication_assignment_operator.php', + 'ezcTemplateMultiplicationAssignmentOperatorTstNode' => 'Template/syntax_trees/tst/nodes/multiplication_assignment_operator.php', + 'ezcTemplateMultiplicationOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/multiplication_operator.php', + 'ezcTemplateMultiplicationOperatorTstNode' => 'Template/syntax_trees/tst/nodes/multiplication_operator.php', + 'ezcTemplateNegateOperatorTstNode' => 'Template/syntax_trees/tst/nodes/negate_operator.php', + 'ezcTemplateNewAstNode' => 'Template/syntax_trees/ast/nodes/constructs/new.php', + 'ezcTemplateNoContext' => 'Template/contexts/no_context.php', + 'ezcTemplateNopAstNode' => 'Template/syntax_trees/ast/nodes/nop.php', + 'ezcTemplateNotEqualOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/not_equal_operator.php', + 'ezcTemplateNotEqualOperatorTstNode' => 'Template/syntax_trees/tst/nodes/not_equal_operator.php', + 'ezcTemplateNotIdenticalOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/not_identical_operator.php', + 'ezcTemplateNotIdenticalOperatorTstNode' => 'Template/syntax_trees/tst/nodes/not_identical_operator.php', + 'ezcTemplateNullSourceToTstParser' => 'Template/parsers/source_to_tst/implementations/null.php', + 'ezcTemplateObjectAccessOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/object_access_operator.php', + 'ezcTemplateOutputAstNode' => 'Template/syntax_trees/ast/nodes/output.php', + 'ezcTemplateOutputBlockTstNode' => 'Template/syntax_trees/tst/nodes/output_block.php', + 'ezcTemplateOutputVariableManager' => 'Template/parsers/tst_to_ast/implementations/output_variable_manager.php', + 'ezcTemplateParenthesisAstNode' => 'Template/syntax_trees/ast/nodes/parenthesis.php', + 'ezcTemplateParenthesisTstNode' => 'Template/syntax_trees/tst/nodes/parenthesis.php', + 'ezcTemplateParser' => 'Template/parser.php', + 'ezcTemplatePhpCodeAstNode' => 'Template/syntax_trees/ast/nodes/php_code.php', + 'ezcTemplatePlusAssignmentOperatorTstNode' => 'Template/syntax_trees/tst/nodes/plus_assignment_operator.php', + 'ezcTemplatePlusOperatorTstNode' => 'Template/syntax_trees/tst/nodes/plus_operator.php', + 'ezcTemplatePostDecrementOperatorTstNode' => 'Template/syntax_trees/tst/nodes/post_decrement_operator.php', + 'ezcTemplatePostIncrementOperatorTstNode' => 'Template/syntax_trees/tst/nodes/post_increment_operator.php', + 'ezcTemplatePreDecrementOperatorTstNode' => 'Template/syntax_trees/tst/nodes/pre_decrement_operator.php', + 'ezcTemplatePreIncrementOperatorTstNode' => 'Template/syntax_trees/tst/nodes/pre_increment_operator.php', + 'ezcTemplatePrintAstNode' => 'Template/syntax_trees/ast/nodes/constructs/print.php', + 'ezcTemplateProgramSourceToTstParser' => 'Template/parsers/source_to_tst/implementations/program.php', + 'ezcTemplateProgramTstNode' => 'Template/syntax_trees/tst/nodes/program.php', + 'ezcTemplatePropertyFetchOperatorTstNode' => 'Template/syntax_trees/tst/nodes/property_fetch_operator.php', + 'ezcTemplateReferenceOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/reference_operator.php', + 'ezcTemplateRegExp' => 'Template/functions/regexp_code.php', + 'ezcTemplateRegExpFunctions' => 'Template/functions/regexp_functions.php', + 'ezcTemplateRequireAstNode' => 'Template/syntax_trees/ast/nodes/control/require.php', + 'ezcTemplateRequireOnceAstNode' => 'Template/syntax_trees/ast/nodes/control/require_once.php', + 'ezcTemplateReturnAstNode' => 'Template/syntax_trees/ast/nodes/control/return.php', + 'ezcTemplateReturnTstNode' => 'Template/syntax_trees/tst/nodes/return.php', + 'ezcTemplateRootAstNode' => 'Template/syntax_trees/ast/nodes/root.php', + 'ezcTemplateShiftLeftAssignmentOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/shift_left_assignment_operator.php', + 'ezcTemplateShiftLeftOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/shift_left_operator.php', + 'ezcTemplateShiftRightAssignmentOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/shift_right_assignment_operator.php', + 'ezcTemplateShiftRightOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/shift_right_operator.php', + 'ezcTemplateSourceCode' => 'Template/source_code.php', + 'ezcTemplateSourceToTstErrorMessages' => 'Template/error_messages.php', + 'ezcTemplateString' => 'Template/functions/string_code.php', + 'ezcTemplateStringFunctions' => 'Template/functions/string_functions.php', + 'ezcTemplateStringSourceToTstParser' => 'Template/parsers/source_to_tst/implementations/string.php', + 'ezcTemplateStringTool' => 'Template/string_tool.php', + 'ezcTemplateSubtractionAssignmentOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/subtraction_assignment_operator.php', + 'ezcTemplateSubtractionOperatorAstNode' => 'Template/syntax_trees/ast/nodes/operators/subtraction_operator.php', + 'ezcTemplateSwitchAstNode' => 'Template/syntax_trees/ast/nodes/control/switch.php', + 'ezcTemplateSwitchConditionSourceToTstParser' => 'Template/parsers/source_to_tst/implementations/switch_condition.php', + 'ezcTemplateSwitchTstNode' => 'Template/syntax_trees/tst/nodes/switch.php', + 'ezcTemplateSymbolTable' => 'Template/symbol_table.php', + 'ezcTemplateTextBlockTstNode' => 'Template/syntax_trees/tst/nodes/text_block.php', + 'ezcTemplateThrowExceptionAstNode' => 'Template/syntax_trees/ast/nodes/throw_exception.php', + 'ezcTemplateTranslationContextSourceToTstParser' => 'Template/parsers/source_to_tst/implementations/translation_context.php', + 'ezcTemplateTranslationContextTstNode' => 'Template/syntax_trees/tst/nodes/translation_context.php', + 'ezcTemplateTranslationSourceToTstParser' => 'Template/parsers/source_to_tst/implementations/translation.php', + 'ezcTemplateTranslationTstNode' => 'Template/syntax_trees/tst/nodes/translation.php', + 'ezcTemplateTryAstNode' => 'Template/syntax_trees/ast/nodes/control/try.php', + 'ezcTemplateTstToAstCachedTransformer' => 'Template/parsers/tst_to_ast/implementations/tst_to_ast_cached_transformer.php', + 'ezcTemplateTstTreeOutput' => 'Template/parsers/tst/implementations/tst_tree_output.php', + 'ezcTemplateType' => 'Template/functions/type_code.php', + 'ezcTemplateTypeCastAstNode' => 'Template/syntax_trees/ast/nodes/type_cast.php', + 'ezcTemplateTypeFunctions' => 'Template/functions/type_functions.php', + 'ezcTemplateUnsetAstNode' => 'Template/syntax_trees/ast/nodes/constructs/unset.php', + 'ezcTemplateValidationItem' => 'Template/validation_item.php', + 'ezcTemplateVariableAstNode' => 'Template/syntax_trees/ast/nodes/variable.php', + 'ezcTemplateVariableCollection' => 'Template/variable_collection.php', + 'ezcTemplateVariableSourceToTstParser' => 'Template/parsers/source_to_tst/implementations/variable.php', + 'ezcTemplateVariableTstNode' => 'Template/syntax_trees/tst/nodes/variable.php', + 'ezcTemplateWeb' => 'Template/functions/web_code.php', + 'ezcTemplateWebFunctions' => 'Template/functions/web_functions.php', + 'ezcTemplateWhileAstNode' => 'Template/syntax_trees/ast/nodes/control/while.php', + 'ezcTemplateWhileLoopSourceToTstParser' => 'Template/parsers/source_to_tst/implementations/while_loop.php', + 'ezcTemplateWhileLoopTstNode' => 'Template/syntax_trees/tst/nodes/while_loop.php', + 'ezcTemplateWhitespaceRemoval' => 'Template/parsers/tst_to_tst/implementations/whitespace_removal.php', + 'ezcTemplateXhtmlContext' => 'Template/contexts/xhtml_context.php', +); +?> diff --git a/include/ezcomponents/autoload/template_translation_autoload.php b/include/ezcomponents/autoload/template_translation_autoload.php new file mode 100644 index 000000000..046b3650f --- /dev/null +++ b/include/ezcomponents/autoload/template_translation_autoload.php @@ -0,0 +1,19 @@ + 'TemplateTranslationTiein/exceptions/exception.php', + 'ezcTemplateTranslationManagerNotConfiguredException' => 'TemplateTranslationTiein/exceptions/manager_not_configured.php', + 'ezcTemplateTranslationConfiguration' => 'TemplateTranslationTiein/configuration.php', + 'ezcTemplateTranslationProvider' => 'TemplateTranslationTiein/provider.php', + 'ezcTemplateTranslationStringExtracter' => 'TemplateTranslationTiein/visitors/string_extracter.php', +); +?> diff --git a/include/ezcomponents/autoload/translation_autoload.php b/include/ezcomponents/autoload/translation_autoload.php new file mode 100644 index 000000000..4dfe434e6 --- /dev/null +++ b/include/ezcomponents/autoload/translation_autoload.php @@ -0,0 +1,34 @@ + 'Translation/exceptions/exception.php', + 'ezcTranslationContextNotAvailableException' => 'Translation/exceptions/context_not_available.php', + 'ezcTranslationKeyNotAvailableException' => 'Translation/exceptions/key_not_available.php', + 'ezcTranslationMissingTranslationFileException' => 'Translation/exceptions/missing_translation_file.php', + 'ezcTranslationNotConfiguredException' => 'Translation/exceptions/not_configured.php', + 'ezcTranslationParameterMissingException' => 'Translation/exceptions/parameter_missing.php', + 'ezcTranslationReaderNotInitializedException' => 'Translation/exceptions/reader_not_initialized.php', + 'ezcTranslationWriterNotInitializedException' => 'Translation/exceptions/writer_not_initialized.php', + 'ezcTranslationBackend' => 'Translation/interfaces/backend_interface.php', + 'ezcTranslationContextRead' => 'Translation/interfaces/context_read_interface.php', + 'ezcTranslationFilter' => 'Translation/interfaces/filter_interface.php', + 'ezcTranslation' => 'Translation/translation.php', + 'ezcTranslationBorkFilter' => 'Translation/filters/bork_filter.php', + 'ezcTranslationComplementEmptyFilter' => 'Translation/filters/complement_filter.php', + 'ezcTranslationContextWrite' => 'Translation/interfaces/context_write_interface.php', + 'ezcTranslationData' => 'Translation/structs/translation_data.php', + 'ezcTranslationLeetFilter' => 'Translation/filters/leet_filter.php', + 'ezcTranslationManager' => 'Translation/translation_manager.php', + 'ezcTranslationTsBackend' => 'Translation/backends/ts_backend.php', + 'ezcTranslationTsBackendOptions' => 'Translation/options/ts_backend.php', +); +?> diff --git a/include/ezcomponents/autoload/translation_cache_autoload.php b/include/ezcomponents/autoload/translation_cache_autoload.php new file mode 100644 index 000000000..44ef41cea --- /dev/null +++ b/include/ezcomponents/autoload/translation_cache_autoload.php @@ -0,0 +1,15 @@ + 'TranslationCacheTiein/backends/cache_backend.php', +); +?> diff --git a/include/ezcomponents/autoload/tree_autoload.php b/include/ezcomponents/autoload/tree_autoload.php new file mode 100644 index 000000000..05b3721db --- /dev/null +++ b/include/ezcomponents/autoload/tree_autoload.php @@ -0,0 +1,44 @@ + 'Tree/exceptions/exception.php', + 'ezcTreeDataStoreMissingDataException' => 'Tree/exceptions/missing_data.php', + 'ezcTreeIdsDoNotMatchException' => 'Tree/exceptions/ids_do_not_match.php', + 'ezcTreeInvalidClassException' => 'Tree/exceptions/invalid_class.php', + 'ezcTreeInvalidIdException' => 'Tree/exceptions/invalid_id.php', + 'ezcTreeInvalidXmlException' => 'Tree/exceptions/invalid_xml.php', + 'ezcTreeInvalidXmlFormatException' => 'Tree/exceptions/invalid_xml_format.php', + 'ezcTreeTransactionAlreadyStartedException' => 'Tree/exceptions/transaction_already_started.php', + 'ezcTreeTransactionNotStartedException' => 'Tree/exceptions/transaction_not_started.php', + 'ezcTreeUnknownIdException' => 'Tree/exceptions/unknown_id.php', + 'ezcTreeDataStore' => 'Tree/interfaces/data_store.php', + 'ezcTreeVisitable' => 'Tree/interfaces/visitable.php', + 'ezcTree' => 'Tree/tree.php', + 'ezcTreeVisitor' => 'Tree/interfaces/visitor.php', + 'ezcTreeXmlDataStore' => 'Tree/stores/xml.php', + 'ezcTreeMemory' => 'Tree/backends/memory.php', + 'ezcTreeMemoryDataStore' => 'Tree/stores/memory.php', + 'ezcTreeMemoryNode' => 'Tree/structs/memory_node.php', + 'ezcTreeNode' => 'Tree/tree_node.php', + 'ezcTreeNodeList' => 'Tree/tree_node_list.php', + 'ezcTreeNodeListIterator' => 'Tree/tree_node_list_iterator.php', + 'ezcTreeTransactionItem' => 'Tree/structs/transaction_item.php', + 'ezcTreeVisitorGraphViz' => 'Tree/visitors/graphviz.php', + 'ezcTreeVisitorPlainText' => 'Tree/visitors/plain_text.php', + 'ezcTreeVisitorXHTML' => 'Tree/visitors/xhtml.php', + 'ezcTreeVisitorXHTMLOptions' => 'Tree/options/visitor_xhtml.php', + 'ezcTreeVisitorYUI' => 'Tree/visitors/yui.php', + 'ezcTreeVisitorYUIOptions' => 'Tree/options/visitor_yui.php', + 'ezcTreeXml' => 'Tree/backends/xml.php', + 'ezcTreeXmlInternalDataStore' => 'Tree/stores/xml_internal.php', +); +?> diff --git a/include/ezcomponents/autoload/tree_db_autoload.php b/include/ezcomponents/autoload/tree_db_autoload.php new file mode 100644 index 000000000..6a4fa72fc --- /dev/null +++ b/include/ezcomponents/autoload/tree_db_autoload.php @@ -0,0 +1,21 @@ + 'TreeDatabaseTiein/exceptions/invalid_schema.php', + 'ezcTreeDb' => 'TreeDatabaseTiein/backends/db.php', + 'ezcTreeDbDataStore' => 'TreeDatabaseTiein/stores/db.php', + 'ezcTreeDbParentChild' => 'TreeDatabaseTiein/backends/db_parent_child.php', + 'ezcTreeDbExternalTableDataStore' => 'TreeDatabaseTiein/stores/db_external.php', + 'ezcTreeDbMaterializedPath' => 'TreeDatabaseTiein/backends/db_materialized_path.php', + 'ezcTreeDbNestedSet' => 'TreeDatabaseTiein/backends/db_nested_set.php', +); +?> diff --git a/include/ezcomponents/autoload/tree_persistent_autoload.php b/include/ezcomponents/autoload/tree_persistent_autoload.php new file mode 100644 index 000000000..7085c2861 --- /dev/null +++ b/include/ezcomponents/autoload/tree_persistent_autoload.php @@ -0,0 +1,15 @@ + 'TreePersistentObjectTiein/stores/persistent_object.php', +); +?> diff --git a/include/ezcomponents/autoload/url_autoload.php b/include/ezcomponents/autoload/url_autoload.php new file mode 100644 index 000000000..68dd2920d --- /dev/null +++ b/include/ezcomponents/autoload/url_autoload.php @@ -0,0 +1,22 @@ + 'Url/exceptions/url_exception.php', + 'ezcUrlInvalidParameterException' => 'Url/exceptions/url_invalid_parameter_exception.php', + 'ezcUrlNoConfigurationException' => 'Url/exceptions/url_no_configuration_exception.php', + 'ezcUrlNotRegisteredException' => 'Url/exceptions/url_not_registered_exception.php', + 'ezcUrl' => 'Url/url.php', + 'ezcUrlConfiguration' => 'Url/url_configuration.php', + 'ezcUrlCreator' => 'Url/url_creator.php', + 'ezcUrlTools' => 'Url/url_tools.php', +); +?> diff --git a/include/ezcomponents/autoload/webdav_autoload.php b/include/ezcomponents/autoload/webdav_autoload.php new file mode 100644 index 000000000..915d952b3 --- /dev/null +++ b/include/ezcomponents/autoload/webdav_autoload.php @@ -0,0 +1,112 @@ + 'Webdav/exceptions/exception.php', + 'ezcWebdavBadRequestException' => 'Webdav/exceptions/bad_request.php', + 'ezcWebdavBrokenRequestUriException' => 'Webdav/exceptions/broken_request_uri.php', + 'ezcWebdavHeadersNotValidatedException' => 'Webdav/exceptions/headers_not_validated.php', + 'ezcWebdavInvalidHeaderException' => 'Webdav/exceptions/invalid_header.php', + 'ezcWebdavInvalidHookException' => 'Webdav/exceptions/invalid_hook.php', + 'ezcWebdavInvalidRequestBodyException' => 'Webdav/exceptions/invalid_request_body.php', + 'ezcWebdavInvalidRequestMethodException' => 'Webdav/exceptions/invalid_request_method.php', + 'ezcWebdavMissingHeaderException' => 'Webdav/exceptions/missing_header.php', + 'ezcWebdavMissingServerVariableException' => 'Webdav/exceptions/misssing_server_variable.php', + 'ezcWebdavMissingTransportConfigurationException' => 'Webdav/exceptions/missing_transport_configuration.php', + 'ezcWebdavNotTransportHandlerException' => 'Webdav/exceptions/no_transport_handler.php', + 'ezcWebdavRequestNotSupportedException' => 'Webdav/exceptions/request_not_supported.php', + 'ezcWebdavUnknownHeaderException' => 'Webdav/exceptions/unknown_header.php', + 'ezcWebdavInfrastructureBase' => 'Webdav/interfaces/infrastructure_base.php', + 'ezcWebdavProperty' => 'Webdav/interfaces/property.php', + 'ezcWebdavBackend' => 'Webdav/interfaces/backend.php', + 'ezcWebdavBackendChange' => 'Webdav/interfaces/backend/change.php', + 'ezcWebdavBackendMakeCollection' => 'Webdav/interfaces/backend/make_collection.php', + 'ezcWebdavBackendPut' => 'Webdav/interfaces/backend/put.php', + 'ezcWebdavLiveProperty' => 'Webdav/interfaces/property_live.php', + 'ezcWebdavPropertyStorage' => 'Webdav/interfaces/property_storage.php', + 'ezcWebdavResponse' => 'Webdav/interfaces/response.php', + 'ezcWebdavBasicPropertyStorage' => 'Webdav/property_storages/basic.php', + 'ezcWebdavCopyResponse' => 'Webdav/responses/copy.php', + 'ezcWebdavDisplayInformation' => 'Webdav/structs/display_information.php', + 'ezcWebdavPathFactory' => 'Webdav/interfaces/path_factory.php', + 'ezcWebdavPluginConfiguration' => 'Webdav/plugin_configuration.php', + 'ezcWebdavPropFindResponse' => 'Webdav/responses/propfind.php', + 'ezcWebdavPropertyHandler' => 'Webdav/transports/property_handler.php', + 'ezcWebdavRequest' => 'Webdav/interfaces/request.php', + 'ezcWebdavSimpleBackend' => 'Webdav/backends/simple.php', + 'ezcWebdavSupportedLockPropertyLockentry' => 'Webdav/properties/supportedlock_lockentry.php', + 'ezcWebdavTransport' => 'Webdav/transport.php', + 'ezcWebdavAutomaticPathFactory' => 'Webdav/path_factories/automatic.php', + 'ezcWebdavBasicPathFactory' => 'Webdav/path_factories/basic.php', + 'ezcWebdavCollection' => 'Webdav/structs/collection.php', + 'ezcWebdavCopyRequest' => 'Webdav/requests/copy.php', + 'ezcWebdavCreationDateProperty' => 'Webdav/properties/creationdate.php', + 'ezcWebdavDateTime' => 'Webdav/tools/date_time.php', + 'ezcWebdavDeadProperty' => 'Webdav/properties/dead.php', + 'ezcWebdavDeleteRequest' => 'Webdav/requests/delete.php', + 'ezcWebdavDeleteResponse' => 'Webdav/responses/delete.php', + 'ezcWebdavDisplayNameProperty' => 'Webdav/properties/displayname.php', + 'ezcWebdavEmptyDisplayInformation' => 'Webdav/structs/display_information_empty.php', + 'ezcWebdavErrorResponse' => 'Webdav/responses/error.php', + 'ezcWebdavFileBackend' => 'Webdav/backends/file.php', + 'ezcWebdavFileBackendOptions' => 'Webdav/options/backend_file_options.php', + 'ezcWebdavFlaggedPropertyStorage' => 'Webdav/property_storages/flagged.php', + 'ezcWebdavGetCollectionResponse' => 'Webdav/responses/get_collection.php', + 'ezcWebdavGetContentLanguageProperty' => 'Webdav/properties/getcontentlanguage.php', + 'ezcWebdavGetContentLengthProperty' => 'Webdav/properties/getcontentlength.php', + 'ezcWebdavGetContentTypeProperty' => 'Webdav/properties/getcontenttype.php', + 'ezcWebdavGetEtagProperty' => 'Webdav/properties/getetag.php', + 'ezcWebdavGetLastModifiedProperty' => 'Webdav/properties/getlastmodified.php', + 'ezcWebdavGetRequest' => 'Webdav/requests/get.php', + 'ezcWebdavGetResourceResponse' => 'Webdav/responses/get_resource.php', + 'ezcWebdavHeadRequest' => 'Webdav/requests/head.php', + 'ezcWebdavHeadResponse' => 'Webdav/responses/head.php', + 'ezcWebdavHeaderHandler' => 'Webdav/transports/header_handler.php', + 'ezcWebdavLockDiscoveryProperty' => 'Webdav/properties/lockdiscovery.php', + 'ezcWebdavLockDiscoveryPropertyActiveLock' => 'Webdav/properties/lockdiscovery_activelock.php', + 'ezcWebdavLockRequest' => 'Webdav/requests/lock.php', + 'ezcWebdavMakeCollectionRequest' => 'Webdav/requests/mkcol.php', + 'ezcWebdavMakeCollectionResponse' => 'Webdav/responses/mkcol.php', + 'ezcWebdavMemoryBackend' => 'Webdav/backends/memory.php', + 'ezcWebdavMemoryBackendOptions' => 'Webdav/options/backend_memory_options.php', + 'ezcWebdavMicrosoftCompatibleTransport' => 'Webdav/transports/microsoft.php', + 'ezcWebdavMoveRequest' => 'Webdav/requests/move.php', + 'ezcWebdavMoveResponse' => 'Webdav/responses/move.php', + 'ezcWebdavMultistatusResponse' => 'Webdav/responses/multistatus.php', + 'ezcWebdavNamespaceRegistry' => 'Webdav/namespace_registry.php', + 'ezcWebdavNautilusPropertyHandler' => 'Webdav/transports/property_handlers/nautilus.php', + 'ezcWebdavOptionsRequest' => 'Webdav/requests/options.php', + 'ezcWebdavOptionsResponse' => 'Webdav/responses/options.php', + 'ezcWebdavOutputResult' => 'Webdav/structs/output_result.php', + 'ezcWebdavPluginParameters' => 'Webdav/plugin_parameters.php', + 'ezcWebdavPluginRegistry' => 'Webdav/plugin_registry.php', + 'ezcWebdavPropFindRequest' => 'Webdav/requests/propfind.php', + 'ezcWebdavPropPatchRequest' => 'Webdav/requests/proppatch.php', + 'ezcWebdavPropPatchResponse' => 'Webdav/responses/proppatch.php', + 'ezcWebdavPropStatResponse' => 'Webdav/responses/propstat.php', + 'ezcWebdavPutRequest' => 'Webdav/requests/put.php', + 'ezcWebdavPutResponse' => 'Webdav/responses/put.php', + 'ezcWebdavRequestLockInfoContent' => 'Webdav/requests/content/lock_info.php', + 'ezcWebdavRequestPropertyBehaviourContent' => 'Webdav/requests/content/property_behaviour.php', + 'ezcWebdavResource' => 'Webdav/structs/resource.php', + 'ezcWebdavResourceTypeProperty' => 'Webdav/properties/resourcetype.php', + 'ezcWebdavServer' => 'Webdav/server.php', + 'ezcWebdavServerConfiguration' => 'Webdav/server_configuration.php', + 'ezcWebdavServerConfigurationManager' => 'Webdav/server_configuration_manager.php', + 'ezcWebdavSourceProperty' => 'Webdav/properties/source.php', + 'ezcWebdavSourcePropertyLink' => 'Webdav/properties/source_link.php', + 'ezcWebdavStringDisplayInformation' => 'Webdav/structs/display_information_string.php', + 'ezcWebdavSupportedLockProperty' => 'Webdav/properties/supportedlock.php', + 'ezcWebdavUnlockRequest' => 'Webdav/requests/unlock.php', + 'ezcWebdavXmlDisplayInformation' => 'Webdav/structs/display_information_xml.php', + 'ezcWebdavXmlTool' => 'Webdav/tools/xml.php', +); +?> diff --git a/include/ezcomponents/autoload/workflow_autoload.php b/include/ezcomponents/autoload/workflow_autoload.php new file mode 100644 index 000000000..4e376398f --- /dev/null +++ b/include/ezcomponents/autoload/workflow_autoload.php @@ -0,0 +1,91 @@ + 'Workflow/exceptions/exception.php', + 'ezcWorkflowDefinitionStorageException' => 'Workflow/exceptions/definition_storage.php', + 'ezcWorkflowExecutionException' => 'Workflow/exceptions/execution.php', + 'ezcWorkflowInvalidInputException' => 'Workflow/exceptions/invalid_input.php', + 'ezcWorkflowInvalidWorkflowException' => 'Workflow/exceptions/invalid_workflow.php', + 'ezcWorkflowVisitable' => 'Workflow/interfaces/visitable.php', + 'ezcWorkflowNode' => 'Workflow/interfaces/node.php', + 'ezcWorkflowCondition' => 'Workflow/interfaces/condition.php', + 'ezcWorkflowNodeBranch' => 'Workflow/interfaces/node_branch.php', + 'ezcWorkflowNodeMerge' => 'Workflow/interfaces/node_merge.php', + 'ezcWorkflowConditionBooleanSet' => 'Workflow/interfaces/condition_boolean_set.php', + 'ezcWorkflowConditionComparison' => 'Workflow/interfaces/condition_comparison.php', + 'ezcWorkflowConditionType' => 'Workflow/interfaces/condition_type.php', + 'ezcWorkflowDefinitionStorage' => 'Workflow/interfaces/definition_storage.php', + 'ezcWorkflowExecution' => 'Workflow/interfaces/execution.php', + 'ezcWorkflowExecutionPlugin' => 'Workflow/interfaces/execution_plugin.php', + 'ezcWorkflowNodeArithmeticBase' => 'Workflow/interfaces/node_arithmetic_base.php', + 'ezcWorkflowNodeConditionalBranch' => 'Workflow/interfaces/node_conditional_branch.php', + 'ezcWorkflowNodeEnd' => 'Workflow/nodes/end.php', + 'ezcWorkflowNodeStart' => 'Workflow/nodes/start.php', + 'ezcWorkflowNodeSynchronization' => 'Workflow/nodes/control_flow/synchronization.php', + 'ezcWorkflowVisitor' => 'Workflow/interfaces/visitor.php', + 'ezcWorkflow' => 'Workflow/workflow.php', + 'ezcWorkflowConditionAnd' => 'Workflow/conditions/and.php', + 'ezcWorkflowConditionIsAnything' => 'Workflow/conditions/is_anything.php', + 'ezcWorkflowConditionIsArray' => 'Workflow/conditions/is_array.php', + 'ezcWorkflowConditionIsBool' => 'Workflow/conditions/is_bool.php', + 'ezcWorkflowConditionIsEqual' => 'Workflow/conditions/is_equal.php', + 'ezcWorkflowConditionIsEqualOrGreaterThan' => 'Workflow/conditions/is_equal_or_greater_than.php', + 'ezcWorkflowConditionIsEqualOrLessThan' => 'Workflow/conditions/is_equal_or_less_than.php', + 'ezcWorkflowConditionIsFalse' => 'Workflow/conditions/is_false.php', + 'ezcWorkflowConditionIsFloat' => 'Workflow/conditions/is_float.php', + 'ezcWorkflowConditionIsGreaterThan' => 'Workflow/conditions/is_greater_than.php', + 'ezcWorkflowConditionIsInteger' => 'Workflow/conditions/is_integer.php', + 'ezcWorkflowConditionIsLessThan' => 'Workflow/conditions/is_less_than.php', + 'ezcWorkflowConditionIsNotEqual' => 'Workflow/conditions/is_not_equal.php', + 'ezcWorkflowConditionIsObject' => 'Workflow/conditions/is_object.php', + 'ezcWorkflowConditionIsString' => 'Workflow/conditions/is_string.php', + 'ezcWorkflowConditionIsTrue' => 'Workflow/conditions/is_true.php', + 'ezcWorkflowConditionNot' => 'Workflow/conditions/not.php', + 'ezcWorkflowConditionOr' => 'Workflow/conditions/or.php', + 'ezcWorkflowConditionVariable' => 'Workflow/conditions/variable.php', + 'ezcWorkflowConditionVariables' => 'Workflow/conditions/variables.php', + 'ezcWorkflowConditionXor' => 'Workflow/conditions/xor.php', + 'ezcWorkflowDefinitionStorageXml' => 'Workflow/definition_storage/xml.php', + 'ezcWorkflowExecutionListener' => 'Workflow/interfaces/execution_listener.php', + 'ezcWorkflowExecutionListenerPlugin' => 'Workflow/execution/plugin/listener.php', + 'ezcWorkflowExecutionNonInteractive' => 'Workflow/execution/non_interactive.php', + 'ezcWorkflowExecutionVisualizerPlugin' => 'Workflow/execution/plugin/visualizer.php', + 'ezcWorkflowExecutionVisualizerPluginOptions' => 'Workflow/options/execution_plugin_visualizer.php', + 'ezcWorkflowNodeAction' => 'Workflow/nodes/action.php', + 'ezcWorkflowNodeCancel' => 'Workflow/nodes/cancel.php', + 'ezcWorkflowNodeDiscriminator' => 'Workflow/nodes/control_flow/discriminator.php', + 'ezcWorkflowNodeExclusiveChoice' => 'Workflow/nodes/control_flow/exclusive_choice.php', + 'ezcWorkflowNodeFinally' => 'Workflow/nodes/finally.php', + 'ezcWorkflowNodeInput' => 'Workflow/nodes/variables/input.php', + 'ezcWorkflowNodeLoop' => 'Workflow/nodes/control_flow/loop.php', + 'ezcWorkflowNodeMultiChoice' => 'Workflow/nodes/control_flow/multi_choice.php', + 'ezcWorkflowNodeParallelSplit' => 'Workflow/nodes/control_flow/parallel_split.php', + 'ezcWorkflowNodeSimpleMerge' => 'Workflow/nodes/control_flow/simple_merge.php', + 'ezcWorkflowNodeSubWorkflow' => 'Workflow/nodes/sub_workflow.php', + 'ezcWorkflowNodeSynchronizingMerge' => 'Workflow/nodes/control_flow/synchronizing_merge.php', + 'ezcWorkflowNodeVariableAdd' => 'Workflow/nodes/variables/add.php', + 'ezcWorkflowNodeVariableDecrement' => 'Workflow/nodes/variables/decrement.php', + 'ezcWorkflowNodeVariableDiv' => 'Workflow/nodes/variables/div.php', + 'ezcWorkflowNodeVariableIncrement' => 'Workflow/nodes/variables/increment.php', + 'ezcWorkflowNodeVariableMul' => 'Workflow/nodes/variables/mul.php', + 'ezcWorkflowNodeVariableSet' => 'Workflow/nodes/variables/set.php', + 'ezcWorkflowNodeVariableSub' => 'Workflow/nodes/variables/sub.php', + 'ezcWorkflowNodeVariableUnset' => 'Workflow/nodes/variables/unset.php', + 'ezcWorkflowServiceObject' => 'Workflow/interfaces/service_object.php', + 'ezcWorkflowUtil' => 'Workflow/util.php', + 'ezcWorkflowVariableHandler' => 'Workflow/interfaces/variable_handler.php', + 'ezcWorkflowVisitorNodeCollector' => 'Workflow/visitors/node_collector.php', + 'ezcWorkflowVisitorVerification' => 'Workflow/visitors/verification.php', + 'ezcWorkflowVisitorVisualization' => 'Workflow/visitors/visualization.php', + 'ezcWorkflowVisitorVisualizationOptions' => 'Workflow/options/visitor_visualization.php', +); +?> diff --git a/include/ezcomponents/autoload/workflow_database_autoload.php b/include/ezcomponents/autoload/workflow_database_autoload.php new file mode 100644 index 000000000..4bc7a1935 --- /dev/null +++ b/include/ezcomponents/autoload/workflow_database_autoload.php @@ -0,0 +1,18 @@ + 'WorkflowDatabaseTiein/definition_storage.php', + 'ezcWorkflowDatabaseExecution' => 'WorkflowDatabaseTiein/execution.php', + 'ezcWorkflowDatabaseUtil' => 'WorkflowDatabaseTiein/util.php', +); +?> diff --git a/include/ezcomponents/autoload/workflow_event_autoload.php b/include/ezcomponents/autoload/workflow_event_autoload.php new file mode 100644 index 000000000..1e2645291 --- /dev/null +++ b/include/ezcomponents/autoload/workflow_event_autoload.php @@ -0,0 +1,16 @@ + 'WorkflowEventLogTiein/listener.php', +); +?> diff --git a/include/ezcomponents/autoload/workflow_signal_autoload.php b/include/ezcomponents/autoload/workflow_signal_autoload.php new file mode 100644 index 000000000..a018f05dc --- /dev/null +++ b/include/ezcomponents/autoload/workflow_signal_autoload.php @@ -0,0 +1,17 @@ + 'WorkflowSignalSlotTiein/plugin.php', + 'ezcWorkflowSignalSlotPluginOptions' => 'WorkflowSignalSlotTiein/options/plugin.php', + 'ezcWorkflowSignalSlotReturnValue' => 'WorkflowSignalSlotTiein/structs/return_value.php', +); +?> diff --git a/include/ezcomponents/descriptions.txt b/include/ezcomponents/descriptions.txt new file mode 100644 index 000000000..f50e4f3a6 --- /dev/null +++ b/include/ezcomponents/descriptions.txt @@ -0,0 +1,219 @@ +Archive +------- +The component allows you to create, modify, and extract archive files of +various formats. The currently supported archives formats are Tar (with +the flavours: ustar, v7, pax, and gnu) and Zip. + +Authentication +-------------- +The purpose of the Authentication component is to provide support for different +means of identification and authentication of users using different providers and +protocols. + +AuthenticationDatabaseTiein +--------------------------- +The purpose of the Authentication component is to provide support for different +means of identification and authentication of users using different providers and +protocols. + +Base +---- +The Base package provides the basic infrastructure that all packages rely on. +Therefore every component relies on this package. + +Cache +----- +A solution for caching, supporting multiple backends allowing you to specify +the best performing solution for your caching-problem. + +Configuration +------------- +A component that allows you to use configuration files in different formats. +The formats include the standard .ini file, and an array based format. + +ConsoleTools +------------ +A set of classes to do different actions with the console (also called shell). +It can render a progress bar, tables and a status bar and contains a class for +parsing command line options. + +Database +-------- +A lightweight database layer on top of PHP's PDO that allows you to utilize a +database without having to take care of differences in SQL dialects. + +DatabaseSchema +-------------- +A set of classes that allow you to extract information from a database schema, +compare database schemas and apply a set of changes to a database schema. + +Debug +----- +This component provides a set of classes that help you to debug an +application. It provides timers and report generators for different formats +that give a summary of warnings and errors that occurred within your +application. + +Document +-------- +The Document components provides a general conversion framework for different +semantic document markup languages like XHTML, Docbook, RST and similar. + +EventLog +-------- +Allows you to log events or audit trails into files or other storage spaces in +different formats. + +EventLogDatabaseTiein +--------------------- +Contains the database writer backend for the EventLog component. + +Execution +--------- +Provides functionality to give feedback to your application's users when a +fatal error happened or an uncaught exception was thrown. + +Feed +---- +This component handles parsing and creating RSS1, RSS2 and ATOM feeds, with +support for different feed modules (dc, content, creativeCommons, geo, iTunes). + +File +---- +Provides support for file operations which are not covered by PHP or are just +missing. + +Graph +----- +A component for creating pie charts, line graphs and other kinds of diagrams. + +GraphDatabaseTiein +------------------ +The GraphDatabaseTiein provides functionality to directly use PDO statements +as basis for ezcGraph Datasets. + +ImageAnalysis +------------- +This class allows you to analyse image files in different ways. At least the +MIME type of the file is returned. In some cases (JPEG, TIFF and GIF) +additional information is gathered as well. + +ImageConversion +--------------- +A set of classes to apply different filters on images, such as colour changes, +resizing and special effects. + +Mail +---- +The component allows you construct and/or parse Mail messages conforming to +the mail standard. It has support for attachments, multipart messages and HTML +mail. It also interfaces with SMTP to send mail or IMAP, POP3 or mbox to +retrieve e-mail. + +PersistentObject +---------------- +This component allows you to store an arbitrary data structures to a fixed +database table. The component provides all the functionality needed to fetch, +list, delete etc these datastructures. + +PersistentObjectDatabaseSchemaTiein +----------------------------------- +This component allows the automatic generation of PersistentObject definition +files from DatabaseSchema definitions. + +PhpGenerator +------------ +Provides a simple interface for creating PHP files and executing PHP code. + +Search +------ +The Search component provides an interface to index and query documents +with different search engine backends. + +SignalSlot +---------- +The SignalSlot component implements a mechanism for inter and intra object +communication through the use of signals and slots. + +SystemInformation +----------------- +Provides access to common system variables, such as CPU type and speed, and the +available amount of memory. + +Template +-------- +A fully functional Templating system, supporting template compilation in +different levels, user defined functions and operators, an optimizer, output +escaping for different output handlers to prevent XSS and other security +problems and a plug in system for extra functionality (such as a Translation +system). + +TemplateTranslationTiein +------------------------ +Provides functionality to use translations inside templates. + +Translation +----------- +A component that reads XML translation definitions (the Qt Linguist format), +supports caching of translation contexts and presents you with a class to apply +translations to strings. A filter system allows you to transform translation +definitions for special use. + +TranslationCacheTiein +--------------------- +This component adds the TranslationCache backend to the Translation component +and allows cached translations. + +Tree +---- +The Tree component handles the creating, manipulating and querying of tree +structures. The component supports different storage algorithms for optimal +performance. + +TreeDatabaseTiein +----------------- +The Tree component handles the creating, manipulating and querying of tree +structures. This component implements the database related backends and +data stores. + +TreePersistentObjectTiein +------------------------- +The Tree component handles the creating, manipulating and querying of tree +structures. This component uses persistent objects as data storage for the +data elements of the tree nodes. + +Url +--- +The Url package provides basic operations to handle urls (parse, build, +get/set path, get/set query). + +UserInput +--------- +A component that assists you to safely user input variables coming into your +application. It builds on top of PHP's filter extension and extends it by +providing a more inituitive API. + +Webdav +------ +This component allows you to set up and run your own WebDAV (RFC 2518) server, +to enable online content editing for the users of your system through the +WebDAV HTTP extension. + +Workflow +-------- +The purpose of the Workflow component is to provide the core functionality of an +activity-based workflow system including the definition and execution of +workflow specifications. + +WorkflowDatabaseTiein +--------------------- +Contains the database backend for the Workflow component. + +WorkflowEventLogTiein +--------------------- +Contains the EventLog listener for the Workflow component. + +WorkflowSignalSlotTiein +----------------------- +Contains the SignalSlot links for the Workflow component. +

    fTp}IirzPh}fbCR%f{cr0U^G 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testColorspaceGrey b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testColorspaceGrey new file mode 100644 index 0000000000000000000000000000000000000000..417892fe4ea4af68f323056a7699cbcc42b0b8f7 GIT binary patch literal 3990 zcmV;H4{7lK*#F=F5K2Z#MgRc;0RTtgv=4-_35A08bV92_7dE+-%&EF&BoC^soAFflYVG#@89JvcHvE;BST|G)qX2mo;a zmH`1F0RO}Q8vp3Ez6&6Etg773XHB(}AlCuBW z00;pA002J#=jj!(@fD$9wQdQk7T(wDx8qj}dvDtN%~-J8gOMNxq#?Ke0J-*5Fd zHA{|qpPfXH{F~=rWB&jq=hmW0&UZJ?uHHOAuLv3GRWgEbGHWx&e2xdDV`za~;AEWi zs@g7kQD~%BETbWp83cLrT2*saq9|o7+-H&LMyziPasazgQ2iB*WrwM#YI5m~r(Mo5 zX+Gud*mPr_M&IR2%X*Jo(0GX;d=K z*kYN^4I40NKhypdZ;7p@w;4R^7CoxE>W>5=O2EySr`=T+|*h{c2iu zh19XZIAjHj2?T(vA1-`HjT4X8!>wo>bH!`7V|b^!Qrj}5k3WqC?OQS%I7Do!io~%a z48-%(%Yi`c{pT_=sa0K|9~!_+$9f3aV>5JeL0aPCSN2M~AH@-u8O#J6UFC?%5Z1 z(m8BUNJiA_)w5o?8Lw{!p3wxCSh zdxj|#E_V1R%}mDj?}t*S#4sZjnl^QrrBHH*buz(aadU3++e}Nj1tTt=_&z;&$24#I zuc?rQRw-5VhAkKcrd3ZFiyE$=#?XNG^d^9dpR>q57rfk=i{)WU|ukEuvssD(kr5 zbP5PiJ#tM?v%Q^%P`gMP86GuPc}#!|g=_(kPl>NJsh3WeSe=nYBMqfT0ds=Bgmk6| zr?rkq?NZ(d?8JWjt;;_hN38)!lUKadE<4lg)^Y9c80X&b13wB+GAvT+a)O|#R!%%Y zst?X7@C z7mnXj)^!VEWV4%{Im=AUbF`ia>*fgJn5^K{O})%=+w6IZGB6`KBaS>ib>*I(noYm6 zfK0^hnb_o(JwWswD^9@ZcMOUbI~9`!bB>tnk3&~mO>sMiw~9$*T7+31 z)`9)f$fLoBn4mx3Ib$e2n%QKx+!4Sh3{PFX51>3&y(UdhSG-d5H?w*Dhx< zD#?aijBLmBp=YyDN~I#z)B)hIu{iZ0R{KpFD?0^(B99s5oR~`%nwZXVu$1NctNjc*^1vt&D#%%UO5bra&Lntke z_r(EdB)F5km7FtjcOGk1nR_d^?jX+O&j-gN6{AjUNhD3i@sJNp*4V5izmhe#4uDFA zMsbDM8)j^6o!gIob|>{8|86Q zy*iv!W?XIBI4l75u8-M08cjOFd1b(9kTD+)mCHMS1--Xv?KK#?&9_jt;|alLQ-E{u z#Vqj(rEoF=dW7x9f zvM|ZUdJ|1>O9iw`95F^tId&QO3h>HgC5Z%|OjLICuL|QI8jp9pWPTN7GhAA*c$k8{ zFloC%)_uC#VC6-`Y%)B?YbR}FicJbY(r~Ock1`G`oW26LuNkI}$3eEvdAc(`KEYQ( z`AY1eP)+pcSN7m~*REc}f1}%7z~SxY0z`ZfmGI!wv~T&wf3k{cF~=^cWgNrYc|iVE z)MYz#`7#Ron|ZEL`Af1{Z?t7ZB{M8wDDc|2r9bYo#bq_@q0$t0T<6P=;a*wjusDuW zF7I?~Tzwut8aoYvvW*4+-N5*Gn%fvGP%qMBf$^seC$Z98+Q&7+vX&Xz4lze9`yXP6 zfz&e*$>z5wX0+(yE8PtA&IW5o_C1JU`H@+q(QJ1e(2fpz(0lI8h;RP@v@8KvPygVT&P6W@#hZ z`$10)!_R|R;I|RoYye?SD}JwqyeKjGsMRn$3FQ7YuRzmezSQlG+{PRh&r0hMkRrh7 zt+t}q2#V53;UkTCVt5%fp62k>&PpdBl1jF*#X@xAh*+??+T&~wtYlb!r|8sgo$&}7lOLf27|?DvJGOdeF{-UNJ4 z-%D)H$zlUiJhvKksE~S<))2Zjoe-U| z+>B)9bK*W`p{+zEvz8fxOZk$;2*@OI20qNvyY`8t(v6_V1&a@~=lIqeG%YxDj1Emg zW-@MZ_1~p+4$N7{4u@=ZVVf8}xye6w-A7PuMjmcxUEqgOx4hC4a}~iwa=>zW-nF77Z z-VA%d0s!fOT)O3K?I*d7Ra#Y-YQ}|>V*`>wP}WMb=`rB2@wo-3>A){Xs(1IsCzM1@FZ7~u1duwYdhtU}8} zy`8WgSc--|8Q=k2?kF7LXrsc`x@*at7s3ua`qfsDJ;e6$Ml##Mz^tX%^~&f{c+u1*+}jP>I=4?-*vrS> zo_}bbKI-av9pqP?n6z|YGZ>CT`#X3vsoM=|Ekby#t=v7lBQ3X~Zx4{67O|<@$uvV+ zlV+c55b9W;kp8q|v9-bjA-e1PL3t7m!ns?fu`g5A6@^cZ2&hqt_ z8`)xBG1IT!Y2wN_ZOg1shi-x-o6#dXSp|1mu6oe2*n(;?FOHw-COB|v2CTFVBF03;Cc?c)HO@s+7f4bkoockU6zTfY}()VwEm5=$S@DyLLf2;9-o_`v6`swf$FBbjb w_|+Pp{Dhxn0)zgTe|z~-*Jyv~7r(lH8sp>iZ9()O)>r=kT{O@7PqM%N*(bqzB>(^b literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testColorspaceMonochrome b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testColorspaceMonochrome new file mode 100644 index 0000000000000000000000000000000000000000..e667a184bb0b86fbdaa37a4deca32f1ae0f24eba GIT binary patch literal 7284 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 O9UUDVcmt!Oum9ORuZc+j literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testColorspaceSepia b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testColorspaceSepia new file mode 100644 index 0000000000000000000000000000000000000000..3e8034eb4bdcb707c8be76cc28209c0ae1518d8c GIT binary patch literal 5248 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 ZpoQAQ@&nQNwGw;IR819O#O~w5{{RnC@NWPB literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testCropNegativeOffset_1 b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testCropNegativeOffset_1 new file mode 100644 index 0000000000000000000000000000000000000000..dc08d3abf2bcfe939a816fa321094514ea598798 GIT binary patch literal 1205 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<(qEG;@xRw*H%G-eS~^~8Idtfo#_UEp5mxQs2*{iR+O8y={xX6>28 z_P|=^>Mh^H%3Bh|c+9o>>%P{ymgv6FzFvEArc#MfS@O+&t})EpJc0^82An(bX8p;{ zKCfJB-0mCp9=QAR;6afnw-3L{eJrQFoUC)E@_Y?{o`&{c{)Jv^<2kf9R&M$0U3m6P z!}E!|w|YI^yEXn8=X9T)Q}Wu>4R?zMpJbnPU;naiiq4@s2d^3N9&=(+zi<2My9sAd zrkQ=_ecuzCT~*3=dA?jMaYJIsE!(D#_olDkIyXpq<}F=)w>^SCQ>L*b8Ncz`Ao)YI z<8r|6sk2g6pL}y(cHiQaG2SMfJf8eBFDUb*PgrF9K{mtgD-~f6ly78S1!X z$+}y%@=MMJz0A7mU!(BZhOwhIis`^7m*mMo(>wW#>Ms~Q`n-^HZh9ZL>!$=gzxNjw zZa245*jv4I=cJbxayoU->%ZS!a6oRR%&cXa(J6mp?k(EE?3NJ9r?Rz-qVK*!LmBeUD~;**yLE#qhtEW`DAZ cY0a-W$oQPcaMpH-sCDf}E?KPf=lp*Y0M`WQ2LJ#7 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testCropNegativeOffset_2 b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testCropNegativeOffset_2 new file mode 100644 index 0000000000000000000000000000000000000000..999e3daa78932762b470490f377c348a32ff0f54 GIT binary patch literal 1056 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<u7v|Ob_P~PW)==6psc-29e)y=fB$2u{YMiIx?+JPLEl&JgEVrvs=#J@`&v)#eh3oL= zd%e1F#cpp#OL~$2t-dIYrpFO``(A}a_-pNCuJ^gJ#@geXk$!3A2o4E zsq>7V=kX2f@3eil?JO>@WZnOC(y>XYOUhqL96SA=A>z(ox33FVrtvY$FBCC8{!3)m zv!>TMbH0nceXLZq;rNW&?LU?s%ivtGB*kHA5!;OyuJHwP(tLB5C@X24{AsJX`Rdfq zg_ULBgElBIJ$Y>VDx|i%sAkG@>Et`L+LMw`o%&=EIESIYe3kC*_(#b#Qzk}MR&H9Z z(DU`*KCS&7TjNiEiN3w`_=`i8)f*+^pY@1zbp8yVx_N@7v)r=oA8Gc7Ukb;t{`D+w zx_5W==8Fn8@1N&u%f1TP%4$8`!$|OP*7i>ZmU4CRez$91N53cw`*c|G<2qHhQ(Hbw zSKhxZYudS3e~&GdZ-0g#Xmt$txUnGd3Uj~D?rf8<(-JNxSXmFouj{Wk$&Q1*`r#_HecS^!p)c zo3-rP;;VYMBHTNeT9p&M->h$gvriIr&Sszb(A^3@!zrJ$)s3^(z)Hj=iK~#LRLmbUrPRNer-i5zuiWu?K7Cn ztglX5cz8uaN`iy(>}ym06nI`|^R!=P-x#Z`kXz*L?a=jR#T#Y~3-;t|>rD!K*)H%l Z`uuse;a4f=&UC+?`BhW3t?U2a1OTFTpPT>y literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testCropNegativeOffset_3 b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testCropNegativeOffset_3 new file mode 100644 index 0000000000000000000000000000000000000000..dc08d3abf2bcfe939a816fa321094514ea598798 GIT binary patch literal 1205 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<(qEG;@xRw*H%G-eS~^~8Idtfo#_UEp5mxQs2*{iR+O8y={xX6>28 z_P|=^>Mh^H%3Bh|c+9o>>%P{ymgv6FzFvEArc#MfS@O+&t})EpJc0^82An(bX8p;{ zKCfJB-0mCp9=QAR;6afnw-3L{eJrQFoUC)E@_Y?{o`&{c{)Jv^<2kf9R&M$0U3m6P z!}E!|w|YI^yEXn8=X9T)Q}Wu>4R?zMpJbnPU;naiiq4@s2d^3N9&=(+zi<2My9sAd zrkQ=_ecuzCT~*3=dA?jMaYJIsE!(D#_olDkIyXpq<}F=)w>^SCQ>L*b8Ncz`Ao)YI z<8r|6sk2g6pL}y(cHiQaG2SMfJf8eBFDUb*PgrF9K{mtgD-~f6ly78S1!X z$+}y%@=MMJz0A7mU!(BZhOwhIis`^7m*mMo(>wW#>Ms~Q`n-^HZh9ZL>!$=gzxNjw zZa245*jv4I=cJbxayoU->%ZS!a6oRR%&cXa(J6mp?k(EE?3NJ9r?Rz-qVK*!LmBeUD~;**yLE#qhtEW`DAZ cY0a-W$oQPcaMpH-sCDf}E?KPf=lp*Y0M`WQ2LJ#7 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testCropThumbnailHorizontal b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testCropThumbnailHorizontal new file mode 100644 index 0000000000000000000000000000000000000000..13c3d77d91f3a2844c881883d10fd4143aefe995 GIT binary patch literal 2120 zcmb7>c{tPy7sr3Im@$lM#$FiAShB@5S+a!;vJ|hVELSLub!I{mE?4)~G)4%oB}+5N z9;G3avW%@rVl+l-EG1(p>R!UteV+HZf4`se-}#<%zUMh-hr2Tk>^nhpAOau|2(aG` zV220T0HQD$93~H1X5faDUX)iE2X#}qolZBK|vX(r=hH>gH=$_G&-oG zZ$KarFd8Q2#&|Qm!vy@#As_?-ffPr|Nl3`yRTNb4|2I1w07?|V1A!2b3IIldASlpI z7jOUoz+ean_!kiv00l$fKSiT`02l;;fT0i(82q0K5EueLQ6gv+11p%MYO?EjvXnH| zx&e;QD1G)yR_%xlHFI^hQ62<9exBf8zz`@15ZRS*s9nQOJLp*7MtpT3&Z-!pDBXHCu!k+17hlrMh|!yafwsb{yL29lRASX zMTHsNnhw=dzxWbH`mgp-vG*}rOex7nrh56znBuEph=d`m>{sz3&L`s77YD^UCt8nH z%83+F?0cIWT~jG~U`A2ok?Z`zd5qX0)^qkr@{vV`ZHIQlWxSx?CFzcx{nzAb$Iz}-A-gS zwJ&UQq~_K@cr-y$eat&B$atC4WWL?1IUx3q>4j=ut8}6qoxnHNELxq$H=MU+lBYs5d3frE29Jmil0e)qNHptf zI+<7NtaEy?dX}r)2(*N$kT=mzVa@Il3>klfhh;gW%#H_`72bH5 zYvqG=Fsh=B@cRfg*JdbPNJ!?H^}k%}rGl%eA)$&{aYSjcS`HNSYhwFWb)!{}Nb-SIbD0jdrBihI9inX0<=PoK(T{DbOwPgL1Z?#JhIcW>`cteecFx`dTewP7 zt0NS_Xj8_7&+#`4W`ffu={rCw_oMWcnZ(Pe{?al#egZaW_l7_@5rFyiltVdj{xv&o+Eff8>i} zKgd(}leM_*n{r25!@`YdRitGW)#h4=&Gvt4P?-48T87=4fj;X52&mID)ZRa->GO6O zM~B1Jh3V&Y>q-*((~(SQjA}EVUq4Y_=f8j^x-N#6#FpOdJZF1nDr?>w8;RHNT{5n; zM(;frx_#hHpkrvf&~Pr!*nSk;m0Sc;TC2b3@_NCot4J~5UxPQUJH|AJS8b+ha)K?} z3*%pS8zy?;GD07j8(v6F_H~^0ih}8RWlVZd&bz@$u=!^jKAlcIq3-9u#d0Xb(@!9^ z)Yj_qw&wiVbbPBNn}iFnxtM(^>{2MfUcQslma&Q(Wwj{w+OODMGC5!b1*EStz zW|?=1(HvXDT`=eOw?qW!b)yy@j;RK zAM14?I*&Ir7_$NFl(ieWvdak1yo}=k(|F5vLq5Njb=YP4zwd3Z0hQo}Zyq_c#OSfI zFr_hKlk*}ykiM*}B=!UJ=a0|4z&5+vKE8+^*l>eTd|YGB`N9EWT4E2+eK_byP6 z?#QUJQ{F^*%c#Ynur{rU(sqNdDoW&DRQHdu_j%zMP<>U!_QP&v;asH1^epCs+*OI5 z4}M-xm+}qnWqmJOwp`kusF!k~7~X108*Y`+ZUehS8Lm|n3|q|eCz*ji64Yr4`yZRM zg$>@5zXAC`;*XPg1HX(_tn&M^1Y3+2W)gE^2Y6mw8c; z`=CXp!wIf$O|NImRo$XU3Cu%LCH0a9N{XZR?YpZ5+jpC%GC^;IM3~vDZuCcl$oh6P Q{-i~+TUo-*pq+`o0mWambN~PV literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testCropThumbnailVertical b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testCropThumbnailVertical new file mode 100644 index 0000000000000000000000000000000000000000..fe876ae0d559baec5365283ea10051e18aacaab4 GIT binary patch literal 1280 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<>%p-gbx0)nctDfA1Opy1uge%p%Um>iLIVe_!tml`ar_ z!ST+ZV&!+6b@Pk1MgQ^s6|zKc^XrU|9aSdhcn!RK(!tvGPY(+5sgbEgEw zc$%)-njR(66#`^O`rTKXjv`>|JX(uW%7xrRArLm|boYu6s4ni`ReSO!|1cfB-J{4 z?&=8(=AS<*J=br;^pNvv-!A(Y#dnKu`=Q-BEln#%Q^TnG`8I~<=Q2{a_N`4_8RwnN zIZ0GKqwJ(|!`|I8DHrG2Py08wPWi~Lr!{kLbMQv};K_-zzYwynUx}k?HkV_*>79?a z4sc6GXEolrwr@@Hg8SQACARflSTJ!Jmu+P6VKyC)nB*tyRrlgEj}$NM@VfNnr__Ij z+O21@-g%x-FaP*#m+XRBm;HZ)%rf$jED4@a+i8-X{rHCUn(H#U9Cowk%t@I%=fSfX zCepKA_iI~i^3=cS;C}Ob{q>&E+&bRBFOK~3>($;eDbnTKlg;ufSJsGoEWBjw%C)Ye=1g$DWX-*OO}6}orsmbD#! zLlSmRNG_lJJKX)H-Mnp9)v>R{9xf@K68=W~ob9Wc;>&7G!{shuAGHxtL`rab{h>mIFdY zg%g8Tu2A)xUp{-qmamaUEPp#J&e=JiH7w1ZU9zRga-*@a!R=!LDJhRnuKa8>KdJ1K z!-a@F*Tc4HF`Mj2?l1n&(6r0wwdY@_$L>w+)!o%azuO-kW4rj(a&7RW2|xBvm~{Kj zqII|DHY~X3q7^w?W|IFb`Etc=T4$>@nS2ZmeX?sPjC18PT~W%nSZ!&^Ym3m#ISuj~ zPOkKJUUpkNWzVIV5i5V}d+_+#l<@G0_gAj_zT51kSjb|n)lHtUEcxVD`N>}vs1!K)`I~AVIsgAA E0P{r)i2wiq literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testCrop_0_Offset b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testCrop_0_Offset new file mode 100644 index 0000000000000000000000000000000000000000..47eef4656f1b59552164afa1c94e176e0c538166 GIT binary patch literal 325 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<C(60TVL|J5WMSfPsmTnH5Eb zktJv%vyiZ3AW&Wm=tXpmtUz%IK}K{F8JPry|KDQZ0b0Z)$SlZU&v5>-*R<-!J0bUG We!FY8X<}$@5Bt{K9^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LnS$W+6;sU}9!rWMu$K zDG4$#0RbZ`!Xic{L1slELl#zHC8NN^|F;-;m>GfYVishuXZU>W!{4`Ok|Gk7%##?8 z85m#bDthd+X-l?6(q2ui9how`NBEvFp3|&*{?O-Rp`Yv2i5C`3@vuo`anXG7R=TN* zXTziA`F|YOaHdt;R$Y6fvBCT-OIGx^dq#(!ORVus{;7Ub$#?JK)wWjOLnb|XmAzP@ zb<;sXk8+z<2?^O1O^%f-qi;JZyZ-dltCXGN_r9(?xfP(PVa zbkkP+&sBp}!cTp-O?u&QkZ*B%p^cedlmNHI3_WR;blHPzZ{%+Ix^36?rb6X22Ngqj zZued6b3bWvv_IS>&-LoM`K*1@b=Ps|DqBBp@-yuD&yb+S_xSMl_VBOM60beheWt(j z`^xJ#mjpiE9b)*Ux8m~)wdcR=uZqOTKluG`@~kh9o_H2*n>R^&UQ)w}*o`-ye5$XT zYMskIS;@2D?YEELPagXZJNXzl(;0uAunRd9=+emjniZgK3e-_nqcf^yM@f! zpEsG_SnyWjc->X^y#=d<-g+;N54n>2cB+(6M9TJ$iLdW=)>i!Ze1@b81pPdaBJ&3M>99(ag!= zdvW6a#>=38Emp5V^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<LnS$W+6;sU}9!rWMu$K zDG4$#0RbZ`!Xic{L1slELl#zHC8NN^|F;-;m>GfYVishuXZU>W!{4`Ok|Gk7%##?8 z85m#bDthd+X-l?6(q2ui9how`NBEvFp3|&*{?O-Rp`Yv2i5C`3@vuo`anXG7R=TN* zXTziA`F|YOaHdt;R$Y6fvBCT-OIGx^dq#(!ORVus{;7Ub$#?JK)wWjOLnb|XmAzP@ zb<;sXk8+z<2?^O1O^%f-qi;JZyZ-dltCXGN_r9(?xfP(PVa zbkkP+&sBp}!cTp-O?u&QkZ*B%p^cedlmNHI3_WR;blHPzZ{%+Ix^36?rb6X22Ngqj zZued6b3bWvv_IS>&-LoM`K*1@b=Ps|DqBBp@-yuD&yb+S_xSMl_VBOM60beheWt(j z`^xJ#mjpiE9b)*Ux8m~)wdcR=uZqOTKluG`@~kh9o_H2*n>R^&UQ)w}*o`-ye5$XT zYMskIS;@2D?YEELPagXZJNXzl(;0uAunRd9=+emjniZgK3e-_nqcf^yM@f! zpEsG_SnyWjc->X^y#=d<-g+;N54n>2cB+(6M9TJ$iLdW=)>i!Ze1@b81pPdaBJ&3M>99(ag!= zdvW6a#>=38Emp5VJm|5mxn_&i%%LqGV$nBVoWL(NdOHM)xu%1SUeu5O`sA9IywY8nW9T&8WafCC7`0x$_eNRXx* z7ytliLEsZmfMB$+@S3yJ12BZZ7>pK-BL7Z6Faj_nEfz|)b*HQk2&ZxrMGYBO^i9o^ zI))Ul7uS|(5J1+R{}dPlA#28n1Yj8ckAz?nVoPSZVUL-m}?@wS!235N*LZIqD<$gbdy|)ng^Q| zHFFV&3ed`Zt2wq6mm~&R!JZ`~;T{2krBz2*29;~e7_l4Zg9!y#8Uh#XRftX3`{vRy zOSObBM#{3%jrb-(7QN(gLQwhRU_9r>cF$w=GBiMzcCO`M1^UHdR#@tTnNTYYIFk0Y ze9=6QHCm#b8pGG0uNdDL>9arch7}Gw?^}5^%%f*xG*Q@o!$jp}P#MNhxb-eykub&d z6~V3`tSu~?t{bJ8$7cJ8rY3D(h_Th1uf873KH6cXB0N|uG2Rimsvc1dh4}mTX9q4{ z?-$IuG#)%X=B(Eg^1kG9iW%V)Z=h3JibkHfspJm4=;Kvv;tc(S9MN9z+a^`WcH%a) z7DjfaQZvfjfT8Zih{U<%iRR8%Q0h)Mhvhg8pq5`$taOuFI~I7B{D7=PW>x7e%ACWP ziR5;2(si~;EWUSc=Y(`nLVVf;=j3NEHGDZToQ|Ijuk#ikQkD73?>+u`q{gu!MzJs> z#Wmh?u-c9Jd|Pgj$1jeOF1GWe6TjGKSm`&`6i?RWo|3=qIo!Z?xis3S@9ZVzX@GIN zz(PQgGPhDn3;5|ZHJxulX3Lq!$y>T)mx^rrg@$Nol4B)p)+ujXBy2BznPZowM|x5h z{5&pL`9W>$DPzaYbZ%7pBLc^Fe;vC^;oXimXe6^vI^ep9%Vn{V6H=G_+H398BPfa7 zTt*N33Z1eaLD#t|dB0west@GsbC!#fPTKo*HV79N@JkHKe)3@1`L`LXyTWH^yz0PQ znO%#I5%40<2k>8r7D3JBhK-1W~R;dIsV%g5@-C?q+H>s zWkz>ezT1;^hs%ZgPgOF`&bI7s+m;I-o>UWCi}bNjjMU9T%KY~+ z6U5d`ulk#3>T7Y%z3J!v*qp2vM#m56h6eAJ>0$#;nG04?^7wJnG2RmI$7j6CYpg;NiL-# zF2UqdT50w*E?HA%O&XvLjx9qjHKt}+@-Z{#JM;H<-(T<+}@j zKp=pRx&W0N*a0Bna0DENL?93-6jBqdtBuyuLT|$1F}g+uCdNhvM53v=-BwewjTw<> z@wKJRSN2pY)nu#lH%=5cI|nM|FB1p~g+gng3EJ8O3W-Rf{NGUB2Cztg0>pt35&*?Q zKrBQx01yEH3I)~I{tK7}90DSsNHy!A13)1l2!X+n;6D-w6a+M|FdWGqjwgHW)urrb z@y)yf(m9vf-yt@R9Z(M$LjJb=*AM_e7y_aJhpI_StlAL@B0&KBpFrJWHApNN&Yt41 z&9fa(-m7c2UnK+3>XlF|hy^?V;aJoNo6i|IqbOd?7W@C;R<$rc_UGyzK}AuAw{2nh ztz)lWt~sK3aa2|@#&0o>Fv78aL^Md2PSba0R%Dr6Is4%vgJ5cy(4QUDi7EX~R0Xvk z?!4%v?D|#f)SI5La`Y$SUcBpKyWO4e_ zKilOadE;J0rVB&m{{(s0l8 zTg14MygJ_O?!(LRe2oqN$tmlj?eSgb%33huF>#B9UrhAfdz*%SnJG556t2{zy6of? z>P_#T4F8DM2Q`lWR`53B%zBmIhi!?xriS!y=Tb?#f~=5xyV4Ltl}Un~g6P}Hf1a;- zW)Zct*ff03ff=|ip7Ab0+nyad!3k)!>UOm?DwHb|bOT1V*PpbH6%8KAA~TMe;p7$R zaww1f4F#!OTyEQZ%Fy4my{+|HbVIJl>}_ssu!lkFY%XkTVeJAryFYFdb&BliR-|d( zQOx{A`?y`mk4(&FK6arntU6O@)orD0t$YMHx=lItwH~FuV4$%eGvr*v{Gv#&vT<5L z3$bWB+t+2>8$vE!8I(MECNWPQ)Va7hEEZHa&kCZZYv+rnlNJK2^)DQ}*qA5~Uh94y z(cn`=*ve8=dW@-NQIIcIDSaJD>9=I7zN;6NN-$!+`j zl4tCZ%o0PI=w0k4DeL}O^xy!-ZSk2v_5Mj>o|P%od)TKNnnUVkbINs zxRN&F(wy>AH)WXM_IZ#JMHBL}zKWrd8KTRvlguE+p5!o&;IEhJ1(yPm zu6Tm%L~y<7z^BFYlH~o)QyVWIk}eN1-ut!H3@pb*Mq;`H9$7U0m7veuc;mkDR1PnX z1me{gG7@a7?9G!Q#f4IS)pv0R#nBbKC;q=8??ua}mRM29N+bM!xA1ZNs*CX+l?3Q(>#E;ywZhilP z>(L*9zdMj$)4II-bcua*V5EMJ)}6dWQS?Xj7)WqvPqNic1D#TshXu< z^toL6TCe)xeQw|2?U|A;DcezVz5RE=>nx`X(Ea>RbvHe!{O2*{{9i9zL7{iij>VXO cIK}RsSFsUoHR6Z&WB0AdTwuB#Q7Y+w0X+TUegFUf literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testFillThumbnailTooLargeColorArray b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testFillThumbnailTooLargeColorArray new file mode 100644 index 0000000000000000000000000000000000000000..d0dd813bc84c8d2953096162bb8a4f8aa2a69c05 GIT binary patch literal 1717 zcmb7Bc~sH~7yZFcHpLJyCB+4_az7)I<2IU>;nG04?^7wJnG2RmI$7j6CYpg;NiL-# zF2UqdT50w*E?HA%O&XvLjx9qjHKt}+@-Z{#JM;H<-(T<+}@j zKp=pRx&W0N*a0Bna0DENL?93-6jBqdtBuyuLT|$1F}g+uCdNhvM53v=-BwewjTw<> z@wKJRSN2pY)nu#lH%=5cI|nM|FB1p~g+gng3EJ8O3W-Rf{NGUB2Cztg0>pt35&*?Q zKrBQx01yEH3I)~I{tK7}90DSsNHy!A13)1l2!X+n;6D-w6a+M|FdWGqjwgHW)urrb z@y)yf(m9vf-yt@R9Z(M$LjJb=*AM_e7y_aJhpI_StlAL@B0&KBpFrJWHApNN&Yt41 z&9fa(-m7c2UnK+3>XlF|hy^?V;aJoNo6i|IqbOd?7W@C;R<$rc_UGyzK}AuAw{2nh ztz)lWt~sK3aa2|@#&0o>Fv78aL^Md2PSba0R%Dr6Is4%vgJ5cy(4QUDi7EX~R0Xvk z?!4%v?D|#f)SI5La`Y$SUcBpKyWO4e_ zKilOadE;J0rVB&m{{(s0l8 zTg14MygJ_O?!(LRe2oqN$tmlj?eSgb%33huF>#B9UrhAfdz*%SnJG556t2{zy6of? z>P_#T4F8DM2Q`lWR`53B%zBmIhi!?xriS!y=Tb?#f~=5xyV4Ltl}Un~g6P}Hf1a;- zW)Zct*ff03ff=|ip7Ab0+nyad!3k)!>UOm?DwHb|bOT1V*PpbH6%8KAA~TMe;p7$R zaww1f4F#!OTyEQZ%Fy4my{+|HbVIJl>}_ssu!lkFY%XkTVeJAryFYFdb&BliR-|d( zQOx{A`?y`mk4(&FK6arntU6O@)orD0t$YMHx=lItwH~FuV4$%eGvr*v{Gv#&vT<5L z3$bWB+t+2>8$vE!8I(MECNWPQ)Va7hEEZHa&kCZZYv+rnlNJK2^)DQ}*qA5~Uh94y z(cn`=*ve8=dW@-NQIIcIDSaJD>9=I7zN;6NN-$!+`j zl4tCZ%o0PI=w0k4DeL}O^xy!-ZSk2v_5Mj>o|P%od)TKNnnUVkbINs zxRN&F(wy>AH)WXM_IZ#JMHBL}zKWrd8KTRvlguE+p5!o&;IEhJ1(yPm zu6Tm%L~y<7z^BFYlH~o)QyVWIk}eN1-ut!H3@pb*Mq;`H9$7U0m7veuc;mkDR1PnX z1me{gG7@a7?9G!Q#f4IS)pv0R#nBbKC;q=8??ua}mRM29N+bM!xA1ZNs*CX+l?3Q(>#E;ywZhilP z>(L*9zdMj$)4II-bcua*V5EMJ)}6dWQS?Xj7)WqvPqNic1D#TshXu< z^toL6TCe)xeQw|2?U|A;DcezVz5RE=>nx`X(Ea>RbvHe!{O2*{{9i9zL7{iij>VXO cIK}RsSFsUoHR6Z&WB0AdTwuB#Q7Y+w0X+TUegFUf literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testFillThumbnailVertical b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testFillThumbnailVertical new file mode 100644 index 0000000000000000000000000000000000000000..227dfd899054d8d2d211ba53e157db05784dde6e GIT binary patch literal 1271 zcmex=^(PF6}rMnOeST|r4lSw=>~TvNxu(8R<0c0X01IR#RBZ0bD z*w|Ttk_Li66B(H~*`ekEZDnKK=b4Z?0>h>$#!hYeu%g%4U zb%+13RXn*n_R8?}W)ncD@QZYy5 zukx8I8=^dm3zYi8?s*=MNoIMzUjEyZ4<(7;EyX^wSE!^5w=o8#<2iStp4vZ=>-k1fk=NcohpYTwb4q{}8hQ@P&T#Lv%GO5ITTc=8iF(Uq%S zidD_IFjK|s?!4+17Fsppw%QptcbwefJJ~NhZnKoG9Jln|&vz$Fs+PHK*><0ANy_un zeY`o2nFei-1Ga8UX%d{u@~-^kIeLq}-~;nUW;r?8%*dNo0Xw5staQy5_nTWh`R{c5 zEf)ie+(g|Mo?I0BV%oax;n`NFLKCqg{ z?9Z%gK3=}ITj@3Tu}lumtn0r{-D#VtYH_B`rsj{~m*u~$tvhpqPTla;(mXBk_@MfA zQL~DNF#=PgO%g9`O<~wJx8P$>fgAscKd-iL+Z1`8w|PmD^wPWgly;=bxl{>cM^&!s zUMM=Rlli8@`R#?hp6}=F_;E2X#EN^D`0k@`_7pDOEm*5p{#+$j;zwbh=3}q=SM!d? z-VpBitdrRAd@8$rP~BATj{ja zCPRr+)80L)z3Opwk))|*!qkU7<;qE`&o?~kdbV;#`|@ww1ot=veKh3VF7dwjT+N62 zuGG!n_EpQuJ@;?B!)QE7<^Cy63FYO>+cEBbEV@^~=m#@_x+ z8NHb0*}ebbV5lV$wuQlCwf-Dmk?}~U?}(hv24>+QJ_|iXQ@~H{xh_% zxVYm_q_LZ*N!;1ZbMJkf|7FQq@7NvtuU-#yiMT7GrTzV5-@ds0Tyd&@-v7{imcRe- qmGD}xN|ki=X)3d{_1D&~loI>)$JW(KyXCv1D}zV?qbo!G|C<2gO9VXt literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testNoiseGaussian b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testNoiseGaussian new file mode 100644 index 0000000000000000000000000000000000000000..b0bdf4d248a2030ef8be0857761f9d1c8cd964ed GIT binary patch literal 16834 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testNoiseImpulse b/include/ezcomponents/ImageConversion/tests/data/compare/ezcImageConversionFiltersShellTest_testNoiseImpulse new file mode 100644 index 0000000000000000000000000000000000000000..015a70e71727a061dc1ed230a49bcafff4da583b GIT binary patch literal 11127 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

    l!IZM%=OL2f%Zbv=`rt3r2xepsWcqKf-!zIT| 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 z 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%0Al3fz*c^Q;jtL&NIa!4tYG))l^tmNqz~H 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%0AX5 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 h+){|#5D=xfCYIvl5gIYn3%{% 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�Z0St!S*e`AXQBDR!mL_hmOBQ>&|A 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%0D&w6n>X z@YN4)KX_G9cq1?4L{GT5G)|PT_Yt)OS^$q9Mro)_>}vUl)`!TXj_1bMGHDgYtdfXm z_F}}4AuS*;zzM=aL5Hm{lHq$se80~kfVrKwYF)N%QmT2FfV2h6swmn>6~fK|J&L#e zF|CU{u<2kzYAGYKn0e^tDS7SG6?Wqf16Jjc5Dn@uh@Wij0U%4S`&u`5GJ+!Kb-_hxnV@IM#F=0*#{aSjI`Gtgfw91*>7OeXnE zNnB82xyYX1Kh{3|{r>%XO{IEH7YS+XxAFopH7sAve!I0&!F!zafe1M9XU4b7zOZmV zT?*pgV*tcFAgp2Bo(X^bO+Fdsww?tw(^AeZa2Ok1qAnWhn#2<*L{s23Ak@FxvczX~ zPn!R?j-1h&RT4N-6RC^cXrzEZ7DcPjPRMffDJO#{))Ut-7V#$y$3^4`JG>AZ&}dj# z*M*!Y)LqICH0+)XAnHu7|9+|*!R(jbFzmvy#XsZoc|Kj8oEqAX4w8!SzE7fUiva)w z@V#MIq?3I<5zU4fhsdk%CZ{9t8VOG+xIsWp_`$32yCOa;nm@q_M;@R~G^dCbR{niq z*P$))z&@S%`~G846DaVXmgbeYoDKDzUwT2hzJst7;f<6bhNp{m7Z9fq+%N$OLjx^^ zf)pc<89g8EUkooi}pO2DhJyJI6GRdJ%k1AY5UJ-h%XuGjz|2xtZ?9xK#rBj)%8 zJghgybQO5xrM83p;MvU{Pg(W&!l2b1=ID71XgsyU!j)6^x9jWGtLlCEwUdLqy>qTk zHP$=c%b-)o<5E-Qby*Y7UC3G2c9L?qhhzSm-@m_nOnh}_#rDn$bNwPDcbYQmZfB^#@Wo1pF_oQu)9!G%-sd-`jjW&MP z%wz%5R(XdH7L8)-RtX!kyQk-Vni41*n@*cH4M^z_9zF_h9~N4-yu9T?z5QGi=}=KP zcJ$~DumR3@?r4o3Gv+H}K$Fw$iGnlc&rjmmOxZSO)TjiI&}Om+b3%i^HeKZ4?%tNt zou|Ai{>hVeH*enLLpjF8Xz)^81*%J(673k94vRPB`snLDj`=z2*GSqn>-!-zjp_a2 z3Oc9UE8J51 zoNL~1#Ld_bjGCWB*b`Hy825FSU(eJJxR(bMs8dRr4|4eC&2dm5fp_loU}L8D==JTm zwa(CNZzwaU`}8#G3FSH~R&>V-e&OK6<185cKL=a(d#kv5UPB z7chf};hYx-=5to=#>Y#5=k%om#Mf&0Zu~9E(buDKX>egYyZ?{UISkL@N&y;~Tjp-Qya-X2|jqaB_BHV+D7^d19}4IAOHO zPRP#fss3Jn-8rnsDs#6cJZSq{_VrpqJmQNLk~>AuKeUbL4r5dLte}%ShEJVQVJF5s z3o!>+v~c-ySDJPp6uUCV0X|zHh{;L!IPvj?UpKRgep>mmsECNWOIF!Afqi<78`p(d zW4_^?I&@&je@m8`vIgn_5kV%lE;cW6ZJRyJlru3i3%qf|V6@L8lFgg9Z~H|4b{$3S zWJH<%Fg@Lgkie&EOM@OgO%IQZ@7)^|AtSyW(SW_y2S>!!wS)26Qtb&VAmi|{*{cgL zGhIiCmQ66jbO6oPty^Dz{3wqF8}Zf3i$zrXQGomMlNbv$a?F?q1n80Wzinf-Ef_P+ z@KhpIFZan$HVYwEnBUgJi)7&R?%IY$y)&km%bL49~yYn73}_g?Th`q z=ReMIZ0VMjA!Xll={(}m9lPBmiZuYat5>fcd(k?j%AV6K2m~s>H`I=go;`E&@lg`+ zk58c3wQH({Dley~K)7>hHeEPqSoXGlQ&HhAjUN00;N*-~QT)6iCvtOa{J~{2es!9@ zj)#9_UhAJ2`QMV$)7!aR{&d*yme`P7q?I+(XV2nu%WZPGk%zhSgKw|0PRhx%8C%@j zGUWQ9V+2LUcL~YzLbv_LR0@e}9l+Ud^9Bsv#KpjyI^)ewz3%21H4-2Ng#XAXwU6WG zGKe=eEr_@uUY-LJdwiC;k+*!AqkV8lh2o7$VsK|YrTGEolaY@(bh`au(;baAhR7W^;#<6Z@`jChS!2f$h ztp`u?Z*FS|JPpid+ed0JH1=muuR{=*fhJWtn40EMOrz9q9|5bN%0g-N7?JV8g=f` z)2D@LE)8L^&U)&!Y1g;QIVuDySX!1pZ@rh#*YzKQOMSI{y)&@rV$asko;~Y5bZAQg zTn-A3(8c)Y@5{=fb)!Ph6Z{#p%gvd-Yu7jkI(H9`ip2Rkwbw%~UAl*ey&0M>{5uab ziQ8dCoPv2DU8Ye(puxqfNc})SQpjDbr{@R_4Tad72+*>Vay*CP^fsOAOTxbMNo^{J z@rN-UbFro}vntDR9lMHS%yI#K^0lgo^{-9$ADKF z>RWyP{ylITgDyqPBPyaJ4jNa^#V!Fk;s1 zhTyey#5c-}URqi`xIsFMcbs;#Te43H^>H|U>c?e_s|DQ>{hI>6PsXqjK8dj1cU+r= zJXK~kquO?2uY5~pd~^(nJ_ns9DZI+82?_pYjb)n(Z-Ksklh?&D$0-lqBCg)p`Lz!| z&R!jppp+LF8V+8%qx$m-JmC{JuCPvg_$+Ri`&y6z2X`bg-L!%J9pM9d^7#eq6`UhD zTz9=*_t}RTx41t#I@+LCdrzIBz?od5whXuIhxojH@PQTm;B;UHYjce+OKv0lnk9r{^8MH*P(G<3_E8{t(l4*V};u!K5#ilVWY%jDUk>g>8bhqGq;gjYZk z7IKho*w^35ni5%EUeGy6e1E-S8dKs<_bD32lY8~Dcf-X!W;U(;qjoyKA8XZqRHdP6 zQZI#ro9a5sH6}tPkhYgZ20fE=Pz@y#@|!CJ06J?I$hT{;uS9v|?Y}fr}RhGgDwMPket;;T!IonC^pK>S}rC z$AQYEu^|^iLhi!Sh}ni;c4~_LGpyrRuV0_WvtFpHyN^YNa*Z32B;U>dc8Ny3jMa6@p zOu&F58pd8MEd+u!P-?RnaWAmyUOpg+Mb|TP7U|%>P{z^^&Q5m?TDEBMnrRLsV362b z{-CsS&%94BBAX%7^=0`n=tZ997x+nIMtIOp<8El5s0e!;4!c5|!QGr3MLwIHoZPyt zeWGy~@K>)16T1KW`BPZbh3yxKJN4E4g<**guYD%X8ej&b#t1lj7We*IG=+Oi%u&@g zO`Kt5)Q7^%i8CZtGJI~MQv0oRKLW22+%f(iFAbScl~2!(Yn|vekny1_CCj>Zq;$u`6`)9SW~>3T%*3@b2r*7_VVlQ z0aRf>_5p0t#_Ddb<9iwL{KcQ>p=B$#V#Nw?A0K9(v^BO!5?2J@p_R|sLgc1RuVr8~!XY-Kc-;06o`4&5AO;kf z6CtWZfQsO0g@KD-a}`Gw@8i&uJ3GHN;tEhD-G^Qf|N7SQ{O+V&1Kb!TMVHds_FYnc zeTpArAsb74j%j=If8>fkNyHUoaAd0v-De-^KHbXZ=eNOPI)L8d#YRLL`q;ZOMf(`> zjsV%46ya}M(VUac!r18-f1M~5C0bxqR0mbFw0L-(5_*=51#?i zsmB7%-E=@zzNU&wN+kFNANMGlrknsSHG$d@-X4nFVb>-QPMBH5Et*6o6$KqmFIkBu zldkD;8f8OEAy4iJu!ybqV)EvgD@|}^%?lZU+qT%ROfSmL5zb{F=1<9i&68=i9fM~4 z39WDGMS`a7%|O_Y?y4#(MTrf;@$cVkA}>a7mmC$Icx>Ia?JLf6fhOkrX(kZq6}onH z31j>m1z2eJ9u4Veeg8&#CD&0)*9ACvscmU1*Esao*qMOqR-!lrz$Acl83fGYlQ!fm z5=t{d92gvfkP?dBRE~}7ks}OwbHSewwf%kA89)HERAUad5Nsu=t;Z<~e_8Y8+el*e z2V#IIc=-&pF(*Nh$Vd!K+Hk#sr+kp_m5`PuPZ6ok6bN|U$CL-_Hf#{9y%h1L5Q|V{ z4-+}SgEHJB%j=5N!Vd+0p{Yv&@pNa+m);vTZ20o6bP=6s`!h@WGN-y!a~pNl%ASB@ z94sPZwP@LL;j(2el#~#~!T>yI#E8y8ty;FEK$eAxe)+!N6>-!74NVD2ebwdy35N_B z@(*>qL>zGP^lVRipCeUz9pQj#8B|lZ7dVp9e8#G41We|s^&UUIE5CS zKMgP-FL~34hsKb-P7}}Nj5%|T8}2ZDdFi5E%9wdYG}lk%JJ9#?>U~k94hqnI+N?g5 zm5D}JpJ~s+gD%jQPoNenmv+|GjG_YhTJzOdR1QS4&U0ryoa*ycI32(IuoWI_8ylMo z7cWk-vKj^DBaT!6&21!3L(j6wa=k5Y!Wq1Uh!*jVV!o-hwKXIzB%BOy!&}>43)~b= zCtA!8WcGstrW+u^;~bunORc|P#fl@KC}ZSoz;F|{r2Tx;hFJ`CxAx4N*V^Hv|Lk;z zo%Te>-wR)b7B4RamJMJKu_G^lBOVYM+KN^VAzDbA@vr#URDF2XQoFuR^_l%@rn&x^ z3jk#%{vfqlT}`1IW0gkoq3AxnALGw}JCWWoE|5LN-0S0G**|V(!x_?b;qtS*=@8^< z0A&QE2-+b4uU5caEDd0Mjk=PF5HRKZc8Tf>KVUXA~x^De? zp|Bz1CpGJ78*eymk#W(70i7{V?>bTc+xOh^<_`$1J-FYM8P7E1JHg4Lq zDGi0@TV4?+j;TGSt#QD$43=kYpw&;5&9tn$38Q#S9_~5;d&IjWNSm(gyrIRKk6|0G z{M=IfDsO3o{FQOm!z?|pc!`t=2NhT_uK~R(6pz%=lN_2iZsZfz+~z4z?>btv_)n)E zJ@Q|^QF!vPaU+@C-;GyPj1e*S_q2jlT$^#@{02H6dl!)M!(-pRMq?3#pQH2#2L(M4 z+_tdRo0$z*yGuGU+ykBEE|qGMV6zhozZ%d@nnV3&NTFeH6B<>87{fo$A;xwLsRS=5 zNn>dZ^AWVtNcgVc^XHSOvIf6gX=s?t6-~tQfIaM!H?ev*CB8Q_?5)jj_T~LlP0S&u z8$vMn1P2e;jr{Nehe03J&r7PuGX*0uI(n^U4>zT*T~*=P;ApQ+tM)t}7`RVnHUHT9 zR>-e3MPm-rM)adO)2BQ02P0`R3a1CbC){N1+DMqKNP1LMc$sFKHf4|%^Viww9a*@z z{<@yua%!34>v0hl4E=pT-u8h-P0h@-jIvEsyaf?l_;u%;$&>dN7Z+PScNz5{F|<#8 zLBvm$@#9akNWh5}fkR(+YQjSdL|XL^7dI*~^n<}I>yp-|LF}rks>W=Fy^KhbMo+ca zbo!CX$m7Mlt+(A2`mhb5O(n~Be=L2E_`RAw{?$Z)jUX#!HMNuaix)>=^BimUb8GOG zD;Zez@Ac5$lef+Xp1kwz&Ub$9IqvVD8FlU2)FcfW!;QHkA4N|g_flSJDJQ28v}5z; z)lv>&@^ns%5zUQ-CF>TN+R)*{&3K(guA{C4+nPE6lEN92v3TLagpiOB115)c#ib=1 zk9uJ8j+~Lqe-Z!mQb>rAkB?6pqhDlJLp!a>^w%!Q%Y5|c7{qS9F*9Q?2L~U3NqY(lb5o1cNtttI{m>)_B4Bi4ey;1MxnK)#UY2Y;vm(;r>kYPT8g*hotVQWZKU@|Jk@7eSyw6Fwv+1~s}m=V>ZNV{<*QIJcEPuu zF5z(nZTc51bD}O$lFZD_hepN*2KF)AupvbniNkI2k|hJLzv4y8tcLK=9khp_)pX(z z|0RR1Gv?gT8aQxzK!p?JmZB8QNmk9I*tPn+8<^MBft`fbpV`#b|Jr;T8x7g`(W6J3 zcnvgv{Pd|Y&QTMx)@AnGZm`#{HT2fbj=2#Lq0-dh;-yP2p`ClE`U`w|8D~qzoedjY zm;cIbXTz~ol`h}8GbkjKhDc~)O>Hcen%|2o6?ie+;OSJu>ceYJ>TLxy^*u5q_x@MM$YjkbK z?{hz>c@j%1SIssQ97tj1kF?a(OAji|lXp?aIn%j!a7DH4xA$!$!^79`MTY6V%iVWn zdOMwiTk?Y|M-jE&)@|&#=UvKDLcj}3(bIZW0Py=2!VY`-c+bws#?J39mzSyMZ%9_@ za;dUR(@$>-z{eVq+O4OySse3uV%m$I@v@7r6;ZXBkXvkPnhY656ONEZjsoIk&r zw9t@EnEa!*p`CvsCZi0vp->7ejHRk54KHgt#fZ=QZEMyD&x%6(_WNmUPt7ZbH|1+g zBF{Fy)s`EbPP8ZPj zA&Zl&4c-UqAS)q{4cTs?HfWF>MIrU6rU1lC%h}J!!;F9ayb}QaE~}PXNh~Um`BG8& zj|SU(T#lx?y1Ggd1%@O>6|hrKOEe~#yn8{;uOprW(%bkKoB{JO7CX?( z3cWDnQ%PBw3ms|)SB}@v=*>rf2%Ab|emXSwAP%;}-yblhRiRrqdAvCA*@nuYLyU{a zVUh#7klO6nl&B?(YLA=yK4d+6%h#p_LnrS{voFc$oN$lo%v$zlnVK{aKQozJlsuVOJfK|qg)beOKD5y(A%?Ct?Eg12I)1|Lsi*Pj@n8CT2VtX|-!|p0JwvmN}L9IVQPzq@|^udrnOz3#R+zbcOD;PES4T1=B5T~6m~L-=sEK9NlH{LRl9rl~5HQuK0fH`?KfeuM zpK?ZjgKejd9c3hWd3p8dOXIvc^uFwm?XqP1n_X|}L;9Kiw8ydIJ#O0&$`DL2@~=(D zw^mYVj2Gc9mpOpTwsdMkCckpItMigr-0-pLI7BE??3`NCPd(L2rKDx zt?|RSCH#Lwh7N7Z+mpOCZ7RB+@Q?T}3h;AeyMI%FE6tUGP7lkrK(fW;!j}&DdF$rQ zE?k#;cyrxIS<0*Kh(0mhxZVqnfAKp9A?lD>a`wuVc|o?vANzi{8}li5hRPm12N~Zj z_i-mVT&uyOfwXq5TnVh7&K$fH<70o61ed4}-=d2`ouc12S0%n#PMkldAHTl?)XsrU z6wAeP4IJO^^h0EJRwFe=Dd`Lh`W(#XGOM}wX8$+P@Ti4-`$VypW;+%x`X16?y6!6)ZxlW%DKa9$2-DbQ zfEbY|oQE-%=+o4JKL3Yl2*RHH7m?K$>+3%to%#TKW#a{g@zb`?i17~y=v`Y-|2wHg zixvh*FtcaPYIn_vHM?mQHz+{`kh;ppAH@olrVe=1XDJ^E`K7F!{p5*<9WECz!J!i; zPewva^0QT&I^f1S_^Gn)hxK#DCN*^sz9U$;t8CEPj`;vYlqe2a+0!h=n4i)8D~c*8 zoUhVG@SIX#pjZlpQ$cf~_mw2C-915I59uoKHiC+I^SiTY2G&g8lyb;#2C!ZbscSlR?D!G>E{%^av)cMyn!A$P zit@gW59yS;2jVul)2ZE^HZ$*>Z_a9a6)BCSjb?@jLTOo9$7NO{)L!N|ZM=o!MK&Il z_uPVyTxxj-J*_a^qS_dfmk_H?DV>1>#*+7`Q>W52-MWuYj46lN1;JQaX2z^ydSjLr z09Ial3RE-nQ@K&q_6j)gy57(Kpo}G^t{477ij^0=O`lDAQROk!UF*b{c_!cYhHMKB z4J~$!yJ$SyJ;y0&Eh37?vIBgiwOT2zJ=t8^)S(q^7v1rBPuTgzA#%>l|Atgi};bjcLrF!Fzdg`A~)S7?# zQfmmV%jAu~$_}7g-yb0_Gehp@8rZkYowg;;>tJ~Q3cYQ%94J4T)eYp>m=XhzyyrR9 z-tT&ZaW4b6dn_k%8LV9Cmsa=QwjI@2bay+ywmJtlruc^SDw>z#a$WmG-fLyBW<8lPMjzj@TTYC|h`tv!$z1QAK&f8|KVQ zJ3i;V$-DC5hW>pJ*uuq&51`5j^av&X=*g3Pw04okM`8*TLw9QUof_3k%s@EXTS-^( z{du20jfOL6$&$`cIk*v4@Lvr7DtW>x7roK8o1$Zo$K&MEfg7tS#lydcxVG)vx34sj5<2q!r473;J~@Bn zNP9!8LCdnKeIy5Jtdi~eNnU*%?O3dr6tm*S%9^;LGkv~BQanl%F>)}$&XFSsb_B_nYoKCi7po{|{ny2-!F28<=;kI^r{JM1Qs%9SR0mj?>{!wot7K0*MVLb6I zJ@q6rMP>Bp#uDqRtT)lKV{b7Ex*rdd)N7nt-~~ZykI39+wLUpK%fMeQRpI)QMIx2l z*#4=@=Ylvlp{HbKwjqT#mWqmt*8rT;bz3*^)uP(Cj*O-xxK|L~8VdBt?Qmjg-Ts?-H;8IBwz zsC$ew0=Wwj4{FQ_lNYS*{U<2;qQ4ERg=jq(xgl$iKz$$cJ(pC!NtxWKhnpCsB*kO2 z3EUdvVVe8$B{d8_buoO1o?s!z&?zJQmr%%Ejx1R@;nb}=9yU~-y@0d;5JjqdVbu|G zKP?2Ri6k}p?wX3$dSN-jW{1K)wu@VA)nG&@uGvTo02gaLdT8#H05#;or2)HS7Yxxh zEem>YApQ)uZjHIQ3**NQK8JN~OH>veRgtfDOc&o+=XcDyMoa${&G_H^!@5h{SQ!Z= zEhz@ZwG`=LZDvZEh*(T&nurqxNHw+X(DUY&KQWXY zNmGd#@TJ}Gh|P1S=!1Y06-$o1L3U{-A>^c_srKq6;WjiXgX0OuGA-Fhhn=GVU`D9m zI;25cBfa}gm@t7hbiwCiR&YQ^$*Bsis-%-L=y~&j*=+NCqil|CM7I_a^YF`Qx_>#< zMY`ZFfPzqd=-gRdSMwFeEIh@Fv2Cx1#@06(eq`?Q^TdxSn3fz)YU}7O=^WRsc7sxb zn`f0z_yFIcjC=QFsae|e)aqaXvT9^3Pt|+tFx=g-#F=+S3_krCO;5PtDM9IR+YjQH z71VZKML+Yvxijx34|8hozva!TMIPBtAdGxX9W&zQL{sy58>Pw6r+LT=y>54Dvs zay=CwWfNjnz~diGymJY8z;le%8I{7M?Cj3uS)&4dWXyw@TEuPuFE1}{@Dg=xTqnz# zYj^G6bJi1Y3RQ8nFI>1FrhGvL4^|D`e7DNgRo4=E4xokE8Wj1M;ComTv*X;kIr4^=ozzS&XoD5W`FBb^i<9KW@k@nP5t6I>+A;Y zOFHUp!>_jL$0k4PE0%{8m-Wd63<(k$A43bbQsLpL|NU#hk|oYa6l+g;b(?*+e$th2 znYv%`!>>3G9qqJvOFeN%Z08cOReDV)Yx>gv3I)3St1x#Qaz|)01S_F`qeKMdn9MIq z-vLrs&i44Jse*ln?K{l-7@bSPuXQOQV#z0#g=}-UP2e4iefu z^Zbg6iVpVJUKc{B6ymKgen1rn@d%tLKE45a3)9M6Q-sNdgS5m<)UT z#0g~D)^zoV8;RPNI3Ou>$d#Y7ev+QPveJ_r+)PM86hoT|?i>Nh==4&U5!42E4KR11 zzP^)(M>}>K5fbNr{w<_`3$7TL>A{Gq^$DLi?(4$ODd zv*qgW-;dSaBFTwcFHMZRCflpN8`KPyY-snU-1?#a@=g6K8dwf{V=^D5bIa4@Taz}> z7d>duAO}ovLYaYg3I9YpW|Mzv`ZY%RA2fLIBtt`=C+#g$`ubkh^@6Q|R1`i>(1TFV zq=#pY&wbuFh=yRvWPZ2AF^2m#-@O8}<5S$+c#SJt;}n463G_mXTZ?9Q7O~d1cFZ+@ zC(kvpqEL4D)_5S|x+H1&XZoCE0IAFU2H(#4b4v!wiLP2+-$=G?3DE+H7XNhM`SZ>I z>f>HsL%zo?(9>%?vC70Lo51Cs;%AE&ouER>b2O@g(tYLhK5pns#aG< zQem)n!VPu(XFn$#CS%`>n!RwL`;#PPK7-J+xF4GtWb?S6!E#ga8*G=e9{4a+3$^Z{ z0nwI&DZstie=;gG5mGOr2jgI_83M#D{)$-Bibp-SqpPRjT@l2a&vlLW6)x zx6Pf$-vBv#nf)w21w^6R;QZjKixI*xl%TbhM+pnP%O@8?oueUhNH(seuGu_K8-lxNqB7G%|7YdlG`!nuEM)+9OkD#6XvVYvw0C#@NrS`DKF{Qx|NUJK*Q7hzO6$%C$H! zaK3h2wge9{t<+LHJe>aF*@obl2h`19i;~;ZzT6Xit<&yf$3uQyKFnnjuZ$4lc+ycaJsUXh5j zKWp;gek>Oj^CNSj*0*P9)BvwL0RfY;21XpMKfZ=EgKZOZCJWXy%Du7Y!Yq+6yFMxp z09yqCY3R6$-mds3kt#eHw0EKd7gY2`7|@B&%!ea5r0yYQ!qj)3y_*AMVrm*dSP;4? zmC@$<-*%#Pja0y5tp~K`ZYFv>9@F1+;LgtZll#V6PV?E~RBUy^uIOP~NsKQQFof^& z2Ej*Il4x~5v2l!5`ifOE$pexDUa-43#@Gihf*(wzuzWtAuv7=Cpyu)-hJ|NGJ<_2%iu&EBpMu=|mFFbtRjjvD{*sOX4i@t0;Xs^TJ zfmucyfUCd=HzHkVO_2!y2gl0zcH>rCJLzT7B6x zF|=sxn$vMt>W_eq7mlAfoRqFSV#Iv2J>PzLEA(N^_+Ra4M$K=!fW!2D(5x3vtT=wqM$R*EyyQ|%)uR~q^NimR(MD^&ml<*$27rI}?=A!PMA;$g2j5#5*nq+1IiFhQq;D%LS*?6#jR?*JWFVCkO zf1qd#_b1e{()aJLa_~~~>hay`-WIw;X z}GPk!&=@hKo{5|J-9Lg*N0Q5M8#SfC6)X$*CHGk*@!7)Mx`s~)-o!`CCCno4bqd4 z@pMN$JUrJ6M9DGo0dTM$XXx30fW6{_Vs+)tqpU7K# z|6p68YH=zegcwGow0hS+Z+^v|^YE1XtQR1MqQsyXwW75W&8v!0kSd9aEE8VCNYjnr z9ih=}TE4tP@_ZlRT6g@k)WBd+$0a;*p^7nTU3HWGU~7BXKT&D?LwnzGy;~T$J{BSA zQAJZhC(HfV!5Dx94y24|7_Q71FH98K*<=x ze*NHRSI~`<5ew^^e5v+~Tc%5oxiHEVm6V(Xbl}jO$kI)&;AZNyY1Jq72fk^aPGCDd zX5~!yBB&$L^CmAfjAc2D(q-=p9j4v;5}fyG}cD<^Y#WhDGVK;%i0 z$8ifS2XC~NgprRpe(pMB874wG6^tvSA1{Kg8_aRBMw`x5naSfeIlq5-vDLK{6a#5{br#C-_BwHW1cN zxX374Sh7Y2-A7fmZ$ zuS26+4k8zihAiEbF|}=l6Bhsr%OqF~eB3(9!@GCyE*8PS&o?!eC!h;P&i;30Pbz0& z!~>RdT;kze9s|E|uR!t)(yzzzBqK(M?#Hg7vuII!=zs)_?hru|B(oF`yQyByKyA_e zLkwyKsmN-d&KRbr(bg|!zwmp5-mX6kmbi;qP`b*pzVO0s`acczIf1k$@1t*tpe;6K zO@gh&MK;aEq#u@$jF?rk@8{@#e~!n9Z4{l94IE&{*ghm)mRJQzcEH2hhG#51Yp$aN zG89g2zDk1ZD0BgTO=V?eu{w&abLy;R!+7S3T&@<=P3PbZ_OG!C@aDC9y&N~M z`&3)MK0tIIMosOd5LLBIwISg2b{zeoL51XRE}h% zu?ogpqOf~dtX9qY$9-e020hWj=)3Rw^|81m8!Tzl?Cd7c0wLkLX|h3ip3mPh5i+dt zm+D_1!rEPFAN=Q2Pw7n z4*9|d_EonM%?9dBm4QlJ+VAMQk+cuR8|V(cf<+V} zGLtS2KtMu0-4`b55J>AO(6KasoEwlQ>p+E-(SR}^MxtLcT)N5U{M)G-W1T#2-T66T z%CoTy2pdP^!9JLH(PG1GTR-~F|4xrYi*Er-$`HdTo}X_I!KrxsipI82FFR6aJYX7- zj3hvuC>^=)W6d?7OG5 zZ?!jCLeBgBCSoWW)LmbiLV=t2sU}6kCrP>vpOLJ@Sh2&OBH1`2C>qgfL!feIonHbS zkX*y^*vi(xD$&L)dMJe%{#UO_`Cq%81 z9xfWG=#*{xw>gYtOZq2)(c*MhBl+^N2;f081RlDBY?*NLFe8I_I+g>?fR09WtZjlJ zZz3$|LM&=tcl-8jq3IYSBa3TAlmB7VBO{uYcH$a5arFE}fmvlj9(FnA=Hy zP(kM0H;ne=vKZkVtie3`GG65?;e zF`9o*=n4TbgkvUs{)_MqUAi2GL}mm|TVVM6oba=GbAT)l>NQ)VY}CH~cJ%A|-E z6DI1lB^A**A;!`OuvDHuA?x|`yJTrDMj`|r_VZe^!7d6FYNi8M4|I&x`nG$Jj$GSn zy7UfRiBqVUKgquu6XyV1^>NU{@B06EZPws02=l13=%0Oi-I2LjLt@Kg20KqLNZn(iDZvLLo9LJ4q@e{a_>A&PIm7R_lwjDVQ?5Qz?sm!nDlQ>Y?hj9nW_yh&tvL zIfb(=?q!q^0#D!_s&rVtHXz*N#&136*7BPVdnVbrKidznUt;;B5qe(EpLGJGqSk1R zr75qNyy~)>RKul$8nWAr=yD9j4v`vvBe8w9$cpU2mA8R=fTdk0Mi%go#!i}aTl?4c z?z5Xe<|s^^F~bE`9R3s4D5ON6A_dVJZKGiuO6mYY${>l9a1L55?jKbMDcecvqOm7C z2!$D5m5f*D2n>JhwX!7q|KEwK(!Hiws}uH0TG7}+SPvtlBQPFsuS>Bh0|61QfbNd@ z9}7+>H=6*Q18Z5JtRVNdm+AoYQ~CU5Q7{xmGZ;KlccNQFp0)7xT<~Yci``6$4sM-t zm7#I?1Cn{9>#vaD;9Q>tmPDOtjn`#lW_CgestoS(%c9o*0BOanoAA)VSa#YNCZ-qt50+e0dH`Zj450%f3CQ9lu&=V4&V zYWQZ)rlzU`!Lo^fr>gGjJ4be)(YHNiu=;6GVBn@comZ;8p8h|fU51%#9=(2hY(uy# zX!nMbF6S{)iM*Yb7Ix!%<5A<5r!pF%wTEx3Q6=mNXg9kL0na$bYW-F&DtL1*i{7JuzQ@Ch>T&g18fJL7 z!NV(8M!&N^nZKiJ&@@Ye0{o&sffFzBZ1BTpvzjM~?b?DkqAqLpQeAyM| z_roJBB7%b6uYdpO1Gt?Ae|_oi^!^+BJ35xW*s{-~g3*Bj?g$9S@;o=eUMhKOc@2 ztmlUAydLDqH9oK3Ww&luYcvwFu~wJmC@Ko>1Jl--nzo~V@?Uocj$FFWu*a=7eL1z% z(X$Uc3}PF@R2$^@qD`U~LT2fiG&`RodE<6NHm~(nnv``IZ@0Vt=N}vL$mM2;=p<>< zGc?Vxvl#X4*MrBsCWUz7;n@KJ66gV{@NKhAY;D60x6>QD1kBhR&_t2(n`c7fhH2hS zsg_j}f}59%!SS!cNXMh>8uC**aJ9NG&yF=&_KXKa|Ln{GDkG$VvhJFct}->KwAcH{ z+O=vmRCEBz^%|SHO8cj{aI{?M?gN9@K%{!-19E%Q)3c<7;nr7Xd*^Hc;%0Pw>5&8W znO#|#tEsp!i;dg+En9b^_7ok%KK;L!{QyTNfOJ&EvcrwNMlRI7B4qF5@N+E|CB3+E z$@t&-qaXOlk0*Q~@tWycNctVyqD70Eifq$tgaryh#5r8Vi5HeVo~AUw=ObdaH{UCb zx=dxn+js9=si|Dx|G5AT8ZgAih{O;}Bu5vjvmMl@<3smCH&D%KUixDRBGM1LVUJea3Au_*ZWb{rd2Bq`d3Xj zeRu~&ixB7=WWp|68<^2yaTWN3)Zs$dL{#I|V9LtNR2by(zXYbMZ+U#dm z?+;kox;HrhD<5ZCxxvmr=rD>JgZ>lACQpO_#xA6@hJ{V0n`W#Gx`l70j(i#Q4!WnN z5Yng5ETEo9x^`{s;D7#6g?5YVxD&={ow3X7z!mHQd)jc9e*b!tLe9Q=We{PFFK`1` zeMzuEp-icwwR%Y%{3YIQ$z7cE_I<-$SO?1d$2vc5Wv|Kys;zHr@xx(9 z|I!e9Umefwnd#bVwOxN%VfUR3)}llI4NpDZ;z7XPLqpeuJT1>*g;PyMu86JGLf_Fm zf-^rZUSXHg;FWK}7*t%1@lk3dCJ>wqGfa$BpBrFvI9s%_m^h7Y!ANA#pg~9L)F%FD!-jz=Wlg_E=9H@F7@B-5-R=^w)<3R& z&WjfvprLsjU@6&@q|28_Qh|<}o!~GB3A7s_&~@aNzq(y0;;DxUZpNTYZQwv-Il4^U z+_31bNk!U+h0K8=0KK@2O+7RywEKbJ;O;hrqnFUq`Q|JlKSLka?cv2B$v8XsvIgLR z2Vc+G-J;K^AaA@Pwl;t=KL$#S3xLWFSO+%5d`70n?=4PyesiVcj!3o=HkFqEkR)M7 z+9J%OC&@n{1a`Zixv?j&Aem^=ogbO|DWQ4W(a&-^ou^b-;u{wmt7GF9^XtL8Df`RQ zb7#_7Uy@fLDiN1ABtd!SytxyPE)Ga8t4?0hDQK5{!*ANlt+mzsf}Cr=B~m{){qD_S zLE)Kmy8czSRZYmR`llzi#T>3P$Mtx)KxBD+JW7i&ii97IFxvFNcSryCK0KzXyenDXDzQZ}4Nt8)jfug>K8;@4Z61Ks zACRD{96fQ~I5_d_IZ7WFdfu9JN0MeFAkjh2Agre5Uj37v%F8Z+Xw8R*{UxGvhYlk` z;#pOaQc#XgbSne0^!0EIRd={LuRXGMrHme?-G1djB0l*g&dR31o3LS2G6aX9G+Y){ zMgYnfEb+zO&kv7mRjUsV0#EesIAeUlOGD2yW!a$!jjK3eeIJk6%R$ZiUxyu3&xQ|o zX5zUndb3Xj&lz)dMnn6MSy7Wo4Vw8=Xocp7*_-TgZ4g?~i~Y4mC|sMARg4%rb}Sa% zV;1&JN;i!PUvTezd<|;hP>)rY-tMMSl)Xv=hQCft-M@do+&rUpyLmO;{=U@XY5RnN zPHIMj=U+4nEQ{YZ&LB3@G^aAId@eUm&iSC`+1ymG;zjx2KL*{nb*l*t)P#ZiVp}9}Z61KVQ~&)ObJk;q&(F z8LZ*qSmg<)w2*Fnf}KbC^^>Pg1qEk;S=%7D4GihN_YAk`=|4ALrPy%Hutt=y(NlL) zicv%Ym$cVve5~%OcH9co<2vfGnD%)da*7;Q8fEbu4bzU)5~8Ak#hbi5|EYH=L#dX} zw2|Xngd0X+ckurvV~|4V=W&O|=*N&?0_FK%3$>=C-m$kCHA;2>$(Q+2 zQK@ItaH1bgVy1$}w*Z?5x|{e-J$)f_$0aeSqkK>!_B`P=^%F-irbRMQ;34(DkPi`G zU^Zw9Dhe~)b5!7BVgl<4?e%`cQgo6d81RslG^}od-C^G*ZV~tyK!kZoYovMqSA&N7 z$!{?mM#8#Tt}Q%TA@l+LgW&JxIYebVCIpbYbU?c+yh?-y;sI^*>*u-!3l@N~w?blc z6(;07*45t=(ygX(a3VlwL*O1tuvhRJI1EjNpG>hM3SkO^Z4~;e>;_c4UkrkVMOh-) z3#DIe`ci!D+X+@G^cZd;;>gBmIIpojDCnL8fz%=+xTWwQ#2gKKo~!(Y8~E@EVtlJ> z2F4V`TY$`H^fxmh5$CFDhflqU?v7^Hg_iP_K=YM$;hcO6mI!0yxtrXd2xV?bjGIfC z+K;a#CAvs{K0jOY{G~|R#*e=&o@LbIvTViz04=(0;}^vh&J?=lOtQq?39gF`nkA%M z;M8?k{k4VpF|gf(^`SxU>{??%!o6nqaU-||0ld4g^7<`$D>xSmvmAVJ8+?u0g#XR_ zGjtBDu_K%B>h(Qw5g` z#i_xloIa}9jJK3UceFS%9u+{?fzl9HhAM&+Y{IJm<(;6^;3{LV(!lPsNr`^OYlLdz z7GP^@E9SqjZ)A`POd1++MNhK&S6$ZZ8LqCW^L1CP`t`3-8fp%$qvp5f{_Yl6|K$Q? zQ_vY5Xj$pw(LjJ17z9j3|Dun-7!zX-@tE59;Ct|KH5?6v=YS>FCZGbC;?>~S3(|^8 z!2c5Dt*bC4S$^TfRKP6f{_iO=pTD58IcGX?zm3shNIFQ}S?uHrNv^-ulO`0Oa@9#) zVZ;LQHY65q0d|FGx0!B=I@XNAFLnCdu=0a%el;5awVhIxdr^g6S8<{=IYugDW4Xtu zay(I9GVajj8qwdRMOn|~W*C2(eW2vq^(Lm;k6{*?8+h$tkraYuXHuHzK=^ zP*vm-O)KXyS5;mSs22`Xt@t=pk={oNQxLW899K0O5=xXRPMk1*CVD%sU%%df2^QLg z35b$wDSrHPjWVXJY(?&Ffn& z-_77_g4%@s&D@%fM`)h;dMmR92T@$WR2$`VoxEh%NRzw!!&ioWym%dtr^!kKu&*?W z=WOxqsklJl(sVyTRPH7uu6)E{6-=xVmWk zRS|DI%*SA)QrL&su z4&7mBy0%C8mQrr)NqoVoI02XK&vF1fR~Z2ZaME(DobLM%X{B5R&d*KtEbo!FppHoy z&*}Iq)A)_u6q$7_nMFGDywl@Jf@8v{I-oa=6*0t31`SLm8|V%1ty7@HAN5T5GSkv9 z+k9nyqrI=!CTz}L{nNq8CA-P5xQ=S+x4dK9OO?P(p#z2H)Q;r_-#0Xlwq1aumoy_H zZ_$iRaC;gGH9?=llzO&?{g+(V6{}V?VN7Naz5Cj~4M2XQeh(VO@`Nl*ekD#1@K#FB^o@rs>p&6-#Fo*Qv-$w0k ziJBU7Nxg~89%NQXm9I)ONlw?HyD4NR#(ZYJf6SZQ^1GmA!7otx{KM6a`Np)zM8&;F zj=0NO7jU^wz(#eb%Ef3GT)Mi#j!}~!N9r(T1W3_MySZT_LUBQDbl$L(DOaof>3CFt*2stm=fAcJEZhfXSst%rDM_m;ICF>SZw!(yWBpN& zBW16i#%*Y>++$~}dr2UfUU8x==-Q)Kez9LYu9?^k!4zPeF^Xq{HeomQjVx-zB0YuV zD*jUb`TVsTi2HFSbiD@-)D;sFuA+)8J?JvMl-faYlBI53WLlyvc*anh32jzMB*jjM z>m{i{J}UmAtqpll7;)hOzPUz$eW)DuAJ^*GVQaw0-f!C`TDrb{K7OEf5~QpjJ^?uE zii9VT-YM^W+4t`+Sz$4PKr5GvLcp`Eg>sJq@!fO6n&O0LXh|03oTAXO*yb}F3%ZvH zV{;ycmomhmd-;a(DC?ECGxKg_-bHO+x6laPJgtG5f9%s6#%1xZROv5dy3Ej7s!%GM z&uk}v2mSN&l?l7{1R=hugK6;u%PLyKh6NcqdeIIwVcA2cvpuSthW3jH58oUUQ`Xwu zxiY3to;X6UAeQo=+p|xIs=0v2sffQp?UKEmKwK)|J(WWUctJF>U5{KeYC4Az6!|Xr z+%KcHV<*AvmS`&+li=XsskDG>mu^94Gnz@(5S{UIVGSLqEbA+>;NIf^U~e-;*wUW% zaI9r4d;R9k(e$I|F!zuCLIqbvyaAd%!4GOw%}o%N$7O+{s3@=@G_G}z?co1*w+0gd zgGVKwU&0@nXKfuiH3Q^N=~`m{Q>M{yMxrLcAE91R`Fyvq$I|qZ<5ja3>@XwL1lkT; zSZ29w*-pW+If1(9K;?+z!4UBA#ERKoK5HJ^U_8_#(%Npxe>|m7ER?RlS{bHrh!V9k zSLpl4nLe69)=3)hr>SyztHGc%PJ`jDY$i7LEe%Ed-9- z+Mo&qBRswSbS4es%E;O$znV7x-KnH`8x9UU(-$aNqqZex=4(a-gK z@z<|S-or+0!}k~ikxZs9+;qn7e(+`%uAkbwVR?+lwV5ZrwDYz+=;HErPA;?Lv16~P ze$b{!pd7kJFy<%e&(Dz;;CYZ*8%2MQS=&$$A0t7Ftrm!}3w4<}(=pFB9gWmEUt_pO z;#&(x%JX8%*GZ+PyU{Rp$6r()68gGA6u#2s03vTae*EQseaNg0$2i_N9zsnd11nAh zF6ffn&UWh1;aK<;`^7Tlr5tN9eB;FnRy-)elAxQ>=+jrC zsM;9pbE_$g0J=?D{)9CpN+O-MQHcQ8!!~|vz)ZWE2n?sFDY6keMDg{Sxf&G)89Q95XA zCp;Rw1Csq#82NDUSMV4>tMa=#(0@pQy885ohD&yjTyn=?{2NoFHeR1Bq1h`B$FJAh z5En3db;yG8<~#OT9V~b3o{E-uzW2upv$W)S9K7m^kG5kw%0G)o=Q^@D$_2Ds?85~* zdp7yclae-cOilfdTHcQ5QNmHkS`RRtB?nALC+`G#UHP@H_lh)MXaLba_?F3pCXoP8 zvQ%Y#k5TmQ~&W|MeA2DI~jJ7>C4#%TQ; z7gtNE){p3zLL1tLxth%1C~YnxGF-S_c2^q)(-N73KwD(T4nYPb-ddoi5(}6v1Tdpm zxP6?_I8q|+lwy`)PS2wHVWVbDLONKS%*+0m0t;7fAp|E3FJFUt=&hG>}rm~_DpYA9wP^@;N5U_{&33nc+R0 zJiV<;=gwvXA0d`No1m_%|88v)kAsNVPWq9#m zsqevqHRjC8i(1%U>#v1FrUc!I(|~WQZn`BE@V#!LcI_i>8j`L}!e@gx`R9e-JHyiS16FcX2E&jB2jg-K2S{<^E}8T8zu`Y49`RrCd82p{W}6eSOj)aiuyGR=MIz&Z zoIVc*V9hUv$HFV2QxT6nsne3S)>5^zTDGhKkpS{5ZQcn=k@PDY^oBZacS(Kj>-fu+ zKlj0A7;>k@(~Es@9v37wdc9Z3T#Y4X^+%4Bj!kmrFvnkQD2UhybeX|TAB%e(qT^L7 z%4m=^GRHNYv-@Q5*-K?-mo5vL!wpTJNU=;A?*^169QZzEYMuY@KR>VzveaT%ZT77 z)F5VGqoBZvb&g=$8Wq6hvaUm(H?Hh7A0GKD+;zA7S^JAbLJZ(@jOs+STpD3|av4`W zDU*1kW0=O)I7LCZ(qL4;&l^Y@EkKfY;O#yFQ8|jg(p`bbtmuYIJ9(Ov2VrC z8q66+p>PMTf0>u3-lLuD5Wr7zW>3k#M%BYhb#<&8n?~`b^6>hs``apb8!<#`dvIpp zw()jk8j4b91|&Bl>ejEn9U7Mil1e*(oAii&{;=hV6*0h8SMVM}rpG*>GvbevpA|nQ zsKVI+t?J#kuUNBqW}nuebc6wRkDY%s(Gp0gO2rJ|=BlSs7&5hf|D~|-G68Zoi3H89 ziagX92usOI^#tfsWv$kmd4x)YtXDWp0RP+BIF3{9eCAW>K3mzaqoRN&Yy*$8?7ywE zNaw|n6A^>>1mc>x8(ts!Hq+yuD56x9?CflDMj+f?m>S1}+iLeDoxB33kSR>mWyvKA zb~^UzRUfeR3NK#3$3W918NEC&WLOAyjF(>sdz8@?M(0(3>UBvsD7JJ~ zOF4CZ=`?#Dddq)VBgfcGAu9x#^hh8%sWsRh5P0=^6Ex@n0N)Mx!M6tDBa%(Z! z*uk-pOwG%j(502EM4}4O!9KVFi(9CCcp|C*OC|HVcTw+Gfwp&@@9X~@v51O7u)5zh zh3L|;XU}^4&wjHys;Z+%C^q!U%bs2gGqhWXi?0n58`XGMy_pI2AR%B#|ApRhjU5N>o%7BEr(*axSmfH3&2+*sPnL zf!=}cDvAiy&<@VHV9`)mgA7d(M+6=Xs^K*I(yHBS1G(hrIft?^V>(dqpW) zM703}BCh@r%@~0yw~>X1F;K`U;!14>U3^Q^{0}7rduSX&;r<$ZA;2xxbV0>ksZsp% z*l)7u%yiQ~Rg&oC*%fl2nKpPw`0Q(y8|Qd;K@$OUq)~*oQwZ0Zp`m!pV+@A0-f7ib z4H$-0NY`Zk@RCffh&oSLs&Zdmck@`dGs)-35gXR_5{86CC~qCk=gBYVidTJl+7chG zaT6!%kkON_TRWli`P`1t z3lt3?fwO5Xyad?>hUl{-{cqMS)~2_YsbKouXCl@I>&Nw!Ib2O<92b^8R3*~XtXsE7 z-ri1rUxX}4fyXkXW>}{*7YB5Kk`yPN_y0I%)HaGjK9&O@^mol? zE1mW5(d-xrWs?s03`AzhiZ3yW_79gH1-Ea|G-8dI8(@pEXaD{a7k1M=$YmE}1F=?R z9i&VkLY8BjC7up6>3$>ua`Trwy7p3jet|)rO^-Ekmm#^f^%naB~iJc3m=UdJ6PBW~=E1;V1hOF~S)IjMCTcTQx8lBYD$7pCX*4f%Xq@CcG;BZ07P@)a$| zeDb=Yz&~~lPa5Bp%6Gn*ncvjKu$U?Fwm*#oy%x7EMciKxXoR>KdlhBJv&QA(#TR58 zd41<#&fyZRnP0*4$@0DG5UAMVd8_ZWSs6tq-AHF!8;GVnvPAoCukeTn49Yid;+3_d zH%q2kHgYJbVcNyME#4`>ZoSuiSwJ7!?d<7y#eN#Y7YfN6H1TCjLHuYi!@T#+n>3jR zqgQd_>1md=`yW#2PMnxgvW)Z1S;!M(`1%)3jeKYrP|`5wU=|Q$hBjH0Dzv3=3lfu( zs)%HL)w@PA%OG7HW2(X(Qre@ zG!10!UB?NAcGp8Xsrg0S0FyNN=rb0gf*(Qx&$d<4TFY+4VAHr(AY{fSU8s5BQmAHu z5<+I_Rz4i5(mR!FUb|G3Q8go?Kz8Z36>M76Gm5`_nfAT+d_TvblQKpddC;yais&BB z*8akJrqIyP*>UN?Qt|Gk6{d$q`LT^@jCi@T=0bc1AM8qa+p3#gV9fK>75VIdH1ZH% zc0>si9{j07Ur{VfI|8`hiTMes1ugX1q&9D$0(20){f8R8f8jjI``u%jLupCLiU zVC7JjKZpWX^QwVY;f_yNm{acAyZ892T`S=be%Wq`n};3bob5<42cy2iKF=rEi1?$({HkbH2A(Q5YTml+E7~Po?%Hz8^nxrZzs0 zfwwtvLR6O4hxEBwx;S$&q2WeRq>RL&zxTq_Ce&LUY2?>8xW+-udm>OYxiEz@CR##T z8FRp08tf6A_C2T=sHA~>fK|(+$WXo2ZLUszBAm2zTMJ9N1>lGqUkD|fSbnsz4ldkyC#sePf z@kv*XF(OJY?*g;zov8_ndpz1ia#&^G74v*?Uj&QwgLApIAg(mks?K2w;Hh2(^A|7P zj;@A+WL#eOkhTz;5C>ILBx5r{oVK}kOG*Li*jL~rOoK;41)ImyHmLoUpk^jj%%yVU zV||R&CAc;vemJ=_e1RoyQ?@tsS?_wXxF=ByRCPm_f*RK|+CtO{eze}-B*8F!<_R!~ zSF&J+x&$kz&(vZ<1)#fR0AZ;4%g^%U1OHDBnpYy2m>TL+iwXtu_H;Js)rOtwN@p~m zUWxv8B;kn1SB{=JAy>7&&r+6`i)Fv)>u9Se-csl~Pgc7CkthY+QRZ(#B9zNR;Z=G6 z*G}l?kY+E2s>(6egQ=F^j69;X;Xo}5f^)zq0ZnK;Jlp=&FmOK8k%HXv>AZ74$9|oU z`Kuaz9UmXwrMy|`*5`iXr+BI_)9BV`DcsbsJnmZxDtW1EJ!@H5!{8S^52!q&^UW}4 zQh%vV3GX`I#%@RFn|t#Yr_!`k~1waq6eB|-TBSwgZPqRE8b%T<~oHe)I zB7KjKajS?DvX@PiF_?rgjSrm7UWhK=zJ0rH)eo~(;+j04V(2c%eB3yf)G#Ryi3u=6 zJY(-Wi{*@%aX_|kkttTlGN8*xkyfqg4R$aRs!AR=v|#z_CW)yusLMAHEY2;y+b*KZ z@q{Iyl!+g1d+N2egf z1c2O5A%227mAt&~Xa+KYKZcF{VbXyI~rtRAtrY+#qKtcpB(<<Uv?->~HOEhwuF50J63wO@C+35NKqwybR^*8b=o|<$1`%SN~r@NI@-(90;J3AXmvw@>aE}5p6B!!lNAlrsoK|@wiFlIUq zdaamtSv!Zd?93RpGN$bMw-YBUvcK;J{Kq(>2R7`MUCc@%ok*IX=uWU%;(xr?6dGGd zX!_2%tJ>p2R9BhsX6nsGH*UTcEZQ>)sNI|bMUJL?q$M1^)Sb zViaJBxR&BeM0r@HwAzj0Kx$Qmu3DHtP!sY}vAQ_tP`PQoC}=WaBQoOJu{yEw2HxE#9`c0IFkQ3yf}r zyCYjc8FYxKiX7O2)xA_l{{5G*CT_UE*W%R%$VMM2)a}nO>}0qBiB=}8tj`upV)u4t z9s8k<1$dc9r%Czm4AdjsCkf5OV_iZ7g_h9|KK>g)XxHp$ zc@OMjrF0NEm%ImZ7>{v1_zm(3xEvsSqo4{*s7$dZzqz%djgyj;$(?X|AaFNd`Y@ z0fxVRm05chT(-`R?RM~IMDI!2QJSqsKfJQXEkm>Crr@9!BHjJ)p*9#SM*}b0eZvDeF2r zbcN%XtR|mgR#bVMlutf~^K?SY>OwnSjDm(g&+S+2G7_$<6qcQAKPa zQ+0sfz;l*D_B?3=FJ+f#-LQI;*(_H_29DiQXo5U~LNqAE#*kR4Iz%)mm9f;iG{X}d zj~NZdTv3KD1P7qAaZir2ON-m$e@%aXkpP`6W(58*ogc1Co%TnX6BKs-{AhNE%(N3> zQBa>ttKRu#EZ*wJzQ4JrbZV&En|xp~3XC=Xg$UBIN$47BPhcWKIeO@I4@$lH!})wr ziI-1l5@H9DyrY2&d1}@zFt-1jz>{Ipbn?76n^i-B5+uqrfn9wb@=3$qBzbS<#y6CEc9lHVM z&8Iq9saTzK1(%~-0T?3zT3h}QX}uOW*Wo(6bbXR27%e! zuCNs^NBP@dmwzS_O>l6GM#89*8kKry2czi|GHv)3iU>8ozNxov>0rCD|7t^{`C}R% zXN5>77FsE?wGe)LV0U%(>Xe|06QUXl({T%(-^|8#M+#JB4?71DhzAC*u+2!SWuo%^ z?_jVwNM6-GuXhk(MS6=JC3D-Ub{XBnXQB}lhY5ZEQfP?xH`?HR`0)7pEkcdXG-Il$ z66-MHg0OH$Fy4m`Fd@s^ONjQMPyn3~y?jPQT9hT#T2MRcbdWzVj8sL$Wfh7i!!yQp zwSRuD%3BdysMyyisf){}=?im*;uLY=76#!bq*#~A{`#C=sTr*Tr_oBwad`v>RtyAW zzC)v+S?r+Mx^lceuB`w|WzUcozAH&uP^)O+1h2)jzr_VjOv}9Ix4^zx{;U$yu;85L z&uW;|2`_baz7bhCzdz~6u;GHDwJvY-3sDZgq~Hnu*jvzu0G~?0SsES2X4^=Cvga&0 z12e1slaCH_g_3yr*|Rwzw=nA9&hK|PIB9ANd{LNN3nH$_mb2c#e{xT`0!A$a{^2kk zDBHY%OekYcMq|~G0!9De_<3ZVBB|oxDOO-lZ&Qs)^4Gw?gv=xB zF^~Vm9s%fMe|k>9jdfx%EDQU{zL?$SI!9-7=5PLBI@MS9N^ zveoX6C*IHWv`Rn+4y>>pa)lsRM3^LI#H>VeV34c?^;pM~$u+*FoFRm?RU zi9`t&46pa=fz-QqW&N0}U>As3KtfPZeVK*0bxS`9^v3D&Q_WQc#) z-|83TWKh_c)Z0{r%t6Xm_Dp%A8f#i#&0uh}W!lytL6jSOvQ;D%jNiQCfDTvmXCOVy)dg|C?S?&sU}ijKGM= zd8VBfhR)B^au9d`rfP2P0_Usw;WZ|GKHj_X8AUy-GNSlrJGG#he0q8NA;}VP=7*dP zWCy%Ds#ri@N=zJqpK>$td13b(9plSSpLSs{a9wN8U3Bvdk7P6>Z8&tvD&)&^QBl`` zgt4O4e0T)ZLH21grCJi+L=pU(rf1-iKgR4+WcFQ|tF zfakS~6E(4S^8C$vFWDKTWoC-8k2L>0)qqAPfIXN+Ci56hSQffVD14Od&>uyEF69=l zSn3iK*}$%%O800tcG8_nRuV=NggsfA(^FiI4taSYR`Q=+@&`SXBO3q;B5uA?4C{L) zRcpuTHU?ampg{|dNUBD3U)E~{&yH@C_(5j?9H(uE54Rj>oh{To+4aHW24lAgD!yIR z7RTwbh3g{IGeY^xmshqg-F@5@vH2^|zRNt?V$8Fo3_HdZ2=JpXA*V>;ilVrxYi(^E z9iC(*?X&GO&NEZ~Gq&bq*`G_IRb(wzx)OTT`Zp3)Sp*R7kil}xst!XaN%XFu*C)h-zN%OeU4+%}6DdOd|f>#3)!IrTzzB#rcnyes`1 zt@VVP)C5qyWnFTF`32USP_py#KH8p{^;D+`<3MWU#B0}1KN_fB91p`uWJZ6h>u_}h*^i>&dt`d9rmbtcid$kAgd&Sjo%c9w1?N0_19=21E``x&Ui2vRb2(iKV! z6@>wwgt6XK`tH{{16f}Y+ZoytjlZ=|2Q4Am!KN|v|GT>8@{dBtV3zwR-hSxT1~N97 z2UG?#Ccbd6Ymiu&i)o8IvD_$WRyTgnJ1FiAM4fdNL2a5$+B0+T-lgaYz7!RyT<>Dk z!)IdzVjAZ0)4ab-ei1ajBJcRc+<;{D6$5^o@GHm2F19PP>9Tv4Q~YP9msq1KF|N@0 zS|EBhPfG_?%@04+7iIy;;lMR>nWK~itzgcMJ6o*pw7%@@vPv?C-=Kx$X=&OS%>IQD zRdipbY&^Y_a)v+qkMufgxs^3Ex|3VaUcExiqBBn)-0k3s!LuqWT2}gGMb?pV4D?wXo#kDR6)5RZcCvG;Xh1i|RqJOCa){xcvw# zKpg&PVvuTz;@Q3I!T(EwNwxopynG%31<9C4S$sVOIszjFRl4H;>CQsUe-yp4i|{Wg zyl;3Kg__R!)G;N2`X~OP;Sjxt7~KdT6VWEteVc?e&P_k#aS`pcibv0Gf5n+F#wOV~&$cax z12K=wPsC=tyhdGj?AJx=fB!v?LR>ai%7SYGxeOHWuBgfkts2x5Ppe+6W@5POKYmv2 zE^~TJO3&bbknB~Z2J)(``#o&490BYhGVy1AGY3Bo0&1va??CZ|@=@dSKea4@6;7JN z?)z)bvrN4apfHqb%823bmZs%~IyXMoZ1RJpL_9Q~-ZeqGLn zU+Fnd)cM~j$#I<-XbBM!i;?w#Kc+@LLzhD?CR%k1TW)e~5VsP500pV+gMD}O4MAHV zAW@TlQfV*O@nnEsLV`O+c3|X{2tQN28O}RL%irl#^rTueN+Fh~otr;e#u@e74I9B@ zDs4TSyZK<&0gOPPJLbv8Q&=rh+g4f-Quu`C2K;-n$tUfbPe55kz?%|&~;vu-L=;CH$GwP zy}skgK3D(NZG3j1{`(#crv?`q-x`0*ee@W2*KK=x>h)-3ZqYKZLqCn&n<6{Z8WtEYj)nZ;C$&CbHDoiHaJ4t$SEke z%i!}JP2mZHxOcybLmk7w>=>D`UBI8&G=P9NkpIl9o*o`7P`g52kl`sDfO(KiX(1B* z4jum<&D3u%@e_{0BtZRj?*mVZ5>&rh*riKebQ4Hl#=@v0sedha?h783^XARswCVW; zw6DuIw&(kzX}SY=^q4ykcQ-ilNo(&l_T~pYJoX$qbbWMvtp#Bv#oUhMYuC0@mjKZ% z)bB7YcXBZ^<P?$8ki@^j8;#cBz%R#{vDhV+Xl zH}GNn{B-4Ak?r7e`RVP0%10=7;OQzC(wFkEyeuf#&DN9?27A3HI^OvcqWMqM!A#Q) z?pQl)Z?fOgVp)&i#*{}>NA_>3!zaCEnkNp-S9k!Wn*6~1FfB` zSE5wx%ZU8Mo|i{*8RStx*c84RbD~F=F5B5_FQS#B_9Z3?W@qbOIyc8TXTU4f+O;2( zSlKmpXkzCxzIO>d-83|+ya0feM$B;f^v2Da{WStfC*z!fuW)06&IgFL1K&|nL#x}` zefu)iZnWdg(E~nFJs@@Xvmh6g=!_-C2b}D1+Ebv5rPC*?MV+APE84F8a}&e?{2eDV z_?D3d02?Diard$!k^LL)o%MlRk4tox-CZU^W5lA3M|RJ5Jk_i_+$Oox0gd5 z%Poih`er_{^Zvr8GO1<4`tISG=1|ehShh+8KF=l%KBO|H32SEmocBQsvTwtuXc=%# z?A(~1r~lC?>G2YgDiR`(2L-tS)Nmc81Y^|PEVAH%9^*u44T;^;HK zBdFGY+{Gucj8ca#sv6+()B$wA?GY4<57G}b4|=xz!nw)Z!@H@*7gU^KCB! zB|Z4$$*o9&LQG0w6-04LAKA~v{8=#e&%UM4-p7YbS?RXbE5hH`Mqgjd;|AFWJ0ja& zot(*u&X0Qj#BPe6U4*{H?2q^9#A04$MOa=#zH61K1-WTe{*#9x8|09JIOJbC4Q$Ei zj)&#!f?rXwVI|(*O*4QQRMzIW4|;q5bbXnFr1abSm^0yS$>gm1Jn}18s|OUAy#OCG zw5*-CZf#-z7yIe@9`5cojCBBq)6=H`;&XDP?4-h+?6Z+35{PMbE0Fi>CX>z?G}ubCnD zB5N}~@5}VsxO_-de-hm(IR{UrV_}oQH>j+ne zw|$dKAm&PAW^=koI?SA$U&wrEM9PMN0k6C+bqM)CWFE`r{m#U^JsV%e@=vm{ zoR59exDWHJM_$0{nmFn`z}P;yEtvjILc(EC4e{v3AWlP(Qb>89g1AEdRitLV6BgT9I$)AZA_$(tsgZ{2Oz6XV;Ms9esBM2zTfGDcN}$3OZ*NQ{?V zXk79z4&Ji+!93plZStown117FfH)qE@tU2wbai_blFz}8GaT67$bfnK;AqF-X8 zizh`yR(Zv>eA#`Wz%U88e38uaVtv}KTyI|7ctXqB5te(;ONFORUatKg`q+>27 z(9S>q4ES@XHf|NYL-+tm;vDaMEWEI6cluj?*~3OBkF%)zH=NgGjv%Q2Ax33TxSxt-=P-Jm==7 zjOsF7G`n|SKwm%(H|u*i*v+SZWQU&r{NqJ;-@1_XlJL{_dU}ol(chn48p<*8e`B?y zS%&L4OGDOD@(sP(%$+mG>Sx<$hUCqG&3g^z!`j-EY>Rr71 zHQ%s9$24ZO`>R)GF)2>3^A=^a+A+_oVyIZppEVuyX7MUbwM3K zMlYWd`X2AJXMs@<(+ZYd%k$~J%j(RxJYe-@{YohNE_AK4Y7nSsy1GMgO}cCO2V>(*DV~i8Mk`^G1<54pmrM~&;WP`)QR(`a;YSWShQW_{ru-P zPJcRg&3oW#gL>bhA20uE5_0@`kEPl}AGH#D3W!eoI45C{p*Rr9P%2#6dcX;uw7%eU zyyH+y)=c-Y(z^NldhG4eCmJ=amK(fW+>qU(lZO>vZ7jcV+X!1zU~9U3ioZO=uJ_(I+|Bb7Xu8K?GC16VJ3+Q#8!i0ro9$&ibKp+I6gSx{l715CBoBSS7~M zuD&ChCD3ks=L+^YJW;n}2G1Vrd-b>%81^;g2XtoXJHRM5B*LPrRj*#;+nBKGHX_ZK z$Dj&YkTDGjJxkAbFtGPBxDKMR%eeZJ*7tp)5&qk9 zv9j!Tn^<<=+!BwG#M-@L=M~xg32P7SU%v|AMHKJKN*^yo zRWrwU7`rc{-yCInbC}^?sWS2Cu$E5rm57#f2y7}X`mv=QQeN**y;yxl5`cK}`C!7& z>I!fTsrcFy#~%iWMwSh~`=E5=!sQkBeSa;`Z*Y6|+UIQwK77!_2hZ_mPW#qB3m#?+ z-aYI~O*zO57Tk-E%S%5_ZM2ITG@T8$zrJ15&d3TKXPNOd!CXh@J+qDlq;uGJY%&%+ zidy>(FVu3i%Gazkt$#6w-5Hg7YwFb=VKL94eOKhCOI)N zG5wfRp;FO-)`KIM3^GC52Y!h2<>=@e7>qVCX~{f1v3T^}_eQogGY`_ItVSl!a9;dLV2vT-(kg^QQRbk9j051;5E2k1pqKZh99X@ZV z^pL;Z%b~FLnJd@4`#C%t;sd+*VtoB$A-Dq1y!z)!-mZGjt@6`x-UnEWoQRmRt&gkA z1*6vq+jVrV_VGGD^{oHl9fRWwQ(C9IiU6=XF)sN3x%z8*%xc-l**qvT+3FoTZo+3z zHh(Yz!!2Xx{vwIEfnNVu&!W~nY4;u}e%QRoK!$1Vo3%@JnxFZ+aP+dKXP1qWOxd&Z z6Q5DXZXezeH)fV)^SjG}T6bHjv1S{crh=P152?Mt7%wv7GljA&EFf}t>+W?b{|{4c zH#fKLs(zGpJ7Fl;QsRi#Qpu^%E3)iY^t=-Xt=|)3t02g*#hO)5Lzh09m4{ZP8!5oK zH+F&tAdT2aj)7&rM;cYS>=Vwm zytWjg1Z86v$`1cy#}Z$ws7^W(bvCR<-Bvo-U;;E6-!Wv0`XmK~zTP=^ zO+6-@e}%N)Y9; zpQhW(9^ZA)g#^t=@AcuuN5d`-WRjXwM#`<%W^f|4kXRUwnGKK~{KQMGYgZTU7w0Va zs4Fd;d%^9yQw>f{WGCQ$czzGEL#E2~3XANb({kM}49nl%s9{)cLBW(!qc-zum+1c}HRZMDmWa@EM<%_&z%0uT*xV(5 zNLkv027YG5!#Qt^4o2U-WFKX1JtsU+($AJ5H6T}>nX%IQ?66ANppMss>K6XV0rU2| zxa0)PtL!%UdE<)uFFrm~FD9+}yolPV84n+A#=<;BtS#wzuY%}{;8%JJQY9cQEQH*d@^V~>v++gn$OB;R@8?&AorVW`&Ar1yJg))Pv&_NJ zj#84@qFR@8nN~oYrwhtMxDi?QrcygKXnVYNlcbmOC&$)!8`~|7*W3#pg*Bvp^+gv}K>l_^Wo?zsiN* zpZ)&5-m1G=rJs?<>?L1A{dw;WUGEj;S}ud7VR%{SmQk{+c*Tvo{p{Hhm};VEqEvpI z;HV87UafE6@bT3xJ}k`)Y0K(q02W3ws-UpDjAk4BE~(LBc=!DUg%ASj z-@SU>U8=PaFWQEG;>hg(=!Vq><#J={mE8+J9tH)R)cZP@$Ece&~We2iGX=03>q}tyIzhD3EGC`7-#P0 zGLpEe85(Q0#+PpZ$m`2oJRI)I347YWluN}2+EhTc!3Eu&fjvqLE1P`2!HA-gy1(z> zp+M#Ag<6rSjlO^TrW9Mh51+1An(5(SG_lgfM5j%DM5ZY#jn5`KHoue>HpOSK7~DY^ zIDP8Wwl_yN>;mrYyYbuSSw|&?jWc&BIq!=VUMd%59dWdK$ZcQk=ii1CF9CIgn=bua z!_3oD+MkI$1v8x|)Q7(Qj9OSk^WeifQYXW&hIqDJcUY&+ljWwX1Ifp@msl)e$VBpmgA&R)VxrvtU&&7Sx zx9tzQM5{^6)VQ8|hu(sUQLARn6{}jQsjZ29z0vp`JBMy8c(o>>tSwk!E|{sBcZ3)DCKU&q#qF)>+MCD>9~Jdf96gh)iIaxZ3$b-N88`+)TCyvSyZ zBUotq0*kP>r1i%l&*`R@Z`=^~YBo26na*bn%k=2DNm1m0NZMX*f~jExhQpx9;8NZN z{~OGC=88w^6FQ<-!+@JWw_(MUxdN%7k&*qQ-4-I%Q!mr@9)8uab0ukRX@oI zFUW^D#6q(Zs{3@BkYxGV2Cd|T{yR6fT2b*fwB?Rs#L?V^3Eml`3!V zt*N}*T#_u&BI1P!E4x-o{HFhXf}&;{BTt0C;km$t0f+X<%Nmze2;RK|hV%ZTM<)YI zfvGO!d79`mI87}CG?%fF)Fx<01rNhcX+9hcTCr9(ub1zGn6=1uAgRaX?erIR}8hzRWQoWjqWXUb)c&3+ZD~X2LIoS0VSnRq0G7LBog98|l)cSFblf zbP{jDF$x9!DDtgn10Uwh#gs2mW0HTLgD0}2sWDlA*Ww=e{~3mISYv{yfl5PR-109@ z2Jc&u*&F^-x*O@G!K6T^0Lyeoj2Lm^`&eCF^yX%TF?xD;vJU(waQ1Kjb1LXXkE5*H z6CNWpyU58s)$?Lh=8;Py3ytqpPKN$GzWgWJU_f4jb>~|@HutxefR(p-Q}fhD$jsyD~?_fYSGcl@W2<2Gpa|L64K?L}?sa-j#fV+ZCo zG6Htu(&Xgl=f4Q9j2yX>U*x{6rgMv6D@$#`6G4{@z>`71r=R$?%nFzd4z!DaDA=a5 zo=&{N7W55cZ7&3fS=~bg(-hr%9*;P+^A~QD{)`#pz~6ay#)S+dWFNT4!GkM-Iq~Sc zL42Y8wA%Z#wdN^9Q`0-r?=Jd{<-D3oMJ5)Ybz1h_N^2;#E)GBL`&MCCvGd}80yVu4 zPedfJlgSfC0T3wX!#6Un97-`VhorHJbXYr4P^Az5qBipNNR%66cAm&oSmmbK5){`_ zGiQr}gt7BFrZ=-Tg54ZJrjUrY-`O7nq7DO7NTV=)!~AD3=zdRtDz97RZ=Y(WrKSD+ zv?d{k_ap;7Q`5;nRuF(XckFoCB_>VF_{nK(`qBp;&U}&itj5&28w}!#?hKWoG4c)E za+64;-+va}m8S*Nd>|ncL3%huqD6T}m?Q?5&0Olkd_&4^x^&rL0}S#fcabxek6&JS zNI~O@&de=$n_K>VI%9(SY40S|xm<7S7k8p@gFaXk%dWB%{w*Vgeptg`xjQ3rSxf8> z&bhen-i^4(yGFaUP6WMlPA)YrGPEx2#bqMO$ov|#t{#)~tadRtQ)$quRqFY>!}S0G z7~7h?Omc2B#P+JjFN#K4XjiBGa3A#SV#vGS*Y_?1({JDJIxe67E3$vYp>$^c-UEKm zhNAEMjL|XAA5@h4k&2|s=akmg_b6aq{5am6ho+g$>!dLLTc_X3w(@n<1&vC z6^^oe<8IFqlH<5pYffy~lc!A{MZTqqdWx53UOs#T7&4YxMj}Ssb|kSOP|xH|M?had7{b%TZ6|2=WZBZ{+n`%3!0+WD{etU zUoS6JvC!d}QNDi2+%4|8On)a#m=ITecD@})hi#CeN)^KEcVuyQe1CoIB7^#~udXB| zt$llZyCVKWyG>nHEVX$X@@U2ao~10)7ARc?dFiBJTrEcg~x;;qoCZ!IU8V)Nvx0Jshyo zdkEyB-ydE*hYX2M9=^SK!|22R4qTrxvY+47x9MJEYuGm_9m9FX*Ide2;bd=6e{aIS zr)rvZQ9}8DPpQgOP9RkcD!PrV@@1U41qz|8MPp0DyoX~6N-%YOhTD6AIemFxFh#-` zwa3m!%<^R8*!}|tbQ!Hl(r55AaOL?m8)vPw2x4GjW@aX4NQ@o*P@|9^x5?TwfSRiS z5w)GLEX#~Jcnqonx@9^yv4CFou}f%ZgBAHDPwtvUKDmGYJ_S?<2A$vlLP|AV|4yCh z`~0He8?F&|JHlky-fq3@PHENWzs)SWdv9p@@8u%D*KT^u)3_6)<8M;u1 z`6|NH_qNZ=&Al+g6asE8wdG5UCC*(kHZU-MXuPJ6Yqau!3e@VtvvI#PPF1>x+FJI% zaO|z|lFX22b)U_RIks#LOqsg7L{lbJ0G*>4ctF52W33-F!SjsP;axm=`z@k*$V2(Y zJ4uU6?8D%|}O578?BO}jh?^2^?hUPXlrvc6f&72v1!NSVwB&7+y_s6I7km0Bb5{f#hG|OF| zxCz!V=G~@{ z`Waqve&-m|rp?U`xj9xtY|cyQJlf2;Udf*51NCcP)_!AS>*!eAV2VpI5PMr_r#d7L z?YebS6Y4~kMYl@sIG-zvK3uxrDPrv4R}t^h);ZuD3ZJfu@~2Nf6Va^3!#jDH*JU&- zsKGVxAU^|I|7HF9dti0hiVkJds_cSawCQa-&$$NkR&>+2o8vIEXZqXVvU0>ldYNFc z0=s$^kD8E}vzgpd>&G9xLCyJnMV4hmH6Uz6VD;(7q$+Lw<64IY13;{$=Gut*ryHYl z5k*vm(>eJ5^JeIX+Ue_Wt`TDOp8r4-Zw%~=1QMda z@VO*b1Jf5*|K(L(?p1p>Wy|5Yv1Q{duENhq&Wf=!v6@^$I=`3|*SW`-cVyF{^n8c4 zlEN)7erD`hT=L>o*4?GDxEJhvv3AU$pDkRR2BoNRCI4IkL!N=EzZId_VSmG}rC z(RQ5wQ*g*>Fcj9XNbMD?eJhT>F710Iu{yJQq}Qu66Civ4^`t_kpL&-(bN=H^|9<^I zXo5mRPliudy{o#cTX{Y=rud-WpaDJw`JUz1VCFV#+$g@r!e!Oca@3T<*|EwH7{zO@GkJ12aS*UlO3x==+<}Zi$g&69pT77#=SVL&L&u{131TRyKPe zPOx){DDWXoSfk0kaXgIg=?#IXK!E$Ae{0cyQMPRHOToKqhYTHJ^E1E>Sef9@Ba)w2 z9U?P{nl@m_5~@HE7g6lv89ao(D>CLfAI{TTOlb>xab@TT+P;gyXP+2gu;>j!%#-pi zsWTp8>yKT#S`$1`K3PBi;k)l9N4hs;-td$j=p1H@8^|PT1(Cg|-oTe?Q?NHTe@H1r z4RPRJgql$_-Maer@@30tv^P?KouyH&xYJhHhd@udtT3~%_{{3T!2>784N3`a*qE-d z6AUx*CM=4iiZr#)!p8v{ZuyAk!0hBLv+XD)6IRM%sc`JS;^f1 zw{uB_W7U&&UXM!;KicnN99At8v?y^z+1%0vhs9`Zv-X?>Rtq#X32!0-(oO2mQ3Zr~~5x8!^NSb#jIb%OU291N1grla&$QjH}3-JgAZ5e#Ft+X%^}~_K%Y;KOx2t8dvuW6?WMX zbhx~hhqP+r73dKeKUPGObMD;S^AT+_Z|>a4e@jSSFdm_{=FssOqQ}UwR4W@oXvnG; z{lks~zdX_!p97q-CPqes5G*WpHaY7_n2)pWlQRvRQzHh^`ZsUxPV)%-`;28sP=bj( zP6!ogD|m^;4Aj$@rLkBL-N5xj(hIaxtDUh*xXCHpeZ0QK*I`F5*3a1cz1+2p36A0K zwE!C%i&BDeFY;y;k{FxDqnq`ZveLYYeMYN(fc2}q;J5kMTI1KBKeIi-?0HZYPQpG! zIbn9mTDaGJa4F4QN%IK#<63n5>jlaz&T0$2i7r)#PIG;Y(98BXNHL>gC$3{8$+g6! zc3uA$nj+iC7a=VD8Dl3++C68oyXXH;kXvCmVXx1VyK0Z4vEuK22{@REYi6aDE%%eONI-zQ>p`?k!Uu!bt>Qo;^V&TxRYw6Gr5$oYdvni{+iA>4v?O@4$Z+XQYdLSnTPj!@R?9(x0w z)5$vtEE|%11!e_7y>_d4>0^CvDqerQJ&!LTC828~7P}5&g>8`ZFd?rvgL~z))&0-h z`TeoJ$D0byW|?y^mz+v+{lH4{nPFWV2>(D~(swPG={Aqx>KBPAB1n}+?KLkx;qny- zH81&<5bb<^|4Y$+%yvbgN5SjytJmCmPaM(fU^Nchx5s22YS0{;6z#dM&ktxJ0lM$H z`sYVRAe~vj{+o2c!pKN52s=rgD>T@+m*rT>|2Kbd(c+gj(<^Q^)Yng3w7OMiMCT4( zOr0JRSlLUj`jC5gO=`As#IX-T?r!y;w$svL!>$ zUTMim&*V_1$>LC(3e7VL4;?Y~K&TG3cq!-ZI90*nTD8*bhwaUHC; z1Zl2`vGJesF{{hp{0AEjQS(K_;RH zv9?x%h?7i2*3Y<8RP>JMlh7ZvRUVVzeWp})&}l4kybb)wKO{R>5aDkWer?;Zi7Cx{ zBqIHtcCEjr@?SK4xz*omyN6QDwAe2Abnh!7rVxEE#eTbUJNw%{s{7|hE4;pkVBnX2 z>fAZQ!Q-EV;5~4%NbF%KpS_{iV0FU#079sRP`#|osH&(3*9r^}VbYbbi zyEap{Q!i~qp}~2vG%+!8=o|iCapw0Ua;s}zQ5)ojcgH+^3HddvcaodUI6S;`26S^Q zF?-8i1x@-lK+(4IQ}z9q`w*7t9Ft7@u7AeTJ^utu&aO8_o6mFk(;ul_fx zr*rhsVZ)v>SXs4U!!JCRS7d=_aa5%LY4GYbJ(s*$C=ZhJVGDLTL*IPFqgStx2}y}j z+n&5~F)f(oRJw(ONYWo94$F}?BFlQoK(&*wPIUd6#Z~A!-%Bmu6tuKRtxzd%$({kOG)33x||1qQ_nh1Wi&*^1t|l?IwmtSv&{j7 z%b>U1xL4d2;aPAM-Phr%k;kzq4;yU#z=v2z{=lp+4{9>ON2q=nk~se>2ete(>&0|Q z7*-}Me^DRq?Y|ISi#=}Asfr@z3yx01`(G7eyOC%;{lEaWuc7~I1R9$9Gsh*nL+QT= z@wxaP$0eo{nTQC4B>-leIeW3(sNu9^Xd_RY2z8c8i$L+WpnTmj7(Rt86BIL@+SRtE<*1GRoiQF=&D4=>NHdKOgu3y1 zeP$BFA)|V0sScp|U*11jkZt1p6lFn6X%~fym9qk&0F6rh8#ie}*!q*Q3iZedw1*s0 zS4*o(`aVt$E}rPFUTV!Pt4EHJU%h)B?5yWD$#3)K&9VE!_w2c;F|8vvC98)VI;318 zRFp+4lspDd$WiQT9km9BA)mCTmhAWR{sPk7zoAE7n)o4LNz zB=wo={1AIMZ-{5<@`rC3%~7L(j@Q3Q33lq-xjVnrYbE`Ri)pt(uh<>mOW}A>hEF`$ z{i%?9C9n<(e3@qWEqyP};+@;v{DL(mtui3#rs|5L7S=QlbR8k8I(4C#HIQ#SBdSt$ zrw<7kr7SBsjwyHC<|pV_fPrLCF686}a2Lr}xN3&@#Rr-mu=T8WW&-drVXU5m2s7Gb zRfH;{-YqHqd$M}L-mYdB|I+6E9=wRQr8`h4Zy>>p_8if{(j1blePI876>Z#N`NYgN zQI2Ap2qFSQ@vEDg+fw_7*A8!f`gAT(S5)+?iV8&HYT9Ooun%qSl!xCxI?a5->x}b) zr%~u5wY!PbR38Xl-1UbUTYJNCD@b6a?PI|;w;#Y0?YRdE059F%=O`&_C7~3Jj4pe4 zHLuNkaCpdZ<5r6w|3W@2xCh-ElaMYG=KC6SmIL?1n?A*oS4sy4YkrNhVV{5_^IM|{ z1kmnD@qr8U8GKynmRL6Q0U>@NBu`VyA#ghhSbU>x2QT+M8r4VFoVJdXikz62r^YT3 zXLC_m&~zI_+0kYuB3T9fh*w`eNQj28`JQRTse2IlSH(HJN^CuTU{H3w=&Jn&EeXJW3v8S`(xepslTb{rVV9hj>+2iA)!_ znbnuLOuS^3hK5DBE$#+=Mk4SVj#wAa)TS<))I>~9w#Dyb7KAm;LDzn_md}e{0}~=9 zoM0tZH0Fq|nGQSpf`zqTeF+ma!G{Wet0!apI3nA3?Ya(V?t8b?DIY zhDx(7nly9N*s;@)0_r;-lINb7|4-cwW684CB)vzaD@oOP${dchW*pU@`Vs!Pa^;qs zs?p^ZHS|mMrggF#H@$0YNZZ!1L#70>v-LLadLPAfDy;sNt@SQBVJI4CMi|e@#9wrn zwe?o>0U1qGN?Z7cQ@Z^yexV3n1EavNKp$0Dn4X%_v_KwP-gb8R!dRoK6g zwoJ0@;^U6frWhH`uAH`ArTU8l0P%eKwQH5jU(b3l@l{Ri-0S8k_o7YpE>7Cj@Ie!~ zhP7h`4+%0HIcCg!wQ4vqio8-S%OvL+_qU-tZPJ$+*6S^{sgKzaqay5H9^L(7+rb-; zU?OGCmKvf$5@`)-C#uV#GZ0lOKmw_xYKdX9#d|EwqMjmqK7ua=>HL5Q=XaP?BgZe@ zb_LF8awERy;-hWc!*DYiV)DqSApUgf@scxQnzpy+l zdqLsh%Wt9F-78u_c^#byZiW@Ee5s$)n>YQi39IZ*wwX^uw*mOm0ud*en(a3jZ#HY>Wec`DN>@1psfFJFpR*07xM zndYw*&nvFTM3K(*6LSXyEG|s_E#EEAF0EFPg0sfr*7AS-OGsBHjE+F2t^iL=E8{`F zm#HIVSp%Sv^72I2$ai47Tf>v<;^G89}?;vFFP1UpcSNH7%>>1@G_4`=K~mL&(v{IeY0%+1H+d?kJwNNF5d=kveaK|DHj7+pQmM{Sr9D-z zn%;L9&^Kpq>7yKII%nOGXxeD%#%z1-I(PqoN0;**oX5$kzIqw_fx#c`(MZv9-9zA4 z1nUa2R-dH*L3HU|k~x~%T?#l18x&&nP7gG#FLBzs&I4R0ViT4)`Lz0}ESL6~n%BvP zXO7gp9{HkH(Sb__0Y?b=Y2~oS3i_j)yI``Sr{GB>B*m2eR-DmNqL?;rpu&Y;K3hWb z*)Ut2Zy?74ked|>wg*oMoI+wb>8YP>oRtwX)4XK~3N?zsrXe{CL0_E@h;B;}gp zPEH75p_ZWX@y6I1>5Vzrq|t^0j`U<4Da*B`g#%k`6laUY&yxr(?RCS(&C>|V30Y>& zmzmrCJ^*4hT^%B69$0Z<-I^Et6YCS0%c(YRP6uN}un_N|18l(UkOnR7RTivWb$3I) z63|3c25s6QpRcphbTEksCOdRrTw4VQv-$VcK z+j3y&G1IwU^n7|mujPs({fh2sgmpY{_3TFDL3J9gU;9gU-#d+l>UPoVmfhn!)1QW4 z3kz+a@uuo=Vy?r%LA8D>x=~rNx@_^IGSAYx)^-Q1`js5@V{`y`nJ=?|`WkNSapGkX z{QRMXPxf$ux5WxEUf1o>bsAJ}qF72d5g1AAe3^?Tg243>=uGgZ#tFA(kG%!1; z>7l5os8hH6bvtw|aD6u4FmqONqK}XJsSy9OUM0;+EneL`SQkB>F+eL_RUuHa$ys-2 zUOkYZ=@mf({H-bm$C!26Yg>MLz5P(1LgyY0eTr)F5%+g1Iy+^Ee)rPn3XS~$?=IJm zT+VV-Uw|Tifzw>0r~`FA|NLZLo+Zs?*)nw)dmI}oV{?qRvH1z$7#|gW`M3C|y{+mf z6s?8;_Fq7d7=viv332#+S|vfK8B_m*{|P)oY}s-CeddL59_KLptCD(TBP4p*-~JXlP{QXpVc;iWMug!dS4VQcQmN1n?yTRip?+GQ-n~gk$52Y0huvTtMjySI`Bumpn&GH`^|AAs9n5ka zP;u{PTB@3+=w8B%q%*#ZxZy5BM>~2hT<3bmgrgNOZPZLdYPo-(ob@C9^?@=Zpl$R3QN#=%Rh zDY&>kh&!TGweouN#AfS?w5L3)L1jkX8VL@R{>=zq1;R0Btp2Jyk-|Wyk zt7SQA9WDP{k<$%Y&9}|4)XKDD$Btc^{vChOaK(My4l&_K0F<&U&CE8!ShIQziYXIp z_D%dH`Rs(IC_V9t>3|nKv_&4U&2Hd6`&%!b-o3<05Ghj%IED`rfpj?wk{|!|6{+u5 z3YQrA!%W08z?B(P$%&fL9o zhb22QE2CX-LidlhntTsM!>xEpSXR`FW7$$*D^*lLdT?H^O#q7)P%q zD1dsCfK{r3sCt{-3ZM6*&r)-4>33w>C7xrL6LKOg&57`OCD|hp(NYd>s>_xycLI)M zOod*W!T+0$5Ec|PBrBu#Be({WVZ)Y>_jsu1+YfmDc41)vhfsFrUj&U-gGdo8*tayR z2H}&Ur1(>fv$M-+_Jw>sJqB#eC~hpjR49ywhhGdh63*gDVE$aoflJ0A%j&hZoQiB= z-IOkOV@5Arn1sVdG%?;0|HpQDkV|LN7{(MPTzmyQSd;I+4@5p2=OMv^71gWhGnzg) zt=VgBWXq~Z0H?jkU)AhrbE54wz0F=Iymb+}f3iCoF0)q{j0)e@^%73h7D#XrG6G9)V4zRvz&AGU z;nw2?(Me`@^bf57cPeAnX=qZC6(5m}FGLK2`_mUL#EzeL@cUJ>xO0V*p6(r3sU+x! zKVIO+E|z2Q%DzcU`2a3>cEYTJ>p}Kyxo=JrxG(gVHE!9`B{%r+n_8jwTa36hu?dD~ zTlkXBJl%HowC}5eSnJ!?^!;dOJ!<;xw*i!bzOkg_oqG4SLi(BwCVRWIw2M-<7*Iqc ze)CMN8n)nY3l0INp4%-WUCORa6rV2&tQ-=TCK?*;lp_rdb6}*WVwx3mQ2jg=g;la< z)sNTcE2pQ4r)BSH<2uDEynn3Wz-*2mSE3d!PNP7XbR!0v{_xB)4f|2xHk+f152Dr# z1BVKw_+Es!%X6SQ|C}AM2?^$|uJN?^Ob^SGq*58UOvP{)EWi&J1r5#l-zV6L~8wSJFq zBFltqFP^@IgGosv4tdTAJ0x~BhPwvXVNKKS7Hi`4sZ%Hgwj*Ev*~_bX(W$#*IvnL> z^j?tx6sX-Ih3iJe9EI7)NqqfPXuE^B866q9!*qqRt?l@yC$bk9Hz>aIx(lYcltrDe zmse#og_!ifl+Blx^nNv13AdA$Vp@+g`p-Xq0b*H%Jfp3WWFRc(72rr2f|yPnJ1W7= zQ~)Dd2eFdS`;t2`sH{JXeKYL*WY(NAiw>-_{vBDR@=CnV+#IBHop*5bDenLI@Z1~A zgkRjJmWNJ1LN}5>tu7&BcP&Z3ba+RK!5l+>U4~EvJ!xTUE|=3p!#`?Ga51ROy(mj~sv^t%THc z5nP>*JyjR()Fq8Mp}|9JyY=PS)SFOqkUrA1%z1lqmVb9_nsY+uzI|=^K6&K!d%#BJ zOc*!oN_-fabGwLnSFT=lM#3mx0u{KH5;>s_XbxjLo!q+cw&9D;S1oVaqD3SFtw!yw zc?{mKSCRoqH?jILD834)xrc7K3%;r4v@_VMxIld}P(QK&0bB>DCm^7-FD#QJ^u_Js}p z1xk5+TwEN6_LwZ_8=FBVXo1Epc;Z{dty~__!Mq>>T`kWkusO zP)ytPMHB$hl;GP=V4Gkl9^a%OIY^coXm%SUr!{5<-9z3yvM=%)c$j{6$i*0777Osr zv@PkaJVx_eY*LmaBM38D(TQC&$n(pF4fAL%3}G$b(ySN3QCO+dqlXCxh~M75d-+yV zTwFSnl&}>@)J|Esru6!Fp(j^Yz4q@m>31M3Cr^n8AH8OKEKhsNgVEN}F(Z>EqU+I@ z+w4qj{!QY(Sl7=6xzhxnM@US746{pFV&`%t{sPog2)0loRGi2@vEX_ax#`j!TUj!p z+644k)Zj2DCz+_La-S1y`v@~$e9- zAmdrdWt*7e*6G@=@Wus{Xug4g_RE|<=N3Ah0o#kmhT+yNsOAp(`j(g*AHsu*MjkCC z{EX!0qW_BJWFwWiNM#g{nAY0X^7_&{05IoiEtA83enw{ISoB5b(JkvPd|YTVuB9x4 z;AsDdYZcbh?0U9{{I`A9T^7oq9bsq6`w?sEfAft6Lx*-`7&jVqR$}2tud{x$bh`dg zlU29vFle<$8d0N3qei>Q$C}gO*4II2fbI2b8kRl8hh(aYOB9%$4^|DmkFq9Eu7<(r zIb@1_E`d|RHx^lG6nBX>>s;75?d=gH2(yknSxzgsA?8*OZCWxG4be8O_Huk3VizbI zWmCP%UL{+~rDbprrN%v+icH|pA0>@n>i?hs2-;bv+iQAKJ7ByILu5fc1|OrPZqiL$xxpUF|j#%gnX3;ZJ_BYZK*TU3VtXU_ph|}lJMehqchBBkA z61j#$AI&rpwlf|RC1idsxBrvZ{qf|NnCv(f>vAYBaJ!szw1@5{DOXC@d={TH4MLJP%$oWx_TfA zoF!vt93!ffS-g?n#8d?jrz49FEZun6uwlU^w#kbUcnU?OrP1iO&hQcR5BtNGQf=)9 z$M9{Fq{=3p2EaPSs_FgWbf=h5PCpyYRxFT%kwo(67O-~~>|{Lv8vDglOJeR<`6aRx zI*&hMg`Z`l6u+GB#Z>kby1I8ffy$LC=ClUCHnR0FHK)xsn**l|e{xw|brY_0c(uK@xOy?V44bXTxyk(^b>_Sb>oR9wef3i*ypA>A+^Z?YZ;yY4_vbZG%!zfjO2ypa{ZTU%3sG8THhll6fT23M7Aj|&kpLH(2k`TeAlX8auZ$KlA zVdU1PF<;gEeZ%f#tUGZt`B8a4D|q#(B$!O=2LvGP7$VK8b?fvy4szCvImr^%BRl4X zW$tm`t9DqVvCP?@&CpxX)v^?*)_9ZXK?Tj>;@iLfLZ|8^8_{%PB5P>OZoxun3_a$$xS0@xIAn;bc~tUi0V9 zRR#6cI2rs>gUb%u=F{VJPu;8}wy0+am{5;@KY)KhqrPc!mT>QLxF6L;lWr~y|hq?3`iCx)ujyJ!^`p?SmuFj+RCyZQNTnt;4lZ`Wp!xEE0Gzw=YgGe-K-aGLLH=ML(sw> zaBZdt|B)&M74xPs@^BJXN~9LZi>c^6?6bxMi`e`Uf z+fMg8O+k^&HD`4wWxC{E&Yh7eg0N2>(|Ii8CP%5u0wf*xQSg(wc3<0iz~W0uA$^}b zf1VB0m;j9pvUTpkB2J*7RbTDhWa(Q;YTI4o+fDCru{pQ!9j)AmpA$(UBa$W{NN-n; zWte2A2(Uva@h)2}K49QsKXqy_QAjEb_M9pRG{DTUf%(w4`yRh2G0&e43Mf7*EX2Js z(oE$Tw~T{MvSj|&jM7K`2K>kxu)rqH!G}XMfktp;b@|Q;V#CwNkJoFtF?fw+Tf0Mt zZXPktFZ%~l|Chy1VTBuPhGck$m?%j7jBdBCd0ediA#^W7f(&4hjDYUXqo^#MF- z2Aw%Jd5Z+s`ik&LAb;%=y!oNo)q#r6rA_}E2rEyb!aLCRS>Z zD3^vZheo?&#|u2EGEjca^7Mc`WtP*bzZUzR#daJ|tjxB``&ScVx`&W*lI>;jZ$TSJ zNQHqxk1qjLWa^zK9398jypNeLE?Xvn$&Qp#Xf{HrCY;&tlB2u2K5tnb-J@{<`#d#S z2bXY;z*TG4_VOse2z=@rccj->uwcYxl=;C<-;oLLrO#2bb@S_{_3G3)MfuHKcliiZ zpuzOgZOOM(34$5sloH3y%x|a;)q-V}_GL&(E{|C%VzW`~)L>JE_f;ZC-CgGIPR+;P z;)j~cSzLzYNd(-B03I|wITpt&0>)Fw+Zs^9fZ>E1dux=7(DEJJ`sn2^#f0=je!B}F z5XcQ%SspJam{43??2p(EB*A`uCFKD7q-S%8k34dFEM7V?S>p6R%IwAx%O-DYW%h5`fN5B}%$PA_5BqK@_ zAj51#{L5CXXnw0jixzN=duisGPJTe3-OlIekR155>}x^n(n}kI@w{~QVAy14V$!DA z!Tt|EsUs5|Vv=9@E58ATpF4ZD5dyROlTL8Q+}ZJ!j`3NHI5p=NvDpQw=&iB#v+Nn#|cs=rd-SF;k{&_2%#sNc< z583_M?*GJ7)w_o}WDGGy_#BMNi;9b_9q}x9wyTVCSDP=9Qu$(=gajC%N_@pu`S|4U zK(uvM-oJM*6#7^ex6mn&BFr=GDRA>5dJAc^GxO`54g4lC7)kDsg2m5#DDr*;2TE|t z8QJy7%`Hc|WM%xCz!`0U70FSIvE(X9 zTvWI)3SF_s%xum+H&8M^6J#BtKF^JPQQnx%o3XWL`jp6h z`;1gl6#G6o+%ekK`KNK6I(2fnyg&G_y9LckxWByW+mju3R#pJ^tSRpt!yX{LBTnCT znRnD~_jo1ag8gD*9=X_mt!s?0ApXGsXW zNByVYG{r4b`|2^<^p1k)De@b)Y86eZ3I46hwDKbUcdnb8`Sj_b%i=g6Ll0tAJZkU1 ze|@}BR~oTfbYU`f4Dhs(a*V^V^9~I~_CaWECt^A0>!2nxgo*3Oj|Xg0hYKuR#t6DV zHPhtVZ-1;;uO9TvJ@RHhEjK(%|7vPs2%19e@{_W0$K-X!izR_HFM9aUu6=p3sr{-e z4zp&(NMS(JR+__i9{{NPdOvUqU10!tH}&Ouzm^8W9ImB)jG&L5I*rQ8sJs8j-J0yb z<_qbGegDJDal_$9_6usD&bkIxCB4tOYLj&(O~WI70*dcHP@^{i%$^%XCeW<^qWEP! zB6gzq9mLn)sO7$BkxlRB*^Si!=5e=02&HtFyjdt%jVg$4TZYA+`OBJ(nmwAOfpn_| zmnk2*L!<~8wMpj!8%>UQ_@f98HDPNyua~>{?v+$P=u~pFRIICh*$}d> zBjcZ?P~*bASBx2IcqTbH`O(WGtIln;HW}InXgh-SBkv=86g0+xwDPFpMV+n`T-93@ z^Ns&$NrlXZ*Rsj)38x9RvRjM`CDahv_8^Wn<5V*pGUQ+6h&nqa`$6cBVdxW<**+vc z4#lpsf2hgv!jtlL@9#>LJ{Ki#tq|H&n)9p5)$s}`biBQzCs?Im96c-Za#a=O|cdyCEzmPfx%wGWJ zIUWPbFdp^1fHi`Ag^b?1r(ntJ4DR@#qe+3f^_FUup+r`YR~KnYUaJ9FVlg-_aBHpvhEo`+-|l7@{`O5{urd?>jg)g zME(OauZ4R7b~;@@auD4X?owY|zH((`k6AWdl;jFI=gvINr^p2HGz5FjBL~;IHp9CW zZ_IB?um_SK6we=@R{d>A!yU@;fRNf|!0QJ+FJHREeC|mC4dO5qM9-5YT2~8zuri)( zN0492foPMpT;oP9SdUXv7Ncw)sZ?ITx9&OcSSU~?S!^Ec&8*keyZlRM4Snr!=~;OG z#eI7hIBB7Kc;*BBK&Nk4HuQ(kE1J>$OIgQ476)COb{3wvOcHKX^TZ#mcurj1} zm#jay2l**j*mzeP#YE$>ocJS0PM>CNZ>lvpK4$a67DdBDK@}`0L~$BI}o+wIk>Wghu~T|_UdK9qC9$QXC;Y$1schC zCRZvY{H)2N9B8i;!i-?^BWEczjT3VA(NArY_Z-tjr3#d@lif7C2eaHtm8R}obASU-yp6bu zzps-sF0BUW3HG z9l9#1a#UK*&dzbp%exQ$I7c1iBEd)$2^3SLxFRB=zeBz4_OR_XTkhyNXZg*&bv}d!N|K;&6qW7LeX|%&`4f|giTbJue2ROQ~@S#$b2EeEb@LWGN>wpS>zz}PgV7LY8qkSm!OHv{M<;8(aU z`BPrruUGvq;E==Ig-63V?L&wVT(c6Ow&%h5!U%lw{q6R}#hFqykjn@lDHEND3j5he zMxDYhew{3#XJb^9i{DKShfc{aPX4^ktoL~1+GVHB5~i1eA?}5<2&b46l>}BffzY8( z*Czby{$#I+d1Gs`CB4D5Y_jVQp0tq^)28?LiiN$61L{M8-YVBnlp9p-P#@?4_x}lf zk%(hI4#?dP^pa{rn?nF4=0!5`NFKJ7z=UQZ#nzy0E6$xceVVR_j@X-yP~q4Tz}F{l z-qOUsGe}ID+`xCQ>?UkafkMrZ7nJR)ezl7R?>wTP;kglt)MEhy`05&Pp*#Ayn?Sg1 zTDNZ9oHxK!swo%pwPYWur0V??(YkzT%jVGkjGJJ5>=SvCg}Xm0U=^iby?xs1YZ}xU zvXdyh@m=zqK_2|_88YjHd3VQ9Eq2h=&DNq29fP55_W?8CA|&+L!}0@d8wy}V66uPY zs_*NOqBPV}VtO0-P;#gDuPseM0R$@`XD*?-;P5mC!j}{vd$q&>TNIsguc_Jah@3FC z-;;k4E7dWs{M^B~zr&7%eYyE)zE`Ja5g(rzAAjuZJhg=B9GA->kCM)sGeH$Z85a8g zNyR7PB~|wSrQ>`5t=Ho?L^?R%G1a@){mXHCNjBnay83^iDBmOBdD|v1@3w3S zg)E%v;NZmO_Gj`3;DO;yXe?csFi1uW`YN=p2r_($xoDIEB$AOe=8@6;q;$$pilzDy zA0{MXX__7w*odf*7%klJwXOobzk3x{BV+EAd_3cw79a~(G%Y37$VDKx&f6O)ve!bF zk8HjNEX~whA%F{r6Pgj zQj$MaJWAyHyA~wAw!L8GR*Hk!1O$L0%5*q*!Az~++3pkkz2g2c3e=1xf6!VPD0|x5 zTM^gQSD6J@6hHNhhUm-yo_a0`JA3u2txCHxV9$W<|5eHr*YJm#c3z%fZ2zF+^7lNI znKd(UAlp;07A+cMArY%)X)b+*B48h8CdRtK1l8=>; zRC5f7;GyW|%{E~-%kqLLI~>8wAro|)(wkt6b`*SAmj-5*P2Q*h3+5iKq)TKyePDaY znMLZ09M%#rx(tPBsf)$ zno;D5|D1>v7B5~bks9@zBO3XNs|8gd@U-F7MW7Dd(+Xx*x=jM9<$G^jy?V9uF9J#p zW$RixIfVlPhtXM^4CjcpEh_Jbw&~@naR^8dH0F{6BMH~$WTF0Yq~i){+oJx{J`yG* z{m}0tt=2~p7KzaxUJFm6BQ=7(^v3{QwAllzUuEJ78^`Ib$Zk5=^c7VEr@CA;@DKm0 zOHJN6@{*N7t$yR6E!v*iQ)k?nXJutMoMRieZHu6$Z=Q~P*p(rKWhgNDIgPXD$MICP z9O>Y%xb|pCd*%MvSYuqwXwSs6{zp)u^fm_t8xk0I{(K7v1TjR*Lk6u&7r1O`IH?>6 zDxqs_wKBsoamoXldXBejvvff?$+>vbCB zQR4aaI+(#2&{Z!R~&0y6(Gb9$=4C;Tf_VO z>&HLtuGwjBveUXHv3n3!3m-?DQV9$etwCF2U(RrUtN9Tz1smZ$e56 zP6ig!3So|RmtOb?a0#AI#)F-o$ZV8ZD5uJR>+aJyPdz`(@7YGD170$J4W*|b2=_<< zQBvfQ2)LrNvmXr@qa}iOzjN16uS+e{uDjmlZQ+M5mY8fnLHsL87e1A{F6$vaki~?F zM%bKB@tqI%G20LKl#WQiU;=nKKvh zZVIOMaw2`8KQNcC9mTEb0IsRpxMPRQ;xSC=J7uqg1~cJUbYnt+UDE7dRR5-yiP-Li z5ITW=U0G6KKq@Uj!ea|PsR>DhH*#dwM_4gS%I~1*E zP!*Urljcv2I;2k_^dV>|g@MGwRuD+vmmh-=#SXC|Z+t7G$wPu1zA=!LpC8z`b!%9y z+I2hd%s38UslzIMZHpVj>0`$Rs~Q6w(LHT(q+&F=r zULjrS{s=bz9$IBnsLUMw=;hqD1&i#o=kk=5`m6J7m>3n^}mYPG|lP}4?UyQvBP|urkDUg z0yvR#LLVD*V9>T$hH&$;H$!;(gphoOH~`C(YH*SCxo{guJ0jy157Da!67lTd4uin(!dM$-{^<{2gy3A6lu5Yt zOUt?K*8RBo^WP3miZqD%2t>=zWY$p-REPDar)u_kz6p@jUg8d&)W712B&0z$k#E%A zx`jW*0ably8cQAg$A1xp96EF;95|Gf3Q?9E;f{>v@AV}b5Igfjt_yJ8B(xy++o*Z zRre2qu9_|J_J6%!4~6@)NpK351Cg;Dk{SaMI*``))1qv6yV3e(i>`DS4Hn93l9A1qH4jIjajSyvTRm{X<>~Mv?xslH? zlS6%n8oR5q-B2Uv)e!j9T#}L@C@A@({Z4#rch2!-WgWTIUs5ch4W=MtP&Y0r^0VY! zc4J8^ceeH7$G-(_du?xYp&}yAtL|4CI^B+TL465XuhJ4T1x=YMidM3iMsg97F?c)_ z&=pUMF;XR9EFB#gsU!W3GG*(+bzPS$X4uDOvx@Zai6#R@aeT-oW~h6Uhhrgks9l0k zzQz3-x4caXRb}Xt?H_LJ>=@gR;#D;GwN;IZqUN6@?ZuIIut-_t@j{ym4=HG(5UT3e zea$-4=VUS|-~#FJSOIUKN{+ZZ_!LID?T_#T_Ga?p86B*ez3*$=dM(pv_6s^=+pTjp z{o7t8?JSzl$(0;gDpJSwnsI5O#>M?pN0Ek|dYM!sf7uQkGJbRWoeO`Z*3oaedhJ^J z-fpQMKSmQxq9@TQ$=TIot@*TBfGu(eOKTG}F{S3KS6eeo&AC+&dn|=6E&I$JLMLOp zC(<%%mhk(ZAKk2hoJPA}>Uh^n;~?q$NnoEx+auyM9YVLdTTg1vvXW`CIK4mM_yHPp ziOg;VcU(9CQZqY3AcC07SFd&g)lNkQ5ecmIb5l!a}K!J+CQMVnt@8KaWxu2AZl_Bdb2OR1|@`O;OUKf_fC7*xuSYr z4S*nP2x0AgVTTa0jbC`9PBOMWq%h%Gp6$l&)WN956Xc+R{vlTswIE2L9CXrBqzm~- ziE&bMLe2X9`<@_oyP$2$oT$B{Xv6a)3H45Ed0^wmSX#j^TL=ODkJfKN!*G z%Qo?Io9TwETHY@${@1hX<{FInS+CuQpylVA`EOcUIDKsJ#tt{PEc&jy))!Y+_UgYQ zd&ZeryM}$=*c_K0J>T^!Z&IM8k6;2|_ zf83_^;u=w}`U(`@>0?n9OJ|ypf1)6jpd!9G_pB7HdZJk%H1;r1hqOVeFlqe0_wB;x z7_~5;yb~_x$Dbs-l1m^l7|IPcpF8(y|AN-~cZK%7ld-h*aL5x&s3;IkvnU%qrHO+> z2rF3jIXxb!h5s6444EQi?2UD01J{0niq%{p{~MqsVjyaS=ef4C9I2wUO+(gP*iiHL zv)5hLY^mrVDolxdWTS^>-}oKEqKt0YVj}2fEt-6e7yfIZ3X7H!CW0A*K)H3Hd}M0X zeSFV;JN5pPKK(_~0^D38z>Fy!LMcf_(DUJAFL-M-^pQ}m(nVM+`aS6mJhb3Zm(?fs zjP%oXL}6XG{c+#pbhm+*nt+<)+z?I8+6gd|KT**@eBsHbANl@wNz*7%LO?*!B^si> zG?;sP<@?WWc)1y0Sz1vK9zI-xE;>sZZ*Ur^WMr3Ut#l`*Dgb$#wQMwY3kQ=Uq7mVk zw2JYFGJ&CNFy?K#_WtwU{vtKG94`we>Hz6;zD>XsdJBR2FiB&0rS>0G+oqo`yf!RS zD5j%w;U8Udc0wfss^8o`ZqWDN?) zdU|u$S*|VQr<1zQSo1L?_USto-Y|-tJXE%&NCo9aiM@TxFL^gnq>(0y4ADTn(DU^V z46E60pT0-U?;bzimyjUki5zeM1A?&%JVIDov$n3HTojMej)#=|3`gO;-tuF!3ofzb z{^^x^j26S|7jW2*Mz(a19-UkgS)a9^E6QmXC~-xR-k|k>{CgeLZ#7{ni@*MwZ+;uT z?$i_$RwhVrl)b|HNqw)#_Ov8-=rH2VmcPIL*@?nsk$Z%qMz7$pne83ZGVteGsr@e; z_4F{0v@&M<4ifCu0GL>387<}Ue3#!)s2QdcHSK2cvT&Q3-}OEW+0V$+uDWmwwR zHn4W#6Pdsg__IQx1p%Y^4_BFLAI`uO;aU;71+)Ar=>ZllmO=6tE+`5QJfJw;<@sVO zpuyCd>sZo>~|2qVd)C*_9o;`yw?0fxGC&z88W)5w6Y*q6{(CAUy?Iu+a8GI zLjtlf38dy+o8)_^ki} zTx^qV1A$feuy%2mBM~xV*EWW9))F}c|LMw6yV+^iieG3GI_nUpC6B-VqUYUuHBQa)g86r#D1Ilo*z~Yhqa{^n*xA*eRkSg>8{Wn_8Dz98t#1u?c@LyyNkG>^WCnFrThz^OSB?O7-?WdI6OG&0EU0w5kl5HT$M zpDt~zf(jI`f$8L>!uJaNtX}V5DI(=92^9>i9*vxGSh{-W)>~CKeqjKh8&W+N*RPc( z^b=?~BGMDtIJuSN6f{DEFN{fa(S1`DJJkxfaN4La(S6YeL?hP>Gon{B&xiIK>C9GWh0=TXk=1^>8* zo@+DpO+qQTqokaY9&#Gm+}%Zcfg}kyK*_A{|2(BtRNTWDe~B zQ5n->HiMWW91v`oh$z*hpl#yNAV*eaW=fH}^wnyKnjc6(3Pk?RtWM8%+}?t?R-y+8 z+dZ;gAz`T|5&uq%0`6HWChzwsS%iv!n(%`>5)BdxyWB%Glh`1%64hJmJRx#*b2tjD$t1K421J<(7m#O{T^dsdd^Rd9RD=z)0~yubcM@&P;x-Jahw zHjlC~f7^Vj(Pdl*8crrBfEr!|(8HlQn65by7J^F(RS6#Kw|%>gdadYbtPVbzBppi- zV@Q>;1&gG`ES$@b7B)&-zir!Wr?@CzZ|s#`CM%AO;!ItKc-ox3N8@RCiuSWM&loSS zRKbV~oQBLoNk88PE&6D(Y!XS+l`0B}*m?Eu)_4A=@7^kiQ~LCbUJ)En0=V+KHETaF z{1RnSd$NCmk7muWCEq;XlB9p=c>QhF)CXEhoSg*wA$!PqdE%VpZW}&gAwT)n-u0s9 z7M+$NDVrlenm)iHyBU1v-To~7NYYh>S4gwB-`3ulwS68DKwBlXYsVf1RBV$I)V@UI z3w}v?Jg=E0GisnZZMuR46QEs@)vD)mMc0!d$ok_JwC@A5wrUOVjE+)(O}CjW{YBN4 z?S4O(UpMX~kV$e9^O1YekgHg`=6=1eI3vZPiQq z%tt{i4Tl1J@DPgOKP9IWe|yv?X*QNGXGBl14V@hwboZYQ`o{sH+7izhgn7Hga{`{W zJ5MJ4tb`%9Ul{5)X(r-g#p*=h6g)BX4b)BRn#(yfri(GDDu`CSu#<0Er%UTpJ0%tg zcCiizG*%CVs?+Z;ZLO+Ry7Q8+-&k=|4o3MH^PIE>SHCGewtkIXfm-&7I_gM6 zgE9*dbrAJ?1gUP?qK z)K*Ez;^X{921^ko@+X9>qU>0;eO{pF%=W`~<9THJs4JzI+9(6o)7E*sSEbwAij!?= zLDGV{`zIyQH!hc`JvPg$`JM4Gv!nO@10G00ejbz*t~%T#cqG8g1$Az%rC9eH0a}nY z27reXSf|EX!CLGQ=A1kTrRbora%sHc{CQ*#bql<_PY&e9EQKrqu|(?*`KBM$08|UD zg-~nw^E5tqr?4@GJ;(y371pB(PV)vAj_oBm~3lmEPke;yV>vs zuDhp)bUP$zQ4{``Q1%YyQYoT97Ji4KevU({4ss-~36(Uv@W zl$)_9^U0~&Dv=nuZg5AUNb^>we*NBrcu0IhNUHtBAHs`pKGN^uFwW)SyHVjg0na2x zK6~~IhO@xXnb5bFbBr`l=rBTvua*d$(1(h)A8pe}zqgId^6Wl&75>t5>*xxGyGd!z z*}@9-#82CZfwews>lQYOL*z!)5&^U=g z3jZcpDGw5r!->+aq=O(jS$ti9pr2$xoH;X!PTmj_!PyOW2{7WF-l)O!C+CIjB1TBJ zh;*8;{_@yjdOQ!M32*WBn3uC@9M2`>hry7kWlw_IBmXEXzL;L<`pG@|=r@VEm}<&8 zl7b9@v~;^OD+Y`u_2-*hmmI~EK~eL>41%6i$)RXkypKjltuK0B9EiFqjD$;irO^UP z2NIB;Apn1eEbkZVrqO3Qo;2-JQ%;Twl+07@?MJFqWa-( z0cdI|<%lms5Oq;CVxQwf3F@L0p`MXMLaU>JLB;j{YP4Wo z+h*r)?(Pm0$o7=eoU{qO%?7rEc<5nG#KGOP<&)hxbP_gbX<)`u&g0{7+nf~!YW5D- z`{XXEf0NWX!6_$;O(5l^a7?7_a#DX`Mcb-YG0K++>Dz>mBw&q6sj7(33Zn#sP~N0= zWfZ3^`4+s(NI{N}!isod+fL(`mDAb8xjngwF>v9^EP6gxMg6gMt@;q9M~^dVxXKkK zxTK60C1n=FE1rXIohI)ROC2isRS(UNE_PSS7#-1$32j6872lC1G_05m>?B`dY&+9G z%UUPa+NgRDt&M6?ThS_#I)trnJy5S?o&A4)aru*l8<|jMh?y4s!nw>S5`(8RQ+hOI zHw``wnbD_DAN?cfbf(gycg5fw1~*Lm3m{)1$}`6{F9lD$iOJ(%R^F*N+JIsn!-%x9ap;QFT^VP1+iM^Uo63(DCI^%RyIIe6Q(BKqkJYU!7nyVqYKtlW0Dz=b0gGjH)9&AlRhFur347~{GSPn8Klr+y9)Xi<90 z8pM`ADwwr{F-j3y9Vu)ER=o`5yUtuV%uytBDm;oNN~H==V2&7&4%~5(2iQqHwvHC( zGCDM*iU{NLR9YS$uit&A6J|z6MiX7X=(h;$lQa?Yhv_XxnGh#^*3?mqjU;v}RsREu z+-aHT&uiXPp9(%T8vsU*G)`wh+r}?>RaCD@!_>jik3B{xIjcoHD~4&(n?^C^hD=VZ zqwuc@AxZ~vk*7$WMAe7E+Ab!)%C=O|FGk#P9l_GuOum5akH^KH(V5TEA31t$7YQhs z6HR#*LD87L&=T*y;R-gH9dvXek9$0)?}RjFR@Hi0Wc@CHID4lL<|{f5_)1at=Id^s zti5-?@lL-cA}5KtVx`1{EI|vJxBN17a3Mk)>B1d3a+QcKo9Q`;?-p}xHvt#{d?s{f zip$_K1_s#zz{oe#3Zrh2D1h6y9!H{5^gw2Z=ey9vrro~%aFrQU1gGZ1P1Ew%639fn zEszE0!5)4a4&@;(qp?>|Rd;IFZWt@g58{VJLl6<17N?_BUGVa``U`d(U1!*m=ij!n zZs)56yQ%;6*SfG60iV}!WIdjLU-$39`}~2#kE|7~mxRJrkzk=BHN?_eoXq$jEhWge zm<@=iR%T!4X;gXLhN*QXAv^J+%NwuL!F>i-qzq`Rl2QRR3E#(X?b@|cB4d&hP3CXy zJeD;NLfR4XiWl89=LySZyMJBQX4>7mcbyrAA&Z8Ez#>KU<1PZPZ0}mNg&iY?OotBR zHg1ZFdf0!-Uy4>uQrq?dT?3BO?;ZdM$US))2FRGt`KUbqtz>%?9`brk)qc!nRi)c0TH-7mcB{fH$j zWjP6d9)bc9zJOkfmxXkUHKrYs!sz6Q6GKVbEI<#XoRI8Rl0`0B`qlV&NojNI?q8NM zVbC6a7NYBE0g5Ttk{QLTiwzQkSuoLYyzY1J=On#NgYg2u7UxmC%agMpB}QBsF6ccG6SOT``bYs>^JCI$xVpzDdo&qWeXgO=$eQ(=yFAY8 z;{&()m%IOT;I3Oo_>jIl@c%I|8+M~Y-DFCWiBuHQ4I~{^s&Mm@!$e&SFx1m66KFOW9o^6#C=kV& z6GFxp{gn<4960J8K7Ln*vH<85le7rPLZ{L^kA}}19e^BTH66dFshF8cYakCxzlIz? z@2#-_&_(fh_U>Ap-#ye%{`>g$?74HZ$oFS0OlCs~BH^~(*Ef(M5x)>K!zZL1<#h2n z1+w(vJE2&jn6ND;rR%sqhPXj$h-mYF${Eab{vXQT1g`2j`{SmXv6)JnrkrxGyl&u< zC?FtEIi}Zr14IN&K@>z31VYxv%o)q=Dk>;YZpf|}AhMR@0t&bR0s@vSDw~4r+w(qG zoADnu&-3t_DJtRqmhbnR&-r{l=X~eGMAHz$HZhP6WZ?v^c27ZW7X|G4M2$NiGpv%- zvE!){7N=vNvEZ`wL_j0fttrW-X=EBlpd=k#-jW4$`+=b~f!V920}}pBR+S)PR0hI+ z(#$R*ix@gz4Z>2f5aC26@-d_7re14&an#bth^ED|>`6OyiSrlHrz~o^rW`%hRPcU&Za1Vk~3sRL~4AUQ8p~@uP2{Ryy4{UpXPBL)% zN5_<-KaO~`0a&hWpe~)48g}i+q$@~wQ z(;>5Ld8DO{lV%;If>j+OFZ2)8JCr>l-<)kMw*lX~FDNKNx;cf1XIks*D80ZrFyyx= z1auf!hBnVsD2v44x791{?nX67yZge*q_Ap2;t5Eflj{oOzV;h9hx!HwkqpM*(8^DN z^Je(He7oE1VF6^)q%JxnSEb&y~q_(4gHyt_B9B*M!I1OigW zil z_ISM;yb(4z!B3`q&YCxGy!)_SM@5$8EY z$`fKX05UFMxM))m_sCSJ<4lf_F~4FE(Mi0OzThe1bj(f}!J zGTaH$;n^isLi13j>}A%UL|`4q{5$TIGZqre33XpQ{-w#^M!XJwZBjF4^cA0UZhIl6Xbqr?H)bfWH&u)?XeJT`qTPLq9`Mbsdc=dt{p zEd~u77;){|wL>93TDW&^2@MC~dy*ywnHh^8%*)*CDGNK*VcmMGm*2a0Cf9hcf^p8G zMzZ4fvVDgO6t?@9BehPX*z|=+foGc?#aT*$%uycBBM=V&@ka(~;JOJQ(9;;P(oxhw z`V1a!dDD2eVw^?X-vtlx^8x_rhmZ<_OqT~AN;k2&tq;+bTsH=KR#avBI+n07beNei zf>9HCdIifIQ3N~BZSWqIl=%Cq>6!mXqfJ{~x9Ys;xyrxWHIOLR)m86Tz_?N!s8+hH zv__4(gs(#V_2wIW*KD*w6nPgNt$Q;JhUyq3CYSP%ACO!!_HVQQm2D>7gan=|lwMTv zXJUGein_0QhZ|vjnXnjam3-Xh3MEADg?#Yb47C6J$0#K4D`7LkqNJe((?0&Bb*9)WTvlD^8QoFG{1mEH1jEle|lTb|25<2LzxjS z$d_x3pkE3AybovIo#Al9A3cQ`Q*U88+LjM>W6G{3n#yt%)dW_Bx+P#`JTP5~GfC2P zr7jy3wx7Ty) zOzmjIGB-qOY@TNF&q0RSwfF8Vw&lUBQr_S>N4rXsr^58)g70s){|_0}e@0;_&9_b^ z=S;!GqDWCA?%4U&tLp#=GGYbf{e)^soZQ^S;w^pps<{h#Y3~2?_-eI2SLd*c%3#gi zj4vCWJlThgk+pwZq;zSq%WtxqJZ*B*%#FLAET*4h;1D&ZHPivw;i>#OfYR~66dM)n zhd7XgHUz6RQO&PqI=b}im(uzrEmiqNbkE6^66okmzBji8ym0nG6WE~tp)(|YJ8LD5 ziV3;}4E3Pf#)5@J;Xf|HnGsRqO%UxiwO)~kc01wmPu{w^J+($wt)JyIxo&-}YUqAF zujk+T^WWE*ao-dmGCElfzJV5%^5OdF4WZKgN!zc?r^vs=CZ8`Igwo7JyR2X}YB5do zn8Tl}txw02BN{m}vFT|?ID$OhleqU&8?v;dRL2tDccz5_AN35nPJOc7w* z=GMh{YNeWg#y=B}Pvz6@JPkQk!U@IEKP~GXJQI9_*>$JsGkrL&h5myG#aalQ>6Ncv z+G;;D&ewp<@viuqFY zD|`NVJp2C96wW5kV*pPWdini4bDKPpp~unTKO2iW3Jw;PI$)fo8HimR2TxdPGZ54S z+R{&cjA|NEbuGX}&3ZKZP=t2Qz~+99%zqqK*#VYZNO@`kIX+2*U1z_JLzn}^X#-wC z0M5OCTQ0{xSxl-w{JuiF_lckLYD^STPorKg#K^rq$(aB?LM$9|=!1~^P~}uV7JwVG zrAu#*YgvQjr*?ACF@nK#F-|NwB1pN24x{LJE@;0(ygVcU8RsJdnV6p;%pToxnyT3< zcsj)cwz)@u7yd04HV0fbKz*H1ACtmMiPquv_dY56>}-M7VXdg&$#5E9EZ@g-6t_Jg zQs%M&vgeQpCK>##Zi|dSLZA`qN)E1|LY*(C_aQ(M@J7)tB%}#&l4Ke{C$h*y7kEH9+{42Gk{~3@JxBnN3q{U zl9OeYHU!p_9K-s3nuh>+%!uwkaG)l}0gM6c`&Ecl<`|*k6R0eNi2(q~@f%#>Y~m0+ zU9C*v!z>AapGJ2@VoW$fjY2$KK**$fci{fan4CgrQy;AZf+3ff)59IDgPg4rXF-1! zzK72=s~4<#^=iAc6@7sbZn%`>IGO@$uep$&dItH!>)BN@qKR{hBonaQ!CNzl3S&-} z+G>|HG|hnVVGM^k0MM2uc5=xYrvJcLF4}WWPO@M>Q*{JW^NyN7KljjTX9g+Ih@}u) z{<+WdxuHl5J`z;oP5!Bn+5a+4Pk^`hF=T!MJV+BAgF;K{rTQt6zxIftP7@nAX*vjR z?CA-YhxwqI5b*clkI^)ZI3`VE(A29=pJV-q!F&-H_ylWJ=7kFtUwdu#^pu01RL9VU zpTy+uud8e8d>q*GIQL?9cZxicjJ-RhfC7>edcqxEdHH4O>^AD@Y@{YjOuPOz&N@y3 zvr*w8I#Han0M=I;*r+V<O0NwUna`i)MwONQYEV!dFB2gqPo;54Wss6$J`%7(8=z0}bFUwb81r3W4^kF%W zUt}O41$XFov^nnpCr;Yldryr=pTIwCC)A5HPMDsKSLMZys}w=_lkL)Sqp zo6u@$k~&GjCzkQ`XRCMxjK7T#%M`4wd@So2v#HNbH$eF<*`i|F6B{E1Hp=%{TyS0K zJuN-kZ;hu}+;nfDth$X#??Em{X6#e&q&<^iieWv-@UZw-g__J zhZ`h~n!Mu?B=)QT_Rl{N8_)ZR&2ES;qon8p+3 zoUrBm+ejKAF{=po0EHw5OdZDiji76q!%XEA5X%05mDQ38rQT-JF*Sl{NgSOahcJ*F z*HXXb>xgd#Ji_Hk&qK0rzeLyO65~)+NLy3Ej=Iy2PWc$g+RkW_sy^cjp&}W!xjn_= zt^ZmOGHhS`{F$UMPaY->pG>!2B#aJ~+_yWQ%(US4#E;CiuVue&u1l&y9(`YWw1`eJ z{zXnwOQ)AvujJA?T}Ntll{i=|4&~0e0T(Xmo~sr$UDBGkD*<&fC0C{1*j*5QBb02r zw6GSe0Gv1Zxl*WxZa&cIT;0!j)&nY|CPvJ zAblGc(dD>Hkv#uZ%`=?rm_JtX2dpQK(D?j1ddX+js;!U=%lBx}sJmN}>|;E_$WE5ZU>jFCrs$6qCZ3=wqfBER%HcEpEYR1bPd$e1=X9)NlHh`w#Zw|51$nZEp zL=F7t^G|&_LaplHs+~$=33jLDg{RZr9s0%HFBO@bC9%{cotHJpIb{!vEx@5)Rs_v&feL0pUw5dc>&L2Y zIsWbjY`I||n562MWQk9vl~q>*_bS#R`3@Iqn73P6pt$`oF?6C7#LL-cV)a%MbZw?FJlibS|ysZinGDj1w6*NRSunS1%pY! zmBy2o3$-i{RW;7dr6tP0VeQAS5BeS>Yy7eTC?%ArRYqaIMTo7wq(l!4VAS zypsboeVvP2<#dV*JvGlQvBcdHj`slTzKU~`ubeovep$q7+5?m-Wd7*u7GUnnRNRwb zdumQ!8furnFYn0@-+i|tz9VK$T)P_p(}SNqKr)C~m=@ra)>dh^Q;z~P)33g(8uIn@ zMVb2lA;fZ^j-#1-u~VYXGFdoFBF)?*k8D32997&nraq8D;!$?QlIO;^Jc}#-ee<}k zLllj=gwm|_$+i1Ay)is)xYH@25EN~M(nYM-I%#u0o}b2O7X8{EZZ2ZvxM6+DB*U6h z=N)oK#}2427_uSbC8df2J0^Ra>1B?%aryUKGi<3O#qkI;wHwD%g**e+z~dd&SCYeM z4<4($0YB-Ma~ncWkvZ*6qaQwN;y-_;TfFYfV7FTftG%1g8OsFz{E!#83L;OJxEEK@ zWvIjpaD!iQhoN@?L)LELfVOWGnGlYPzju?NNjsDO29H+O!bqY5965GUr|e zmE6*!sdA#^3GyA>U?$BC7T+)L?^bAcV1$xk_bTw^IQWN+ban)bQpt86;Rdxl!L`eT zJ^<}Yy!S$d5+0~P|K3|OI5&2{)Gszr^S172!eBIC)+<&yH)AiWP?^=~IKQ{Z>hFB& z!HGkw0eKIge)}0cxwhP=DNpX>CaQ(PMrR=Cd2M(bAzfzr;09b~*BNytCyQ>I!>ql^ zl*Sy(+5tFc{8YA-#K$Wc_P9q3dQ?=lQ53_d0rMH=wvV7S1()~o+HOksYz~S}EDCC1 zkmM+(3;nw>oQGZ@V{ z!q5AebUxy_p1o7VXwwPQ&sZEyUGgpLqZgK0m`V=FHVA z*$0_<0(NG=lnpD~i`ItCIix#|f6S)hTTCc^WAKzyw%Jr{E;r}u*@XqWXCW!f3i{W6 zbreD@KMc`m8yTIDwKgnxzwA!%b~a7~rm`WcnOV3(eOHqEbBTo^cx)?99^E;M;_M6) z-tEt1>t10|>>;pJVEwu3lvuJK8`UV~4fg44C4MkNJmtfO-SRDx?*8NTIJ%$gscq#s zx?URMvG0~pRN+Lk@Fu8<9J(1oz8QaRbn*IRCzS92*Bt#(pw~^l4SPe6As+P4S{%aS zUVXsIJ#*if#W%3Y9rmmY)GyyX?FN9dv&y7L7H%NtDU|2>b-OZ$^xk2=?ly^<2BFC@ zxnWa@wtn*s|0KBw${K-^Em z`KMilJ+t!grW?u;1thOFPW*ekqa&uXC-==^##8CP@DA*m-^F<6J^0Hf6Ze?k`GpK|a-@J=Tp2RakPd zuvTx)y-#)t`Qn#<4R*QwfiPVnwMiaT%^sh*YL}5&MB6$QqVaIHT^3LvfZsZqq;HdO zd*wHT|8Z3KbBO6T80R$S;71>jVaA+ktI^Z{`Kz~G_;X^&NJF-hQ`y`k~?Bh!s3*BTeSqh7KfWf9U;%tT?K2BN- z2M`N=h(=wBn{+InTC}X7YHF#cS{ou@;^nrrK2R( z%x~e#8HvtMmtWY4-}>Lm;y9Rcbb4F1vo--vVhWzk-1IY?OZ%VY=WW8#hl+m{dOnxLMD9QAh-N_V z=I9lxHj;YFffHAN7H3Fd6&y`4&QxO0F{GWgp6>LX*uVZ&st=RN1F!X}u%l+sIqD@I zc15Oydw7F@t7zuqE)8~_qbmQ$>*G)E^Io?U>QxP8C-Qr4{}agc+nYHRBF#t$1=;dj zUgsn>m#f|0pYz2xd{`_=qHzn<0yqyPRcOex3pT0Y`p1?5x>12FTxvG;EQ|s!+7<@%ju`N~)H#qgTW`yxh z2pP%#8XCu!gxCD~%m4fLK}RLRfs(U8GociHRdfqno#6ZUn{`0xq=yla+MGO~ZZC7i zwOYx};+$F6{Pq-<#&{5gjm_gPUwe;-EUTAY&VjNg{=rWBC97YrrSNFlM+C(?E?34S z-P>u{Kz&*zFOQ6}S1gvqM*$%;mYw~~i{pMLDYaq5v}3=l-x)eXLu17>v*U5SHor#a z0w8g}q`Gs}4QNI7cmmqU&w(&IRpO#WTiVB!jUuIdVRwmKqM`fYi(cI&X?Y>a>&osC zoF|YAl&@4tLLz_1mVd<$XI%XB1$c7SlbfO4lTmJ0b(4lB0O;2WM*4QJzDsK8Bpx6v zQf0;~Z_ZJrfZN7Ev9JU3J1ok~Xucxaitp}sHN+`~E_w;F^C3mj&tDJX zxYebB6USV_L?MfAFhO<1D$b;_g)cuqDqFHro6Aa@|H7xD>&qCGg%XtJ1RLm(hG*dw zcey(8(lK6Wcq z{YM$EG;TBL`~YTgo@%U3+En=s?2p47-txZK4=HLIC9+Dev5O5T!^;tnGK}P$V^AF> zhB8VVi{q>9>~{Fw^f}8^PqxFo9mcqPpeC)qK(He>GPkyk{idd zHD7h-i+ejH-YC1|yeGjSo(#{DZ5&2}ZrQ<}AjgtMO_=Wa5VpM?@U3ujb+l9k?83NPrPQ}`i7W@Di~-^+Rh+OK zW$VjtQ>q57Kl=fp;tD4BK-XL&J*5kZ(5N=&qow`p&C}+oC^yt$fn}dkTA!S9h6fd- zDCDYU*CwxAH(liPC^Ugy+hONwTvZ znoZux3E+MbHt-o5i9ZTIhe{#1C_EM5W+G!?1V5@VKdj>?nciSql|pg}F{6Q=6)h_N z*~njrC_jAGw#(q*N$~1D%jEhv0X51rhf^JHaPpSNrEAk{#tS0ZjwMeIfSNrp+S)D8 zlu&h*8up-q6f=94L)zS)7QdbY3c_@rL$w4SbtP^-pr?A8_$ih@V4{>fJU{!E(IER9J$FfmJrwAH^TZf0A~kfrUF#DSNSlYupe$c2HmjwCCN^BTe8@|8v=rZ8w@q;VCppBWZW*V~wgHQF`h z?Af#BUC^VmvSY9K#4fcwKI?(*Ct4Tto03?FkIsMB3mTM#Gnj3{gxJ2V^s^nz>ehKF zY6kC1z_;4bI7U-5tFPXj-HNp|?=c{5mUY<)F=s1PRQUGsZs068RXM{~hnV)+S8M69#Bim&#*_W228yvK^m$EWr-F zAgKSa5OnEdNCW{xUTFYiDl7_)n)umB`?2qWUnOsD7cy$?irT5`|9V@)_m;6)~ay!>#&q=j?RVy>C5fv zzIuD!Xiq=5y-Ea*Y=GDyekyiR0SIc*D#u?WI3j4cUg&SW&*87dluW7?t)MIz2OSuX zERwxVU5He55-d30To*L&q_TzR9BZ0*qQxq|(5p7yT*^eMrBwlkGyP1?$FIE%6wi2b zegIVMZ@)4UtE&6jV}-~wjY)s~kW+#M0|@unbpG;gxJ|k*&nyJXjWHFT9Se5JA{n;) z?RyhH+&090X#!A5bQsI^Np?G@He4o>X(Mu+d{ijembe>A0v4N)w9g1HN^M&~HLV$L zSRHld20=l78Y$hPHiVHPo6+y~&($qd$b>iv$9V3entTqpHN&YK=F`ie#x>*X8L1mU zRax=fmVObB8o3{$^mpu@vvJdYb90Z*b2jg85>gmTZ$!bz6>aUg_p%ByzK$j#DAU^Y z$5#i{r&HPrOO^!mxydytG6ibNdW9;`hdR;H|3Ir%%6whh7l420lj-MYpZtS75W5)~ zD|B`mHQ$~}Y8Kj~o47c#E#mvN>@JsE3ul7_B~B!jW^MK55F?^Ebk>{~2{4$P8aWEn00>YW`1?I9I@Wa$)dYIjK^Z5shZ)9~dA zs)8Ay-i7LVr8Oj?cSW^g)kjp}oeV?E!oD4nty?@+un3|545<194;AQVuW9(pKrQ6> zPd@q4BW}G@Zo9731;RzdF^HY)V<5RiPQ=BaUGe3sLq~g*e7)&SVR#a#s?S60 zz*ehqM`vShV{%#7c&z1fHg0^Z=_>RlQBP>~H-;EY=3=f0Gsw`6S+iza2!La4+QGOU zmpG6rFj!O?iP7*)TC%FY+UH0+j&Z=#;aImbUQn+*@`=X)IvC=6z{Hh*m*I#2(usm7 zu&Nv#YZ0fA?!*Qt%Sw>+OwuDUp>qTj+sT^SgZ2@Z7VYp#pDjqSnLr>}LxQxtFnl;V zG@s;%P$v}Vf#oiejzY0_h7qtWAcT)ss2A1Alf475Mp~?tpi}Vx$Pjz_Q4X`KeFNGk z_fCKsAJBItj5Z{OA$`zU5bwebpH(e76UR#%FPe(T0z4W${4UGw(x{pBkxH>bAHe7Q z0q2hVUFdQ4X1waJuSAs+e1!7gJ(0V&3@Vnz*U0celuFvWBC> zx<Z)O$yM;UVxt_^HatBUcf= z!B{Qjn5eRmA#Wl_)Fc$I*Jqr^85UlER}TcKyxy3!_J>zPj0|}mS6_N{@NS}&^btg6 zcO|BGjS~VA@GdJ1NM$UvuWYxx7|X?4_G2Auw!Uk9S+q7llZ@|@7l6+urRH39j9s1i zp8CrYb)*AJO^6HiBEZ=q&Q@vM`RF`|eI!@p z%3@jmvk}hy)T|~JO$a5LktpyDNR(8vZS(2PJfszyqRkVUZ_El)716-H8pDP@6<^xv ze^tMRJ1a*xP8tSc6IN4CTcmukQ7tD~oZav_5>o8pjTZ-aJ`4{NoVA+550-4cwr4}R z_MqJ{HA0nPf^6i^*>QBXKW8_GRwg&&(nhHhj9ob5h5Eby{^jl=Z{&2TIMI3z;+Zs(Q0vR!x+)M>7OO~V0ffWh zoT9sos&q+Q3@PiDwb(L6(NiSVCKS)QSVmRwq_$WOkL(o&10NLbpBgtu04hMC3XFd> zz}z~JGYh6DA)Iz8lmc0G(suDn!hq$G(SeLXW!y~wqkSi1VVa`?%=8a5_Sx(X91(Uy z@St?e!vl+|9GMCB8L6dT(43|K~L4j>gs8)%xnL?-mvYdC+`#3$RD>2+Q*kz`~pw1e5lPmN9 z?3OxDezz;rH7X^*hg%)0zs!>hRfU zS>1K73`&>8M=2Iw^WLK^oUgD8#R9ce7W<;!WK4!$QpJ8tsokGc7fdKv?mAc4FI@3< z)Kj^#{%_7R9EaI57eVQVA|FQj6-s@oRPpo;MF@Uyj%GcyC#)#e7Q~cnPAxznn!pxRLdy%}QH)t@s|$5s6JKDB?CvgE0@`vM z2w|2g1!=#ct`Hz3TwfuDot*opCXlGY;(EF}>@foj;35L6fj|MM;^U=q6qp8pjy%@P zO1BJ6v^v41kHY12l?KWHvY2g|PfNDkp+b_cnfg()-uJ4j#DdwS5=Oe_Txk!{Kwiuk zJAQm~Lqq#c8?7FX5x|45KkHSB>3;F%)JGqy%84H1T#3iK=BuU>G%D&Q`gL~>hOCr~ z)DKV2a-eVIRTGw~QbhrqbgKx41^avzSED(=lKro;-8)xzOv_bxZWo)1LL~0lJLEJL zEDiH;h0f0IDj#K{RC%LCRMhEXO1c$eO~3S|Ju>ihQGWn$0QsO_Rn|KkX-2u>VClGZVzH zR{`u^=2QaDekHgX*|e0hS`>DV5;t=cqH|fD@Qo^I7_vGlJz?22=EkkLek4!#`{OB)=}1BR;Fk8X`w_X+!K?afQof&)xfEq4Vw+a7}}>4 zn$Rp>>tb5wcAftE^&OmMWHTR;KkG2V%$CbWRb&dxjZv`Ci)^kb0SDZdhPLr&NZ*z|7 z2l_g}>+{*4YCV^lY(7ETJUK1JtDTguQV3A$`96J>W8)CXGXUs@Yt!D0UieB8Ozdz# z&uk&RD)`jpVJX$^fiFjKGSX^=Qo^)pOffU;)&`EQW$58mP~^hZ(@Kz-CklyM2NaVX zL=2LTyouyLYbNt{Gg_v|5=cmD`J%cMI+;9uyZ zNomdv9G#@g8r*pME#D zJyHqBksR{2UrTljHoWArL=qd2=U&bz3QBdKCy5J5J^Qz z)MbkrF-OlvLu5z&kkx8o9~?loO**Du{IDjyr(3DQff5jO2-O$k@(p&N>a-NBfP98{ zE|lOUT0(pWZB~;Di0%%KSwh$;GO66H9O|GG$9URUHztYNc>E$ecE7+NrOW;Ax5b#o z^vx{tp5b2NRv^Mp8}G^$IoF`u(X> zr^=~;PbxB5HlnrS`WUHPfA;6Efjnlb=j3NRqo7rN9x6q3UrpQ)NIF7hjINj#)(dD4 zN+I;>A6gfu6bV}3l5na#j6gv|X!hCMQm{z6^p1>hl#=q$`g3F07mF$1O>Z1LGgTt2 zsTEZKgP9-W24lMkboi>^;b^i zsz8R&&hk+Y*p6Ep*8P)(r}EDGY9sL}_nAFHNFL#onSC9E0`MWk^ko2kFsaBJJzHJL z;JknK9&nr-P>72`{y0ZHN4c8a-ByJe#B1Kv$Nv@*O7Kx52k>c=)HU-?c5s22AhW}w z>J(BwxWX3&6kkpLFuwXc?ZU3-`|1g;RtTTg5NXq;Dg0k}**982jqnVU&8^%_iRYo} z!jYY)vL(rj*Fh9AS*cPz2#+0m(?XzC=BUuaQmM(hb7cyK_s49_(Je12LXYjl$0wCE$KZ*;!p?=LWR)Bx~i2V zo{hZr9dTMd!fPlLMqO4;=K-ijU^+xV%PyOBkkx5v$5BHugy~Ax5hd;x~ih*yEH?IP&e0b1oC|Z{Sf9 zy@W?JCVUu%F6!oltf9gT%7qfs_I0)~`u-l6Jz=_!x zi7H!!V3sAwVOR%&F;Q`q5s@)jQsu=s^W^1aAYD!t-i<{n>d^q%&?KWh)B5R4dYc0_x&c@fV}mD@ zX4bk}%YXrF+R+@iZYCRDy<1j(Gj0*ffhO}w_#0=^-yy;ck0b1-Z2P_CQbtH+3CVe! zf?Q_z_k%&}WFSMf>?$g2g_!RaRklmH55Aj^3LuUVQ9iILs>_|uCt)Vh8$$Y;PEQ}M z1)DmOBd=zC-EWA5yAvc4an?w;0dZPQLIEcWEE@}LOH6Jy2&0K-dJephxWzi5?W~;x zzpPJGGt>_~tSt((#8{wIiT;8(l8u*eFFS06vH=7faI0kFr6Ha;2X109y8}WDWKfBG zwpfV_2m@O5d5>+0Hz0x83u8@Vjx7YOCvI$kWD+dpg%Nm{R5ps)wSl}Zi{@$d7S8hJ z(7@fI4w0UeDk(05bBb0Ua?-}aC6c1NKGjrcBV~8-M_*j%=wHBP&Q+~T?`l5YY&kLE zh-fNlG0S?XsQx;6=yPw-?zh9ChesZrH$b`>xAhyMnNo)_Yokyx_@H9*l3+d}gH0+A zt`gyLpS}nDV-Bxu~>LFWT~^j-!|FqSN)4v(zluyeS`yI=tc2 ztpzborSZ@e52AR_LbpXmzvO$+Z1Q1wepgbge)1!Ei=rBcx>@hrk}NM4 zI@0QRH|cP$O5!9qWUWeU!y_6Yap%HvGwf(DHHe1 zN7Cf``0yjO~RY z99j;yH=DpEAfj)36y>fWlO$%TolhuJWKxbVj_`dZF1DU~K|$K;E^X)Tf6&m?=)d;k zWY|bMJeB%TZmx_%IuI0!H0YsC}^4y?eyk}HG)hb0Mwnn`tT z9&Yp4)BXOn&ug7gNc?v!dqD-F@w~=l?he$cdN;k5T^kb&5oU`E?J8|F);Fd!lho&_ zJ&Y`ZxnPkve9$NOWJyLh(*1fCd6^w^_mN|HMM!77jdZF=a1_%bl)(fc{3#1{@1GG| zEs0djU8t(;uBb#*1tA${<(be{D`N=y8QlNQElvF7y7T^cp*u+o9M6BHO_O2>Ax9*S zN}Wd~j~o9~=B%#&glW3!s5@R<;?%B?ge@lkDM}SovI*fv3CZRPwlsJ7X_&6bE@4rk zUgRavFsm2M51bZ1YuZiGs<kNtP*C2?6le?NTx9nzPWcoB6pZhuz`cP^I1NlXY+WR3|ttfKwK+(ov8?xtQ6 z=YnwLSo6ZS?!HRmb&tfXz2xIvLyaVwss)*hmYFYl{c;5viAQ^@ka4`9&OR( z3B!&aRg-rb8fAZdcH90vp{ZVdLsLXKh&Z^1w0Emz#a3^RJ1+ zb50Ha@I!~2eO7)OmpwGs;P1P?IQZjv_ix`iGS6IN{*FKGIsM&h{dHdZ!zU+Z_e~g` zmEYHL-{*hXGJ5o%I!#*Zcg{_`e0{5nm8n&{Z+%BpOHx^0^bX%I zZ{)&LXJ*akeR|s?z30w3JY}LxRd;{mb`^Q+g3U>Oye9sQ-^zS|uz{`Q9Ou@t?_>_J zKfFgA<`=}3cJ2LFeru|^9m(W;Z7I%hp=D3yEqRjLWE%)vVE>JFPf7iW@`5AZ5>sPZ zsE;N=zNroC+Pu#RlLlrOi+ee1`ny(3)F!(O>x&x8p55E8f8$h#yga39_|7Rua$Iq= zf3ttBvkQP;9O~f_5k--k(@CTQaGVOr#Q#46Dq*#R1oofz1O1np`wMahy?!&~m1Yat z@WYwT>&_@2|INJ~z>3&r&sWwshP1d57>lYmlY5PYh!sVjW2zLH%&gOPDZebqpFGp5 zz3Szf#X-7G4jLoh`H|w_8&Tixx(@iQz?oqkwqW!v%Sa9|Bec~vK9ir8n40 zU_4!tu5=>g#RS6^i7Qkvs7R^P=e+u;$^DtVZM3{XA)?eT{83V`JMedE&F$&Ty+baL zic&V8c!Jw-nCwU3$q(lU0VhpO%?6>&>AYGmG3GFOyu|67Y|Wx`K|h}pE}cEJA6{fN zxgxi$tE8+#@BuZlNG>dZ#w>2M=o{^KJ=G+(1#N56+8f6P)4&A}ZRI4Rf)|f|N1J~KX{t{TPSZ{wQH6*C zV|uOWQw8AzzG@d-z^fEruDHq`K71(R8k}`DFT3T7o#-RdnPI_ML$yW3SZz3qbwxiA zMOmz&IG*vrP0gI#As+*G zGf8q;Kf9OxbI(9kY+_QtkEsZz!l5fwBKT5i*sPu`&p>PP_+DPd)~V{9LCvApni5um z_$jxV){gOw7?5^q*U>aQc9C_9CdUwPDPGq!ej1`tZrHnZN)bzttLo^>Y{_n zCtd9pUEuwKHy<%ziWj`yWNx_&-^@JKaD2lrxF@%K z$B@~xX1PcB$=MKG6K9x=7Y#!^2LiZ=2gUP(%_p@su?wQC9Ph6$_NxE-2WDg_<0v&Z zd#SfYjiCtJ!XgJk`iehr-JP=&g=-Wse{(!F@a1P%t`b5b2eiW@t+(xLeJlpU1pT{4 z%3h%cj#_Bq#1gStHoN!UQRWdbG4mQ8XcT=NlKuu@ce$#Z`QO>h>u+Gaph&J)e!t){ zeP?Et9zXqgltM|%OE8I{QdmX&s;>8T=#5nRKH4&@W`mfYbhdu_ft-kThEMixNiLg9 zeBY}eNkm6S4$w>{Lr<96sCIKp9c8IXQJp_d8Ar*oxhg*@@0P}? zdd>j5ihLV@$z5(WP|w+#1a^b0vN>K*QinGB!0#f zCc27!JzvF?m;A`$QZKz*9hA0LDBTxXSy_#;Z%C~FIp>Y?Kdz|i|Jv5tWj!??7nIae zm(NoPA0*Ch)qKBDW))~lpJ;HAls%bYTS^SoM;N10#h|%LktekfecUFA1roK?ly;)W zpqIVtywkaVRvBUms`gRU zOBv?H-2GmKIzBcl9uTqcM;X{$TR@w56Cz;Rn$3MO+O;5#B-}NtX ztoF-&_qDBk3ew-82Ryv-4qu7ij3a)Vos$t;E!LuUb(GXsV$yb$F$7|c zAxS17`KlFg28mh55n04htGq$I5w-O6hww4cdTZRV(VNmoZFejhSUJ$X$S|h*k~EUAJcjn?B1-ZU*jj zY*|~5hl67*{Z(SV$|bnRp)M-aS`BCL8HsL_>)U+BK%X;O_Tu=efLCvK883!hua|n& zejw6&X-(12b{OQ{^2L3u$o%BhAxrF2iSxoUx!@XbYP>2T10u~WUz$ZYI#D2}1(K|E zUn=AqYitwCH~jcVx@jt6tR)PkX%Bq2*A|2xbT;Yy`Atw#0}ErKXc(M(JUTR;7L*I`Rj(*Sl! zDjgqP-KFrSl{;xEG#yr-Z7o5g*h$hJ7?nZCg%L zfMC_3K2NTv&}LnD>ho!7P{U#LRH#)x;$}%{BZD_GQI-yp^>mbKMUH%OrxvR%cVVwF z?*HC_#&kET!*>i{t~rx4<=(gKf$-ZC{Zs!=L>g+COpqC)r8V2aqHt*S_1!C<2o09H zqxXg8QJ<^JSAKa~LNAQ>-AOTp)%@wyd=3Ji!(idltJGKF_0QhF%8F#uH{+`h-(%Ru z>8C}U*TLR@tV9?Fyje$YPh>kd%RB*EI8Lw1Ft+FW?x~osH!M}U$ zq-F=k6U~9*YRq=_okYiyEwcfmB^Q#Qq}j*)e$=Pm?^Xzb@b*HF+4Vu^qH96S518{Q z+rH7x-$Xhi%d^{>9a`vgVO!{TJmPnIW zW3?{qJX63lq)(-!fCJ?mMNAnv(j!BGQBE~DcBO&8Q7mPBKtO<8z+su4)sB&1| z`@;=8>3+8NrJbp~zPqkogixtl1V3+ymm-0T*>HYX_ebR8Okp%2l+Rjo_*SpdVI3a( z1DpNwMd=e;G%|XJd&y%!u2Kb8fAU8|r}?F<8U81NDVKUxhTw>@pF~}KhJIgzcp+4z ziIjh7qGX`5)O|oEor6v@I*@l8^&kKH?MZx6iTlOhG9VCXzcL_EjJx^9c(v>=|JZ=8 z?L*W%?YX}sm=UcMo+Ma-5zP6hVkW~pH#axY^avrVfx_`kJc}HXe;h?rQ9RddORz4) zwlfcNy+M^sGRQUVSf`r5ErcUWCIWAiG3OpeC^D(Ww7JHy=qSxbB3B4sKoXNh3f)l} zUaBKi}af z-_F*}RcT_VpX%u%$&Y2JrIZ|6P-jA)gm`V}nh9Z2jM~IYn7j$0%($HQk%fvMlmfXI zYiVhTlqc>hp^nVSQx56UX(2O*0`*Tf{go zekdkyh>5;)#0hm;`leUxt%-N&lQR^fRbS(RR+^*_D};f$iGC|Kg5jTiI};$+&5_Ni zrAg_WJRmoRC+3Lz!D^9&l6#PTpB93wwiAeRfGl;np~#frdagyb8cz)9uiJ(nH55U4 zU4gyKq#R7@Q~xW%hQ0HQhWxX1N#Ed;g|U!fG^%nQMr?^6Mo^W4z5+Lyh9hQSa^O_} zVD)DE+BrQ?0n`NR5_@v zSm9{-=F(JZUPze4TgGJ@&i55)s#5ScJSo`rDv;odV;a*NgX?dlbzjs=+oKRtu(s&e z0>kl97ac?4KB-4jnfVLIfo_$Sjn2fL=CXlNkr5HI8XhdT-P2~$V=w+4zt(MjCtC_@ z)|3upV$GV`>YxwKhIYLn=}M8gXU0&v@F`=StbbrL=`ZdcA*azY6-u^4b)LF9ew3$2 zH%p%a+&H0*F-aq-m*z0ATP6L)(u&3@X)5Yt@4$&dJl%gmzNm>nz^Yx~1AUc{luqU0 zRObi#Y*>;^5N0G=F3?&UI{iNP5r2QSPJu19H3@l*?2-CKr30n3_bItH#3AQSdkrd= zbK;Y-cCS;0IVY25+`HIxY0Ryt+WRf9->p8mVD#iE*E*|La(I9RL$E~yD~cEMGTHhn zwA1#3(DEAFk9POu!OuMZ<^Lg1E{op2Q2uX%lZqaQJA2tB6~lTS54#D<1t8xF?`cj< z4^}ry3aKfZJ^4;L1&{RCNL{mNQCxP>kXj$msq|-M4e_|MNBrU__%^L+xHHFA9d@0k zE<32@Wqbt1?wQ4&i3QT*CB8_pLBQZT7DRFcd0ySlZXy&V(rV6EgwUFcyU^0!nRrLZ z;oT;o4xL=6UWua!1wpi~OlJJ11Fi*|Fn3nd05OQdG;|jDb(sqp-+A7oQ{8M)^z*&Y zA>UaxlF2n8t<>XzUEV@UvEvVwb=7%LaM5^qdwkPSc4-!YM_l(r!BL)wHjNW{8YVP3c+BW2+4va(s!HBW zbfWngv&FAu9B`z-X(L(hW)<48$SgP?RK}xqHk$Ofg1H>4`S{&3mx~>hP1zDG>^ps9 zLUFrdVX&nfE3OgOls!+@?d!0D(HuAiZ>kLpD)BYpncP0~0t|C)_mBY}cMu1sioa7j zBtpBNgt;~Q(nnIap`Ol7f>DT&U5l-)t?gr3cS%of%=QTPfa`FiPjsM3MHY@T?_NlgYo3VFEx;k8NJkrHWx}K9Ct2O#Bhze-g)y>@;)_rvqNY@Z?L= zph|&ry}-SKiRkvySVnNEu<2>C@zAVq#;aoi^C#T;V9IT26_YW5Fa$@eYwPZ(8|F-T zo)#*F_TH{~Ln)^M?IYKV1;RLk(<1YMmY)3|#$g@a}QZsGI zJ*6e?XrYI9O>LO@pE6k9hpZEhMYP`YcAZsc3b5#~Vl9e{AP7q9<1ET}H`&}ybEgrt_6lvO>~@dMt*nFS7s5==e3pk6+_L`m zsSkisLgle)6N~HmWH$FSGTdyz8!vd-D?G$-EoXw*-?l_Rm0_&xgMZs9`TEVD@EVib4suJilCc2mushisd!bwOf<4-A+B!?N*w|-@nR`zC< zG;Ui-3yeH_8EPj?k|L9}(z;3*K$SRt`u@S7Hj+ydM<9C)@WWU z;rz9&pGq_BYQj!iok#j1V9`h=@qU?Q3r?*mO0k!U2S@OCDel}({t#TG(D@FIgBSv$ zkSP7*^n4r@$^e4L^y+!^}JKgoik82Y#G+M!ox;JsWm&iU{PrJ zPngfkXH}-%QqMD!7Y~JZoHQtlOomj59xL>WlNIc&AZ=Nvq+>anRlo#tg1U2_yM9Ve z$#`D=qm&>|hlh%&$KfQmu6%^E9XUu7pZATBbUE9vX8H@*d$^14XN$q-b1V4_N%ag2 zDPC1Fv$C?p*(lRF#967HPlEM&<@mFA|3P$cshS|z(B_jD-MNPQ0h+Rp zQL(YFqpXAw0dw(?zj=yZR`p)V{?yUOh%REL==kB&?@!IhiH3U^UgaACJS#`aR$ED> zolYs1F5brwHh0^BAOS+neR|0@3pPmrk+Dm#gc@lhf0xIkhWw=$@#%jAz&cyF86_`p z`;gBQNw083Pg$LhulF)Ae7sP4jBmfSBGmo*^mi-BuoHw40B^jxws%=xQ!KcXTZZ+j z*(=`@8~ek6@pbCe7bM^Xgkm+}>F+ZShwk=gP0Z(e(NH*4f(~MRXS~4Dn)go4Z+KU{ zKwereU?|i2NCyd=Pr48%9E%gSat42P&F=C=7K@{H~IHz~HOEZKJ&@y*|QXuJkm2|5yI5mHK z-)tY|Nog|;M+Sh=kvdzN7dJ760o(fR2a{g9y^+BwGoC%BTzR_$ZZ&6jYgI1-(JMZ8 z(8rdIDHGaicHf2}nIaSY#5s;7u`0CtL8vx^XsQ2JZp%3=pKixFT|P2>OnmZitV$Ig zXj@JxVG>zZzp9s3I6Yan?^iEC!F&FHzA*8NM|ahazjgTwc2t6y)XQQ~P$)5$5KN`T zL&1}u!}k+c{Vfk`U#P%y@zF}FjT$ZEHSRuMb+8wmgq240s0l_-=RmskTFn{e*4d|u zWSovD%LE&GCvb%bdSx*|H$%EhY){U0r;=yKl+omV)`gk0X^bGuXbKc2sG$mB@DtgI^nC2xOpK zyl%DqtF8G@%1T>CX8wj5s@)7T&5u=t=k$MlZIq3Z|b&yn=2y#KPA_pH^g2gYE;= zO~Lw;LwAqL+hCK>gxL)hR~*Y4aR^q3uzkSZzTMepTP@gWmm-tLVx88Q(XU$Ur3W1?#}%|9 zEmGkpPoA9A8GkW{^0{B}J3TUfy+nylQlrONVNXFDDRqIMqlH6~nI4svqKpvn^ZD4Fdfq3o&IkG> z-_w^0LkRN28-Dt;#10wItF8*j{%If8C)Axzu1{_nAfZyGKgi$>B1hZLZ~7gS20UKX zjDgs(7*8Q}oQMdbH*ld5L#)%s6}Nli96U6v>;4QuAiWrn@d`uf&SrBkf-oQG_)DpyGdkCYx{l=8N1?a(v#gMk-_qSc^ld_}26-x3c; zfm4)V<{c^gu@rb5PZazHiGKtiw}&$NS>$`A*q`jMeuynY3`;UTrEl}?kld6~{J<$ZliDzk!9&sRC+rn;BgSMY9gSriXD+hXK+O&P8(o+QxL*Vm>=T-J2|1dHPh{K%9>i+GohMYRdUgLUlXl@(*8P)O-qotmgN z2*!R5vQT4VAjLBmsmK(Fs*&a$JR(~Pa52uw^e?PG;~5t|4;?cOzpG3## z+5KTzdw!xyAyb?^&ekVvmN1}HNh6btBcKPP(U}~lR8jn`^GN%;rmkbX)9?CFALh|& z>X##IF06nZCNc4~$|wZk!a|Ezc^QYIBZg6hKsb3lOi5h5q6R)~OKp-%^bjLwue$i* zCR(Tnb5%0hvnlSG)x|sSz1~jlwH|MLMhA9Bn;uH2qiD*%bXsWB!+cq(>B+D z0|&xb4;HLL5y@oqh_qvTzHLatr4D>OMX@rxNIWHi9FR!LIr~h;8#+49pYropicI36 zU`i6HD97;~Vg*!{tG#n?y!X-jxE{0mrMAEp&c-X2ZJ!6v{zzZLJw3O(d-OZ66)*QA zvEx#m+JymO4!>7;a)T|G9qI6STWLHbs}xi?nS)5^2gzjK#~}r}>BaH(WsnpqTRQWK zqkU+{2<~a!)pNN8W3f0o+e+$v4@l>&vH?!K#-%Pe@0w3yKID!fwBPF?fGUwYq%eRT zaO)G1{~oXf#$0W|CH6@pxGLQzc2JyAXs%eh zQrQ5d~m*px7HsRB-Bdy=$tWOKI~R#~Hq6X0g`63OOhv z^;}SV5EBReV+Zys!EbA!vmecAWMlk4yuArr&iVTPpW_U3%wWt|#?lz$w(n$3F^uJw zC0Rm|v6VuUN_%sRF~ivIkgY-?t&$|PV2nZ%Ekea8X{S`u_IqA8<~!esbH0zq|MB?u zm@^ZH?)!d!-tX&uU9anPyNfUQ%|;%&gX}af>+QQ-{Ej z8xWY0QfG3e(jFYllOkgHIXfoD(xQu@6C=wMHmgME{nWYo9Z`-u{LfFV9#hw-(YLL} zCyeVnVbHht9*jTdIeK~ChMpbcUuZSk5V!8fwbM?vAAfYkuwGSu$M%gJZSOz!%9Wmb z_ixMT@Y^7>F=^2uiM4y054A|h z`N)~!{bv9A*Gy5z_tezTk6cr$vt;o8DGOuLgT~J*Dl9BsU=1u3czWW+AkMc^1<*R{ zq%(UrfZIncLyC}-7+kmivDl4lqBc{sOM;lA4xnxM zqjd0}QDi04C&O9u(US6r7UF}wQ-KM5*4at(y=O4(FP@u>!N%j1#H@_U7nJy7;pX5+ zF3U$6+D991sdLhE>_5Tcn6p}G@lk|Z12E*>K{|XHnqv@;?z_;?&}J=LdWe7F^($A# zWBfF1dQ**_AryvrV29$8UH5$Rn0aYCI*l|qn#vy`XrzEEW6wP^Z$8mWJ(2IgY3UPg zxn#*v#Y!q4%=tVN(#|i*&CR`W>C(3tC^40qOi0Sk&+o0ogD^-x@j_&Vz21|jPmjB~ zX?*n0f5t5dHKQ7qGtFhHzeGbyO;)&Do>)}+(yGj~tv{{XS=nKvm9L0pKsuPr)gNA1 zRFuMPHrVUD@9AR0z1Dkj9gmSzNG*5g?%fok!IDb82~ykJJ~vul9rJI9Qt$nG)E|Et zEgaTy>3s&FRxG!hsR%jxrW_jC149Y;l`> z$KmJ!%vrN0csth10E+X|h72C8h#%!-L&NNPeEdxA3$#j#&s#3{s+Ho_25q2wX=OA0Ux@>6G*E*70uHRuw(TfdsKHih?QGFvKlqhck+0UmA< z>w0UP3Zm|sM{Iu)%||&J{hfCGZoM>OoUyLOVl0~I9l}L)Z&VA7dxuyQ>SE_<-nt7hcl3yf zi9up9g!bNKBJo`~O)pW|pT&Io{TSC6`~erNPA6}t=P^592XjxcvBTODPNN&Xnc0}e z0o5y2huECq;Qrz)`;W$rIkZPOU-1bE(>VOTAfvr7W3wnisw9~p#?_;TRi)j{-0W-x zo_EbV>l(B0bAj5oWDJ;*^+4LZDYS|(|BS<&zRAXKfpd~*&~{V8W7wsThFXWg%YNpq z59raOhfUG_IYjrEH%kr3Jehu`K0gh|YX$$mYzVq;Nk9g3kGjyl%+HLvz}ruT0*JiB z6t2pC6{hw9@(5^xhr493H?*G)*!t)4b8P%)o!D+$lDY6`8a;6Fa->=Huq<7cJGN~h zBgdbt*8E!z@$ONqtv?kOHVemcmPRkCiN5oz(f^p!12|Ru;5efxF|Mv+kSYG-K+IyH z=&9?x0GHKK)=z&W_9>KnsN0l@{4<~yA);jF%;q2|^`PS8X3bO*Rrfk9+~0rEML#M< zKM=AhlPCMVtesgUmarMN_tq|_7>J;dk>w5obevKdaNWA!!t=8!=I=5ClEPzA-hq-V zCZ%Hh4BQssY-uA#B9J~V{)dC9q2Xd_yl|ly2!auri!(DupF4KU_~m>}jgzO2<6Mrv zNc<@B=yo-0(IWcE^K^d(YFlC$+vl5a#?b@W0~6wwmrej&+*zuZKreG0yC)mtu}3sY zLMRVGXJ~NqeJc8d5UdNx24=FHm#zNy_Q zNi#ybyLy>ECs3VSw9mcp^+@?CxJwM53 zbGe13rDgLk2OgeSWVi@{vjZcokHbKoQ1JZ0k3asCfzHV|DF65OGOS(e)`&!XZA9ng z@a16R$fMcW%jWlOi{T^x)*NZ|9p0c3&WYfwl3k;9FvFp?Jgpo)Qe09}Xop!I;yX)> zDgX;ifoK@;@S!od&iMR0$F}l7Pw>A7TAj`J^4~tVg>pOW+O>;L_S|jvL%yMD?1$zU z)SMYAEqvCis;dnh)z`V-)c5pD-Ynp~*-lOugSu)|hSN~EncB)NYd5opO4@%{7p(}J z?=iq+uOjlog&T_p#w8}spuD*a*})Y2m6mgIA0x$RtpT=d*!+Jhfg5$9Q5I3jxG6}c*P|=NSdAT@$soYgaJrk zy{b>`juUJj)|=LftGwo?O*S&yfaS1Bo;~P=2=Gd(?*O{k$GP5!^pZj+QZ6ki*l?AwqBP)ZPod-R3C;n%H}~_z=~-7-xAM#+ zP7RK?-IPqmrjjJ~?%Khv_g-)B5avebZ@zgTVFm5%X8`Inf8953+$brGY+EkHi9R#g zw&a|9eSCa^p4>=D3BT_U1t#i1*{muKwUAJv?#9!333J<0bvV`(|4A`+nh{ z2CCr88_B#oHiP@$0G*^8Q-s@scGZJAf5H{PsR`B{J?la%dL$n7pD1Zh$ZTGH(YHQIdz zQ5RFq!4{$O@SR;AIuAqZek8$S63gn*BS@ov(Rbseui2mK?Al>l?z3lc8dGDN@Ge)q z=@YMMNN|;R%a>b+Ys&`jnYZCfGr!3@m$s?y~=tB2=@ zE&1)^AQC3V!1cN9n%`{{V<~>gIH2!QslEwI?;DmL$i}TjBU9zeT^whoaQg>5d2XUgV1yIuW8BCa-o{?)(FxwTxB6nlT)zAvZkA3TBV zTx`u1y|lHB6$&No*Z$4(%U~WCh@+^u# z<6klsYDTpw1p#%w7VTSuussp3D^2}A%}Lm`Z=WBUV9(I`*~_LS7#_cUTmRUJ69r_- zsFz;Ie)h}{^@N_71(Q<+tqsxEDLc5iRXb--Mw)STAd{4#K&gB>X=;ipiw?klhY@QJ zm+N5Aynr`{Y?m+Bmr#v^{>`XtnIiZf3OqDMU zI6u%}5ncKB#*H~#>#%gLXJlmj9{(nyy3{wo;@+;HhTl3FTvPU#;Wc~l;=`kLbi!R~ z9k`6qtDMM+;``O-MKm9{=a3~*pI(_ zxn6k(Ik}?*&49y)$8!6sTr|ZqZr;LkYcIX_;#lWPvR^vew?2q9Z4*BTo6gnuPF-@S z1^zloVYc9cZIF#OYR+ocb$+xstZ;lAdNDP+^vXCkP?A1HrI>ABW7NO2O2m z>GfN;=5m$k72?Wmh_8tWi+z_tqLP}=8clv(KEyn9-j?S3rzw?5biKMM>E*anKfyf> zpkp?X$iqKhef8C_>Dv!HBHJXV>vh()?C^_&_@*0qd3lMRBx5GCG+(SKc-rXM&}l2v z*HlimoIBgKpt?^%;ENY8rc9l>TfzN5AB_3JiCXnaSN>jC-0j_(|Lwo`eo9}pSJ8gk z?*<{3fJn#SYMaqpQ~9LdrIM)U3C#&k5_be z&pR8UeR6UOjwyL|0j=k`W@dg0JVvGv?(UGNhszJ`JZ6y!b&_Dme47(Yjc8m1*DJ6| zTKkZ!qA25n$krHq_uY?*JlJceqp5IpR0{>$29a_7o*F7^{wTVkM9SM|F?QP= zt+lC(2kv%o4tVrv@yL-Q=Z640TPyF7yGx2MW!;S%dL$XU6{{J%|Lv>Ck00Zl9m%O% zt-0G{*RJoQVwPTOp}fP5wtV21gn^!}uC7sFi`^>xC)XP#>bLK$Le6HKTx;Ym)I=ol zpRNU%FMauPHrc>XtL({20|$rKI_2jd3>g4d)kdM@0@<=-M;Z=3zARbKUcFA<+xdWg z(d5@Qal9)AECQRH>x?rE1OR$0tM34aY7vpcEwdJ}xP!m^wArVhN&<_!cWbgu5ZhKF5KR{J90If7+$!>C^6cX^pl` zz|?$zl4V~QTB*Y&{&soShHYu_bHL;l6x;=A6Rs>e_DABit5=U1IAj#<_mH6;2imc_ ziQd2c_FWXSuN|~)r7q0@+X=ehQ0}h~5y5U1Js0%xZ{$+a-}u~N?kvf)FqbFG=j`!{ z?w+2Wta+D>m);q|bJIpgNBctx3G(q#wW;+Ax_QZGPY}|{2L>#IkcXwn zV$LE7PKqCsV`g;ju2%HvXP2~KzT-b)+8Bab3|p4EYM6ZTF|{w<74a0Bd`>0@(!e5! zgW6TEU+*2|*S_)u9kQ8p7VppqJ9g+$CqWzp%;5}lYtz~Ipr>aLeWN_)4$@FVGC}!v zGCTPUmz!y=r)}Bds?twm5)uX5)cmZCrobQ_m5@+d8^BIGhh}@~YqUn>Tk~UD9jN zstP)Z(7WyIB*Etrpzx9^C&?_^@hdx_u1R*2o9G=8tVzwD{QU`VCK9YYlw`qBH)i4@ z=#joE709(@)VYgV81tTI&x4Q+P!b|49}ZV2etT_Q4=X*1ct3{}I4*87eG@O3Yyn7S z&&vw4DVPhc7i4fNiU+iO#fk+@!}gl)C|wq?Dkr{*ZU=eSg?llb+vL&EtSHF}AtRaZ zI!V3C{xhoT3ou)M-_~EvBvpg=PnBlK>9DYr^EMXtj*faN zQm!By$`h3@sN~*z5dy*boeVaK3FexZNU(Kaj9zPTtcGOKWH5##g6zQW0G}sO#7agT z2rxXgU4LW2rNXUqr%Nz#pw&{&T-QLSwsvhgb_}3U3IL4~SWxy18EV0!#Z}+HhP@iRmAa}RfI>-pU`XbUbN%GeJTuz#I`ih; zyR*=ExXpBf7D<)z4i9Z*R6PyFXW$N^$;q(Za-B-<_})&%2f21vau>^_dt_zL8D}5p z+&yTLGt=u34!XM(a**$xcn3u5M|~LYa=SD8ca8h>IL+v*NL56txi!Pu);5)ygzKJy zZ6IioMxm`X>~yURIlLhio;qF)wSyi96%mydRi=7=1aoZBQMQ6Kq@MT zTKa)?geZ@f1^N}#CtR(!^AX1w3M9x?KY_WhK>epY0r7MIJ?OP7>>KARSFWTmyrwh& zX2)+XSW@y@0D{RXn5VrrURtbE3D@Q*)cY4+)lHi=<=vee=eWCv(egesZoRp`@0Gm0 zzvWoyM}0U&-?c__#6gwHpzwTO0LO5rDl5h=9ABf#Y(o)7Z^p2$u8z~5(sjpZgJNTf z9CEywTo4ju$k_5A@#yoZ#Tun|iAk%J{XV@Nq-0{SYP+~$0ih|ydLaAJqr1=caK(Ijj;f|GSK#u+IMbp;Y3wTMh#=2#XCcPQ{9Fp24>`l$g9zX9= zdma*1w*dnNNW=mL*+Z$EWHy_UD2Ifx;MptBJ{^wNQG>TNim~}QLX=hB-1+&70DzYl z8) zfElchnlupuVRa5ZY;|v?d;>|QBUrN^SCiet#^>502(yt59duLH_fkr3 z39iEe`*5ZNM@vgH1l*!9$#OSx4Q|`qChBg92N}VVG}?c5L6HcQ%$?tL0g-Ge=*nnr<3tW7%}Gs;fiqJ6Y_=%kOsN(Oh#dtE0hYL1#?W%wNBT z0)Kx-?-&aOQrWg=G^hbm6EGGG~*?4g+SIeH0hLgV4V38 z#b_l=cVKLZgURun9pmEMu}9M_T*&*Ud+P>K;XZ?Cu+gTL>$#h`&gjwWD+=eY&b&CE za%|7uBV@PInWU+5k}Fqw!B*DR0e7OIwa%h(M;!H~{9cfjK(FZj^=BqtI@jHUPVebq zN*QK@;|$(*N0&zG|+EOEeo~D7=Ty z!~f$YnY_U0W$ij>K!bB$6`0if)BDWl=opZ#Y^vUy!aMAylxQofMVCSlI4EZ4PFQD6 zx3A!KxIWkG(EnVI|EG&VRFqtmshg~rA&fed;p6yFj5QYimL2-}LzB3pEIR`f#Vi{+LGDuA=z zXOMpQ;MX4Sa+&lXqv2q1vq;^3E13s;rIgDjKx=?(nZxTV&Z_$be;$Uve50>PK{3>| z&MCorj0uC_r))YUe}>AeTv$-6{n)k^ubw{^oCdd&K0wm)Ztk7>cKi12D1_{$q_-)} zRx)gm$2)d_Qr3oE2Ys0b%U%U4xZC2pJHL3ahqRP0gA%%gJ-c_G*r-t>2guaK?yu?4 za2oVf^#7IxF&mKr#heyHPl`0@Jrc{*y;`fBDOImt&9gW$b^lRmj*~B3Pe|xDYdQrh zndnr6_;2Hn)+ae4kOpV#FTU`RYMoup&60oj#Ex&ecGXLsJF&jBaHiL)Jwc;KR^v|v zXk`X%qFY5e9XGD26vl;mC%(a$F<{Wl}rB_?AIhRh!D9jL2C6G2p21!e)CR^B~#Rg z#wV^Ag4MKd-(I$ZkRBW>R&hJ{(*~R~%xM^HQLYr4o(4pOl%o?qkvy2xE;RL@O`7oG zr+0RG{%vUG?+{e@1u-qGh07in&3`zS+01u%SQE`72OyaQ<~WB6>?L5Uz+zX;aX9gX zhwjfLrPaE1!U}-JH04kT&>Y?3opcY_k3rN^Cs`JOT8i@`kK~s>OBzqH#BDu`P7w$9 zCG7Wncy8_rskw(u|M|cw5;q4j+O5qOZriqP4`+{zaJ71hOQYDb#fOiH#_aE?%>-2E z8o9nCv?pMT^wIh+R7oE#fWmMLF=WV$e61;Sbsw+#< zp!9clbad=D|MYhxC8=5Ub#^j^D)%QWAh8&dhb-=lXFz)$^Vfy(Q}UT}QTbB)OD~xH zt`Eem$OAH-OXdlEYlZU+W8*`#siwT#@$=8OMHF*Eh_$u#o;Lu(@@31+P`PZg!OE|N z0PW-iB(KL9LReDyFe76qfxTn5E0#ZO-MSUIjgw@7Gr8V&E1Y z5{0NH93WnwS)XS>Z$;2DHo3Z&LvP1|X19b6nGGy2&M=b79R;YN4lm8*1Jbt=JnsAN zkEqKkYQ~)6bwj{c&@MKpXRh2wI%-0N5!*DQrnhg=R;4rM07+X8GqX%N!7plXM7o}6f3G#hdw?RBh4gXL-?w^6Z37K z{NDW7@#70N-)tLYFl*KxZ*O5&gs;3i(Z$6@qP5MlRe&6H^(@_Qwn>V1c9h7(Cnd8x zW>X7~OFr^T>OZNCQp=eXRidD%PwgoCMV>wlrL*NOD;t~Lxa;$*wrR_+&b0XDqE*fo z!oGsdn{jU4cok_84U?lZiXnw8O4W$~JOYzGKJO>7c21%YPKFyoQ96T)WVeS$n$8&Q z*0j?V$}QWr^(*f%w*0Y-A!{7&Zhgw8!8*M8jo8|Ly1JREtu*e%lE=_eT%tLc(n7kZ z1!*A=0~SaG0`(iZ{+T{IhJS?l#07PByGtSoYd2+tX54{8hl~q(n(40zGknCJTTFd55o+^hZwxv#L{65XB4%ouQfc3{8V}AVn)je460$EM1%S?N5^6`b#pL z@Mh@D?fR7ub$r~WNqRKuA8SpvZre6z@#4jMis~Wu&D(r4bM&fVLx#*!B~z72dcl6C z%-Vfv@lG0au+IGZx(8*9P7c?~%gc+1GEDW}-zM*IcJ}&fx@_#Lb@P4C9EqhfC??2q zF^HHg74l5VCQ`Z+T-|+uAg1QNUB;+}gMe>WJoYJq*Yl1w9@uC%lj7g+Ih#f{O#f^5 zlJP5meamSaO;PdKeF;XC=>Iz*uAOq@xe)>46X~Lo?d>{oB6nc{gcpCpJB=u1(-xg> zOI?XsZh(Q~?g<2F*)tTTd5p)M4(`#t``!g55W1jhPeW6@4zp#{-6`aE-i`C= zZ~I`mc`A|)u{i@`G%gQ!V)p$D$%bgy0VXBUa_pfb?{;ThlgyGC{U?)8rW-2f^!HyZ zwu^C*P)KMd9rf`Mtgx1WS2Z1rWt7NEM|!8inYjRDS|XC89PQ-$e421*N2qB$Y<`u3 z`@Butw)wnedb9oQcAV}2WJJ9mB_4n8bgZ*)tJl2HltO$o^m zbdM8`_D<)vf+Pw(htKoSj`@%qF^O`w`-OgR2{hcS@Mv=ObH1`;yUz>yLa!V zCYfLS`R9+B+L$TaNNH;oE&{37BJES&kw*TZk&A^BB0s;9>a>YwIMhY)^SYq;Y=fioR#Qlf8$X`qIF5bTlFBtM z1A3b*TI8iBVtlFIc88mUMttbVYZPab27-mj8Y}Wh?BsjKWA;==+Z_HQfu||-D*B9) zl2bjlDPB5w|FXgRuNzy^S{}UrB^(?&d5^Y-lgmmj1-XjYKD(Q}zaEVRO5;Gri26ue zSy${hXwaZh8=fB)vK^&ifNOo-r{4X102QUNluAb}CoiuTfXGm@+hd7iv*EO&=r>bo zK<^lN2ki-yCI!GsQTa04-IJcPfSN6AX&u5AxhMbyampiLl0CgvBW>Hl+md#n>8Z~{ z7M8(FhW-M+TRnO5&rlV+lh9Hp+(=KK&$UQ;1&A}}BkxYd-Qliq>@RM3aXP8buwkjG zW7Kq;!?Qn}w#0hwOMvlrX>m{6)mj|_&Xl}m6p)XcOs?jg=#wZZdI4F;_q447v}Uy; zE`qSp;aZA*K}a(B&V$rq)MqFs3E&>KVHK+a34 zNp8*7+1aHr)N_n8UvPFP?LTSChU(&n0u*!ILC5LUS{m^e$LT0evOjJXkmfHqz3dlG zgH_snQa^Jhee4RiT@NP(#S7k0&OrnNnZfNAZMc*=NH);ne}0%y`Dpr@;cjQ2o%b(< zn6SMPJ2!=rc2S)|DP+5~A=DxdTAYvaWJp9$MVYhV+Ig`4ER`=kkU4#goA3NzOa^^a zU$o3_e@!(%jW*KR?M*d?{ti)y+-w1yuwvAKf>ZeQDor(VJSFEpcaa+K6LP+KxS+jY zTI?+;Suh|Q^AbO}m0+x|>2|>sYdJ^nCzsmSc})M^At1dZB1?AM%^cb%jU3x}woBsZ zvZ>+O{>>mY+~%kbWsM8&GfH&Eq1-%ZUg$XZxWlIM*7b;UfFG+h8=our=SLrLGs$v3 z+#407e*5x^zkRI@A)A(bOc)&ukIbYvc*!{MN(c|#%)`RM+5l0**aotgfYbDC#P@d} zJZKRVX|E9+zpVG5&xQj>a1b4sPk{+?6a|eb{E}zUb8fr#?R&Y$`*L@+Hp(L5;-G%> z%{NnuX6`M+koXxoJW2Ek&M@a=;4LC3fj|J|G>4=Ku8^{r-o8|bDUsHuD4@6sOAuCx z^MhQY`$NuUIL!C5oS)cJ`5$Ns{9h3X?+WBf?GN&r%n#8$7KKraU{%?9c_;a$q?IZ< zIje(q`AQELkn=9X!W#^251C^i;l7KGN-GZBpr6=@rdPE&KGV z(ev(vG+t*}Y~*XUuK+DTg%X9r;5t~SbYYd~JwR+r6K%H@2^~m&GRh0>W_jfrr4DiV z3k%^TMOXk02td%YjQN!Rfm7vO?z zFCa)2tg_DY3lKgZPqj>{2E9xSplKKz(t$eTTJJ)^F){f0`t&h4G z6(#);WlW3T$}1{TSwNG(v)owHAeB}UeYLc{IW^;{4l~D;Hy`!dKakA(Aa7Jp-1P ziXtte{7mMvy-bU#o5LqfhU#Cw85!NPI@cY(Qg#@<;gmv7?A27-fv$QgTH#9;K0xt; zeCunXzB8wD0e2R5nbVXAO{OkPbQzvwAH7`X3CXTP3Fg)9H39kPJjB$OuY2|U`+kcq z&ZERVjpD~q0CMNDgyCnme z8GyjkX=u0Z-FpujG*h;(wDTaGaw!^RG4DQ7X)t!|*ptq)X3Z+u*N60(cEu*eN=!7! z*j#=&z#Bs8X}*<>O?dFMeFMK`eq@%F)oE_xmsm;GZg-Z&ki0^;_DH~t1KuE?5X^wy zLw|T(pO4H|YN$^U`*w&cl=>VP_1 z_dncNizKK?K`BfVD%t|+YZ6G4Av3}P&s<;^(ItS-Wp^gP>QnrwniOnuj;U=Sb-h^V{q6i)vz9TkK?tK)hDpZj zL=lw@&=ZbRKa*%CxA>7R715QbJcucRIy@LbLm(X8TlB)FN9u(#{nR-r1NeHK+ zfZ8fT$8mn*EK%!%CFDNcYxGI3kvyr1Dl17J4Nq2=K)hm)j&i9v$KzSCFflH!XLu%g zk4lQzoa}6&1!2tFE&qC%(+!7-pf}1p6tj9S`v}oRW46~jZlB-KH{3o_l7X8qeEVbBW(!-*6=RD#=9JC1*jrtBG0`P6*SSq)>KLz+LzX!q zREUGPk?88IVtAf(J8leclqt}9xw+=eI!CX^0F^grIEj0iLnO#U9KR3&x{c98c=jXa zzAJ;(8$tdRJ1B2#liLLEfl9GDQqNgFJG!;ml>(r>xp5s);}$bjuKVN6Y?C;D4`RB9 z|8}8;oygeyoVXy(^IVNtPDK_bH{jDBP>A|zvnwkrg=zj!bSYHS`zv_&GR7<7T-Z>E zw@1IxOvPs10%qtK7#5RT`MWWxc!kQc*A4=-hbibCEe00bY^7 zQY{lT(P$_8TeOD7=uF5IB7{pLZ3PtR{iyv$b>KF2ScG_z{H=(GR(h&sAU~VR<->E< z6Tlq~$h?R@tWnp2;dvlrFcjSQ=5N# zf~3+R+xsg=KK}8G!MKJf;)x2)3iw+}wX|gwMl6S9?t{6ys?><+IU%W+3S)BHi-uSB zlS}6ui8Hf2g{kvu^vVT=>Y`YV$J?*NT^w7es_BhKC)S`;AjBx=^8OEsLMpewh*8ECWnk6K4rIM&wZ{_RFn;P3Y-M;rF|oX0BXMDJAuKIk2ESIRe{CXQC29#`HNn*kavrWTD& zT|h%wsfwy|gs+el+)f)EzfVHg00$N6FoL^OK<`#4Wg2}{3BH_V`6;9J)mDza!j0*j z{Uq^0|Z(!yOmoXW-NM5|9j0EGO!IJLfbX+kg!@xL! z*{4zwnH2!`H;;Zsw%=7)!cC(s?ZKEAdTB9J%(eeRB`2{83k-hdCCjM<|^+l8UB}dp#JvM7$!wTM7D64 z#&$jWz1QKoirW#VBYD0BDo`S++c`t1m&biVB6#XeSW zWw)gZ-}9+8Vne?-*(ee0ActEU0Jiem6tkY0Jl1yyWz5h@{YpzZysXad zO1^>VsTS`C4l52D#>+UhMN+6CI0kVB0$G`0^RJ}_G~z_ufQbnWa0x!u^A?6M1 zy85mQmA~}YuSc(jVdH>R<*|FKW7n+&n`K8$3w@yeGusazzq;nHe_Fn0!9>`#aM+`B zceyy0M5zBjr}vtQPM5ou%(<^^$F;_#pR|!@zvn$_0^W^9h!8T*EcvlESYo%iz~OXj z(jb4)m~aZ)InKhdOW}aABFe2)kv5+If1MPjrafusPHKQUxcL-fvmDRN9@=#aEsL08 zVOD%;DWX@)Y34^#P0CFJDiHp$=Rcm$FGaOSxYSqIG~RB+g5v?wTfN}r4c1#@QaV4j zX`g?OTFr^0tYt;pcRkpVyYK@1qH_#x2#B# zJF%)mxkPKkXLg(}(Y_V24&(Jn6RPf~Meps5FhhFi(n(!%-Ak&LZ6nV!C8dZ&*3Sxv zteuruL5M96znKnB)=Kw{wT$=hXJ%WU2$d81OPRfX6A35uoenQ5<|Z4A z0xeRi7e5O)c~ZC^9Mrw^5PTsmJ7yI8HIucFOqQH{2$`%gHtL%<^wtMhs@O2D!yCOIbo@^zQvPZy#G4CYB5l!wK+w+ z9(3qrkNHF9Rn~4OtgWB=w-^z-E|{k+TI`Y|5e7xTheRs@T>#?&cK$dcoEVdI)BsWF%i+V?`bV&QYtU9Y+mz4R2=!=OV3Qy$Pw<$3soRZ&M zd075KQ5niV6#9cAAw`No$Y>m(@feJ6Rf4Cc+ZCUc4NkY)PdvCH!y5O-3tL7|4fRlp zEvH&Q_6{L=GgyYEqD^d^t*Lb6X-4h5H|VFS)g1FEz{+DwY7~ zDpmL!hD^UmrdMv27C7Hskq0SlV|XUYPR_;Uh=TS|in5Aj(6G4&8*6O-V{P+A-B>oI zd@`XNLlYUOrK=Q`@R}5p+Bst6(Q(bWE`0bIG)bF{FB;QFbgV#la)0W$rsr=W>?w|p zqCv*+42X0^?Irdu`U(tg<5Gsr!rjX^vY5P%-iGu0xKM zL_lPPB%n)~_^7(Ydhh=fQzG$4@6hQm9r4)EhJet$t>P9bZVg#AXzUQWc8VmK$ zn?;IZhKg+G_-6&uG+4$Gm%oW$k0xtB`E`g0wTUaIQpHe>SQ3sTDICJ|idYAWL5}!p z)7KF9nsRdyX%)E-u`?D4OQni9)GpNoLo3PJL>HZ#Ir3eMjj4SQlM-Mvu)4(lr`mE@ z7ouY&=7$u+VQU{>7FB%kqc|~k0I)i{vzoKfE&fCc?|RGnqL^;V)DRQbu~DS4Y4)}8 zxr!k zjjjj}AsrXYLM$iqQ-ZfG#K2;6?XMb6b^pIr!WD)^J0CI`hnLAMB{V)UDt(F)=o^W| zO%KVd6(UZ5KJfs_LU38yl^jCp44Qb735)-BdozUN-7(Ci+BYPY2x z4RSoE?mUtc=g+_PD;B3hv569`w9d6josTgHn@0*II^~L!Lz07uK5}wsUx*}}I6+_@ zL3w=>7np;zJX>3BZr*XP@am|pH(jz}TzCq{YzW5j4$h*f{jS>hamJ?_odY!cFR%c= zR;sAv)7me10AEuP&;D5$@;i;f`5Q7gY>Ie}db3b*Dp!hEO0s>HeXghBThyQ;jd0?w z;4WUX(OJe|Hr*o^IHZ7lksfj&ylS%^Ib^|TJDN!Gt{Fu~gwaZ$@&1{U5pz2RBv4j7 zx))wza`5jA>}!$k7+i|qmFK*oosj_eX}^Fn45Rk36AK9E)Qk8YiGOIyFHD^M9T}+F zus8#--|E5Yh+~v^n;kl7Y#;B~V(r_y+`H3hF9pvoGgqy)(T>Y`{$m@$bbe4;>ccSG zyT{9~{n1GcBkDU_ZCDe;JvxAph<5ngx~GJe41P%ehck*6zpf3>U6@jV zv)+>{r)R8o8DDO`w0Uh5nfjx92K6!de@O)8TTq$h9t*{!QmoDdp*anXR>KHvf*sZ{ zismhMX}1OwzKPqqin3x{AbA(1JsQU&0v#L0{vepHN;Dyn5G{9sIp7pKbOs8iig+<) zAN7I{t+}VRQp6{eEX3aAU($5bDpZQJMUJagVgoF8OdSI&K@q#dSaDK`&*Y{JMURNl z5p9<^280f$Bo8X9A+hSNtg8m~+PvJGAm2?XK*8ILfqUsj1DclZT@u6XaWhovltCr7 zX>xm(;xv~V$$`h6*Hi5f2bbY{9X(P{ad!|PLoS_@C*#4NhVVPc?A4qq{z#+gAOD}g zg_-HDmhjZ(KeHek5ZFPyTtFzalve1LwzYyG_0S0vfv%-FkKL+dluf|3}gaVFf2 z)0)UoajB;@j2h1ujm75{wnYTZC@Pj>Ni3Mnu9r~7Yu>1b0a zswI#3?N8eeRtN&s^4torSW)TcqU}wXzs}Y#Yv=l+okVYXrr}+q>oa9o7Tu3T5t1c^ z>%r9BWTxCps`fP={$R?kn!96aXNmXNs{3bpnY_B(uGG}E!c=O7{uc^Q zJ5)ckNn5y*cP##Ua6C_75hiu9*prX4htGXOL{$TgBKp(N@CzHp0y;@sfLlSlnREJ> zR84uC<6b#kvha&L@3;Un7;Y+M%}wdrM&gTFke&FKSpUca3V!U&6yfGy*qZToVZLiS z03?qQWCkv_Ni==*>_u)X-3JunYI{%f=lc^w2vdqlwx78M(FPbr;&?+Or2hn9DS-rl zy}`V~jtwonKdKYj{I%1+H^fJ1y9|S5uSS?Wzx4+;l|fmE6RosK)E2uogfuiXwERGj zrCTCy4ty~TzKrZien&9R!V31sy_WB(w?*Mqy841mXgwlbN<`CEr1rZh*PzXcZBkI& zLhheaF%34?VLuum#)WMkowG%3rY(3&3w;}#@|js-uuOnFCOMn%sx1~iX$VmA`+}4u zH9XI2oeCh_g&Mg%S-=Np&u-07W9w^wY=E0!AcE&Z(*FrUlE!A}1Ggu)0OD%K$$hhL zd4mQEXlg8mxMr{VwvJ~DdNA*J>fUPJsa9Nr@IB(XbOOjFw9XB~hyxqTo=QpTa000} zJKH4I^q%MhYZssMQU3&uYhN}{4|>$|ycFl4tdeXRIg-&cXRuGYAxwtY$#ECL2(WX% zaVIpKQsq&-g~A^8Mx2cGQNwJ0*BZXNEyx8tSnNbF7Nu2btAJ5dA03ArWyD7#z9q|7euk%RwRG5ad;95>4K|Tm)IACPu=U%u$R<&Pz29bn6>3)GSR+4rECB*v8 zgCr*xir_5{l9Y#$+McFo+~;fw#_2{SWd zj#TRy+tqylX6lkA2k)8r``TsPLe*{Rv-Q)ihztuQPuQ^O02!1meIl{!F8|*54{iKFgx6PR;RCMJ56U$LhUcDEd9Ns zW$Q?vD@(~s1;$;2i^I4=e)A@X@es7?zp*7$B0BcI^(6te@v>-|Q`CNpN(^`f#iZF8 zFa3Av#;T12#2uOUlc-kdCI(gN7NGUK+`B+3`qCE~7v8k|9!(Z-zXyMi+o_=PtGiC9IUCz8z* znM{O~wv>2?(QkTa5w$TY>!;$Nid&T@Rup+oKcLmCo$=alr$g=^SA%(8^$ze(XDc*EcWEEivNlfM1oO}51t?Bc9xD9dF?HdCU%!YtRq@M{kdmv z0O;LiZ;rAEA75DUYvb5m1Gx@H<4dtAmlAKFWmNfGb=H(|ekfP=WEE`XKcT3|{|!Yo zX&TVkU$8w+|E42;K!)+~^U4Dkg!}Id!{|oRcaFOxe^FgRm;|eo6t$g~H<_T=qj5p> zI+V)-#mzwRM#hV>P#&rbh;YSmbB00XkZLg&=M5Y7u$1gyYo&pJ=o};8OA99b;nLFg zDcp>`1jA#@LzL$e61z%x!HcC?)+RYUXEp2U$4N8sFJEqnzew2UP2qFoBKT#Fp2=$i zIAoX*l4y4+`7bq&LELKUD3w@2Z<_aK0r56^ZTG!@DUj-KwpecpaxQR$ntZV7;(rIC zlq#B=mmLY&1*6lzfh?Y%=pvi~QHcKX;p_hnG%eajV9OzUzbVX$wz@u(wsqLUUdk44 zSv9!Dg`-sQ#+>s#86+9P^9m`mgL$D;ZS8;F?^Fe*G~JcOG4*xAFTnu2{y=9)+e#H= zh?4N9M;?}B7CX6GbdSf~NTo3Kw3!=~`3{q+Zn#OKz8tZ3v1-TWI}1fBoi2|Ws8rIc zZe~wCG=*83w=H9_A)hL_GyfHeRU}M}W|2~{sF8Mc4@eOSp6%{5`ZLQJ;h_-zUw(Y( zGq)#~GMii&*4mO7qVlCQ$Ee{}36%Gj1!)5$AT`)s1Cm77b0x9W~Z^lp(N_VDPT6s_=V(5N^uXZ&LNh%Uo3)?+t7 zTHd_kMZ9AHCsRxe#hH(7mLP{?97tPPscT(geZ1h)Pff>E&lk^JrxM33J(UE)klfLq zS2}(@6jI%O#YlomK}y~`8pw9%_hi?FJJ>Wn(WZ3r#F;>PNEE?SREM~m#oP6hD=Xc_ zRaZb{xrRVCO}XqK56_{QyO&|&YzPTUy4W!vCElz%`LoNp5R@u9^=jh}8syf3u;+bG zQ6mDH!DL%LYnNzjw*!kZ6$4$d%MgEYmzO@B!JyYD!NsH~h%*vP6mgAdo+>y;rDI~_ zs$WAiT^8U46|Pia7ZEYN2BQ=`l>naQ=F&8Me%|)c8r31f#HKW^!h0oN%nPdog_81G z5CGpZXU?3efUwXXk5xl)Q%ZBpqNJ)^P_{O+=5i>YnL%NG8m3>OL1^}NS`MX=L`2j#|`H4oO1@+m>4RR@h&;6gGGpi zc*t&i!3&kxb*|Rds-)BAqIQWA(uhgTRg-KU-c51kCHr^vF40zR67k#geXM=*4N+rl zVZ-jz_C|tTNr1(zBnKEnPsKOKxE{cOClt4Edm^lfPa5BY_Uc7~l|%A%gWU3y#%6kY zdSUSD1lj^Em{1T7f>l*XaPB+*v_eRCU7}eCMK5zpr6eK>X_rn1q*uhlhGP7#m9N(;vrHMvh9A~3fETApESNHGghswCi?DzP6Z zk)5Ps8J!8~|9$d;6k+H-tj{0l7mhWzMcYDonq_l{dP`lRCtRP><1aUmd^>igm?gKz zeB~?0!cav#~W@JeFpU8L@!rO)FkI#p4PfSV~dlu$GC13e+3l`olO1T#;(V}-kD&#ZVsP{_Pc zVIujp8t^D zVDdmnKvJGcgGjZEb08>`6ktrXoQu=^%BaR3AZYvYZ4H?UH2+t%=L!{e!>GoyagLW- zfr-wyX?TMonm6a?^WR~b5gPBgNTl}13}%WH{Exm6pC8Fscj#2iQ%T0IW|%#M9i!3o zdIKAI6tMup?>Ip(1Sw#$!f#{on@P=FLt_!^^)XGY94tg-f@G7l}iMrqFLKE zRQu87YUF=wFNo3ny&esA`YYpCVmF0M)8P8j0re^=|K&yp95@8|=xb%hrEs~s=vs+u z=tbBwGCU@Dw1kO)&%$jV74RJ6nF5APOL8 zF8Pt}%cu{l7nY1o43DV~l>c-~Hul?WzX?o53_8pqj!@sNw;HLBqfNJbebEwrU_vxbTcxtzj(h3V^lm>C=NH zXQh2+6IUyMl(JOp**4o`iBDnG)8R4uNvBEBx{<%!W&i5s%`WCqI#E^-N`KeL(NlBGO*rVGh%BrRv&;Q!W?RQ4s3_LJ)oUz-Pe|^&-d0qTB z9cCYGzV7>2ysbfR5GuZ%SQX zHrKY)>1;*vCW97Omr7re7N4TvC>-&Ylst$C&{u?4+F3UZYolE&QdN)=ehi6r9e z>$J$Cvkyv{ND!`MIz?O=x0xw~$Ab@-T6-me@yc~i-4uB#%BK0!9i#I75=L4@9Z!9; zD1&)rMSLz&3KP@wf6q_Vh`lAv$W7bXil_8$|DD?CrfEPnv@vbcwlN$GrHYH7lf$zk zLa`9EhKZevGc(>aJ;APp`mgqw$KFp$4yB5Hvo;_sZKz(KUcJ(fSL;HbQ+tELtjRWv zc|B)MRC(${NR~XX5b3$HCc%cONZrF6_V{sjj1N~$&|H9oz~K7DLpyExi{$Cnmg$S7g$=~O4*$V zEBK;HK?17hvkGW-^{FNrw!>JKM3{m#$8XE%x~;>(I(MVLoKgAqo>DkB>T+`Ems#_M zB$1zVQv!FNN?L$gbpG62dk{S4QtyX9I9?r1Hdo2`>xE9nqE_otIy6SuU^G0esBdx5vu93lQmBPFFVeZ+y zXtm$5bhYCfHSM%B#3`rG$Y+N)mTns0)CEN3{ zD-z2K?2MU-ajay!qyo`-r+%Puvwav^qj=IXz#L{eW5+2`DXE)8LTzsbE`N`#>;lr0(7p%S&d7yN@ z;T*6xvs2L*FFN@+3i}EH ztfd=&_n($-H;XjgTasJh7z$c7v5etqD=Cp>ERP!_kz#BJ25f2u{Ft+KXGfR(Bx6X% z07{bLbr^aD8GSn+W|t!@UxpQeb4Qm4S+2I)k>IRrBNKYkbW>U-&z!XSbn(;shu$8j ztx36;-f;nBr@dqK`Q)C17`Wr+KQy$@t4G_+EiB5oZgYi65Df~Oi+Vr;pMU-%StRWp zfBYS|)^JOpHt;0UY`Y~qD`~Qk+n=WKhj65Vpmsx&Hw6nHWb%M4L-2P%9w?J~G|q&r zNq##`A+$>y!~BWA&0syt4jzSSw1Y+ zcv@B9A)r$MBqg>@bkyM{Bh8w&9mA6#-HsZq$3fJV_al@?@4A;K)C(@g@xtYT!7%O` zWQThzTc@O^rnVjRcQ(d_9fTwS%Z?sh;*<8^4qSin8#ZMFO5SqT-uY}4wVNV+S=i&% zd0@b|z|Dlq{}5{2gYe9X(IU`pO`f-cqbWNT`1CLhEKhkv# zLrtZINOc{Z6;FlOdjIgn>8_H=adVeRBj8P3)Sex6d=$jW(^)Rn!Z~pfVjEGrJtGi3 za4|a@&OXg10Sk)J#iX_rt)yiDFI6z(Jc(az25Qm>ymiF)_TQj8jl~wuGIdMYcu*MX z!ym34zY%-)`#JP42IvpA{f_KseQh;(PYyio%p>_j(SZmO0%492rwa~d-8wL|Peg{T z5fw|-FDn|ktzONXRRXw9+Tub`RV#RPCfOacUQLui0inB2X5jCK&q+-SU%l_XLelC4 z?b)i75SKk;kW!K9p$a}(r**%zY7f#RN(j$>E*#5$_t8K(2Db!?D|uOZi#e8h(kB-@ z&id}O;ZS1FJ^J^{;*9Dq5*ukexG#4Hc5z`zuOz-pqH)60c7edj42`t@TD?TyHeT?z zhi2=*B@K)>8N$sGpHq8i_(W8H)sh^!$D$JV5gsKP8W)aYpVA`+C#&J3Dz{lWbye5O zSYI#WD!WN(ePzao5Bzj;l+DRtX27(*Nv}|3@`gLsja$%C<;$m=k3b=3zCt;P4S(-( zn|AM!)QtVTkjM8XEt9UH^!CTM82M(VR&FFI;rJmGg&tm20%HHgPq1}rQ0VCEhlhtt(jVKxAF`N-v6a&21wutR+F4c8rA^L- z)aGj(%wlhiZ}7mIiJd2Z8B=%X634u>5R)TIHO9J2i$l_L>uZ{J+0yJh@`O)Oczeqy zJlg;D<(Bb)LS2UD$6a&FxWo4XxsSW1;np4Vu>?Vj!A7O^dV3vz(bnuekAs4mJ=b&n zr}v7G$83W*(yCB)#~9gJl1n<}YG?IY&$zLh=G=8h{?6Cur)tfis<)O2aJs@LgM#|K z`NMmgocUkxReljWeI>x1+KwK_?$)DlR*P*B@Sa#e%ZvdGu^EI>M#$IU{UtM#X=ud$>(@dSwZ=TgKtj10jq!1~%c575YpfpoB zO}!Tn)^NMrr+@!jVoxpzj<6cu?1#1Q`H_ZchioY+M^@ZhDh%D%kz8j|1JksRYc;9U zF7a@e=@vTLVM!e*v&?1Q_y6(s-f>l(>Dur%o|uV=nn|qKqS>N?Xe@w;fYGSgDt17M zfI)#!G=gBEW{hzris;4)A}S~%9RviVXkq~bM5Q+kP2GqJ0@B~>T9`A5o6I@C_xFAu zesnK(LRs}_PWhO7fb##DCc;J(SpUy z1Jd)j-CpD{C!wA6z^>y1a8OY~hPNFpUuWHJ7?&K_K5>XSodT4@5GV~aGLGr_$?7DA zuuH4a!Mg^=IaxR%7~R>5R9gii5y0$(-&=zVbep8L1c)d_5#j44NMMn#4$TbLZQ);4h#&vNlybQHn<@tOODSlGu6>S>D{Y|r&#QF z+=4DGFB|)e?$Ku+!y_$eY`t}LG$)7cg`G7y7EGBHLLLA88mwM6@ZCL36n`w~r!Xf$ zVm9ha^YkT!X~^O8x;1#-le6uuV90f)VHgVQUXSK|g_NMlpavOs=C`+Im%!37dNc<*q()4pD7+B}vgI$Z@l*K(i`vfId^zPhoc5+x1ZofqWUit*p0??N9G<_<*PLmi4^0Kao- z2L(DVKo4ghDfH}NWXd1EiWc)26mTYLzInP+R*#56Rp1d6=la;5K?5t1LQydt7m$UA z)f?^D!pP_s~7kt%6tzvfw4H2=!r)TizHe(xMT?Ia#Z4FwU zi&z$d-3vdedJI+XFcHunO70N9)IiIQZ6$GI3*kBfffRCi)v}|Y;vBhru0AOBqLjfJ zZ(zy=cJN_5&lX%C_P^;H=BVLdE(6+2izMw?Vqp(}zu6KIIjlZWp2s%2{g=5x3$bIg z%#k$U2Vvm}XZgTe9)EwQs7W8(0F6opGzBM6xVH=O0PsG8J$--008vy`5~zSiz+*Gv zrA$`~*M#TD-Y7DJNw7#~xJM0o&SJSDrRX}_N`s9~df1(h(Hlo6A7o|JLl9xR_X>N@ zH|UCUKb(B}Fe=QgvA(p%0oP2)euisw{j`s_{>?6G{Aa_qTejnYu0;CL^s5V+W{W(% zXJUyHT6tT-#lbz(mSwhe?|LlnfN64-ocUxF`A6^>Q1zf`JN^BQ59vAly>9EhSLd(F zwIld$@%z!qxwa-(GAINA$WrVt5T;V`s2e7^izt*RP{NPg zn>0SvG|^!TqbbJhdh~-|S=BGCDTD;Ebeag0(&`60dwD19mG)6B0FyExaHoln{W1X# zn7l{(V?tgt!(<)+R%HM^x3WWXfBPpBOv*1?0b8t}_cLGt+mGHI;q6(z6c>U=4IVo> z&-Rf|Rmb1bBN`~3JF;}#DF`7{eLHT$3`%AnA&xmzTaIzKGr=(W+r@l6xjjRnqk+6l z@(%TpW!08xja%IfR%Ee48ww*Ox_~>$HLr+W{N$O+U#@5q{!9F9a9 zW%gpk-IS^Ak@DSHA@}YK+zJm6QY&%7wEt)(iVF2Z0+5t-%W^7K5CKDHEJErf(y8k% zK8)02-G=qgAIWxr5@)ssZG4K^B~{Rsu0%}%Tr?&_>lq6>0k}imNxzSz5yfa>ZZ4I| zg6c)kH~?0`u*Z2i2*n(oZ-eJ7-3*K>v8$yt7CIea`PSPL6J+3;fTi0?a*#kaZ0#uQDCMIQPx8k=cG2*j9IocdY zzXNVf;Pnzzom&ub(>&^J$_pqsCBT;5cj|D&*N>C$kZ|SZE*qexUYaulQdA#Dr|fSN zZjW=ywo;EenZw;0_2RPGzc3U&wf}>PBQ2WQZ5G39m36S zkMq{)-nA7ZCGj`vwSh$Xvwqx+1&~nY3$#L1wgntn-G!n)Oj)3Cb^@R&@2wT8rbl=X~<#<>$F- zbst+D5qYX+=nG%sh;@)dKfr4Q_<#>FbHJUZRc$v&i2Fd@uOTQ!qdw{vLY~~}it(by z;09Wv@sdd4r{SZjtk;tE*qSGAk_8XC&9(c*p}7;WacqlffEytb=uo-&^HuJRKIl`v z4XhgvbG2|hRs6zN$M9yKaEBHNH8k~BjICoEfG^^cNKR`6UtXa86UIGm?yl_V@L+lt zJ?LWEF(@#^1~waGDOO0!pwVTiPErKr?=}Z-koa}f0isrywOap-(~H8XHmEiHh!U~& zf`yMeK~P=^?b4_zS3ukN0Khp8?pf?sczlsEF@96c71Ifq#TNHDd{H z!jRLf7TLBven&2!GA%NgY!?gK0r6AgGyo0G0vwOEv+aOQ0W?zvv?zsNj*jbCfvf;5 zXI&}TE0S9cyPXx28(aS_QezyH#v{-E^tVuWES%o)$x=DcTco|4I(D=ir@+mHU4O$a zikTuzh;e|ykv^T3TvD&-deaq zlzu22^gQb?-h2Q#7lOW4R>US!Sev%z&uda-{z3dEi+rJbP|v4vftQlnuN0r(4~-es za#?sbgkY!@WX}|lSnI1;=mESqL8-E!Ar>wZCf$&1g)IXEhN0>ro<$Y`D%19_8~ceg zFTxEbgt!oI0{}8?9x%0ZXFYj%B1!|Cj?6DI#)%4>TJ*>QMTSF>rb?uzd9eQFy0JCu zFk*-x{~LeoE`-|y$0labV8FaK@S$PjHDzJ3h-i_n@SPLlnF0LgE3_OWS(t^e?+_Mz zRQY!c0Q3FvD}7~TgvN7Fn+{k9mIz{Lc7#8G%bHFmzD*FjH~?2T1PH=1P!+MP`4m>7 z3d$n3P5uD5uT2yrlNWHeY#qwB-@ZWF0BsB+aAWiAbjv*~tcpx{1XCx&cb>a|-~pzn z2vyl$C&p~}h(U`v<8?~PGva}SencuJaIR2Oc5nY}fas5RftAOQSAUvBcnN%VWF%1Q zR4B?+odV$2*bL%P10~c0)VA%akSm+vF3*NA2pbso0C2+N*^Iv>poa^nma{w^oO}@A zFNySK-KETW0lg>m`;3DiqHB0<*LKV}KZ!-R1()Jw^YM7?`Luo$C?)6t*@GE|l&#ZA z1I9uT9zC%P$v|N~A2l56R=f4K%Udd6e(Yz9H>oYyqdm9`E3vJzr>l~Q6$}O@&w*t#qjBgGoW$wJ6cmkApvzn1X&o8Aq3hWT?dkNSHFiI(1_we_y9*y z^Ob=Iv$3&3q=vVhPm0LXpR+mc#WX#uNme=(zWd}7!~?&^6g6Stv~_b=U=tU^f%9~H$d zm>S~@{3k}Y1(5RZD2d351eP?P`- zN+M86V&Prd0s@j4?7Z!5Ks+W(Xk`|nEOE3yK>h(R z8XfE37e;7=WGm>L!CJ5H3DOUozx?y!45(dA)98(tfZLXOhZ!0hmp+Ot&17gP9`!}E z6KoXF6&FAH*jUz!_E_Hd9qmbPcut`h2s$4qzJyjd-MJ~x<5OX}*dKNX%_B**=l`$a zo+1-^k)+j8zYH$5j=)Bq>>dV55#JqTESyG1<6)N#=kwMz7j?NQ?3H0-S8PkON{*|5 z#z&k1jX<7t#MZE_gG5m-Z$Wa}80x@ZY{HAa?#VZ}*isXDs5||Zun^qJb~UyR_;$R$ zv2n){moSsWn7j?R(Xz@B!-lE)MusMCdXD?28)2UbP;8T}+tuA${gWA^&Xn}X3>Q=_W8|lP{DEKioXF%bPIC`x#|Bkfy*91@xYN5(dRTtjfCwL>-y z9TFONx8S@qgrLYB9eNGk-7bC*@brasM(DK^^Iet6qiP zirzjn?6vSEc*MS~PftMc&n0l`A7iV|^_ z%Ok&Q0kG7HOmiS@UwPWGOGLkgWLDZP zXrCnDOJ^mG!KhU;Gyq!DDnq{IJM>ier6cOQ;Fy@k&x$?Pp<(t$eKM7(45)|)C@RP! z(t^hF2Bp5*yxWK%JdCrq`cmMbOo9iP8A_awgfq@lAFh#AKvWgV2(R)76@w|_yiy)< zHf#OFBR1|>Ly!&!?H25igKGKL07_6{0n^7_q7dj25jeWTuig=wAf}K}jW{~o1OFtr zG6oOIujl)Ip5-^72cVFJZu{OUO80*S8P+GE?C=T7@cJ>~*Z)aDP^$GyPC6>;?p5gR zsj?h{fFfd?0(E3JyN^C4D%>BzNX0nL)&dUG(bv;E_SOj_)P8#Czl8KK_%kyAN*g?x z%YE{o9N(5cJs3@UBEo-WL69`f^x9l1+VNaSxO>^XVx$e$cpe~LgvWL>;Cwx8i;or z$bm!(6au(o`cW;6^qGZ-EE5)n^{ljI?>4qLr9LAlMVBUjQ13~5M84nj9Gg#>D|~$F zBb8^&=qc);IKv=FB_{eVL>t^M1TQx#_JFp#R`FLGj-T0Sk-O8v!uVU<&Ql076at(^ zVXTsV;eUyo&A3hkAsluA0@lKdIY%PD`qB?QG3#kIMBvE>U?8nbm-m%hdI)%MIUU=(#!}=iK zm%hdh?_TYS4uA5|&82PM*CIZWsK4-1gEe4r4BpeE>0euli<-KwTBU06@MKIQwO-IR zOT~1n(PGDJ4eSTTDIbWUI*9xbYhuVE4^o7bt`_Pozi@d(*xZpB&KP5IZ>IAo++<3n zrXzz;oPoP-@aXH(TUb@>PpOw^w&0czBZ`zn%$K7?QLzjT|I-%Z8`Q^#wZ*IvZHned z2ZP-RW}OS^twZM2;A)^N_EGTw0%;Dw1hhQL7M}veXI8o;wjO|%y3zq&TV)j(qoS^1 zP@ckXwRptFqaauF)u$N)X;)lv@-XgDuNv`y<_HuukVo9Fo!QuAtSIqXFg)NKI@p$T>AxF&LW- zwACS|6}|UZ+N(!*x?pN$`k_BU+}%1Y4Re--K3g%qb>qi35B6Vn;MRnH%=KJrdTRUvtFzez>Gl^{WeGC!U`{Q134C+_{{ zl)cO5e7g6u&nFIl*t4i7v?OL=&`8%|5w_tw!&~dS>fIU~o%3U)LwW~Kip+NLRRzIg zyt@mSq+m_Oia0^3He8F}NSV(BuR=C34JF%3^s+>W`DWNBlpn`2Zr9{W_64Z9lHYmE z6Pw4J1+b$=hJ>$(suRtE%J#DA?iARaX2a`|DKqPOW+3dI;2<*VSeP>O4{LHVv~xYt zhQ-Vp6EoXJ={Bp+BVR1l4>88v28KbPO_;?6@8x3e-D>QoMNkwcmMVGnI5(axXdY{+ z^<=DHD0-%0^f^}J{9DXojir!qKB;BJ_jsgW3;yHRquKg-Cozfc90v>#>LO$-p)E2q ziFxGA@`dc1jzgLySO)-lq@jqgfkX-*MlXVt-Z9xgke{mVHV!CXYoT3?uq%W5t%yoV z1ZA#bbxT)G^_?RmrehH@1NFwml5xDdRQBP7AXX!h0;alvS3p1!Fq;P&9&L#f$WPZohD1z zy4n;g-BPjvh4(AjPMmOGpaAYYN3$==wH*P=N88pLJ=g^czKJ`acYTB2+CRT#Es6o2@qZc`P$e{mS0*8X#XxX2GE}b<7YobRV`(y z9vZ(C2#CYIuRgeN_3B)dDyyWf08IG%Eg0;@v3gL4Y?W5yc7@KoeY?__>M5X+mT*=P zBIIG0nM6kz+}QyRMVt0Rgf*4&4HiJ+4CKJ6x1TPp>MF3z#njrFk{FC(Fet6_>_7O@ z+Ww-b3%}!sNOYPaR2JE5BjxB%b6X*M0XlEx(LW$UcN)-H3V&_pTz6{8oQXS<((5TO!aqZ>8I49a8${meUD^-e{aCEJdq6-K! z+IVxr;z6SH;~dM#k{>OiCBkO}DaXqYIpxzM$EQAnOkqv89kWV^1YlK8|1OO_JbeZI z7p_Fm)d7iDEZ))dP>epQS#6n_-uCUUEb}qseN&(#CjMR8ehsVA&)>q)ua<&B5(p#; zY6+T>cp?o0HlUG>;n+gK}<#!}x(N$({WykS}b==Wn6K%APwnNpc$EaMHaWa21s=bnLu zoSp0565Crz2W9tI-TmV}ga3Zy_zW*0XHRik!n>nLQwZM~aR|mKY$?Z_n*cHSY$o19 zxT8(HhISihyV+^R#DhbZ#6UM-ez-md!p5Mp6eVP!?A>!!Wt6+}4pBA;T;tbp)BNgMfcOOHVaxgbQ%I%tMaBsu2w%KFlyFgT` zIrxxkG5yJLYP9IJG})F2+%WTL^ghCWoaEBX?6#qOGB__L1#bkbz}3f<{= zG`sw2-EgGy6F~r+oXJcF1N-{e0!Y4@xVgwzh+f_-gf)wo#vluFG`&yc(mZ*7$&rE2Dw6PS%`9BX7^C_zAvs!NCv7fKBt>7XsoNzB0%ryT+d8ly&a1E>)j z1?v@MiKLDA*RZq^@8LQb_yQdx2~WFhWIroM+(Fd#Q7l4keFPM|)GJP+$q`GK`(Kq5 z?v|$Nm2a6#6(aJbnD`aC#Sim~e31%(z=G|5DU(I!b@AX)g5XXiN4?I})Kus+N9(O` z@Q8b7HNG5$HZl|Ni4X34;jTf(78K8bOQVvFpF$#~fuyp%Ai;sv69DgN-`~g`k>)Lm za^f2YjDwax#&q^-sg^j&3)IYwHBd@YkWd3pL&%t9Y~c4%Js=+}R_KlMHtipKoHT?m z%0$pc1VPHI`I8~rF;R#HdgHz9GJaAr6$w(yNzdR6xR&#aW9{I-} zr7{-vD9YjGAY;YKEp)V3@U8M zh9i4)hR}(NCH``kh!0b=hI7gY<05HY|H%~mFNswCd8X$u5|3LbB;cZSwVl|KgYYXl zw6P%v2%O)7pMd~n$?JgpsRKIqg~;!FxB!Bn+~X}Vv!L(nBo7NZHzu$M4Lt;NQ9hyTL#%n+n8LFp1a2z)=YXT#+1i1dPXIGYd-gN=kR4Nk82Cch`r z<_s{h__!p1DJbCu-M{nd_1L3KpS+`3z>=&2fWC(cnL2PNnLrzlvOI>M^jXO*EG`@LaUX0c3kO&&jG9AnPQ;4m*23HGiEPeZpXAzY{RyZHi#~6n z1qxg!A-bh_3c;P zSZzawufl@UAw1sgyYu}s|(hC+|87-4i6-(O#_g2oAM=)nxLD6*qn6_#T3d<=dBDbQ$e?2PrJ(1^g=JN?l zXv9C|w!!of`fQUxj#FHycZ<1Sh&`Lga9_v<9Z`kX0bZHDdKriojI+GKm~vhj3BiYv zW;z^v1vf2^JuB?I`wm?#?iG4oxhb=0=Z4MllBP4-lb~WPvTQ9sN+}1yZh;;|^d2ty z4%BLXczbKG(WnyFXaYYvV%~I7)MwOkH&F=1vI4lou|!m`^m~#S!Ct_*FRWDX*`}^8 zxgm&}kxvEb+-4l&++#_~vco^o!N#2i9#FGu?Hf3uhq^vmkf}{&dI``?*W~J=;dsT@ zJpsDmdfhG{E#}=FOuIj|)>2^}5x!*;x_R8FovUCyZo-GCL5XvRz$(496i@!}fL>0< zKoD%B^$(RL3SV_^?RIO357Rj1Lr8f5$W}|z5mT;DgL%}Aq3 z%|VGkwD{SmnNTRS52sduSQt$QYzR2+@eE?4Sd24^hPxqOS+d3$L;3*HCzz1zo89_h zUf#k!7B+eBY#xf#Ot3>Bu)!cIrpmI=5$cjzf*}a~#+dKZ`|U=CE64Z9(Ejrf|nEs(mY=%&b7&7!C8hRxC(iIXVK>HFBbi z`3X7HE+A>^I!c(t`8oC$R%`tn15i?Pb)YbwO^TN~g1j+Qz+f#(#XvslmdI?H2FKT) z*52I`;5y!~J@I`UN%BlZ(YZ1BeC!4AK-ZyqNq3%uk*;(|3Og^7=O&TGrSul)5o^n-_@P%bkFdSjon;B}t(}$%rfsO#=wWb-i%J3?%#l_;c zkEsRdhNWzayXYfi$WcjI%@>DC7B*vyPC_Ym3|UBZeCdd#+U>}tG?rWuu_n9#TcErV zkgw&-)f2Y@OCU+v2%1K?D!^oZEX!|?aa;V%5UX^F8~Z-QUu2ul6Z;t;bjwi!pr4=0W;hd zDY%}61KI?a%bks*oan#EOoGD9hP(AqK<}yI_hA!;(QdRN9*C#OwpX8cslz%{z~G96>%@ z{=q0pEp=Kam*cgP5EIZXu+K=;fpQP_V{D^-$1VUmY{TdD1xu??XNy(Z!c{s2 zwf6M$|6^<)N0|_+%uODA7Y^eXJmn3@n8=1=Y+7B5m+p*K#^%BVdpk1}7@E zax4+sW-*=VY>qP%sg{H^S0Hw=3TptaeFIIFBe8q@MO|qpGL8(kbU_&4BZiu@^tE9m z?GTuAg&Gs`pn9L`9))}?U?fH- zLP%Fg*?Rby#7?T~hQ>)zKu(QnN>Bbz>$Q$%93aylq4q9X$L~|&EiD`JGYD^D;i;hZ2kkFXg*aDARhqVLfB+ZNvY(Cl?8_h z>5b-SNv^QKL-Q_|l<|p(drBWUSuo>j4)n5_8`zXGM@iECqRah0jgU4L_?z(uPDRTeI+lEtZgv zFkhbY^a1xHwG(~pM{ETo3^3yH{r<}S_|QnGE4!RT(2RQ|w%g-GPK$9&U(ToBL2@52 zQFf96KCO_Mgrkx*h!?b-qY+V3Qk^<1TUX~hY^y}NL8c@bwrOvL=m}sd_$xfRVx17c z=LN0H)XF!RnK z$2Jr%6kJA)<)CFrBdRkfiChCY@Xo-P0>^5;?C>`oB@qI(d6D9a=xEEZfE|#kh$Sc` zuT1h@ugtO<7^n}+5N4V%Bmo3YEy8)7m<+jUV_LM;9zH@b&NP`?c5=8~Mk2X4iIkQS zKPPYcKd~^r0b-ai??u6x&wvyt%l9yvK~RTbP)RV*2hZncg$4_4VZKc{Hc|*M>X;zS zOjy=!UIiFQIZrYRoNIPT2c`=!(SX8w6d(_k4D8E=iRIj^z^V%U8M0T1D1V3jc1t;E zC>xU=WK<>IdL`h);9H}-KHE0h*r9>qAt}`p2#3iJE`S84XD59YPa2k#1@S2heEGmwxnaX@ZFrNxL|2GVtG+k_|d z;MV#%xAU(KM}&&JS{K&YsZ%px(bypS$rR%`DhVoM`$r)vj;H=)azjXRyqAZ!y@ zW*J(t4pG(UaHAZu7a_Zbb}J@I%>sj#sd#3zFfflD6}y5okDkuw+dQ)HstMaZ3``O! ztP7!;zBI-`{ET^ehLmCgRo0~FhG}Xf;;9M*+)IT6+F-TB`j{-K7$rkP}BIDULETGX0o)%}IZsRBnz{d7Y z`T&*e{t7D!7wmHk6+x9S6<7x`Ld_J&NtxsxV(s!eLssI;A$?A=_&m!dd{`G81~2qX zPaHp9%StA=q2twj4s*oou)*RMn)@11a?3HeC-h(>DiIRnl-TO)$7i@a2Z2GoJqj&T z`-t;jZPjf}MQh8(K%w;-8dyj4MO#pran3pO4fIPLZ~XWn>2Un97wZj^i3pRkeY}5s zYO$f3YR`8vZCza%YQ>2A6u zEdIqV;~wqzL@(R)`+!;F_wOA%ZwgNooEOy56b)X9QDPi-glZ*+4LZ&UD}=;kfKE6G zr0I&$XZN{Bw2$K-V5%`@dwJxb5nx$G4qkg1TsPfG%^+wwNI7Q3>O_ngT)wHUe zjTFaDQB#Klv4-3#hpYlfkHF8*^(#5!vX6R0{LCyg`V?PKHNpmq#~x&SwJdl6xZB!k zCtpBGsAh>^f0pp<3&3*CpxG_n&=L!5#p0Uo-dQUGnA7_Y^AGZIR`%O?rLE!bdJhth)feaIu4^o~5JsAzpeeB9nL=mt`zCnNQ$%=ww zws)Xfel%O2506@e6v2$Q1s<-j&!23KvX(w>;?ejT+E-%}jzS_5lgRMuuMwbaSacKn z0u;6QafOltk<67-zE==E@&Q(};mO~k9=vjaG{{j-7B4C~2l&CX7_bcn6`25Ad*t{8 ztg8~yLC>+iebhCPxEuf!Q}MYUS+IWsDr(eEysT@>@|b8@g@}a=j3;qGEPlh9JAw9r#S2h4caF zmKs9?#QhNMt~M2@Bq+yI;kt0Cr+*F#zWb1d(aij4_S(Mof`oVW0$k9e*?pW}zl5S| zM?W3e+bu;s=<8|%_OTlA*GynFlKmP<*R^z%ai1U!MF6NVe4Cpx0toH`OZsT+3<-0( z#5{n)3tfGG)=H=zS6bR~XT6`6x}GLJ1+_?$`*6yfh7GWE+84mp*2pRLknKYO3J?QI zyoiWz7kRFliNi!p(DJegy4qCpQ*T`TumG8f4VkDm7B#1}KEP&h^ytx{^Wab&dQ^TD ztUQNRz&8sgC>2m-GPG~rQn;sY;;{y`RcNLY4lA#!hdIEN4ud62n!69Q$eOfKC5Jtg)+EMDrzZic5XhUOMq?-!)PzI$dIbzxJ z=q8dBz9$E$<>qwHeoTGgI6Dq7WO#09jXNL&M-9l6SxO{3=T`W|IpS4eIrb8?Xr zp2bNR4CrUpz%j?JH(FFqbz(}b1romuHB#}x^wegUvRdiP}tQ3FK=EIp(9K@ZONb!z@zBT*oQ1UIaAah4k`^E`Bji@+$ zo;{Jv%2CnM0GPQX3=kRvKsbse(-)x67p!5>$vbj9DykTXl&&K@@$j$?1}qc3;ZaG! zK7h-IN)J#tI$nQ&1P1{evt{jzs%Z-_G-_dSG?-L1ML7&GaGpw^MHN>xs3cHYrP3-%}$r{M?Ol|M4a{11r~$9LhbjgN_rG^Tm2 z4uFiFfGufZDaSPAx45A_Xk?ZfWoneF5WNO#Zsv%_YMY+Dl%sm63xH$c@dLhde$Zs-ih?J{Q~M`mp@AIa~8KJGGUx>?wbuu*KrU7+b& zsgNU;B(orpqyu%8cH3qYP0)N{5_6N{`!YNUa-seFF8BT*1HzU>sdNx``07`utx-W^mI$4WCQ|pJA`?ojNb%o zcmbq6gIxq?ve9$e;KjtVLbJz$TF`^64;icSk~NXGGFppocwDJ-F3JxNP;IP-Tdt-Z zTWJpPK9k*US2=ZDPhz%MzO0I^<*eU4a;6Ddl*u2 zC`2u8m@`@$zSk`5*rLE9)ho8jb~&pH=~Tt}BwvMB?q%3cl+yy3!UE3}u~FK)py;6_ z#}ThFr)?MgwjyBtx~j5Om+y3CbgHU0GOBiMQ}OzPdJiEf$YCk^=P&c%-}ekh8+=gq zmQqeaU^T(WW+Co}u93`DQlXBZU!E8y-D;QX4KTQ_W)GxddJ#|u`HR~SK4PM>+}=i~ z0n1VsA->GrC&!L0Qv-%4wM0u7Y_NLLYIJB3jonJx5cYAxXdbjFw1I)tX!RJb(_%o3uCW7KjRDZCKvR#SA zGh~M>o=30AGrxjQscKqCIRUYKQgmpQFFUy6=juIUP9Vi!XsY>On2IW;L5@y+Q;NtI02yA1Rg)|30G(3#)r|i2(G2+%{ zeD%TDqd55#C3sEEWG*`qMe8_fqy__DsB?1KvJ>trd zx$nsO9*%=9DlWB^sTtUgrm^UOo;vg{EBKv8hOwJy}C_u=PeCQJ6q$G?DfG_ikC^3Z)PHgTo2@iWmc?!#@N#6Y^Ug zOvt1(mNPtO#T;EinLj$6S|nmmb+}=_e5QvtKwq~DH{~)&UMaz zBP`jC0vCzVxO2lb)?_jLihC1orgA;dJr$f9x-cR&K2fL6huzp`;P^~!m1W@_4FePz3AQ@at=wFwRn?tmK~oR{*uYfP|E=U1;o1~*#i zP7s$i4%=WrW`D~@5S?nv@@30>!zwESp#ypfhkoq17irtDr7%;XX$I!Lpm^BW$TVN( zGx(G+V-4>h|1amN(ErGgf!I1u&0{}BISGBTY`|#LAZfOA&o<%GTS9}*;j3r@fAz<& z_$y@K&+Z+(43^MXTMj>Wpj;5=#J1EnO9mfPC`i#Wd;m@Nm(SROUXZEV!pJPhg0pk1 zt*wh5jgt&qWXrpH4J?JO4Vtz{YG{!bh^QK-V?ef$sHjRjPN??xRR|Px-DKRbc>z7Z zcE95`6V^JmU;6R&2$H~SIJ~>e#-#tv*p?T08<2Q9cAe~71fTu+t4KkByyN55XtCqu zU?!_&gZOp)eewVm0qa(3OoG~C9d}r!Al#t?kWC#cJPt8MZc>^AiA?wJ-CI5K^N#Kb z8*N*kfV5&J1dVYL?^dQ-@KCPDN+RAXSg$B!*(7@Y7Pp)ZBUUgQI}F&xFdPleyYbVq zsM1OUZPY&68mvX}p$iHrmJq}40JD4&Mj4fiImEo6EQWA&O-$BT;YBaLJhQUz}W7<<{C-Br-7r67nal~nrJIya$zm!+iQ=p1sb zVD2>M<*%*BXm@<&rm){LTW)I!8ZuzfKg z<+v5vKNjk8rgAj^kd52Cv1`=)KC40c7sc^7!QRLqkdp-NE|<4E?Sp5_^Zl#qV$w%+a=Ts#;<1)!)2U8{PC zCPr#I;0LIOblsfcegwcucvBnJxi890$6ri`i|qO_;RtBK1*?>R|Ug%A@_RUld}wo7_e!(uOyB5YR0p`inT4cO|Pg~=~WzX0A@su<7%X%g|a z@sqw~=s6%Qv1IVvN1o8n|MrFd?Skm&G$?N4xAj?VxYk>Y&k_QTG4Y3{NFYp2;AQ9I zh|WZ3IB@T#+vt_Jcb`HW4x2_X?;7=!yj;|!tE46nuu(!u%M;$=h=kklC{Q-A(Az5y zEd;SNVRu;N`rBs&4VD}nd4#)4whfdvek_+5%Yf&^x1CcaNIG+0)^&9htsX;Lq7=5H z$c!XF1&gz;sBGY%5~zmgp%FCs2rl<%Gr5YN1%aoLU<}NS4>Tf-|P(^~%^l=B29zxJF5L>q8WF-lU za@dagv%7%T+=5n6{41C`q2r|MR=OEx6*@~CK+A630kMX8*3>?Bsc$bMx)$UAqR~rA zP-zVezzA>vS+E5n)Q?D&L`o|Je(U7S1D8=4kTVg|7T~&UL+HzK)@h-2S3&tP^HH&X z+bT@$V8l2CGhO<*{Q=T{DL0$Wb2uwYyiTkv?f!9VQykuS_9bC$+EPlTejz? zX7um6Y?j0s*lLQZOMteWzz?jUEQ5i`l)zA^HPEn9Cp{s$=cfukG1(WK3b7z+tzffN zsox2#;>&5f(9w*3jg~F_cwbB7=Ma28);@yh6mcoG(N&@a2N3MzC#JxaH675^>iE*F zS@04Q62E{uiXimwoGW=k0tFiO(>VgG)Q>>GV0ek+iP#cRwT!N98NhX)*_3=??^2YI zA}5l|J{)hMwA1m)Gk~28?Z44mH~{IKlNCF)tI++YL2D3`Bc^JL(IjpjWIP=+7mrOtcloG5ZwrgKfGf_WOe z{W8C;id~a)SyEF|i$F2-!~ud9OQ4%8Of)rynqd}#N^W>QBwV!{sdbbsAeOV5dT#DY zu=>vjNK42#mcgY*P_SrGe~3>d71O{vu+RgoEopR0U4^hpQszgeuJira!~RO|Cw;}O zNkT?sc+1w*wpwup#W>iH>L5DLn1R6_VqxS^bWBW zART+P>wtIX(1}!xP$aWre_P$ZOjGzErv<5m{<1hyJSejEH8a~njF}ZCQZ!EFow@7L zhbzut;A8zk3Q3?OrRbZ9#o`ReP4%vJqxcd_nBGJ0BuYU+N7?nlBdyrb@4m-#tD;W; zQ|m~@&~i<$Ct}h@85@0Rf|Qrs6U8V#VwCqSdvZ(fxdZ^46ZecMNsb3BsYVj}=g8*$ z@5axI>WdI2zRt|dtbU~E-fuWdR1M9Lfl2t|BN>T#YWSr=@$vCdm2+QT$y+`n<)|3E z_mg=Y=v<=v!h)-X8?cEC4d|nnG{7pR5=PiX&ZEFnlnohu zr5(GYdZ{hm^~WwKB4TA;RuOK_vV!cT8urV2;sQ1;BFrnH>26pH9nB1P6vWbrxo*=5 zt&&$kgEd5J+oBitt~w|h(VvtV7iwaW|NM)5t#dQ<(j^}HhuNmEK@eVcJ-qDD1(5Y* z>=41NYOYT@$5T}S`@3vz~FqK!t_QrHi&p!csR6j zs0Jibcrb&abc7*+fRZVw=*_LT+KnX}?r7a`tBeB@7^`8JwBtKx^izsftY0L)&v7en zKIn|ZRFOY_S#J`c!I02UWrt5iXSbiV6<*YePXdsBi2-V;N>Lj5qwpTj%9{#|U;rD~ zoJyaV@L={4b3h4$3Q=*+ST+CE*Bo^aem^abQboM_3_lVKLo|G#xU$o4r4tbtD$|UJ zln!gDL=Pp#GehMEUsK5w7aVffFkv+DD=&S!5Gs>;1`4h8A3lKR@E|bK>}uDVnQ?AR zP|4P!AKru(-6-NLH>dAGC6yP*RJOW0*lAy%%bi_Gf|1yOl z@!8mpxnHALv03}zO|A@0a>*qttfTnT_xtEWhoj}Y7!eTx2;%HbW0yzu(AVT`PMN?t zK@15`N}31M23k=)5(+fqGExk@ZE{{BHcTGeV}K)3;)P#2plG*37h`;(r^As97_;TM z3DyIt(~SrKjZP66kpQUJFF+AP5Bo=p9JfKwCeDD0^b{V}1?*Z>@+~QM!R@&SBR4rO z-x?SElWaU?{C=GWStaSA@x8aYUe2#}(;1{0S?ernlIo{mWWr^PhhmV(+!pKSs--6= zuqRQ=;A{NMNfIbwj{?%#AU-{S+xK?8eibhl0;$ zq7h||9AOcqjtvxQ04s1)i%E%xWy`(8ofvz~BU)!?(~06x9+ECL_oZFX9YHh>tUHRRi;_qtxUo zB$1T;HbiBs+}zxv1A+aiBNhl{!$$1OqVzpS`)KduA+VhI7Oum~5mhV?Nxe+__wLU3 z$InY{TNU+$vUY)on0?N-kf7kJXqwRoc|1Y*fuJKoA|pAE(+7v6gQHw`ZT-l56WgBm6J41mf9hUag>w~k z`OgrLJMZGy2VfQa1%jQdMDM}|=^bd)ND=dh(7eWxHDfelie{c&Y-?>j#hLG+{ETo> z1tQ>PQQt^e1$(WVR1021c`kf1Y{JY1;}7)=|5bh|wIVHbg%l8Bont_U$&m*Lw|PP7 zee@R#4nVYR!-s8jxUbj$I8h;C8$;#~UK4(eH|z_rD!}LB<6TS#Br^(&v7m$r3{2}G zdQ8t0sq5$})inrQ6JtD4`NTT+lebchm6p!bLRibw(u5aF=K(Sr#l}Kf&Hfh(Ikly8 z@W8jqFP^C5Sj%N#Q+YF0N^mSm#o#k-V;TT)<;{wAawEF{ubB4z1?5aRph1Y*KlD2S z2@#;}hJ41vQ9kd9(&PJh2jd8Mfrgan{Cc51dmE3Y#-neE!)Ye?MN1Bf` zc%a-D%zRXVFu6|r%l;v`L}iETOzd z^FlKwa~@bLBP74r%>dIhX>K1mCkbpT^OGp9I9Cf1eKu+z))kCs6kxrPurHG_5OW3v zm0ff#qHy`9G53dySmhZoCk<@vM3VeAwI7|Z_=19f2*6C;-$wgOf^W z^WW#lhKjlj_F3+4ei^^jA##XIoiLr7i)A0Q(xI~cyiN z1%=M!I39;Os=E4ivx(rZM16EiXKT1;aI3e#ioDWCr^IItVD|LMbDHzy559tP*nHofVk&E^(u+arg*&Fi zqgcCu^w6ko(y3ymQ{0D~nqecP9y#4zoQOBX&wo4m>tGxu0&K*G!tpl)3&&$Qi!<)PKghPi-|V(<)+Q#uVvqQb~)zBIZ>AZ55eT`j_!9 zK!oG>$d_yTAKI?f|JQ9-#fz@oq?u}ymO>KtQRV3UDT=z40+O^`SlkZO0&pxKEs}r* ztEoFdzr7Z41zEjkrU=#&OVIcF`sel5y>Q8b`$^HAy-eD!5zHr?rOs&E6 zfh-z&;ql;n2kM6ihL(Xq&dxD5Xtvsc--9$5>jmt@Ph5W(#~s5_|@gj z=eSnfDH2Vb_`#`wC~}TLW?v^=K0O27-*ITE!X#br3=FJfF1sb9K!(`Ie7dT8y8WSd z-K#c_<|*$!n+W949-(v^@(~p@5!N#c#?9?OJ21y^+dpBqv_u&RI%6g9RocUl2QJL0 zW&$u8sI5C9u*Nw?kwpndKH-;ajUZ{eq5m{(YP{tkl{^`c_Z10S%V~XQ5h9s|gO-Ln z;;NKx<1f*aGueN~TKCt1jY!fgHq7@8i(1z~^A@s1MPL zaO2VW_#P>I+StMP4Hx9~*>Q#8tfCYUxSR3YdVO>sg>7>YN&vh*Sx&&pH3CH&A=JGYlV|W6%7>&yYxI^+IyK zvIB;)&*W4vN7>tu>IdGL!Bvd3!L%eJwt?lS#oRsc z>AvZ!3mOMp@pH%ulyP-Mk0ETp4?263lcxbK91!}mpeub4Hy_}mqG_GM4~38A^{ss4 zIAA2^?{G*GEUHPsulc2RQvTzQKFcLw5OEjq*hVe^iIn5a{pz()a*`y?*a=AjF3m#u zA`Yd33r>B!Mnl*w5Q0HFOeGK6VUbE1C%jQ>ijirh>tFnbhAQ6?-??XfU)|1LKv$as z+*&w)gW{mi!S0vT?n%Q>X=9im`q=3}l<3A4wjy*BBvTR`mO)Z;q>qnljTI%l>>rD) zg#mG>Rq99Dc>=K2hOICIA$?{=+zYQiLFMnqJrmOuKdQM=S5Eq zTOfF`n(+PxQ#@Bvn0lQ4ZAm%gYs9zMfD(elrjuOFZi+!O*q( z0_9rmM`mw&XD`A%FJbloH)y=#+ZcaC?>=Sg9Hb4XNmWDERmov^mB9$O046vaf;~1v zeh;rzCbj6)C+b{k}lE7bDW;G)d{E^$dizUA^eN8 zLD9;)S7VNOrYMXkf5XAoJ4TOVcR=cetWJYFj=jou&%HjsYXO+8iVB1>8F%Y$imX9* z+0Oc#v!ixv67|^s&HR)A<`npUJg#iYH`jm`_4JPD>+M3!$uNnut*LH=#)qP)N##%r zv@!JxBACfERx&})6;SX>DT{>FI~m!5x_mi~pIP9yIM9eLzZlS2bZ~Qewy%FVB!%Q| zsbXcSvAFF)K==Bq_&*7gCFGW2c$$M|#JpF%IT*9Q68Mt6V4I4S9RO6>VZ|-sW1=ef%Z-E0ZOp ziz$~R+YjCiLO(y+9`+^Ox*ko`94;Bo|K&<&A0g%P&CY=rAXb>lh#>;P2(D|*1;+bi zf(V_~28dAZFr$aBCtiP$V6_8k#zU-!$|}CdF;al6s{{Hw7Z!jLQ$#7&Ckn9y{wKyZ za4RhO2kCFI1eJfGaRO*TaZl%qy{)5RQ}uDIh{UwgeJ@bDu9Tu}z8JL=oj@@7ULr&E zEfK#FI&L_A2IW-Fed%Oj{{+`To<>YXd#r75Ntj-c-`ANn8Eb;=8Lz~713r>&0dAzM ztWpX&i1z)i7vrZS$78PwOA!1AoHN3*r2)g=2&8dWpi1d9#1@=Dt#if0(6D%3E98O$ zwG6_I^6T4|?ryl{f>;Q@jkaYSmtG9Rfiow&NBLc_*mKAn)EgYRN+%AHRpUF9kBKt? zx!}fN(M^&7U-Ye4k3b@xdWZ)nQ=yhOfiHue@L2#W__P>As{Zuat?QBO{x@ygm>YjC zH)T2tdMUj!*%7J@ss&g^eHA^U+2jJO&H?S9hf^bccq2|}H3{cvY$k652!qrVSa`uV zeXaoWCA=CRWt5PO5t6}lM2G9Xx80)~WrcYX?&;7&+eRO&2nvqaII+ zmzMha!VIQ}F!@AUEkjJ*xvju_Xp$nN&siD78F3!s{zWoT5U}dqC9Pn?cL)$e7KA;g z=?@`vBc;4^b>ZCg&J;9YV<>d7tU6mpYK2MaWa)^{`gNAco|VtN=8Wu!>>T^D(xX3I z;}+ZpAiTsHy(ZlvC|Ib;yz)0JMq;CvwJ1E~i6w9%U|V=TaD#9M=~agTA4(6gJ56N} z2-PUWS1Ea+^oAk-Bw|3yT+2(@j}!%txd&2bfcKSUJwAP1kk86YZxr|>0bf7AJHr*z zDIEyi;k~i#23b5DpVm(OkL7=M%Qhf`f}-yHhtQwQ) zb@Kzf3#;08U30!tctK}ee^J>crb0h?V!iZ4zq6lw_0?BQ%h-XZ!>HQs% zr{*X9r~jb2?)&ef0+)+CT@Ly9_~1YA<>{gz-%P#zTliPHJ*sz`4EmxM1EE^hq>_&HVsW*V~*O(DNlE6H~(y}u)RG#H6T^A|5&s+sih*&71~4rC-t zU>2?|2R-_*F=OhV%<>$l0<<7+68_2~HFLSb?Cp0F?d&(e{Jlfh&A%31Z64|QVVQeg zUf%pV{OfZ?|hOEpn65!866K(96yIX{p>TRu6C#Q-+%ups9oiCIsa(v z`0~_>+PKDNh58MR&dRw_`LQYqF*+`I7*i%p_zGLIEEE&3G_L}Z7L|Q>dMx1kzP~P= z96Vk-jKyhVbF&^~tu?i^iiiN9>O?`?^{VrWisw&0U4AzsL$Y$^$_uFxkFsvwTnw4Z ziO9%E=sLrJ+8VERdga_u76JjFp^9<*(cs|Vvhs4hGuu8O=<4jt6xVK7Zk@^>=t?E3vJCz7MT_{@l&@nUWV84~?Y%!o#+P z0%&oA-wMU14s-@jfuUm-*$(&4zYXOvG z$BrC1$Bzm>Qaj>8&ME0#o}#U7+TGoqu;t5fqO-rvQt+ysaCYa!ojZ5NS?4W;f$j`4 zZ7x>2cjzKjbc$1IXJzP;z%@BJIkQH7T%%``IOT==nmtF39GU0QeGPgRYg3F*KAaPv z6N!)Wfj+hpPt8GpxnHH*3+rv>%r#JNQ4_(D>CN@U>i|$3_w)0^L%WDc#$Q8h8G-jr zFWg8K171uS(zWAh!ZG{_2$$WpP}#R5$9|FoxX@J0T&Y&LO!XtFX`j(RoMtb{;%<@LQS6W$(s@1oJ~>WhN@7*EaO)*Y8G6+0<^2Cl4L0DLj#w^1(O~SfBYaznmwxNcxV*BEl z#ZW$CVO|D+1S|P>;H4vrWCI@{CrWZ30>to^%=>}i9q|^o2iuojU4v>o0A9NFs3{l9 zY|4}3VEvdXLCNbq&?~mi{iv1B`)QGj-S+nr?Tkd{U<2OxXK!x<8=K1!W@!;1z-17a z#Q&U~lT!c^|8>UXfG5~(^RPUe;9E?RWV*VpLDsGH>hc%caw&2wwNlG@#Fd%(77e;tH);lH|_ zP&AXY$J8aqpv2y?dGnpz+}z9BIIvbo9 z?cXqAEV#bjj_oT>>}U7R?ftE)>Uqx7$B#F?YJ+(82u>nQbqvLO@&wL&zK_6yI7Q|u zK5K0eoFK~T>IN7jf1cUR=bQK`jvnPu^;sb_`g+ZuQtF981;gn+;& zzui2*X91G%HLC5J=*v9$aE^q%hntb_o!qJXSk6vNxu> z8sf&1*m#XB(-W8K{(&gW84{bk^ZRb@F?6}&R0*%jR0*)#AK}bgV`q<7I}do*z~|X# zI<_mf_Y;+MK=`u*#|!sX9G(v#@Vv4)FH>~apoLg{ID2AuT;Em-##jxxIH0=bCE_CTA)&EwLtfJcwa zd2HZl9bQ;F2eQZhM^-z zUV_8SYn+x50;KdTEiZzU4#ZilgmVbR?L3#3u$xYJm-QoY{Q9-RY-7>X0bRK@ddZ~i zRX=ev#4o4dkMlDCpO5qCacAzvm>$e)UoM4#c=d1Em)D1!2bMT|6eM(O#?JkI0o+7+ zFk2`~d^H>|;y4UO+RJJvUf1L71b=h%@Zqy4ejLi5b#KY z)()zh@dP8wrD6kvLIn~i4{T#TAwEHmb2Qlp`=gzVdGj}}TY zwo)lnNL0g&G1z z{eI4QpZ9s6_mMkFSfA2$^~2%Y)|q_Xu3h`KZNE{9&(+$sYco9XUC1TrOEkxJ@#2YB z$W`t5yle~#9`dqo`Xqn-(JI$x4}VlnL*&QUGXN{W>9(Z`P}l3PGH(N=W!&6f&OMAJ zYA(VXcojnoI|2h|*=0e2+~;xd1-mN3(N#W2v0X=t(T=ESd17T8M5dkFZ4^3nT;bhA znV=snZw6+0KTNgOs=eE{Pv1{nll94`pWXmAJI2k?@PmQI^Ha@7j93c>6)5z}`t>^6+T(n6%#Qdxt*=jb7T8p^lJ0P~O6^N8KmPdR zYdkpZJ9OyDEv_y~wd(IwIF)3wvC{#oFFk5~Lw@i$sY{Skxjt^wul2$b7JStojsHhpsoG31C5L{pX+3hF6r>j~HLl zGmHMHz-6e@=%E_k$G2aae`KX*qTb9lKPJ>yO)U({t*fikH(hfBM5(ylX`#*Da#(_< z?5#szg^`PN6^cUS=+_Kx+&Z^CQi zgQVyesx&kXaVkOM7O zYxc`H3IJ4v09kGoI$sa@Ehm6-Q1KTb=9j$|hj#)X4<0&15+C^--|F_AJNJ?&iX}W{ z-ig=ihK!&FCME*AOCLOl1$6#}ZRRyp#|L2N?=z{Guwl~V$vdyv8G02_ zfQB@+4oN&1@^q|<86fv)>*MBV>#p%jORK7)01i72J2-TI6V|e$W=_eR{)^41NaPFRTlNNmbo~D=TDorYeLGX}QPu zO*Bgy_>O1>Ww0Y4AOdPW5-Hla|d3RXP)&Zh<8g>&IGSB=3%OE1 z*^v>uZE=D(5fX=%l+6F-=bvX(nMIf?p?dpyvEMR95U{tmM#HmbcFdt_JsJ~yt*k>) zQ4zUd=eap%9$CF6GV-t4wQKB#4gWKG)TkNNY*(1!>FHTflzN&gF%foUO1e0CBWpkm#zx_*GuDsZ9F$Y~D=#YY2@R zuZmTyDR^v6-(@3M?GTS#RKC(J4JK!{paiZJJz_bTxrLW7~YWu^=3&$MFa)RBD@h)igl;wY>A$g zd_=rff`Y#0R$PRC;~vN*Mr9lW>ARbV+c}aDcZrucHluTGdw(f7s#T`}Q+cjs3)1&b zs*MtRGtnbf!zF+I`OUi1L4s^)&s;?iq)-ySwkZT|LxPc2BR*@fuCcMvkfo(_AN$#+ zee}_XA8L2&HUh}>`{_CS-&EkEAynn0y@LyMJTWq;xS0?+%i7wE1*dZN1n``@awJGq zv~M-}qwFc28QmkVRNBfnCybsXU^1IxCn`(IEgg%PD5A>F}mG=+*df(Ls> z6`=>gRhMZz+Vy~j*JlsL?l0!LO&N5P`ia{SakY_jA=#>`s__t)TB(ltk*OqxUB$Kw z7g~Py+2yB9^+!;sXgPq4uF_;xC~+)s46o3M#yw*kJ_%MpIhl|;z-P3ljzcWqP0-Sv zGG)r{IJB<0#5_qJq}`oKerEuAic65LR56}wV+5*8%P&eupgaPV&}z}JO$chnW0$qJix&<8bxlfe+LixI9a zUprIVojG&HCu8PA7xyO)l^wmjnz}U|KHU`p%#6^KP`OENAd7$3DZ;rn_Jv7t*0u%H zRI9uHH9@Cg#X0I`sxiwH*Ki(zV1BbwC4WF2+N$f26IaV+*}LiBMjLua|N2!koDR7u z2?$88SO3?IvG9uYovvdY)OYo>CB}?nEpu~A_%d7W#u{9_?Qa~~jC%VU4pO%(D^WC+ z)YQa4)TB~uJ*Th}-jT6LbH)*OC|Y&U|Kn}|%KQj03Qg~Q*)i6GfV%b^1fdZz65U@{ z=L$hGiFLAsiX7G)D#HKx;BswWyQ{;lXa1Cu_Ud`0{4=ml1qKXPxlNf%vFktTzJ{la zA~Fc5BjhM|3qeunQJ3<`FHuLC6D+LjcZ``ldCL}{60t-~?o}bMrMFMmYjpk&m%CXJK z74wI9wCXZ=20a-QIx6ns!3LK4^=kk5=fSwz>-Okzey;G3f|yLhr*%JG(R1?Bv!2}-@diF=-MXKbp2OB( za5LOS4viqg!IzohsT7bofZCWuwyR~MZ%%ZDEa-jC$*!Z3?w?nic9sgj28l%i8*V`$ z({Y76njcA`iba;fD*;5FpT3E}zulgl^fnFwRW5tX!8aU*mqWH0TOLx9|H z28*Tf1W#t;bk^2+!BCzD`6oau$&6w%UTTha$|FqsVu^cU;CpI*Rp6dIrT6Xyb2mqi z9v#lQlP!8}SNu-9;_~g=*61RxF>+ga_wKT>rMjCjfU#p2b%3$QF=5H^B{74*O{;d} zHt^){xUg@2Gu6|bE$upW`d&$I^+-d9MCp|(ep~w4#S3_9Xb+VW!PC{Wx7V`{r>f72 z&xW_pxq@qq(ZBo4sa3ON=-=OX%Gl>^!QS65zWMKxt;^h8)gyiXc;U@ogYH%or=`){ z)d{4VHCD#My>D%3{>L`iP*+GVIOvSs)u5jcoft{~c3k5vsF|=CZx50E$FFrd4ha@P zMB1V!JdQ?UwnTx^?shr|w6QC2cccK#O;NQ|r$^|NP$lcHWJ^Z->RVy@ zb+ftfd&9iBbDMbZ6oawjl-Wd+rUaX3qdjkBGT2h!?0g+=)9*glq?r_>hS8~G#jR?u7bnBFIkacSpx4E}l*Z&xKUu^2v0zI-!8#isr zMoHKgQ2zKP3T~PA89iosZl8Jg>DjUVn%$0TcG(0=X{Bxcvd@_lejosT z>Sd~5$Q^Uo3ice1pu>49V`)`>ABd!BkkL6*Xfddhv<(bybbA8FFQE;)x}^;b4Lt`B zo<$$7pF{l9#s&N{-rBm{^SGN52+cmUXhID|T9171zXlNuQ8bTF|6%WoE3MJG9 z-RWPmQ`{WTWH^A5eSZ7RgqL^h+7(7O%Bs{Z|L}fsjRejCw8pEXN-b)lqH-(C=pZc4 zzSXtA375~BiTjKbm?w{S@jTsy0i^Cq`+_3}%^Y7@daCs#?SE-DGTqtx*_J^b zco|4D9fm2C3}%l(9;(BXOwIQ-mX!AqUi@xu_nr`O5a*5VAa7L&9fL>?$g-tNO(bQJ zpq0}Ab2-V_7g;dP52SQ@^>R-@0PmdiuTTOgk0ERwF6=fGove9v@{N=$|Bcs%H53rh zbHDnVvDO&9^c_JsQ3lOwlHv`TYviY&J$rBY&X3Uy{NVMq!%6rXrHZ0+@%gUE!tA4| zSIeGK{;5KEDjwhDlXO=i$%;#=K{9qM-7Mhor%#rMHS08}+^D&a^J?eG9S_oOK0bB% z(XeB8WsmKbPWuK8_-B6|;^H9aTG-d0a##d8yu&Q3|*9a?vqyVDj%PL}tf-F&tQnkYg9Awgxfo}VhX z0jHYbT=0YqXg_Z-q+3TDw1UG*KYgbt87N7@SxQ@$)cB1HebZcQ&EVp{r&VH%uO2^P z2MA1|XPh02I6DF)Z{gR5b1GN@mt9xYSiIhV$_Zx_0flXR!M;2-V-WZk>`` z!Y-YY0{{68muQ2Y*sD@4n~)WY2v@W~oTe};eJu}~PJP7LPh;59sHUjq;KHzvfiX%7 zkz9Je;c!jT(xvpD4u=c@I%ms-DO2*WY*9PWh$@5HLw*h1Qmf7bO^Imc$;cOD{`g}Q zWA=YhNr*!iy1RKrHXI;f8f85i_P!Q0yIOY|5QI(=r?rSt^;i52#&Qv~*3G#b?`$P& zT_D>wo_1@1BiKQ_B{$tN!(0Dw9gb~ERga0gq%5lBOs1@SbfCzqX-$XCVE`!6Uj&7?S18nt_!sh18{{M&pLD_;)t&^4vhbI%S+GEbeF|y-S z&G`D?qe$G(c?O=ZqIcpiA&0(V1Z`pQ+kiT8@;%Pu=LS21W#xWY#VHB-1o;bA5!F^(YNKOsI}`;DY*o4 z6OJl4R67-G5Zjw48|g zy`s(8;j{Htxrx2VA=_MCPB{&SyF9XiH+$^Yi(iCtI_2`ydZXd+E#(yieV^5~d;?dQPiS8fK&S4z;H*(U1z=ujtvof8L3H*egr1Ot)bCxN%oe zVDU6Wz_wADhL5T*Z?ihVLiyrYDZVSJ5M&Q>M@l)a-Ul@M?#jJ&%Zgzj$(!SS&*rB1 z`T0SpwAa!ycXXV2X zp760s(}bK%cYWElWx5u(&Ah}&OrJSlnr++e=N?KoS%gATo$`pc+vD8(OUD=@w12U! zt*uqH-@yls4tw@QUl>vn>sx>FeWYS%nffpbo!psn$v+S7pZgQc-Be4dH10Sx52B~q zQ>LdW#Nu`Ic~JqVWL-ks-ll>J7eY0RhCTyH zMV9roO7%VJY$dWAWy-QrpT7@$SpJ)WS+rLIjZo4E@k6v$5@eUTy2}NtY1eEr(>R!W zaKabL>##J)s*EJe(RL06t}(We=6?^_uAaIN&Z+c;L4o$B$2d||M-w=I%@Z<0FXB3d zuMS!mW)!@oU#^5uF}P6L#@CqgInGFIXq3-k(0%>=!-+5sM9_mZw{i;zf_@6Z|8*Vb z*YRuEudO>9E-M+Ax!2fADscJ@5m4TPQofguv7+reuyf69(W@MDEI7bhWM|iOEe|Qn z8(wnL>Lm#x()pxStAq^>obVh=C7uK`aJI-}%}Dh6KVB`>w&Fs&0R-S}FCrBbNu8ms zu=S`cA;j!!3X@d|pkic_>dE5DDi~4GD2`Vu<2rWnQ>nUzyMEw~{Y9!SU11o$*Hzpp z>-6UFxOeT3YChYkl0nT})A{p5paTzbUM`Yv361o@;QO@7=+dT{2L*;M2B`uc0m#&_WM6^Zm>g@QVF zUieV%bsh}e#!b488)Bl}yu7?*se^3@5%X;$m@ed&m zXv6D}9{oZ?ZMSie)n7p&?`UHT8;x1moSg9KW7*?amOxEKBS2fB_~R$vH{YI=m(+ZJ zYKcRK&F8IDdGqyet4?VCgg$}pU2&e z=fek7VL@}7PdVNnpq&*8H=7gJT}f3EfoJf8J5o8kWDw)Q{dV%{?(99^d`Z3(=y|QX zTC%PdoFZ8t@L^g@`CxaRG%x4o<)muS($K0iLL5F~<8Qw$broq@Qmc1dN?s3JNisgD zWAdq>MbzAK3iLnpZ^qsETa9WWqYUH#wb*Zjp<@e|1FjdXp4`lHFa z<7-&>yOi?C9byEQ^7A##sYdvnufJ`oee-dTf1&-so6@>;Z~TCR#x5e|ktjuJNfrlm zj22Sv{rBI`CcaH8%~(-#u`LqS6BCWnS4~FGgAzocMAZmK)YL0hGHlZHcfC)TO#1iL zqQ93Q!ILRL!h6|L+PZM4_i3QV&48FKPFV9|IcimFV~;1zUf-)NRk=c^N z5eVv&ouqvyO?(qHa(!LzPp!XyZKUL_m|4jOe*XDGQNmgsbKFMd0*ITt;uQeFH~i$0 zz1xZEP^CJ(dryTBSA{?*{_^Xuy8Zf@qtQ-0IE3qRXY$>u`^^x9>Ra{6Jj0HeXDv+n z;l6-&&=05~y*je1q)R#q;`mbd*0)xYoc|65{_-gWYE`pWWAVHkQpkX9%4urwA?AW(e|mHG;jp`S~q zLCYsf>jed1J$A(oj9sQ@WE|a)3SQ@e9AF}O7M)x=4^j+d-mEe%HgD727l|b8Vhd5p zGOIvdnzD$@K7PuS#0@VX+Z9SSJ+Bq@mVpH@uzkCB-IOAOimLej{?nnH*7RHQDIP$FhK$rFbSBhNdl^(@JOPbf*{eBn7a${+1kaEpwo@bsUD0qALzcXa> zp~46WS`Nq7uSbL}EfyYXy4@RK=dBL8T;b|63?_}H6wj9_0Mk0edA>buhc~R*g+SlZ zz1~50h5K<|+x&`xomK_=QaSg3^K@pA4V`DT)d)I4qLqrMY=1D9Q}ml+D!#=CS)#OR zX;F)~7A=>S5qo!IsPx9E=s%0^8xs}+Z&gmM`?Dt@hat?2ywzAP%B+K#@j;`sIb7$x zdt;dYQv%2P$G%a%j-NOYIl$$Tzy3lwOtr62N=sGWmOIEX9t;Us9AoK&DWO`ldp*;m z6ODNqakP)8kyICCrTw2C*Pdc@3RmDJqH`JD)fcN*jlxNR8{51|DF5+Xz5e6jYSsmr zE?KhVx4EdO>d~i(P!tZ|6tR|nR_iux^0>Zk^%Z6^OhD6WLAph|EmdDEh(~uR7Xzy0 z2AR7r%2EKZ5g=%o5j9F25a1x*T;o(Cl%V4h&c;`tEn9K{|C;o3c)91Jri2xteav%h zyLx-A>%F$yCn4EC`8c#qIB<8y9Me%>o!0C2UeqUH*+K0lMSbZIuKh#6hJ5XF2c4qV zS)NMB9pR(v(`|0`A0LJK_#SB2wqobn_cgD%58dUzTx(8?7A^ivX?G^D$z`91dzOD- za95|A#19Qc(chwq$C<-tZ;Fc#r%+F_d*$Z#+fT}E=^VX?j|PJR=Ie}I`rE5GfnHC z6`y+yYE96(Hk7@U-POa!ac@mu z<=e5~J!4g@h2Dp{tdA4VQNFvbs=xqMK>81?6T|;tRj`AFo@**5PU2Bi#(>-H`?KnE zc0JBb*ipT^#LG6?;p4(w!(t$g3rbd7yqBdGgm*Ala_5w6S=wFK<-<9Tc^YD#*p4h$ z>O1BimiouoliegL1*mBX(!e9^rB{0u;E$$K0D_{-o?`5xBre4>2yNag(1x+toO%#H zYv6H2>*RWMxHS4?(oXh^CoEe$@nwKPwneF`khYHuG|J0j+!^s;3uhdl>!)U z=ncHrcvMx29ae)7lr|J*v2KPEe2 z(_)7syt_m6F&Z+RJ+}jsOOOX-;O5m7oX%uv*nRJNd9*I6XMplLj>z^C99pu*NWHl|x)VbO&N){g^OPzH z2WGa6#LQO7=gir=0@v&ReYmKWl`7fA>-MA`C8@<8^^(*hY$I4z8nwy!d-815lV`Xm zOsXyRI35m7vb}4|Uw3F|e7;pVYPhN5lHT#EX_c0xGZ(rUTXym0lEuMfStIl#;XVz;<%aVc7DHf&--O~4lEqth zQu;b{UHV7coGw?eyC6EVMQ_b@%Av-R?}lDtplvtWtHpoc$AKhDi~g!@}5M=29U znQV0t!yIw@sil#fS8xvv^>v`C?{uF=IOfRX50n?xt;G9;yLe!8?g-q zyBk;ZtftDzeNmWR>DDXnWpRPMXN}XiOb@eydGQMq@_t-AaZh?)bj)gBTes9>9NOr} zmo{(NTK2OAvdEG%nFNoB2N;!bDx)=z!xhR>7qOJcDS(ZT^<1^Jwc=RkrdMyjfoNr@ zlm&r(?QhE(9$7k+5Kn)!RE!-c#+RX&aGF;9Rb-62Lki>W%jn%&7{B7&%T~KmZpLL; zK^cg*efa07No_E)SDfw5686Kc~_H0RjQDKUyR~k-;T} zhzP~o`~-%zIYTUfgo)!`x(VOF5ceK-mg&m+<(vk(;L~y@9K>l=R#wVZuq{KL-><@k zBBAyr8x+ExPu9l|AmTAMOsqn=tc%E*s`j}F0Q z1gN6uwHF`9*_spww{}l@k(T_AoOr7L8SsgE`vt*St^|+6GH5i>4J6DJqY+qGa8=t;eB$OsP5;At%z)}h+H+95u1byUtJd#@sbQ9RSA$k1B$2qn!>rYsS-?PH#j`s)l z_2%y89X>d9>>l@Wl8WHhL(Cjuq5Tm$58y+tfkqXF^A_cUafeX{{VQS~4u~sz;ML?I zE)%_`d0A6SPtVE2v?89gE`}wt5=2$8FX7it%f`tlzAaCRJo-FiJ4J9X6FC`xY9|1p zgcF!0S%`(QroFCBQ9*n4P|A{3ve-azw!)&rzJ5AS# zu2zLG`?YzREtzzRN=!Es?&@CAp+_>u1~&VC`+O0lS@F)gx9 z$KV?N$!?+wVe~6^=49l^mO6XAuu_#s#0=Tnf3)@ET&xcUmGXBnf{Eueu&CfW=wb1s zuH4iWM+Mqkypt5S%W#j&@T^ulR&zis%3Ug4yq0791uHZ_polCgfTJss$Oj1(uxCY) z5g)<%YE`RDi+#x*YiGN&s07CpEa9Sy#IMM{kA~wQkn3LZu`LIsLqEqE2@bG087QPW z2D;!PAa-2hp)0G2&C1~rA`>3Ex@6n1Xr|4ZN=HCfhN=ItIwPW9vHyi|XjC-(MeKMSJS)#NOIeZ#2s#&PMFXOPGi% z>YP#q7nSGlKwQ{ectw(5N#(g8H_v>^NI^Ouxc2;4&e*WOp&1b38v=yesM_LRG1sY47;Yhs@G}?eFF+ywK zR+0i?$7Y?2mX=l-Lq}I6B+%iM^^~&EQgDy#TiBiYDn$(4BveW;5z|h@txILkQ&&7G z)O)fydX_G-mQ56luh@H{&I@FZBWz|V<2PnepI?VsvviYXyd`@grb_-XfiZL(o8L7o<=xEk6&SQkfRF~nF^CBFI0w~UR(}!3{ z+o*wojzHp6Ur?h9(NiV%AMi2}S~f0AD|x|J)~^!$~6qhg9b&^Xy4_i1V%I*EE_Q>%T z^K2QLLN1?q z=zN+45;Dd8g{##u)sHOJ4e7xI6|pJQr1B)XU!_WFc$|-vlEEV?IjoZ?e(0JdybNY45@tq?1dv5$8+hXZh&Qbl1hADbFE)Q=gs zQm+&ygJ2&#Q`72AVtUlV;~Bi%bhK5hmFVr9T5m4?r5M*PHoe_SY<9%oOHdytHFBVo zMJm%?Hf!+v$6&ldc8cMilRu~Ed|=`s+4}@|bw?R1JHcfI=p-4$l8Prx(<{f!!Yp+s zor7hv;#N@^ZL(5P<1*!~H)}nvN zWs3vpUt{%SeN&XjpB*FcJ*9|VE2Sq~kd)CO1PspG6!Fgz zuR60h=J=P&Gt_x`{x=k2Go8Iq))p`;uim+gZcj@7v_IX9 zD=auP(e=dPU3PR|2MUX=hHc=|F;1!Vx%ROOCe^17^_6`k5&P)>rWU=b3?A|(CITKV z3lt?@W=Hg8`HApkFp!NsuC&mIy7l~IsFR)qG)(#YWIb3Y0Zc2J%WAcIEf>Y-kkdce z*k`fGlzJ#x>}Xkj@BC37R&jTh5(3m+biZNIYEF&v$mpF(nf?afF+86xmRe%Vx4Um~ zSzx79pb|d0tph|9p%PR04_bV7QNkxFE9!BwRqfNZbF5_j#Alrc8u~hHwI9;rSf@1X zRB!n$oOJuY?>J9FLp`PJ-)9x4H7WAlN!zd2oyxYW9yPy5i$#2`gbwvu^%78LaYSw3 zY;l#MP))sgJzrLZa4b+A-8#Ud2YInG_ursvTGyBN$4X!@VA&}7eE-b^K~uoBMF+C- zJMwOhSCq@M#)xVmze7g<^pUzZHkJ>Kwe%c>P@{0k*;cIgE!C=4Qv}BhKV`eYe|^mv zw1fpnvMo;yWWgS`r1}P$t$U!B7RVN0gl^LlFPeu?Z_H%ZlvE195#U#AE3=cEmlD>> zd5|v)6QGdwD`K73tEi<$f@b^nhHm0!a_irIuS{8pgFes2q6+hTk+keiJr6CLxbkGL zK7PgTVfkk=wzDs*5YxhM@l*24X1=wn0{&yE(5tXeyHj|cycf@oe>;4sKe2aau>17> z|MlV3e{md2YbPLu3*=qx^U=|N{DX(Bdh>vQgua+`yM^Nli88$D5Z+LJ583RH%<8e% zzqxwLTi<-xw-PUo()g>R#Dt9@-eC3jxzgF@O*>U!B%*O_kk&t!SDiAiS^KHpMO@Rb zW-nI1pNFloquwrV)Gy6>Y*+MlfJz|5^s-s~X!P{N_p+I(Ycn4;3!gx~C42Y3yip2r z-soZ9fq?rP0GC5fRLvS1712R}h6CZdrZ@rX1_${dS`rqV_`M0~s zYlk-options->backgroundImage = 'background.png'; + $pie->options->border->color = '#ff0000'; + $pie->title = 'Apple Pie'; + + $pie->data['humanoids'] = new ezcGraphArrayDataSet( + array( 'monkey' => 54, 'ape' => 37, 'human' => 9 ) // adds a new data set + ); + $pie->data['humanoids']->color['monkey'] = 'blueish'; // setting datapoint color + $pie->data['humanoids']->highlight( 'monkey' ); // chart type dependent + + + $line = new ezcGraphLineChart(); + $line->options->backgroundColor = 'pink'; + + $line->data['income'] = new ezcGraphArrayDataSet( + array( 1990 => 5, 5.1, 5.4, 5.3, 6.9 ) + ); + $line->data['income']->color = 'blue'; + $line->data['income']->symbol = ezcGraph::diamond; + + $line->data['incomeWithTax'] = new ezcGraphArrayDataSet( + array( 1990 => 4.9, 5.0, 5.2, 5.1, 6.4 ) + ); + $line->data['incomeWithTax']->color = 'red'; + $line->data['incomeWithTax']->symbol = ezcGraph::squareWithChupi; + + // Create a new averaging line + $line->data['averageIncome'] = new ezcGraphAverageDatasSet( $line->data['income'] [, options] ); + + $line->renderer = new ezcGraphRenderer2D(); + $line->driver = new ezcGraphGDDriver(); + + $line->render( 500, 200, 'file.png' ); + + ?> + + + +.. + Local Variables: + mode: rst + fill-column: 79 + End: + vim: et syn=rst tw=79 diff --git a/include/ezcomponents/Graph/design/enhancements/interactive_data_points.txt b/include/ezcomponents/Graph/design/enhancements/interactive_data_points.txt new file mode 100644 index 000000000..c0db4a458 --- /dev/null +++ b/include/ezcomponents/Graph/design/enhancements/interactive_data_points.txt @@ -0,0 +1,167 @@ +eZ component: Graph: Interactive data points, Design +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +:Author: $Author: dr $ +:Revision: $Rev: 8393 $ +:Date: $Date: 2008-06-16 10:22:05 +0200 (Mon, 16 Jun 2008) $ + +Introduction +============ + +Description +----------- + +Interactive data points describe a feature in charts, that the viewer of the +chart can interactively get more information about data, when viewing the +chart, or moving his mouse pointer over points of interest in the chart. + +Requirements +============ + +There are two major sets of features to implement + +Value indication +---------------- + +The value indication means, that at the position of the mouse pointer lines +are drawn, depeding on the chart type, to indicate the current data value at +this poistion in the chart. In a line chart this would mean a horizontal and a +vertical line to the axis and some coordinate information at the current +position of the mouse pointer, while in radar chart a line to the center of +the chart and an ellipse, indicating the value on the y axis, needs to be +drawn. + +To enable this an option will be added to the driver option classes for the +drivers, which are capeable of drawing this. The value indication will be off +by default and can be enabled like this: + +:: + + $chart->driver->options->valueIndication = true; + +This option will be defined in the driver classes for the drivers implementing +the ezcGraphDriverValueIndication interface. We cannot add those options to +ezcGraphDriverOptions, because not all drivers will support this new feature, +and implementing an interface in the driver option class makes no sense, as no +methods, but only properties, will be added. The configure options will be +delegated to an option class ezcGraphDriverValueIndicationOptions to have a +central unique place to maintain those options. + +Driver support +^^^^^^^^^^^^^^ + +The driver itself needs to implement a new interface which defines the methods +required to add the interactive elements to the resulting image. The renderer +will call those methods on the driver if it implements the interface. + +:: + interface ezcGraphDriverValueIndication + { + /*** + * Add value indication for a cartesian coordinate system + * + * The graph data is rendered in the bounding box, the x values to + * indicate start with $xStart up to $xEnd, and the y values start + * with $yStart, up to $yEnd. + * + * http://en.wikipedia.org/wiki/Cartesian_coordinate + * + * @param ezcGraphBoundings $box + * @param float $xStart + * @param float $xEnd + * @param float $yStart + * @param float $yEnd + * return void + */ + public function cartesianValueIndication( + ezcGraphBoundings $box, + $xStart, + $xEnd, + $yStart, + $yEnd + ); + + /*** + * Add value indication for a polar coordinate system + * + * The graph data is rendered in the bounding box, the x values to + * indicate start with $xStart up to $xEnd, and the y values start + * with $yStart, up to $yEnd. The middle point of the polar coordinate + * system is always the center point of the bounding box. The zero + * angle may be rotated, depending on the graph rotation. + * + * http://en.wikipedia.org/wiki/Polar_coordinate + * + * @param ezcGraphBoundings $box + * @param float $xStart + * @param float $xEnd + * @param float $yStart + * @param float $yEnd + * return void + */ + public function polarValueIndication( + ezcGraphBoundings $box, + $xStart, + $xEnd, + $yStart, + $yEnd + ); + } + +Additional data point information +--------------------------------- + +When hovering or clicking on a data point or a legenda item, a box with +additional information should be displayed. The box should contain text or +user defined content. + +The data will be associated with the data point the same way we now associate +URLs, by an additional option, so that you can optionally add information when +creating your chart. This will consume nearly no memory if this feature is not +used. + +:: + + $chart->data['data'] = new DataSet(); + $chart->data['data']->informationBox['key'] = $object; + +You may of course set the informationBox property without specifying a special +data set key to set it for all data points of a data set, even it may not make +sense semantically. + +The value defined in the informationBox property will be passed to the driver. +The driver classes do not need to implement additional public methods for +this, but may optionally use an extended version of the ezcGraphContext +structure, which is already used to pass semantical context of rendered image +primitives to the driver. This struct will be extended by the additional +optional property $informationBox. + +The type of $object cannot be checked before the graph is actually rendered, +or the scripts for the data point information are created, because it +rigorously depends on the driver, which values are accepted here. + +- The ming driver accepts SWFMovie, SWFSprite and SWFShape objects. +- The SVG driver accepts XML, which should be valid SVG, which we won't check + for performance reasons. +- The GD driver will use enhanced imagemaps with JavaScript, so it will accept + IDs of HTML elements of the document the image will be embedded in. The + element may contain arbitrary content and will get an absolut poistion and + moved in front of the chart image. + +The driver classes do not need to implement additional public methods to make +use of the new informationBox property, but can just check the context struct, +if it is available and render it properly then. + +The gd driver can of course not natively support this, because bitmaps may not +contain any active content. An additional method createInteractiveImageMap() +will be added to the ezcGraphTools class. This may be called, or the user can +implement the JavaScript itself, to not infere with his own scripting +mechanisms. + + +.. + Local Variables: + mode: rst + fill-column: 79 + End: + vim: et syn=rst tw=79 diff --git a/include/ezcomponents/Graph/design/enhancements/multiple_axis.txt b/include/ezcomponents/Graph/design/enhancements/multiple_axis.txt new file mode 100644 index 000000000..fc56fb34f --- /dev/null +++ b/include/ezcomponents/Graph/design/enhancements/multiple_axis.txt @@ -0,0 +1,97 @@ +eZ component: Graph: Multiple axis, Design +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +:Author: $Author: kn $ +:Revision: $Revision: 5847 $ +:Date: $Date: 2007-08-08 12:26:43 +0200 (Wed, 08 Aug 2007) $ + +Introduction +============ + +Description +----------- + +Multiple axis are used in three different cases. + +- In stock chart, for example, they are used to show a different meaning of + the displayed data, for example the value of a single stock option and the + value sum of the complete company. + +- Another case multiple axis may be used, is displaying relating data in one + chart which has completely different scalings or units, like the used RAM + and the load on a machine. + +- A third case multiple axis could be used for, are named separators to + highlight data borders in your chart. In this case the step labels should be + at least optional. + +Requirements +============ + +From an implementation point of view the feature seperates into two different +APIs we need to define. + +Adding additional axis +^^^^^^^^^^^^^^^^^^^^^^ + +When adding additional axis we want to support a finite number of marker axis, +at every possible position in the chart. + +:: + + $marker = new ezcGraphChartElementLabeledAxis(); + $marker->position = ezcGraph::LEFT; + $marker->chartPosition = .4; + + $chart->additionalAxis[] = $marker; + +The property $position is already used by ezcGraphChartElement to indicate the +overall position and accepts bitmasks of LEFT, RIGHT, BOTTOM and TOP. For Axis +this indicates the base point of the axis and for additional axis it will +define wheather the new axis is an X or Y axis in the cartesian coordinate +system of bar and line charts. + +As the property $position is already used the property $chartPosition +indicates the position of the axis in the charts data section. A value of 1 +will place the axis at the very end, and a value of 0 at the very beginning of +the data. + +In the example above ezcGraph::LEFT means that the axis is drawn from the left +to the right, so it is an additional x axis, and the $chartPosition indicates +the position at 40% of the chart data bounding height. + +Adding data for additional axis +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Data may be added explicitely on one of the additional axis to use different +scaling und units for this dataset. The axis values are received from the data +sets when rendering the charts, so that we are able to define the usage of an +additional axis at any point before rendering. + +:: + + $chart->data['foo'] = new ezcGraphArrayDataSet( ... ); + $chart->data['foo']->xAxis = $marker; // See last example + $chart->data['foo']->yAxis = $chart->yAxis; // Redundant + +The assignement of additional axis is optional and if none was defined the +original common chart axis will be used. You may define custom axis for one or +both axis. + +Special consideration +===================== + +You may of course define custom scaling, custom axis types and custom axis +label rendering algorithms for each of the used axis. + +If no data set has been assigned to a axis it will not render any labels by +using the ezcGraphAxisNoLabelRenderer. Otherwise the assigned data will be +used the common way to calculate some default step sizes. + + +.. + Local Variables: + mode: rst + fill-column: 79 + End: + vim: et syn=rst tw=79 diff --git a/include/ezcomponents/Graph/design/requirements.txt b/include/ezcomponents/Graph/design/requirements.txt new file mode 100644 index 000000000..d22fe3c79 --- /dev/null +++ b/include/ezcomponents/Graph/design/requirements.txt @@ -0,0 +1,75 @@ +eZ component: Graph, Requirements +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +:Author: Derick Rethans +:Revision: $Revision: 2547 $ +:Date: $Date: 2006-04-12 11:53:25 +0200 (Wed, 12 Apr 2006) $ + +Introduction +============ + +Description +----------- + +The purpose of this component is to generate different kinds of diagrams from +different kinds of data. The diagrams' appearance needs to be slick and +customizable. + +Requirements +============ +The first version of the component should cover the following types of +charts: + +Piechart +-------- +A diagram showing values as elements of a piechart. It should support: + +- highlighted parts (shown as a little bit outwards of the pie) +- setting a tresh hold under which values are combined together in an "others" + part +- automatic colours, but they should be able to set manually too +- automatic legenda generation and label placement +- 2D view, like: + http://www.eia.doe.gov/neic/brochure/gas04/images/pie%20chart.gif +- 3D view, like: http://www.chambersfund.org/images/piechart.jpg +- background image and/or colours + +Linechart +--------- +A diagram with a variable y-axis showing values for a finite set of data +points. The chart should be able to show different data sets, but all measured +only in the same unit. + +Line charts should support: + +- automatic colours and styles, but each dataset should be able to be styled + manually +- automatic scaling of the x and y-axis +- automatic legenda generation +- automatic label placement for both x and y-axis +- options for setting when to draw vertical and horizontal lines, and in which + style they should be drawn +- 2D view, like: http://www.swiftchart.com/line_ex5.jpg +- 3D view, like: http://www.jspwiki.org/attach/LineChart/Line+Chart+3D.png +- background image and/or colours + +Special Considerations +====================== + +The component should be flexible enough to allow averaging and other analysis +methods to work on datasets and add rendered data to the resulting graph. This +can for example be trend analysis or mean average etc. + +Formats +======= + +Graphs should be rendered as PNGs in the first version, but it should be +possible to have different renders to render to f.e. SVG or flash in later +versions of the component. + + +.. + Local Variables: + mode: rst + fill-column: 79 + End: + vim: et syn=rst tw=79 diff --git a/include/ezcomponents/Graph/design/requirements/interactive_data_points.txt b/include/ezcomponents/Graph/design/requirements/interactive_data_points.txt new file mode 100644 index 000000000..f91c4c578 --- /dev/null +++ b/include/ezcomponents/Graph/design/requirements/interactive_data_points.txt @@ -0,0 +1,81 @@ +eZ component: Graph: Interactive data points, Requirements +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +:Author: $Author: kn $ +:Revision: $Rev: 5711 $ +:Date: $Date: 2007-07-10 11:29:28 +0200 (Tue, 10 Jul 2007) $ + +Introduction +============ + +Description +----------- + +Interactive data points describe a feature in charts, that the viewer of the +chart can interactively get more information about data, when viewing the +chart, or moving his mouse pointer over points of interest in the chart. + +Requirements +============ + +There are two major sets of features to implement + +Value indication +---------------- + +The value indication means, that at the position of the mouse pointer lines +are drawn, depeding on the chart type, to indicate the current data value at +this poistion in the chart. In a line chart this would mean a horizontal and a +vertical line to the axis and some coordinate information at the current +position of the mouse pointer, while in radar chart a line to the center of +the chart and an ellipse, indicating the value on the y axis, needs to be +drawn. + +SVG + No real problem. + +GD / Cairo / IMagick + Not possible without large effort. + +Flash + No really big deal with flash and ext/ming. + +Additional data point information +--------------------------------- + +When hovering or clicking on a data point or a legenda ite, a box with +additional information should be displayed. The box should contain text or +user defined content. + +SVG + With only user defined inlined SVGs or Text in a box no big deal. + +GD / Cairo / IMagick + With a tool script generating HTML and javascript to use with the image + map, it should be possible to use HTML and text in boxes. This is similar + to the currently used mechanism to create image maps. + +Flash + Possible with user provided SWFMovies or shapes. + +Special consideration +===================== + +It is impossible to implement natively more then simple text in a box for the +additional information in highlighted data points, because this would require +a complete redering model like HTML uses. + +Formats +======= + +The integration of HTML, Flash or SVG documents should be possible, but would +be a non driver generic mechanism. It seems not easily possible to convert +user defined Flash, HTML and SVG to the respective other format. + + +.. + Local Variables: + mode: rst + fill-column: 79 + End: + vim: et syn=rst tw=79 diff --git a/include/ezcomponents/Graph/design/requirements/multiple_axis.txt b/include/ezcomponents/Graph/design/requirements/multiple_axis.txt new file mode 100644 index 000000000..8606f3d56 --- /dev/null +++ b/include/ezcomponents/Graph/design/requirements/multiple_axis.txt @@ -0,0 +1,60 @@ +eZ component: Graph: Multiple axis, Requirements +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +:Author: $Author: kn $ +:Revision: $Rev: 5844 $ +:Date: $Date: 2007-08-08 11:00:39 +0200 (Wed, 08 Aug 2007) $ + +Introduction +============ + +Description +----------- + +Multiple axis are used in three different cases. + +- In stock chart, for example, they are used to show a different meaning of + the displayed data, for example the value of a single stock option and the + value sum of the complete company. + +- Another case multiple axis may be used, is displaying relating data in one + chart which has completely different scalings or units, like the used RAM + and the load on a machine. + +- A third case multiple axis could be used for, are named separators to + highlight data borders in your chart. In this case the step labels should be + at least optional. + +Requirements +============ + +To act as additional axis and seperators it is required, that additional axis +can be placed at any position in the chart, especially at the very end and +beginning of the charts data. + +It should be possible to associate a data set with a non default axis, to +calculate the position of its data points based on a diffenrent scaling, then +the default one. + +It should also be possible to add axis not depending on any data set and +define the scaling manually. Those axis can be placed at any position in the +chart, and if no scaling was explicitely given and no data set is associated, +those axis will omit drawing steps or step labeling and just display a single +line with the (optional) axis label. + +Special consideration +===================== + +An API for assigning data sets to axis other then the default one will be +defined in the design document. The calculation of the poistion of a data +point in a chart is completely done in the chart classes, so it will be no +problem to use another axis for this. No changes or additions in the renderers +will be required. + + +.. + Local Variables: + mode: rst + fill-column: 79 + End: + vim: et syn=rst tw=79 diff --git a/include/ezcomponents/Graph/docs/examples/ez_green.php b/include/ezcomponents/Graph/docs/examples/ez_green.php new file mode 100644 index 000000000..b69884935 --- /dev/null +++ b/include/ezcomponents/Graph/docs/examples/ez_green.php @@ -0,0 +1,82 @@ + diff --git a/include/ezcomponents/Graph/docs/examples/ez_red.php b/include/ezcomponents/Graph/docs/examples/ez_red.php new file mode 100644 index 000000000..9e86a1627 --- /dev/null +++ b/include/ezcomponents/Graph/docs/examples/ez_red.php @@ -0,0 +1,82 @@ + diff --git a/include/ezcomponents/Graph/docs/examples/forum_evolution.php b/include/ezcomponents/Graph/docs/examples/forum_evolution.php new file mode 100644 index 000000000..94f2d9b94 --- /dev/null +++ b/include/ezcomponents/Graph/docs/examples/forum_evolution.php @@ -0,0 +1,48 @@ +palette = new ezcGraphPaletteEzBlue(); +$graph->xAxis->majorGrid = '#888888'; +$graph->yAxis->majorGrid = '#888888'; + +// Add the data and hilight norwegian data set +$graph->data['Posts'] = new ezcGraphArrayDataSet( array( + 'May 2006' => 1164, + 'Jun 2006' => 965, + 'Jul 2006' => 1014, + 'Aug 2006' => 1269, + 'Sep 2006' => 1269, + 'Oct 2006' => 771, +) ); + +$graph->data['per day'] = new ezcGraphArrayDataSet( array( + 'May 2006' => 38, + 'Jun 2006' => 32, + 'Jul 2006' => 33, + 'Aug 2006' => 41, + 'Sep 2006' => 34, + 'Oct 2006' => 25, +) ); + +// Set graph title +$graph->title = 'Forum posts in last months'; + +// Use 3d renderer, and beautify it +$graph->renderer = new ezcGraphRenderer3d(); + +$graph->renderer->options->barChartGleam = .5; +$graph->renderer->options->legendSymbolGleam = .5; + +$graph->driver = new ezcGraphSvgDriver(); + +// Output the graph with std SVG driver +$graph->render( 500, 200, 'forum_evolution.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/examples/forum_month.php b/include/ezcomponents/Graph/docs/examples/forum_month.php new file mode 100644 index 000000000..b0ca783af --- /dev/null +++ b/include/ezcomponents/Graph/docs/examples/forum_month.php @@ -0,0 +1,47 @@ +palette = new ezcGraphPaletteEzRed(); +$graph->legend = false; + +// Add the data and hilight norwegian data set +$graph->data['week'] = new ezcGraphArrayDataSet( array( + 'Claudia Kosny' => 128, + 'Kristof Coomans' => 70, + 'Xavier Dutoit' => 64, + 'David Jones' => 58, + 'Lukasz Serwatka' => 45, + 'Norman Leutner' => 22, + 'Marko Zmak' => 20, + 'sangib das' => 20, + 'Nabil Alimi' => 19, +) ); + +// Set graph title +$graph->title = '10 most active users on forum in last month'; + +// Use 3d renderer, and beautify it +$graph->renderer = new ezcGraphRenderer3d(); +$graph->renderer->options->pieChartShadowSize = 12; +$graph->renderer->options->pieChartGleam = .5; +$graph->renderer->options->dataBorder = false; +$graph->renderer->options->pieChartHeight = 16; +$graph->renderer->options->legendSymbolGleam = .5; +$graph->renderer->options->pieChartOffset = 100; + +$graph->driver = new ezcGraphSvgDriver(); + +// Output the graph with std SVG driver +$graph->render( 500, 200, 'forum_month.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/examples/forum_weekly.php b/include/ezcomponents/Graph/docs/examples/forum_weekly.php new file mode 100644 index 000000000..df2a7a189 --- /dev/null +++ b/include/ezcomponents/Graph/docs/examples/forum_weekly.php @@ -0,0 +1,45 @@ +palette = new ezcGraphPaletteEzBlue(); +$graph->legend = false; + +// Add the data and hilight norwegian data set +$graph->data['week'] = new ezcGraphArrayDataSet( array( + 'Claudia Kosny' => 45, + 'Lukasz Serwatka' => 35, + 'Kristof Coomans' => 25, + 'David Jones' => 23, + 'Xavier Dutoit' => 20, + 'sangib das' => 14, + 'Mark Marsiglio' => 10, + 'mark hayhurst' => 10, + 'Paul Borgermans' => 10, + 'Nabil Alimi' => 9, +) ); + +// Set graph title +$graph->title = '10 most active users on forum in last week'; + +// Use 3d renderer, and beautify it +$graph->renderer = new ezcGraphRenderer3d(); +$graph->renderer->options->pieChartShadowSize = 12; +$graph->renderer->options->pieChartGleam = .5; +$graph->renderer->options->dataBorder = false; +$graph->renderer->options->pieChartHeight = 16; +$graph->renderer->options->legendSymbolGleam = .5; +$graph->renderer->options->pieChartOffset = 100; + +$graph->driver = new ezcGraphSvgDriver(); + +// Output the graph with std SVG driver +$graph->render( 500, 200, 'forum_weekly.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/examples/forum_year.php b/include/ezcomponents/Graph/docs/examples/forum_year.php new file mode 100644 index 000000000..38ea677b6 --- /dev/null +++ b/include/ezcomponents/Graph/docs/examples/forum_year.php @@ -0,0 +1,45 @@ +palette = new ezcGraphPaletteEzGreen(); +$graph->legend = false; + +// Add the data and hilight norwegian data set +$graph->data['week'] = new ezcGraphArrayDataSet( array( + 'Lukasz Serwatka' => 1805, + 'Paul Forsyth' => 1491, + 'Paul Borgermans' => 1316, + 'Kristof Coomans' => 956, + 'Alex Jones' => 942 , + 'Bard Farstad' => 941, + 'Tony Wood' => 900, +) ); + +// Set graph title +$graph->title = 'Alltime 10 most active users on forum'; + +// Use 3d renderer, and beautify it +$graph->renderer = new ezcGraphRenderer3d(); +$graph->renderer->options->pieChartShadowSize = 12; +$graph->renderer->options->pieChartGleam = .5; +$graph->renderer->options->dataBorder = false; +$graph->renderer->options->pieChartHeight = 16; +$graph->renderer->options->legendSymbolGleam = .5; +$graph->renderer->options->pieChartOffset = 100; + +$graph->driver = new ezcGraphSvgDriver(); + +// Output the graph with std SVG driver +$graph->render( 500, 200, 'forum_year.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/examples/php_magazine.php b/include/ezcomponents/Graph/docs/examples/php_magazine.php new file mode 100644 index 000000000..ebf006674 --- /dev/null +++ b/include/ezcomponents/Graph/docs/examples/php_magazine.php @@ -0,0 +1,45 @@ +palette = new ezcGraphPaletteEzRed(); + +// Add the data and hilight norwegian data set +$graph->data['articles'] = new ezcGraphArrayDataSet( array( + 'English' => 1300000, + 'Germany' => 452000, + 'Netherlands' => 217000, + 'Norway' => 70000, +) ); +$graph->data['articles']->highlight['Germany'] = true; + +// Set graph title +$graph->title = 'Wikipedia articles by country'; + +// Modify pie chart label to only show amount and percent +$graph->options->label = '%2$d (%3$.1f%%)'; + +// Use 3d renderer, and beautify it +$graph->renderer = new ezcGraphRenderer3d(); + +$graph->renderer->options->pieChartShadowSize = 12; +$graph->renderer->options->pieChartGleam = .5; +$graph->renderer->options->dataBorder = false; + +$graph->renderer->options->pieChartHeight = 8; +$graph->renderer->options->pieChartRotation = .8; +$graph->renderer->options->pieChartOffset = 190; + +$graph->renderer->options->legendSymbolGleam = .5; + +// Output the graph with std SVG driver +$graph->render( 400, 200, 'wikipedia.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/examples/wikipedia.php b/include/ezcomponents/Graph/docs/examples/wikipedia.php new file mode 100644 index 000000000..9a524394c --- /dev/null +++ b/include/ezcomponents/Graph/docs/examples/wikipedia.php @@ -0,0 +1,39 @@ +data['articles'] = new ezcGraphArrayDataSet( array( + 'English' => 1300000, + 'Germany' => 452000, + 'Netherlands' => 217000, + 'Norway' => 70000, +) ); +$graph->data['articles']->highlight['Norway'] = true; + +// Set graph title +$graph->title = 'Articles by country'; + +// Modify pie chart label to only show amount and percent +$graph->options->label = '%2$d (%3$.1f%%)'; + +// Use 3d renderer, and beautify it +$graph->renderer = new ezcGraphRenderer3d(); +$graph->renderer->options->pieChartShadowSize = 12; +$graph->renderer->options->pieChartGleam = .5; +$graph->renderer->options->dataBorder = false; +$graph->renderer->options->pieChartHeight = 16; +$graph->renderer->options->legendSymbolGleam = .5; +$graph->renderer->options->pieChartOffset = 100; + +// Output the graph with std SVG driver +$graph->render( 500, 200, 'wiki_graph.svg' ); + +?> diff --git a/include/ezcomponents/Graph/docs/img/tutorial_axis_datetime.svg.png b/include/ezcomponents/Graph/docs/img/tutorial_axis_datetime.svg.png new file mode 100644 index 0000000000000000000000000000000000000000..cfc99160082257112305cdca1a70506ecbff8af1 GIT binary patch literal 15411 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/Graph/docs/img/tutorial_axis_labeled.svg.png b/include/ezcomponents/Graph/docs/img/tutorial_axis_labeled.svg.png new file mode 100644 index 0000000000000000000000000000000000000000..73845f23d6f00b5eabecbf2c833b3e7d71c03578 GIT binary patch literal 10674 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 JGO)h?{{Tnz3hDp= literal 0 HcmV?d00001 diff --git a/include/ezcomponents/Graph/docs/img/tutorial_axis_numeric.svg.png b/include/ezcomponents/Graph/docs/img/tutorial_axis_numeric.svg.png new file mode 100644 index 0000000000000000000000000000000000000000..e976c23141e4bc2127187f0cd0564136e3656965 GIT binary patch literal 17913 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/Graph/docs/img/tutorial_bar_chart.svg.png b/include/ezcomponents/Graph/docs/img/tutorial_bar_chart.svg.png new file mode 100644 index 0000000000000000000000000000000000000000..682bc6c76ae796624490f61e46c1bbdcfddbb26f GIT binary patch literal 14450 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/Graph/docs/img/tutorial_bar_chart_3d.svg.png b/include/ezcomponents/Graph/docs/img/tutorial_bar_chart_3d.svg.png new file mode 100644 index 0000000000000000000000000000000000000000..fa8dab5a0a780ef4702656bc9b3bdfa784787245 GIT binary patch literal 25350 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/Graph/docs/img/tutorial_bar_chart_options.svg.png b/include/ezcomponents/Graph/docs/img/tutorial_bar_chart_options.svg.png new file mode 100644 index 0000000000000000000000000000000000000000..7963d331891682d9275388a9b35d4d5603c3582c GIT binary patch literal 17995 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 LNkvXXu0mjffAf>= literal 0 HcmV?d00001 diff --git a/include/ezcomponents/Graph/docs/img/tutorial_chart_background.svg.png b/include/ezcomponents/Graph/docs/img/tutorial_chart_background.svg.png new file mode 100644 index 0000000000000000000000000000000000000000..b087c4fd38b07d4473d92e9dbbf61e65737c1b0b GIT binary patch literal 23140 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 dvW*K_@^Wic#=UJMs0fXtru!~fp9-^caFxo76g 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/Graph/docs/img/tutorial_chart_title.svg.png b/include/ezcomponents/Graph/docs/img/tutorial_chart_title.svg.png new file mode 100644 index 0000000000000000000000000000000000000000..1eec92f67ef619709f83a93cf5bb315632e3b25f GIT binary patch literal 21907 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 literal 0 HcmV?d00001 diff --git a/include/ezcomponents/Graph/docs/img/tutorial_complex_radar_chart.svg.png b/include/ezcomponents/Graph/docs/img/tutorial_complex_radar_chart.svg.png new file mode 100644 index 0000000000000000000000000000000000000000..bfd3005771f4f0252101f228d78fccba34e8ec7d GIT binary patch literal 72733 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 }E;J@V9rLxBKS#0ednw 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 z%0Db)kJw^>%4 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⪙Nn@fNtz!xXI-K~i*lv$$ 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�ZPGNQ1{0ks%0JBWg`zjP@H@hXEg#3a1f;&8&B} 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 ox;FU)G|*b{v=QYS*UeufB26ffWS{%!2~^y$Nh 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 z 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