diff options
Diffstat (limited to 'rsvg/tests/src/reference.rs')
-rw-r--r-- | rsvg/tests/src/reference.rs | 1152 |
1 files changed, 1152 insertions, 0 deletions
diff --git a/rsvg/tests/src/reference.rs b/rsvg/tests/src/reference.rs new file mode 100644 index 00000000..37f1a562 --- /dev/null +++ b/rsvg/tests/src/reference.rs @@ -0,0 +1,1152 @@ +//! Tests with reference images. +//! +//! This is the bulk of librsvg's black-box tests. In principle, each test takes an SVG file, renders +//! it to a raster image, and compares that image to a reference image stored on disk. If the images +//! are "too different", the test fails. We allow for minor differences in rendering to account for +//! antialiasing artifacts, floating-point variations, and such. +//! + +use cairo; +use rsvg::{ + surface_utils::shared_surface::{SharedImageSurface, SurfaceType}, + CairoRenderer, IntrinsicDimensions, Length, Loader, +}; + +use crate::reference_utils::{Compare, Evaluate, Reference}; +use crate::utils::{load_svg, render_document, setup_font_map, setup_language, SurfaceSize}; +use crate::{test_compare_render_output, test_svg_reference}; + +use std::path::{Path, PathBuf}; + +// The original reference images from the SVG1.1 test suite are at 72 DPI. +const TEST_SUITE_DPI: f64 = 72.0; + +// https://gitlab.gnome.org/GNOME/librsvg/issues/91 +// +// We were computing some offsets incorrectly if the initial transformation matrix +// passed to rsvg_handle_render_cairo() was not the identity matrix. So, +// we create a surface with a "frame" around the destination for the image, +// and then only consider the pixels inside the frame. This will require us +// to have a non-identity transformation (i.e. a translation matrix), which +// will test for this bug. +// +// The frame size is meant to be a ridiculous number to simulate an arbitrary +// offset. +const FRAME_SIZE: i32 = 47; + +fn reference_test(path: &Path) { + setup_language(); + setup_font_map(); + + let path_base_name = path.file_stem().unwrap().to_string_lossy().to_owned(); + if path_base_name.starts_with("ignore") { + return; + } + + let reference = reference_path(&path); + + let handle = Loader::new() + .read_path(&path) + .unwrap_or_else(|e| panic!("could not load: {}", e)); + + let renderer = CairoRenderer::new(&handle) + .test_mode(true) + .with_dpi(TEST_SUITE_DPI, TEST_SUITE_DPI); + let (width, height) = image_size(renderer.intrinsic_dimensions(), TEST_SUITE_DPI); + + let surface = cairo::ImageSurface::create( + cairo::Format::ARgb32, + width + 2 * FRAME_SIZE, + height + 2 * FRAME_SIZE, + ) + .unwrap(); + + { + let cr = cairo::Context::new(&surface).expect("Failed to create a cairo context"); + cr.translate(f64::from(FRAME_SIZE), f64::from(FRAME_SIZE)); + renderer + .render_document( + &cr, + &cairo::Rectangle::new(0.0, 0.0, f64::from(width), f64::from(height)), + ) + .unwrap(); + } + + let surface = extract_rectangle(&surface, FRAME_SIZE, FRAME_SIZE, width, height).unwrap(); + + let output_surf = SharedImageSurface::wrap(surface, SurfaceType::SRgb).unwrap(); + + Reference::from_png(&reference) + .compare(&output_surf) + .evaluate(&output_surf, &path_base_name); +} + +/// Turns `/foo/bar/baz.svg` into `/foo/bar/baz-ref.png`. +fn reference_path(path: &Path) -> PathBuf { + let basename = path.file_stem().unwrap(); + + let mut reference_filename = basename.to_string_lossy().into_owned(); + reference_filename.push_str("-ref.png"); + + path.with_file_name(reference_filename) +} + +fn extract_rectangle( + source: &cairo::ImageSurface, + x: i32, + y: i32, + w: i32, + h: i32, +) -> Result<cairo::ImageSurface, cairo::Error> { + let dest = cairo::ImageSurface::create(cairo::Format::ARgb32, w, h)?; + let cr = cairo::Context::new(&dest).expect("Failed to create a cairo context"); + cr.set_source_surface(&source, f64::from(-x), f64::from(-y)) + .unwrap(); + cr.paint().unwrap(); + Ok(dest) +} + +/// Computes the (width, height) pixel size at which an SVG should be rendered, based on its intrinsic dimensions. +/// +/// # Panics: +/// +/// Will panic if none of the following conditions are met: +/// +/// * Width and height both exist +/// * Width and height do not exist, but viewBox exists. +fn image_size(dim: IntrinsicDimensions, dpi: f64) -> (i32, i32) { + let IntrinsicDimensions { + width, + height, + vbox, + } = dim; + + use rsvg::LengthUnit::*; + + if !(has_supported_unit(&width) && has_supported_unit(&height)) { + panic!("SVG has unsupported unit type in width or height"); + } + + #[rustfmt::skip] + let (width, height) = match (width, height, vbox) { + (Length { length: w, unit: Percent }, + Length { length: h, unit: Percent }, vbox) if w == 1.0 && h == 1.0 => { + if let Some(vbox) = vbox { + (vbox.width(), vbox.height()) + } else { + panic!("SVG with percentage width/height must have a viewBox"); + } + } + + (Length { length: _, unit: Percent }, + Length { length: _, unit: Percent }, _) => { + panic!("Test suite only supports percentage width/height at 100%"); + } + + (w, h, _) => { + (normalize(&w, dpi), normalize(&h, dpi)) + } + }; + + // Keep in sync with c_api.rs + let width = checked_i32(width.round()); + let height = checked_i32(height.round()); + + (width, height) +} + +// Keep in sync with c_api.rs +fn checked_i32(x: f64) -> i32 { + cast::i32(x).expect("overflow when converting f64 to i32") +} + +fn has_supported_unit(l: &Length) -> bool { + use rsvg::LengthUnit::*; + + match l.unit { + Percent | Px | In | Cm | Mm | Pt | Pc => true, + _ => false, + } +} + +const POINTS_PER_INCH: f64 = 72.0; +const CM_PER_INCH: f64 = 2.54; +const MM_PER_INCH: f64 = 25.4; +const PICA_PER_INCH: f64 = 6.0; + +fn normalize(l: &Length, dpi: f64) -> f64 { + use rsvg::LengthUnit::*; + + match l.unit { + Px => l.length, + In => l.length * dpi, + Cm => l.length * dpi / CM_PER_INCH, + Mm => l.length * dpi / MM_PER_INCH, + Pt => l.length * dpi / POINTS_PER_INCH, + Pc => l.length * dpi / PICA_PER_INCH, + _ => panic!("unsupported length unit"), + } +} + +fn reftest(filename: &str) { + let mut full_filename = PathBuf::new(); + full_filename.push("tests/fixtures/reftests"); + full_filename.push(filename); + + reference_test(&full_filename); +} + +macro_rules! t { + ($test_name:ident, $filename:expr) => { + #[test] + fn $test_name() { + reftest($filename); + } + }; +} + +#[rustfmt::skip] +mod tests { + use super::*; + + t!(a_pseudo_class_svg, "a-pseudo-class.svg"); + t!(bug483_attribute_selectors_svg, "bug483-attribute-selectors.svg"); + t!(bug525_specificity_svg, "bug525-specificity.svg"); + t!(css_import_svg, "css-import.svg"); + t!(css_import_url_svg, "css-import-url.svg"); + t!(duplicate_id_svg, "duplicate-id.svg"); + t!(filter_component_transfer_from_reference_page_svg, "filter-component-transfer-from-reference-page.svg"); + t!(filter_conv_bounds_svg, "filter-conv-bounds.svg"); + t!(filter_conv_divisor_svg, "filter-conv-divisor.svg"); + t!(filter_effects_region_svg, "filter-effects-region.svg"); + t!(filter_image_from_reference_page_svg, "filter-image-from-reference-page.svg"); + t!(filter_kernel_unit_length_svg, "filter-kernel-unit-length.svg"); + t!(filter_offset_svg, "filter-offset.svg"); + t!(font_shorthand_svg, "font-shorthand.svg"); + t!(gzip_compressed_svg, "gzip-compressed.svg"); + t!(hexchat_svg, "hexchat.svg"); + t!(ignore_filter_composite_color_interpolation_filters_svg, "ignore-filter-composite-color-interpolation-filters.svg"); + t!(include_compressed_svg, "include-compressed.svg"); + t!(include_fallback_svg, "include-fallback.svg"); + t!(include_text_svg, "include-text.svg"); + t!(rtl_tspan_svg, "rtl-tspan.svg"); + t!(specificity_svg, "specificity.svg"); + t!(structural_pseudo_classes_svg, "structural-pseudo-classes.svg"); + t!(style_with_xml_comments_svg, "style-with-xml-comments.svg"); + t!(system_language_de_svg, "system-language-de.svg"); + t!(system_language_en_svg, "system-language-en.svg"); + t!(system_language_other_svg, "system-language-other.svg"); + t!(text_objectboundingbox_svg, "text-objectBoundingBox.svg"); + t!(xml_lang_css_inherit_svg, "xml-lang-css-inherit.svg"); + t!(xml_lang_css_svg, "xml-lang-css.svg"); + t!(adwaita_ac_adapter_symbolic_svg, "adwaita/ac-adapter-symbolic.svg"); + t!(adwaita_accessories_calculator_symbolic_svg, "adwaita/accessories-calculator-symbolic.svg"); + t!(adwaita_accessories_character_map_symbolic_svg, "adwaita/accessories-character-map-symbolic.svg"); + t!(adwaita_accessories_dictionary_symbolic_svg, "adwaita/accessories-dictionary-symbolic.svg"); + t!(adwaita_accessories_text_editor_symbolic_svg, "adwaita/accessories-text-editor-symbolic.svg"); + t!(adwaita_action_unavailable_symbolic_svg, "adwaita/action-unavailable-symbolic.svg"); + t!(adwaita_address_book_new_symbolic_svg, "adwaita/address-book-new-symbolic.svg"); + t!(adwaita_airplane_mode_symbolic_svg, "adwaita/airplane-mode-symbolic.svg"); + t!(adwaita_alarm_symbolic_svg, "adwaita/alarm-symbolic.svg"); + t!(adwaita_applets_screenshooter_symbolic_svg, "adwaita/applets-screenshooter-symbolic.svg"); + t!(adwaita_application_certificate_symbolic_svg, "adwaita/application-certificate-symbolic.svg"); + t!(adwaita_application_exit_symbolic_svg, "adwaita/application-exit-symbolic.svg"); + t!(adwaita_application_rss_xml_symbolic_svg, "adwaita/application-rss-xml-symbolic.svg"); + t!(adwaita_applications_engineering_symbolic_svg, "adwaita/applications-engineering-symbolic.svg"); + t!(adwaita_applications_games_symbolic_svg, "adwaita/applications-games-symbolic.svg"); + t!(adwaita_applications_graphics_symbolic_svg, "adwaita/applications-graphics-symbolic.svg"); + t!(adwaita_applications_multimedia_symbolic_svg, "adwaita/applications-multimedia-symbolic.svg"); + t!(adwaita_applications_science_symbolic_svg, "adwaita/applications-science-symbolic.svg"); + t!(adwaita_applications_system_symbolic_svg, "adwaita/applications-system-symbolic.svg"); + t!(adwaita_applications_utilities_symbolic_svg, "adwaita/applications-utilities-symbolic.svg"); + t!(adwaita_application_x_addon_symbolic_svg, "adwaita/application-x-addon-symbolic.svg"); + t!(adwaita_application_x_appliance_symbolic_svg, "adwaita/application-x-appliance-symbolic.svg"); + t!(adwaita_application_x_executable_symbolic_svg, "adwaita/application-x-executable-symbolic.svg"); + t!(adwaita_application_x_firmware_symbolic_svg, "adwaita/application-x-firmware-symbolic.svg"); + t!(adwaita_appointment_missed_symbolic_svg, "adwaita/appointment-missed-symbolic.svg"); + t!(adwaita_appointment_new_symbolic_svg, "adwaita/appointment-new-symbolic.svg"); + t!(adwaita_appointment_soon_symbolic_svg, "adwaita/appointment-soon-symbolic.svg"); + t!(adwaita_audio_card_symbolic_svg, "adwaita/audio-card-symbolic.svg"); + t!(adwaita_audio_headphones_symbolic_svg, "adwaita/audio-headphones-symbolic.svg"); + t!(adwaita_audio_headset_symbolic_svg, "adwaita/audio-headset-symbolic.svg"); + t!(adwaita_audio_input_microphone_symbolic_svg, "adwaita/audio-input-microphone-symbolic.svg"); + t!(adwaita_audio_speakers_symbolic_svg, "adwaita/audio-speakers-symbolic.svg"); + t!(adwaita_audio_volume_high_symbolic_svg, "adwaita/audio-volume-high-symbolic.svg"); + t!(adwaita_audio_volume_low_symbolic_svg, "adwaita/audio-volume-low-symbolic.svg"); + t!(adwaita_audio_volume_medium_symbolic_svg, "adwaita/audio-volume-medium-symbolic.svg"); + t!(adwaita_audio_volume_muted_symbolic_svg, "adwaita/audio-volume-muted-symbolic.svg"); + t!(adwaita_audio_volume_overamplified_symbolic_svg, "adwaita/audio-volume-overamplified-symbolic.svg"); + t!(adwaita_audio_x_generic_symbolic_svg, "adwaita/audio-x-generic-symbolic.svg"); + t!(adwaita_auth_fingerprint_symbolic_svg, "adwaita/auth-fingerprint-symbolic.svg"); + t!(adwaita_auth_smartcard_symbolic_svg, "adwaita/auth-smartcard-symbolic.svg"); + t!(adwaita_avatar_default_symbolic_svg, "adwaita/avatar-default-symbolic.svg"); + t!(adwaita_battery_caution_charging_symbolic_svg, "adwaita/battery-caution-charging-symbolic.svg"); + t!(adwaita_battery_caution_symbolic_svg, "adwaita/battery-caution-symbolic.svg"); + t!(adwaita_battery_empty_charging_symbolic_svg, "adwaita/battery-empty-charging-symbolic.svg"); + t!(adwaita_battery_empty_symbolic_svg, "adwaita/battery-empty-symbolic.svg"); + t!(adwaita_battery_full_charged_symbolic_svg, "adwaita/battery-full-charged-symbolic.svg"); + t!(adwaita_battery_full_charging_symbolic_svg, "adwaita/battery-full-charging-symbolic.svg"); + t!(adwaita_battery_full_symbolic_svg, "adwaita/battery-full-symbolic.svg"); + t!(adwaita_battery_good_charging_symbolic_svg, "adwaita/battery-good-charging-symbolic.svg"); + t!(adwaita_battery_good_symbolic_svg, "adwaita/battery-good-symbolic.svg"); + t!(adwaita_battery_low_charging_symbolic_svg, "adwaita/battery-low-charging-symbolic.svg"); + t!(adwaita_battery_low_symbolic_svg, "adwaita/battery-low-symbolic.svg"); + t!(adwaita_battery_missing_symbolic_svg, "adwaita/battery-missing-symbolic.svg"); + t!(adwaita_battery_symbolic_svg, "adwaita/battery-symbolic.svg"); + t!(adwaita_bluetooth_active_symbolic_svg, "adwaita/bluetooth-active-symbolic.svg"); + t!(adwaita_bluetooth_disabled_symbolic_svg, "adwaita/bluetooth-disabled-symbolic.svg"); + t!(adwaita_bluetooth_symbolic_svg, "adwaita/bluetooth-symbolic.svg"); + t!(adwaita_bookmark_new_symbolic_svg, "adwaita/bookmark-new-symbolic.svg"); + t!(adwaita_call_missed_symbolic_svg, "adwaita/call-missed-symbolic.svg"); + t!(adwaita_call_start_symbolic_svg, "adwaita/call-start-symbolic.svg"); + t!(adwaita_call_stop_symbolic_svg, "adwaita/call-stop-symbolic.svg"); + t!(adwaita_camera_photo_symbolic_svg, "adwaita/camera-photo-symbolic.svg"); + t!(adwaita_camera_switch_symbolic_svg, "adwaita/camera-switch-symbolic.svg"); + t!(adwaita_camera_video_symbolic_svg, "adwaita/camera-video-symbolic.svg"); + t!(adwaita_camera_web_symbolic_svg, "adwaita/camera-web-symbolic.svg"); + t!(adwaita_changes_allow_symbolic_svg, "adwaita/changes-allow-symbolic.svg"); + t!(adwaita_changes_prevent_symbolic_svg, "adwaita/changes-prevent-symbolic.svg"); + t!(adwaita_channel_insecure_symbolic_svg, "adwaita/channel-insecure-symbolic.svg"); + t!(adwaita_channel_secure_symbolic_svg, "adwaita/channel-secure-symbolic.svg"); + t!(adwaita_checkbox_checked_symbolic_svg, "adwaita/checkbox-checked-symbolic.svg"); + t!(adwaita_checkbox_mixed_symbolic_svg, "adwaita/checkbox-mixed-symbolic.svg"); + t!(adwaita_checkbox_symbolic_svg, "adwaita/checkbox-symbolic.svg"); + t!(adwaita_colorimeter_colorhug_symbolic_svg, "adwaita/colorimeter-colorhug-symbolic.svg"); + t!(adwaita_color_select_symbolic_svg, "adwaita/color-select-symbolic.svg"); + t!(adwaita_computer_apple_ipad_symbolic_svg, "adwaita/computer-apple-ipad-symbolic.svg"); + t!(adwaita_computer_fail_symbolic_svg, "adwaita/computer-fail-symbolic.svg"); + t!(adwaita_computer_symbolic_svg, "adwaita/computer-symbolic.svg"); + t!(adwaita_contact_new_symbolic_svg, "adwaita/contact-new-symbolic.svg"); + t!(adwaita_content_loading_symbolic_svg, "adwaita/content-loading-symbolic.svg"); + t!(adwaita_daytime_sunrise_symbolic_svg, "adwaita/daytime-sunrise-symbolic.svg"); + t!(adwaita_daytime_sunset_symbolic_svg, "adwaita/daytime-sunset-symbolic.svg"); + t!(adwaita_dialog_error_symbolic_svg, "adwaita/dialog-error-symbolic.svg"); + t!(adwaita_dialog_information_symbolic_svg, "adwaita/dialog-information-symbolic.svg"); + t!(adwaita_dialog_password_symbolic_svg, "adwaita/dialog-password-symbolic.svg"); + t!(adwaita_dialog_question_symbolic_svg, "adwaita/dialog-question-symbolic.svg"); + t!(adwaita_dialog_warning_symbolic_svg, "adwaita/dialog-warning-symbolic.svg"); + t!(adwaita_display_brightness_symbolic_svg, "adwaita/display-brightness-symbolic.svg"); + t!(adwaita_display_projector_symbolic_svg, "adwaita/display-projector-symbolic.svg"); + t!(adwaita_document_edit_symbolic_svg, "adwaita/document-edit-symbolic.svg"); + t!(adwaita_document_new_symbolic_svg, "adwaita/document-new-symbolic.svg"); + t!(adwaita_document_open_recent_symbolic_svg, "adwaita/document-open-recent-symbolic.svg"); + t!(adwaita_document_open_symbolic_svg, "adwaita/document-open-symbolic.svg"); + t!(adwaita_document_page_setup_symbolic_svg, "adwaita/document-page-setup-symbolic.svg"); + t!(adwaita_document_print_preview_symbolic_svg, "adwaita/document-print-preview-symbolic.svg"); + t!(adwaita_document_print_symbolic_svg, "adwaita/document-print-symbolic.svg"); + t!(adwaita_document_properties_symbolic_svg, "adwaita/document-properties-symbolic.svg"); + t!(adwaita_document_revert_symbolic_rtl_svg, "adwaita/document-revert-symbolic-rtl.svg"); + t!(adwaita_document_revert_symbolic_svg, "adwaita/document-revert-symbolic.svg"); + t!(adwaita_document_save_as_symbolic_svg, "adwaita/document-save-as-symbolic.svg"); + t!(adwaita_document_save_symbolic_svg, "adwaita/document-save-symbolic.svg"); + t!(adwaita_document_send_symbolic_svg, "adwaita/document-send-symbolic.svg"); + t!(adwaita_drive_harddisk_ieee1394_symbolic_svg, "adwaita/drive-harddisk-ieee1394-symbolic.svg"); + t!(adwaita_drive_harddisk_solidstate_symbolic_svg, "adwaita/drive-harddisk-solidstate-symbolic.svg"); + t!(adwaita_drive_harddisk_symbolic_svg, "adwaita/drive-harddisk-symbolic.svg"); + t!(adwaita_drive_harddisk_system_symbolic_svg, "adwaita/drive-harddisk-system-symbolic.svg"); + t!(adwaita_drive_harddisk_usb_symbolic_svg, "adwaita/drive-harddisk-usb-symbolic.svg"); + t!(adwaita_drive_multidisk_symbolic_svg, "adwaita/drive-multidisk-symbolic.svg"); + t!(adwaita_drive_optical_symbolic_svg, "adwaita/drive-optical-symbolic.svg"); + t!(adwaita_drive_removable_media_symbolic_svg, "adwaita/drive-removable-media-symbolic.svg"); + t!(adwaita_edit_clear_all_symbolic_svg, "adwaita/edit-clear-all-symbolic.svg"); + t!(adwaita_edit_clear_symbolic_rtl_svg, "adwaita/edit-clear-symbolic-rtl.svg"); + t!(adwaita_edit_clear_symbolic_svg, "adwaita/edit-clear-symbolic.svg"); + t!(adwaita_edit_copy_symbolic_svg, "adwaita/edit-copy-symbolic.svg"); + t!(adwaita_edit_cut_symbolic_svg, "adwaita/edit-cut-symbolic.svg"); + t!(adwaita_edit_delete_symbolic_svg, "adwaita/edit-delete-symbolic.svg"); + t!(adwaita_edit_find_replace_symbolic_svg, "adwaita/edit-find-replace-symbolic.svg"); + t!(adwaita_edit_find_symbolic_svg, "adwaita/edit-find-symbolic.svg"); + t!(adwaita_edit_paste_symbolic_svg, "adwaita/edit-paste-symbolic.svg"); + t!(adwaita_edit_redo_symbolic_rtl_svg, "adwaita/edit-redo-symbolic-rtl.svg"); + t!(adwaita_edit_redo_symbolic_svg, "adwaita/edit-redo-symbolic.svg"); + t!(adwaita_edit_select_all_symbolic_svg, "adwaita/edit-select-all-symbolic.svg"); + t!(adwaita_edit_select_symbolic_svg, "adwaita/edit-select-symbolic.svg"); + t!(adwaita_edit_undo_symbolic_rtl_svg, "adwaita/edit-undo-symbolic-rtl.svg"); + t!(adwaita_edit_undo_symbolic_svg, "adwaita/edit-undo-symbolic.svg"); + t!(adwaita_emblem_default_symbolic_svg, "adwaita/emblem-default-symbolic.svg"); + t!(adwaita_emblem_documents_symbolic_svg, "adwaita/emblem-documents-symbolic.svg"); + t!(adwaita_emblem_favorite_symbolic_svg, "adwaita/emblem-favorite-symbolic.svg"); + t!(adwaita_emblem_important_symbolic_svg, "adwaita/emblem-important-symbolic.svg"); + t!(adwaita_emblem_music_symbolic_svg, "adwaita/emblem-music-symbolic.svg"); + t!(adwaita_emblem_ok_symbolic_svg, "adwaita/emblem-ok-symbolic.svg"); + t!(adwaita_emblem_photos_symbolic_svg, "adwaita/emblem-photos-symbolic.svg"); + t!(adwaita_emblem_shared_symbolic_svg, "adwaita/emblem-shared-symbolic.svg"); + t!(adwaita_emblem_synchronizing_symbolic_svg, "adwaita/emblem-synchronizing-symbolic.svg"); + t!(adwaita_emblem_system_symbolic_svg, "adwaita/emblem-system-symbolic.svg"); + t!(adwaita_emblem_videos_symbolic_svg, "adwaita/emblem-videos-symbolic.svg"); + t!(adwaita_emoji_activities_symbolic_svg, "adwaita/emoji-activities-symbolic.svg"); + t!(adwaita_emoji_body_symbolic_svg, "adwaita/emoji-body-symbolic.svg"); + t!(adwaita_emoji_flags_symbolic_svg, "adwaita/emoji-flags-symbolic.svg"); + t!(adwaita_emoji_food_symbolic_svg, "adwaita/emoji-food-symbolic.svg"); + t!(adwaita_emoji_nature_symbolic_svg, "adwaita/emoji-nature-symbolic.svg"); + t!(adwaita_emoji_objects_symbolic_svg, "adwaita/emoji-objects-symbolic.svg"); + t!(adwaita_emoji_people_symbolic_svg, "adwaita/emoji-people-symbolic.svg"); + t!(adwaita_emoji_recent_symbolic_svg, "adwaita/emoji-recent-symbolic.svg"); + t!(adwaita_emoji_symbols_symbolic_svg, "adwaita/emoji-symbols-symbolic.svg"); + t!(adwaita_emoji_travel_symbolic_svg, "adwaita/emoji-travel-symbolic.svg"); + t!(adwaita_emote_love_symbolic_svg, "adwaita/emote-love-symbolic.svg"); + t!(adwaita_error_correct_symbolic_svg, "adwaita/error-correct-symbolic.svg"); + t!(adwaita_face_angel_symbolic_svg, "adwaita/face-angel-symbolic.svg"); + t!(adwaita_face_angry_symbolic_svg, "adwaita/face-angry-symbolic.svg"); + t!(adwaita_face_confused_symbolic_svg, "adwaita/face-confused-symbolic.svg"); + t!(adwaita_face_cool_symbolic_svg, "adwaita/face-cool-symbolic.svg"); + t!(adwaita_face_crying_symbolic_svg, "adwaita/face-crying-symbolic.svg"); + t!(adwaita_face_devilish_symbolic_svg, "adwaita/face-devilish-symbolic.svg"); + t!(adwaita_face_embarrassed_symbolic_svg, "adwaita/face-embarrassed-symbolic.svg"); + t!(adwaita_face_glasses_symbolic_svg, "adwaita/face-glasses-symbolic.svg"); + t!(adwaita_face_kiss_symbolic_svg, "adwaita/face-kiss-symbolic.svg"); + t!(adwaita_face_laugh_symbolic_svg, "adwaita/face-laugh-symbolic.svg"); + t!(adwaita_face_monkey_symbolic_svg, "adwaita/face-monkey-symbolic.svg"); + t!(adwaita_face_plain_symbolic_svg, "adwaita/face-plain-symbolic.svg"); + t!(adwaita_face_raspberry_symbolic_svg, "adwaita/face-raspberry-symbolic.svg"); + t!(adwaita_face_sad_symbolic_svg, "adwaita/face-sad-symbolic.svg"); + t!(adwaita_face_shutmouth_symbolic_svg, "adwaita/face-shutmouth-symbolic.svg"); + t!(adwaita_face_sick_symbolic_svg, "adwaita/face-sick-symbolic.svg"); + t!(adwaita_face_smile_big_symbolic_svg, "adwaita/face-smile-big-symbolic.svg"); + t!(adwaita_face_smile_symbolic_svg, "adwaita/face-smile-symbolic.svg"); + t!(adwaita_face_smirk_symbolic_svg, "adwaita/face-smirk-symbolic.svg"); + t!(adwaita_face_surprise_symbolic_svg, "adwaita/face-surprise-symbolic.svg"); + t!(adwaita_face_tired_symbolic_svg, "adwaita/face-tired-symbolic.svg"); + t!(adwaita_face_uncertain_symbolic_svg, "adwaita/face-uncertain-symbolic.svg"); + t!(adwaita_face_wink_symbolic_svg, "adwaita/face-wink-symbolic.svg"); + t!(adwaita_face_worried_symbolic_svg, "adwaita/face-worried-symbolic.svg"); + t!(adwaita_face_yawn_symbolic_svg, "adwaita/face-yawn-symbolic.svg"); + t!(adwaita_find_location_symbolic_svg, "adwaita/find-location-symbolic.svg"); + t!(adwaita_focus_legacy_systray_symbolic_svg, "adwaita/focus-legacy-systray-symbolic.svg"); + t!(adwaita_focus_top_bar_symbolic_svg, "adwaita/focus-top-bar-symbolic.svg"); + t!(adwaita_focus_windows_symbolic_svg, "adwaita/focus-windows-symbolic.svg"); + t!(adwaita_folder_documents_symbolic_svg, "adwaita/folder-documents-symbolic.svg"); + t!(adwaita_folder_download_symbolic_svg, "adwaita/folder-download-symbolic.svg"); + t!(adwaita_folder_drag_accept_symbolic_svg, "adwaita/folder-drag-accept-symbolic.svg"); + t!(adwaita_folder_music_symbolic_svg, "adwaita/folder-music-symbolic.svg"); + t!(adwaita_folder_new_symbolic_svg, "adwaita/folder-new-symbolic.svg"); + t!(adwaita_folder_open_symbolic_svg, "adwaita/folder-open-symbolic.svg"); + t!(adwaita_folder_pictures_symbolic_svg, "adwaita/folder-pictures-symbolic.svg"); + t!(adwaita_folder_publicshare_symbolic_svg, "adwaita/folder-publicshare-symbolic.svg"); + t!(adwaita_folder_remote_symbolic_svg, "adwaita/folder-remote-symbolic.svg"); + t!(adwaita_folder_saved_search_symbolic_svg, "adwaita/folder-saved-search-symbolic.svg"); + t!(adwaita_folder_symbolic_svg, "adwaita/folder-symbolic.svg"); + t!(adwaita_folder_templates_symbolic_svg, "adwaita/folder-templates-symbolic.svg"); + t!(adwaita_folder_videos_symbolic_svg, "adwaita/folder-videos-symbolic.svg"); + t!(adwaita_folder_visiting_symbolic_svg, "adwaita/folder-visiting-symbolic.svg"); + t!(adwaita_font_select_symbolic_svg, "adwaita/font-select-symbolic.svg"); + t!(adwaita_font_x_generic_symbolic_svg, "adwaita/font-x-generic-symbolic.svg"); + t!(adwaita_format_indent_less_symbolic_rtl_svg, "adwaita/format-indent-less-symbolic-rtl.svg"); + t!(adwaita_format_indent_less_symbolic_svg, "adwaita/format-indent-less-symbolic.svg"); + t!(adwaita_format_indent_more_symbolic_rtl_svg, "adwaita/format-indent-more-symbolic-rtl.svg"); + t!(adwaita_format_indent_more_symbolic_svg, "adwaita/format-indent-more-symbolic.svg"); + t!(adwaita_format_justify_center_symbolic_svg, "adwaita/format-justify-center-symbolic.svg"); + t!(adwaita_format_justify_fill_symbolic_svg, "adwaita/format-justify-fill-symbolic.svg"); + t!(adwaita_format_justify_left_symbolic_svg, "adwaita/format-justify-left-symbolic.svg"); + t!(adwaita_format_justify_right_symbolic_svg, "adwaita/format-justify-right-symbolic.svg"); + t!(adwaita_format_text_bold_symbolic_svg, "adwaita/format-text-bold-symbolic.svg"); + t!(adwaita_format_text_direction_symbolic_rtl_svg, "adwaita/format-text-direction-symbolic-rtl.svg"); + t!(adwaita_format_text_direction_symbolic_svg, "adwaita/format-text-direction-symbolic.svg"); + t!(adwaita_format_text_italic_symbolic_svg, "adwaita/format-text-italic-symbolic.svg"); + t!(adwaita_format_text_strikethrough_symbolic_svg, "adwaita/format-text-strikethrough-symbolic.svg"); + t!(adwaita_format_text_underline_symbolic_svg, "adwaita/format-text-underline-symbolic.svg"); + t!(adwaita_gnome_power_manager_symbolic_svg, "adwaita/gnome-power-manager-symbolic.svg"); + t!(adwaita_goa_panel_symbolic_svg, "adwaita/goa-panel-symbolic.svg"); + t!(adwaita_go_bottom_symbolic_svg, "adwaita/go-bottom-symbolic.svg"); + t!(adwaita_go_down_symbolic_svg, "adwaita/go-down-symbolic.svg"); + t!(adwaita_go_first_symbolic_rtl_svg, "adwaita/go-first-symbolic-rtl.svg"); + t!(adwaita_go_first_symbolic_svg, "adwaita/go-first-symbolic.svg"); + t!(adwaita_go_home_symbolic_svg, "adwaita/go-home-symbolic.svg"); + t!(adwaita_go_jump_symbolic_svg, "adwaita/go-jump-symbolic.svg"); + t!(adwaita_go_last_symbolic_rtl_svg, "adwaita/go-last-symbolic-rtl.svg"); + t!(adwaita_go_last_symbolic_svg, "adwaita/go-last-symbolic.svg"); + t!(adwaita_go_next_symbolic_rtl_svg, "adwaita/go-next-symbolic-rtl.svg"); + t!(adwaita_go_next_symbolic_svg, "adwaita/go-next-symbolic.svg"); + t!(adwaita_go_previous_symbolic_rtl_svg, "adwaita/go-previous-symbolic-rtl.svg"); + t!(adwaita_go_previous_symbolic_svg, "adwaita/go-previous-symbolic.svg"); + t!(adwaita_go_top_symbolic_svg, "adwaita/go-top-symbolic.svg"); + t!(adwaita_go_up_symbolic_svg, "adwaita/go-up-symbolic.svg"); + t!(adwaita_help_about_symbolic_svg, "adwaita/help-about-symbolic.svg"); + t!(adwaita_help_browser_symbolic_svg, "adwaita/help-browser-symbolic.svg"); + t!(adwaita_help_contents_symbolic_svg, "adwaita/help-contents-symbolic.svg"); + t!(adwaita_help_faq_symbolic_svg, "adwaita/help-faq-symbolic.svg"); + t!(adwaita_image_loading_symbolic_svg, "adwaita/image-loading-symbolic.svg"); + t!(adwaita_image_x_generic_symbolic_svg, "adwaita/image-x-generic-symbolic.svg"); + t!(adwaita_inode_directory_symbolic_svg, "adwaita/inode-directory-symbolic.svg"); + t!(adwaita_input_dialpad_symbolic_svg, "adwaita/input-dialpad-symbolic.svg"); + t!(adwaita_input_gaming_symbolic_svg, "adwaita/input-gaming-symbolic.svg"); + t!(adwaita_input_keyboard_symbolic_svg, "adwaita/input-keyboard-symbolic.svg"); + t!(adwaita_input_mouse_symbolic_svg, "adwaita/input-mouse-symbolic.svg"); + t!(adwaita_input_tablet_symbolic_svg, "adwaita/input-tablet-symbolic.svg"); + t!(adwaita_input_touchpad_symbolic_svg, "adwaita/input-touchpad-symbolic.svg"); + t!(adwaita_insert_image_symbolic_svg, "adwaita/insert-image-symbolic.svg"); + t!(adwaita_insert_link_symbolic_svg, "adwaita/insert-link-symbolic.svg"); + t!(adwaita_insert_object_symbolic_svg, "adwaita/insert-object-symbolic.svg"); + t!(adwaita_insert_text_symbolic_svg, "adwaita/insert-text-symbolic.svg"); + t!(adwaita_keyboard_brightness_symbolic_svg, "adwaita/keyboard-brightness-symbolic.svg"); + t!(adwaita_list_add_symbolic_svg, "adwaita/list-add-symbolic.svg"); + t!(adwaita_list_remove_all_symbolic_svg, "adwaita/list-remove-all-symbolic.svg"); + t!(adwaita_list_remove_symbolic_svg, "adwaita/list-remove-symbolic.svg"); + t!(adwaita_mail_attachment_symbolic_svg, "adwaita/mail-attachment-symbolic.svg"); + t!(adwaita_mail_mark_important_symbolic_svg, "adwaita/mail-mark-important-symbolic.svg"); + t!(adwaita_mail_read_symbolic_svg, "adwaita/mail-read-symbolic.svg"); + t!(adwaita_mail_replied_symbolic_svg, "adwaita/mail-replied-symbolic.svg"); + t!(adwaita_mail_send_receive_symbolic_svg, "adwaita/mail-send-receive-symbolic.svg"); + t!(adwaita_mail_send_symbolic_svg, "adwaita/mail-send-symbolic.svg"); + t!(adwaita_mail_unread_symbolic_svg, "adwaita/mail-unread-symbolic.svg"); + t!(adwaita_mark_location_symbolic_svg, "adwaita/mark-location-symbolic.svg"); + t!(adwaita_media_eject_symbolic_svg, "adwaita/media-eject-symbolic.svg"); + t!(adwaita_media_flash_symbolic_svg, "adwaita/media-flash-symbolic.svg"); + t!(adwaita_media_floppy_symbolic_svg, "adwaita/media-floppy-symbolic.svg"); + t!(adwaita_media_optical_bd_symbolic_svg, "adwaita/media-optical-bd-symbolic.svg"); + t!(adwaita_media_optical_cd_audio_symbolic_svg, "adwaita/media-optical-cd-audio-symbolic.svg"); + t!(adwaita_media_optical_dvd_symbolic_svg, "adwaita/media-optical-dvd-symbolic.svg"); + t!(adwaita_media_optical_symbolic_svg, "adwaita/media-optical-symbolic.svg"); + t!(adwaita_media_playback_pause_symbolic_svg, "adwaita/media-playback-pause-symbolic.svg"); + t!(adwaita_media_playback_start_symbolic_rtl_svg, "adwaita/media-playback-start-symbolic-rtl.svg"); + t!(adwaita_media_playback_start_symbolic_svg, "adwaita/media-playback-start-symbolic.svg"); + t!(adwaita_media_playback_stop_symbolic_svg, "adwaita/media-playback-stop-symbolic.svg"); + t!(adwaita_media_playlist_consecutive_symbolic_rtl_svg, "adwaita/media-playlist-consecutive-symbolic-rtl.svg"); + t!(adwaita_media_playlist_consecutive_symbolic_svg, "adwaita/media-playlist-consecutive-symbolic.svg"); + t!(adwaita_media_playlist_repeat_song_symbolic_rtl_svg, "adwaita/media-playlist-repeat-song-symbolic-rtl.svg"); + t!(adwaita_media_playlist_repeat_song_symbolic_svg, "adwaita/media-playlist-repeat-song-symbolic.svg"); + t!(adwaita_media_playlist_repeat_symbolic_rtl_svg, "adwaita/media-playlist-repeat-symbolic-rtl.svg"); + t!(adwaita_media_playlist_repeat_symbolic_svg, "adwaita/media-playlist-repeat-symbolic.svg"); + t!(adwaita_media_playlist_shuffle_symbolic_rtl_svg, "adwaita/media-playlist-shuffle-symbolic-rtl.svg"); + t!(adwaita_media_playlist_shuffle_symbolic_svg, "adwaita/media-playlist-shuffle-symbolic.svg"); + t!(adwaita_media_record_symbolic_svg, "adwaita/media-record-symbolic.svg"); + t!(adwaita_media_removable_symbolic_svg, "adwaita/media-removable-symbolic.svg"); + t!(adwaita_media_seek_backward_symbolic_rtl_svg, "adwaita/media-seek-backward-symbolic-rtl.svg"); + t!(adwaita_media_seek_backward_symbolic_svg, "adwaita/media-seek-backward-symbolic.svg"); + t!(adwaita_media_seek_forward_symbolic_rtl_svg, "adwaita/media-seek-forward-symbolic-rtl.svg"); + t!(adwaita_media_seek_forward_symbolic_svg, "adwaita/media-seek-forward-symbolic.svg"); + t!(adwaita_media_skip_backward_symbolic_rtl_svg, "adwaita/media-skip-backward-symbolic-rtl.svg"); + t!(adwaita_media_skip_backward_symbolic_svg, "adwaita/media-skip-backward-symbolic.svg"); + t!(adwaita_media_skip_forward_symbolic_rtl_svg, "adwaita/media-skip-forward-symbolic-rtl.svg"); + t!(adwaita_media_skip_forward_symbolic_svg, "adwaita/media-skip-forward-symbolic.svg"); + t!(adwaita_media_tape_symbolic_svg, "adwaita/media-tape-symbolic.svg"); + t!(adwaita_media_view_subtitles_symbolic_svg, "adwaita/media-view-subtitles-symbolic.svg"); + t!(adwaita_media_zip_symbolic_svg, "adwaita/media-zip-symbolic.svg"); + t!(adwaita_microphone_sensitivity_high_symbolic_svg, "adwaita/microphone-sensitivity-high-symbolic.svg"); + t!(adwaita_microphone_sensitivity_low_symbolic_svg, "adwaita/microphone-sensitivity-low-symbolic.svg"); + t!(adwaita_microphone_sensitivity_medium_symbolic_svg, "adwaita/microphone-sensitivity-medium-symbolic.svg"); + t!(adwaita_microphone_sensitivity_muted_symbolic_svg, "adwaita/microphone-sensitivity-muted-symbolic.svg"); + t!(adwaita_modem_symbolic_svg, "adwaita/modem-symbolic.svg"); + t!(adwaita_multimedia_player_apple_ipod_touch_symbolic_svg, "adwaita/multimedia-player-apple-ipod-touch-symbolic.svg"); + t!(adwaita_multimedia_player_symbolic_svg, "adwaita/multimedia-player-symbolic.svg"); + t!(adwaita_multimedia_volume_control_symbolic_svg, "adwaita/multimedia-volume-control-symbolic.svg"); + t!(adwaita_network_cellular_3g_symbolic_svg, "adwaita/network-cellular-3g-symbolic.svg"); + t!(adwaita_network_cellular_4g_symbolic_svg, "adwaita/network-cellular-4g-symbolic.svg"); + t!(adwaita_network_cellular_acquiring_symbolic_svg, "adwaita/network-cellular-acquiring-symbolic.svg"); + t!(adwaita_network_cellular_connected_symbolic_svg, "adwaita/network-cellular-connected-symbolic.svg"); + t!(adwaita_network_cellular_edge_symbolic_svg, "adwaita/network-cellular-edge-symbolic.svg"); + t!(adwaita_network_cellular_gprs_symbolic_svg, "adwaita/network-cellular-gprs-symbolic.svg"); + t!(adwaita_network_cellular_hspa_symbolic_svg, "adwaita/network-cellular-hspa-symbolic.svg"); + t!(adwaita_network_cellular_no_route_symbolic_svg, "adwaita/network-cellular-no-route-symbolic.svg"); + t!(adwaita_network_cellular_offline_symbolic_svg, "adwaita/network-cellular-offline-symbolic.svg"); + t!(adwaita_network_cellular_signal_excellent_symbolic_svg, "adwaita/network-cellular-signal-excellent-symbolic.svg"); + t!(adwaita_network_cellular_signal_good_symbolic_svg, "adwaita/network-cellular-signal-good-symbolic.svg"); + t!(adwaita_network_cellular_signal_none_symbolic_svg, "adwaita/network-cellular-signal-none-symbolic.svg"); + t!(adwaita_network_cellular_signal_ok_symbolic_svg, "adwaita/network-cellular-signal-ok-symbolic.svg"); + t!(adwaita_network_cellular_signal_weak_symbolic_svg, "adwaita/network-cellular-signal-weak-symbolic.svg"); + t!(adwaita_network_error_symbolic_svg, "adwaita/network-error-symbolic.svg"); + t!(adwaita_network_idle_symbolic_svg, "adwaita/network-idle-symbolic.svg"); + t!(adwaita_network_no_route_symbolic_svg, "adwaita/network-no-route-symbolic.svg"); + t!(adwaita_network_offline_symbolic_svg, "adwaita/network-offline-symbolic.svg"); + t!(adwaita_network_receive_symbolic_svg, "adwaita/network-receive-symbolic.svg"); + t!(adwaita_network_server_symbolic_svg, "adwaita/network-server-symbolic.svg"); + t!(adwaita_network_transmit_receive_symbolic_svg, "adwaita/network-transmit-receive-symbolic.svg"); + t!(adwaita_network_transmit_symbolic_svg, "adwaita/network-transmit-symbolic.svg"); + t!(adwaita_network_vpn_acquiring_symbolic_svg, "adwaita/network-vpn-acquiring-symbolic.svg"); + t!(adwaita_network_vpn_no_route_symbolic_svg, "adwaita/network-vpn-no-route-symbolic.svg"); + t!(adwaita_network_vpn_symbolic_svg, "adwaita/network-vpn-symbolic.svg"); + t!(adwaita_network_wired_acquiring_symbolic_svg, "adwaita/network-wired-acquiring-symbolic.svg"); + t!(adwaita_network_wired_disconnected_symbolic_svg, "adwaita/network-wired-disconnected-symbolic.svg"); + t!(adwaita_network_wired_no_route_symbolic_svg, "adwaita/network-wired-no-route-symbolic.svg"); + t!(adwaita_network_wired_offline_symbolic_svg, "adwaita/network-wired-offline-symbolic.svg"); + t!(adwaita_network_wired_symbolic_svg, "adwaita/network-wired-symbolic.svg"); + t!(adwaita_network_wireless_acquiring_symbolic_svg, "adwaita/network-wireless-acquiring-symbolic.svg"); + t!(adwaita_network_wireless_connected_symbolic_svg, "adwaita/network-wireless-connected-symbolic.svg"); + t!(adwaita_network_wireless_encrypted_symbolic_svg, "adwaita/network-wireless-encrypted-symbolic.svg"); + t!(adwaita_network_wireless_hotspot_symbolic_svg, "adwaita/network-wireless-hotspot-symbolic.svg"); + t!(adwaita_network_wireless_no_route_symbolic_svg, "adwaita/network-wireless-no-route-symbolic.svg"); + t!(adwaita_network_wireless_offline_symbolic_svg, "adwaita/network-wireless-offline-symbolic.svg"); + t!(adwaita_network_wireless_signal_excellent_symbolic_svg, "adwaita/network-wireless-signal-excellent-symbolic.svg"); + t!(adwaita_network_wireless_signal_good_symbolic_svg, "adwaita/network-wireless-signal-good-symbolic.svg"); + t!(adwaita_network_wireless_signal_none_symbolic_svg, "adwaita/network-wireless-signal-none-symbolic.svg"); + t!(adwaita_network_wireless_signal_ok_symbolic_svg, "adwaita/network-wireless-signal-ok-symbolic.svg"); + t!(adwaita_network_wireless_signal_weak_symbolic_svg, "adwaita/network-wireless-signal-weak-symbolic.svg"); + t!(adwaita_network_wireless_symbolic_svg, "adwaita/network-wireless-symbolic.svg"); + t!(adwaita_network_workgroup_symbolic_svg, "adwaita/network-workgroup-symbolic.svg"); + t!(adwaita_night_light_symbolic_svg, "adwaita/night-light-symbolic.svg"); + t!(adwaita_non_starred_symbolic_svg, "adwaita/non-starred-symbolic.svg"); + t!(adwaita_object_flip_horizontal_symbolic_svg, "adwaita/object-flip-horizontal-symbolic.svg"); + t!(adwaita_object_flip_vertical_symbolic_svg, "adwaita/object-flip-vertical-symbolic.svg"); + t!(adwaita_object_rotate_left_symbolic_svg, "adwaita/object-rotate-left-symbolic.svg"); + t!(adwaita_object_rotate_right_symbolic_svg, "adwaita/object-rotate-right-symbolic.svg"); + t!(adwaita_object_select_symbolic_svg, "adwaita/object-select-symbolic.svg"); + t!(adwaita_open_menu_symbolic_svg, "adwaita/open-menu-symbolic.svg"); + t!(adwaita_orientation_landscape_inverse_symbolic_svg, "adwaita/orientation-landscape-inverse-symbolic.svg"); + t!(adwaita_orientation_landscape_symbolic_svg, "adwaita/orientation-landscape-symbolic.svg"); + t!(adwaita_orientation_portrait_inverse_symbolic_svg, "adwaita/orientation-portrait-inverse-symbolic.svg"); + t!(adwaita_orientation_portrait_symbolic_svg, "adwaita/orientation-portrait-symbolic.svg"); + t!(adwaita_package_x_generic_symbolic_svg, "adwaita/package-x-generic-symbolic.svg"); + t!(adwaita_pan_down_symbolic_svg, "adwaita/pan-down-symbolic.svg"); + t!(adwaita_pan_end_symbolic_rtl_svg, "adwaita/pan-end-symbolic-rtl.svg"); + t!(adwaita_pan_end_symbolic_svg, "adwaita/pan-end-symbolic.svg"); + t!(adwaita_pan_start_symbolic_rtl_svg, "adwaita/pan-start-symbolic-rtl.svg"); + t!(adwaita_pan_start_symbolic_svg, "adwaita/pan-start-symbolic.svg"); + t!(adwaita_pan_up_symbolic_svg, "adwaita/pan-up-symbolic.svg"); + t!(adwaita_pda_symbolic_svg, "adwaita/pda-symbolic.svg"); + t!(adwaita_phone_apple_iphone_symbolic_svg, "adwaita/phone-apple-iphone-symbolic.svg"); + t!(adwaita_phone_symbolic_svg, "adwaita/phone-symbolic.svg"); + t!(adwaita_preferences_color_symbolic_svg, "adwaita/preferences-color-symbolic.svg"); + t!(adwaita_preferences_desktop_accessibility_symbolic_svg, "adwaita/preferences-desktop-accessibility-symbolic.svg"); + t!(adwaita_preferences_desktop_display_symbolic_svg, "adwaita/preferences-desktop-display-symbolic.svg"); + t!(adwaita_preferences_desktop_font_symbolic_svg, "adwaita/preferences-desktop-font-symbolic.svg"); + t!(adwaita_preferences_desktop_keyboard_shortcuts_symbolic_svg, "adwaita/preferences-desktop-keyboard-shortcuts-symbolic.svg"); + t!(adwaita_preferences_desktop_keyboard_symbolic_svg, "adwaita/preferences-desktop-keyboard-symbolic.svg"); + t!(adwaita_preferences_desktop_locale_symbolic_svg, "adwaita/preferences-desktop-locale-symbolic.svg"); + t!(adwaita_preferences_desktop_remote_desktop_symbolic_svg, "adwaita/preferences-desktop-remote-desktop-symbolic.svg"); + t!(adwaita_preferences_desktop_screensaver_symbolic_svg, "adwaita/preferences-desktop-screensaver-symbolic.svg"); + t!(adwaita_preferences_desktop_wallpaper_symbolic_svg, "adwaita/preferences-desktop-wallpaper-symbolic.svg"); + t!(adwaita_preferences_other_symbolic_svg, "adwaita/preferences-other-symbolic.svg"); + t!(adwaita_preferences_system_details_symbolic_svg, "adwaita/preferences-system-details-symbolic.svg"); + t!(adwaita_preferences_system_devices_symbolic_svg, "adwaita/preferences-system-devices-symbolic.svg"); + t!(adwaita_preferences_system_network_proxy_symbolic_svg, "adwaita/preferences-system-network-proxy-symbolic.svg"); + t!(adwaita_preferences_system_network_symbolic_svg, "adwaita/preferences-system-network-symbolic.svg"); + t!(adwaita_preferences_system_notifications_symbolic_svg, "adwaita/preferences-system-notifications-symbolic.svg"); + t!(adwaita_preferences_system_privacy_symbolic_svg, "adwaita/preferences-system-privacy-symbolic.svg"); + t!(adwaita_preferences_system_search_symbolic_svg, "adwaita/preferences-system-search-symbolic.svg"); + t!(adwaita_preferences_system_sharing_symbolic_svg, "adwaita/preferences-system-sharing-symbolic.svg"); + t!(adwaita_preferences_system_symbolic_svg, "adwaita/preferences-system-symbolic.svg"); + t!(adwaita_preferences_system_time_symbolic_svg, "adwaita/preferences-system-time-symbolic.svg"); + t!(adwaita_printer_error_symbolic_svg, "adwaita/printer-error-symbolic.svg"); + t!(adwaita_printer_network_symbolic_svg, "adwaita/printer-network-symbolic.svg"); + t!(adwaita_printer_printing_symbolic_svg, "adwaita/printer-printing-symbolic.svg"); + t!(adwaita_printer_symbolic_svg, "adwaita/printer-symbolic.svg"); + t!(adwaita_printer_warning_symbolic_svg, "adwaita/printer-warning-symbolic.svg"); + t!(adwaita_process_stop_symbolic_svg, "adwaita/process-stop-symbolic.svg"); + t!(adwaita_radio_checked_symbolic_svg, "adwaita/radio-checked-symbolic.svg"); + t!(adwaita_radio_mixed_symbolic_svg, "adwaita/radio-mixed-symbolic.svg"); + t!(adwaita_radio_symbolic_svg, "adwaita/radio-symbolic.svg"); + t!(adwaita_rotation_allowed_symbolic_svg, "adwaita/rotation-allowed-symbolic.svg"); + t!(adwaita_rotation_locked_symbolic_svg, "adwaita/rotation-locked-symbolic.svg"); + t!(adwaita_scanner_symbolic_svg, "adwaita/scanner-symbolic.svg"); + t!(adwaita_security_high_symbolic_svg, "adwaita/security-high-symbolic.svg"); + t!(adwaita_security_low_symbolic_svg, "adwaita/security-low-symbolic.svg"); + t!(adwaita_security_medium_symbolic_svg, "adwaita/security-medium-symbolic.svg"); + t!(adwaita_selection_end_symbolic_rtl_svg, "adwaita/selection-end-symbolic-rtl.svg"); + t!(adwaita_selection_end_symbolic_svg, "adwaita/selection-end-symbolic.svg"); + t!(adwaita_selection_start_symbolic_rtl_svg, "adwaita/selection-start-symbolic-rtl.svg"); + t!(adwaita_selection_start_symbolic_svg, "adwaita/selection-start-symbolic.svg"); + t!(adwaita_semi_starred_symbolic_rtl_svg, "adwaita/semi-starred-symbolic-rtl.svg"); + t!(adwaita_semi_starred_symbolic_svg, "adwaita/semi-starred-symbolic.svg"); + t!(adwaita_send_to_symbolic_svg, "adwaita/send-to-symbolic.svg"); + t!(adwaita_software_update_available_symbolic_svg, "adwaita/software-update-available-symbolic.svg"); + t!(adwaita_software_update_urgent_symbolic_svg, "adwaita/software-update-urgent-symbolic.svg"); + t!(adwaita_star_new_symbolic_svg, "adwaita/star-new-symbolic.svg"); + t!(adwaita_starred_symbolic_svg, "adwaita/starred-symbolic.svg"); + t!(adwaita_start_here_symbolic_svg, "adwaita/start-here-symbolic.svg"); + t!(adwaita_system_file_manager_symbolic_svg, "adwaita/system-file-manager-symbolic.svg"); + t!(adwaita_system_help_symbolic_svg, "adwaita/system-help-symbolic.svg"); + t!(adwaita_system_lock_screen_symbolic_svg, "adwaita/system-lock-screen-symbolic.svg"); + t!(adwaita_system_run_symbolic_svg, "adwaita/system-run-symbolic.svg"); + t!(adwaita_system_search_symbolic_svg, "adwaita/system-search-symbolic.svg"); + t!(adwaita_system_shutdown_symbolic_svg, "adwaita/system-shutdown-symbolic.svg"); + t!(adwaita_system_software_install_symbolic_svg, "adwaita/system-software-install-symbolic.svg"); + t!(adwaita_system_switch_user_symbolic_svg, "adwaita/system-switch-user-symbolic.svg"); + t!(adwaita_system_users_symbolic_svg, "adwaita/system-users-symbolic.svg"); + t!(adwaita_tab_new_symbolic_svg, "adwaita/tab-new-symbolic.svg"); + t!(adwaita_task_due_symbolic_svg, "adwaita/task-due-symbolic.svg"); + t!(adwaita_task_past_due_symbolic_svg, "adwaita/task-past-due-symbolic.svg"); + t!(adwaita_text_editor_symbolic_svg, "adwaita/text-editor-symbolic.svg"); + t!(adwaita_text_x_generic_symbolic_svg, "adwaita/text-x-generic-symbolic.svg"); + t!(adwaita_thunderbolt_acquiring_symbolic_svg, "adwaita/thunderbolt-acquiring-symbolic.svg"); + t!(adwaita_thunderbolt_symbolic_svg, "adwaita/thunderbolt-symbolic.svg"); + t!(adwaita_tools_check_spelling_symbolic_svg, "adwaita/tools-check-spelling-symbolic.svg"); + t!(adwaita_touchpad_disabled_symbolic_svg, "adwaita/touchpad-disabled-symbolic.svg"); + t!(adwaita_tv_symbolic_svg, "adwaita/tv-symbolic.svg"); + t!(adwaita_uninterruptible_power_supply_symbolic_svg, "adwaita/uninterruptible-power-supply-symbolic.svg"); + t!(adwaita_user_available_symbolic_svg, "adwaita/user-available-symbolic.svg"); + t!(adwaita_user_away_symbolic_svg, "adwaita/user-away-symbolic.svg"); + t!(adwaita_user_bookmarks_symbolic_svg, "adwaita/user-bookmarks-symbolic.svg"); + t!(adwaita_user_busy_symbolic_svg, "adwaita/user-busy-symbolic.svg"); + t!(adwaita_user_desktop_symbolic_svg, "adwaita/user-desktop-symbolic.svg"); + t!(adwaita_user_home_symbolic_svg, "adwaita/user-home-symbolic.svg"); + t!(adwaita_user_idle_symbolic_svg, "adwaita/user-idle-symbolic.svg"); + t!(adwaita_user_info_symbolic_svg, "adwaita/user-info-symbolic.svg"); + t!(adwaita_user_invisible_symbolic_svg, "adwaita/user-invisible-symbolic.svg"); + t!(adwaita_user_not_tracked_symbolic_svg, "adwaita/user-not-tracked-symbolic.svg"); + t!(adwaita_user_offline_symbolic_svg, "adwaita/user-offline-symbolic.svg"); + t!(adwaita_user_status_pending_symbolic_svg, "adwaita/user-status-pending-symbolic.svg"); + t!(adwaita_user_trash_full_symbolic_svg, "adwaita/user-trash-full-symbolic.svg"); + t!(adwaita_user_trash_symbolic_svg, "adwaita/user-trash-symbolic.svg"); + t!(adwaita_utilities_system_monitor_symbolic_svg, "adwaita/utilities-system-monitor-symbolic.svg"); + t!(adwaita_utilities_terminal_symbolic_svg, "adwaita/utilities-terminal-symbolic.svg"); + t!(adwaita_video_display_symbolic_svg, "adwaita/video-display-symbolic.svg"); + t!(adwaita_video_joined_displays_symbolic_svg, "adwaita/video-joined-displays-symbolic.svg"); + t!(adwaita_video_single_display_symbolic_svg, "adwaita/video-single-display-symbolic.svg"); + t!(adwaita_video_x_generic_symbolic_svg, "adwaita/video-x-generic-symbolic.svg"); + t!(adwaita_view_app_grid_symbolic_svg, "adwaita/view-app-grid-symbolic.svg"); + t!(adwaita_view_continuous_symbolic_svg, "adwaita/view-continuous-symbolic.svg"); + t!(adwaita_view_dual_symbolic_svg, "adwaita/view-dual-symbolic.svg"); + t!(adwaita_view_fullscreen_symbolic_svg, "adwaita/view-fullscreen-symbolic.svg"); + t!(adwaita_view_grid_symbolic_svg, "adwaita/view-grid-symbolic.svg"); + t!(adwaita_view_list_symbolic_svg, "adwaita/view-list-symbolic.svg"); + t!(adwaita_view_mirror_symbolic_svg, "adwaita/view-mirror-symbolic.svg"); + t!(adwaita_view_more_horizontal_symbolic_svg, "adwaita/view-more-horizontal-symbolic.svg"); + t!(adwaita_view_more_symbolic_svg, "adwaita/view-more-symbolic.svg"); + t!(adwaita_view_paged_symbolic_svg, "adwaita/view-paged-symbolic.svg"); + t!(adwaita_view_pin_symbolic_svg, "adwaita/view-pin-symbolic.svg"); + t!(adwaita_view_refresh_symbolic_svg, "adwaita/view-refresh-symbolic.svg"); + t!(adwaita_view_restore_symbolic_svg, "adwaita/view-restore-symbolic.svg"); + t!(adwaita_view_sort_ascending_symbolic_svg, "adwaita/view-sort-ascending-symbolic.svg"); + t!(adwaita_view_sort_descending_symbolic_svg, "adwaita/view-sort-descending-symbolic.svg"); + t!(adwaita_view_wrapped_symbolic_rtl_svg, "adwaita/view-wrapped-symbolic-rtl.svg"); + t!(adwaita_view_wrapped_symbolic_svg, "adwaita/view-wrapped-symbolic.svg"); + t!(adwaita_weather_clear_night_symbolic_svg, "adwaita/weather-clear-night-symbolic.svg"); + t!(adwaita_weather_clear_symbolic_svg, "adwaita/weather-clear-symbolic.svg"); + t!(adwaita_weather_few_clouds_night_symbolic_svg, "adwaita/weather-few-clouds-night-symbolic.svg"); + t!(adwaita_weather_few_clouds_symbolic_svg, "adwaita/weather-few-clouds-symbolic.svg"); + t!(adwaita_weather_fog_symbolic_svg, "adwaita/weather-fog-symbolic.svg"); + t!(adwaita_weather_overcast_symbolic_svg, "adwaita/weather-overcast-symbolic.svg"); + t!(adwaita_weather_severe_alert_symbolic_svg, "adwaita/weather-severe-alert-symbolic.svg"); + t!(adwaita_weather_showers_scattered_symbolic_svg, "adwaita/weather-showers-scattered-symbolic.svg"); + t!(adwaita_weather_showers_symbolic_svg, "adwaita/weather-showers-symbolic.svg"); + t!(adwaita_weather_snow_symbolic_svg, "adwaita/weather-snow-symbolic.svg"); + t!(adwaita_weather_storm_symbolic_svg, "adwaita/weather-storm-symbolic.svg"); + t!(adwaita_weather_windy_symbolic_svg, "adwaita/weather-windy-symbolic.svg"); + t!(adwaita_web_browser_symbolic_svg, "adwaita/web-browser-symbolic.svg"); + t!(adwaita_window_close_symbolic_svg, "adwaita/window-close-symbolic.svg"); + t!(adwaita_window_maximize_symbolic_svg, "adwaita/window-maximize-symbolic.svg"); + t!(adwaita_window_minimize_symbolic_svg, "adwaita/window-minimize-symbolic.svg"); + t!(adwaita_window_restore_symbolic_svg, "adwaita/window-restore-symbolic.svg"); + t!(adwaita_x_office_address_book_symbolic_svg, "adwaita/x-office-address-book-symbolic.svg"); + t!(adwaita_x_office_calendar_symbolic_svg, "adwaita/x-office-calendar-symbolic.svg"); + t!(adwaita_x_office_document_symbolic_svg, "adwaita/x-office-document-symbolic.svg"); + t!(adwaita_x_office_drawing_symbolic_svg, "adwaita/x-office-drawing-symbolic.svg"); + t!(adwaita_x_office_presentation_symbolic_svg, "adwaita/x-office-presentation-symbolic.svg"); + t!(adwaita_x_office_spreadsheet_symbolic_svg, "adwaita/x-office-spreadsheet-symbolic.svg"); + t!(adwaita_zoom_fit_best_symbolic_svg, "adwaita/zoom-fit-best-symbolic.svg"); + t!(adwaita_zoom_in_symbolic_svg, "adwaita/zoom-in-symbolic.svg"); + t!(adwaita_zoom_original_symbolic_svg, "adwaita/zoom-original-symbolic.svg"); + t!(adwaita_zoom_out_symbolic_svg, "adwaita/zoom-out-symbolic.svg"); + t!(bugs_a_inside_text_content_738_svg, "bugs/a-inside-text-content-738.svg"); + t!(bugs_a_inside_text_content_pseudo_class_738_svg, "bugs/a-inside-text-content-pseudo-class-738.svg"); + t!(bugs_bug108_font_size_relative_svg, "bugs/bug108-font-size-relative.svg"); + t!(bugs_bug112_svg_delayed_attributes_svg, "bugs/bug112-svg-delayed-attributes.svg"); + t!(bugs_bug165_zero_length_subpath_square_linecap_svg, "bugs/bug165-zero-length-subpath-square-linecap.svg"); + t!(bugs_bug181_inheritable_attrs_in_svg_svg, "bugs/bug181-inheritable-attrs-in-svg.svg"); + t!(bugs_bug241_light_source_type_svg, "bugs/bug241-light-source-type.svg"); + t!(bugs_bug245_negative_dashoffset_svg, "bugs/bug245-negative-dashoffset.svg"); + t!(bugs_bug282_drop_shadow_svg, "bugs/bug282-drop-shadow.svg"); + t!(bugs_bug340047_svg, "bugs/bug340047.svg"); + t!(bugs_bug363_missing_space_svg, "bugs/bug363-missing-space.svg"); + t!(bugs_bug372_small_arcs_svg, "bugs/bug372-small-arcs.svg"); + t!(bugs_bug373_gradient_userspaceonuse_svg, "bugs/bug373-gradient-userspaceonuse.svg"); + t!(bugs_bug403357_svg, "bugs/bug403357.svg"); + t!(bugs_bug476507_svg, "bugs/bug476507.svg"); + t!(bugs_bug481_tspan_uses_at_least_first_x_svg, "bugs/bug481-tspan-uses-at-least-first-x.svg"); + t!(bugs_bug494_text_accumulate_dy_svg, "bugs/bug494-text-accumulate-dy.svg"); + t!(bugs_bug506_pattern_fallback_svg, "bugs/bug506-pattern-fallback.svg"); + t!(bugs_bug510_pattern_fill_opacity_svg, "bugs/bug510-pattern-fill-opacity.svg"); + t!(bugs_bug510_pattern_fill_svg, "bugs/bug510-pattern-fill.svg"); + t!(bugs_bug548_data_url_without_mimetype_svg, "bugs/bug548-data-url-without-mimetype.svg"); + t!(bugs_bug563933_svg, "bugs/bug563933.svg"); + t!(bugs_bug587721_text_transform_svg, "bugs/bug587721-text-transform.svg"); + t!(bugs_bug590_mask_units_svg, "bugs/bug590-mask-units.svg"); + t!(bugs_bug603550_mask_luminance_svg, "bugs/bug603550-mask-luminance.svg"); + t!(bugs_bug609_clippath_transform_svg, "bugs/bug609-clippath-transform.svg"); + t!(bugs_bug634324_blur_negative_transform_svg, "bugs/bug634324-blur-negative-transform.svg"); + t!(bugs_bug642_nested_tspan_dx_dy_svg, "bugs/bug642-nested-tspan-dx-dy.svg"); + t!(bugs_bug667_tspan_visibility_svg, "bugs/bug667-tspan-visibility.svg"); + t!(bugs_bug668_small_caps_svg, "bugs/bug668-small-caps.svg"); + t!(bugs_bug689832_unresolved_gradient_svg, "bugs/bug689832-unresolved-gradient.svg"); + t!(bugs_bug718_rect_negative_rx_ry_svg, "bugs/bug718-rect-negative-rx-ry.svg"); + t!(bugs_bug730_font_scaling_svg, "bugs/bug730-font-scaling.svg"); + t!(bugs_bug738367_svg, "bugs/bug738367.svg"); + t!(bugs_bug749415_svg, "bugs/bug749415.svg"); + t!(bugs_bug760180_svg, "bugs/bug760180.svg"); + t!(bugs_bug761175_recursive_masks_svg, "bugs/bug761175-recursive-masks.svg"); + t!(bugs_bug761871_reset_reflection_points_svg, "bugs/bug761871-reset-reflection-points.svg"); + t!(bugs_bug763386_marker_coincident_svg, "bugs/bug763386-marker-coincident.svg"); + t!(bugs_bug776297_marker_on_non_path_elements_svg, "bugs/bug776297-marker-on-non-path-elements.svg"); + t!(bugs_bug786372_default_style_type_svg, "bugs/bug786372-default-style-type.svg"); + t!(bugs_bug788_inner_svg_viewbox_svg, "bugs/bug788-inner-svg-viewbox.svg"); + t!(bugs_ignore_577_multiple_font_families_svg, "bugs/ignore-577-multiple-font-families.svg"); + t!(svg1_1_coords_trans_01_b_svg, "svg1.1/coords-trans-01-b.svg"); + t!(svg1_1_coords_trans_02_t_svg, "svg1.1/coords-trans-02-t.svg"); + t!(svg1_1_coords_trans_03_t_svg, "svg1.1/coords-trans-03-t.svg"); + t!(svg1_1_coords_trans_04_t_svg, "svg1.1/coords-trans-04-t.svg"); + t!(svg1_1_coords_trans_05_t_svg, "svg1.1/coords-trans-05-t.svg"); + t!(svg1_1_coords_trans_06_t_svg, "svg1.1/coords-trans-06-t.svg"); + t!(svg1_1_coords_trans_07_t_svg, "svg1.1/coords-trans-07-t.svg"); + t!(svg1_1_coords_trans_08_t_svg, "svg1.1/coords-trans-08-t.svg"); + t!(svg1_1_coords_trans_09_t_svg, "svg1.1/coords-trans-09-t.svg"); + t!(svg1_1_coords_viewattr_01_b_svg, "svg1.1/coords-viewattr-01-b.svg"); + t!(svg1_1_coords_viewattr_02_b_svg, "svg1.1/coords-viewattr-02-b.svg"); + t!(svg1_1_coords_viewattr_03_b_svg, "svg1.1/coords-viewattr-03-b.svg"); + t!(svg1_1_filters_background_01_f_svg, "svg1.1/filters-background-01-f.svg"); + t!(svg1_1_filters_blend_01_b_svg, "svg1.1/filters-blend-01-b.svg"); + t!(svg1_1_filters_color_01_b_svg, "svg1.1/filters-color-01-b.svg"); + t!(svg1_1_filters_color_02_b_svg, "svg1.1/filters-color-02-b.svg"); + t!(svg1_1_filters_composite_02_b_svg, "svg1.1/filters-composite-02-b.svg"); + t!(svg1_1_filters_composite_03_f_svg, "svg1.1/filters-composite-03-f.svg"); + t!(svg1_1_filters_composite_04_f_svg, "svg1.1/filters-composite-04-f.svg"); + t!(svg1_1_filters_composite_05_f_svg, "svg1.1/filters-composite-05-f.svg"); + t!(svg1_1_filters_comptran_01_b_svg, "svg1.1/filters-comptran-01-b.svg"); + t!(svg1_1_filters_conv_01_f_svg, "svg1.1/filters-conv-01-f.svg"); + t!(svg1_1_filters_conv_02_f_svg, "svg1.1/filters-conv-02-f.svg"); + t!(svg1_1_filters_conv_03_f_svg, "svg1.1/filters-conv-03-f.svg"); + t!(svg1_1_filters_conv_04_f_svg, "svg1.1/filters-conv-04-f.svg"); + t!(svg1_1_filters_conv_05_f_svg, "svg1.1/filters-conv-05-f.svg"); + t!(svg1_1_filters_diffuse_01_f_svg, "svg1.1/filters-diffuse-01-f.svg"); + t!(svg1_1_filters_displace_02_f_svg, "svg1.1/filters-displace-02-f.svg"); + t!(svg1_1_filters_felem_02_f_svg, "svg1.1/filters-felem-02-f.svg"); + t!(svg1_1_filters_gauss_01_b_svg, "svg1.1/filters-gauss-01-b.svg"); + t!(svg1_1_filters_gauss_02_f_svg, "svg1.1/filters-gauss-02-f.svg"); + t!(svg1_1_filters_gauss_03_f_svg, "svg1.1/filters-gauss-03-f.svg"); + t!(svg1_1_filters_image_01_b_svg, "svg1.1/filters-image-01-b.svg"); + t!(svg1_1_filters_image_02_b_svg, "svg1.1/filters-image-02-b.svg"); + t!(svg1_1_filters_image_03_f_svg, "svg1.1/filters-image-03-f.svg"); + t!(svg1_1_filters_image_04_f_svg, "svg1.1/filters-image-04-f.svg"); + t!(svg1_1_filters_image_05_f_svg, "svg1.1/filters-image-05-f.svg"); + t!(svg1_1_filters_light_01_f_svg, "svg1.1/filters-light-01-f.svg"); + t!(svg1_1_filters_light_02_f_svg, "svg1.1/filters-light-02-f.svg"); + t!(svg1_1_filters_light_03_f_svg, "svg1.1/filters-light-03-f.svg"); + t!(svg1_1_filters_light_04_f_svg, "svg1.1/filters-light-04-f.svg"); + t!(svg1_1_filters_light_05_f_svg, "svg1.1/filters-light-05-f.svg"); + t!(svg1_1_filters_morph_01_f_svg, "svg1.1/filters-morph-01-f.svg"); + t!(svg1_1_filters_offset_01_b_svg, "svg1.1/filters-offset-01-b.svg"); + t!(svg1_1_filters_overview_01_b_svg, "svg1.1/filters-overview-01-b.svg"); + t!(svg1_1_filters_overview_02_b_svg, "svg1.1/filters-overview-02-b.svg"); + t!(svg1_1_filters_overview_03_b_svg, "svg1.1/filters-overview-03-b.svg"); + t!(svg1_1_filters_specular_01_f_svg, "svg1.1/filters-specular-01-f.svg"); + t!(svg1_1_filters_tile_01_b_svg, "svg1.1/filters-tile-01-b.svg"); + t!(svg1_1_filters_turb_01_f_svg, "svg1.1/filters-turb-01-f.svg"); + t!(svg1_1_filters_turb_02_f_svg, "svg1.1/filters-turb-02-f.svg"); + t!(svg1_1_ignore_filters_displace_01_f_svg, "svg1.1/ignore-filters-displace-01-f.svg"); + t!(svg1_1_ignore_filters_example_01_b_svg, "svg1.1/ignore-filters-example-01-b.svg"); + t!(svg1_1_ignore_masking_path_07_b_svg, "svg1.1/ignore-masking-path-07-b.svg"); + t!(svg1_1_masking_filter_01_f_svg, "svg1.1/masking-filter-01-f.svg"); + t!(svg1_1_masking_intro_01_f_svg, "svg1.1/masking-intro-01-f.svg"); + t!(svg1_1_masking_mask_01_b_svg, "svg1.1/masking-mask-01-b.svg"); + t!(svg1_1_masking_mask_02_f_svg, "svg1.1/masking-mask-02-f.svg"); + t!(svg1_1_masking_opacity_01_b_svg, "svg1.1/masking-opacity-01-b.svg"); + t!(svg1_1_masking_path_01_b_svg, "svg1.1/masking-path-01-b.svg"); + t!(svg1_1_masking_path_02_b_svg, "svg1.1/masking-path-02-b.svg"); + t!(svg1_1_masking_path_03_b_svg, "svg1.1/masking-path-03-b.svg"); + t!(svg1_1_masking_path_04_b_svg, "svg1.1/masking-path-04-b.svg"); + t!(svg1_1_masking_path_05_f_svg, "svg1.1/masking-path-05-f.svg"); + t!(svg1_1_masking_path_08_b_svg, "svg1.1/masking-path-08-b.svg"); + t!(svg1_1_painting_control_02_f_svg, "svg1.1/painting-control-02-f.svg"); + t!(svg1_1_painting_marker_01_f_svg, "svg1.1/painting-marker-01-f.svg"); + t!(svg1_1_painting_marker_02_f_svg, "svg1.1/painting-marker-02-f.svg"); + t!(svg1_1_painting_marker_03_f_svg, "svg1.1/painting-marker-03-f.svg"); + t!(svg1_1_painting_marker_04_f_svg, "svg1.1/painting-marker-04-f.svg"); + t!(svg1_1_painting_marker_06_f_svg, "svg1.1/painting-marker-06-f.svg"); + t!(svg1_1_painting_marker_07_f_svg, "svg1.1/painting-marker-07-f.svg"); + t!(svg1_1_painting_marker_properties_01_f_svg, "svg1.1/painting-marker-properties-01-f.svg"); + t!(svg1_1_painting_stroke_01_t_svg, "svg1.1/painting-stroke-01-t.svg"); + t!(svg1_1_painting_stroke_02_t_svg, "svg1.1/painting-stroke-02-t.svg"); + t!(svg1_1_painting_stroke_03_t_svg, "svg1.1/painting-stroke-03-t.svg"); + t!(svg1_1_painting_stroke_04_t_svg, "svg1.1/painting-stroke-04-t.svg"); + t!(svg1_1_painting_stroke_05_t_svg, "svg1.1/painting-stroke-05-t.svg"); + t!(svg1_1_painting_stroke_06_t_svg, "svg1.1/painting-stroke-06-t.svg"); + t!(svg1_1_painting_stroke_07_t_svg, "svg1.1/painting-stroke-07-t.svg"); + t!(svg1_1_painting_stroke_08_t_svg, "svg1.1/painting-stroke-08-t.svg"); + t!(svg1_1_painting_stroke_09_t_svg, "svg1.1/painting-stroke-09-t.svg"); + t!(svg1_1_paths_data_01_t_svg, "svg1.1/paths-data-01-t.svg"); + t!(svg1_1_paths_data_02_t_svg, "svg1.1/paths-data-02-t.svg"); + t!(svg1_1_paths_data_03_f_svg, "svg1.1/paths-data-03-f.svg"); + t!(svg1_1_paths_data_04_t_svg, "svg1.1/paths-data-04-t.svg"); + t!(svg1_1_paths_data_05_t_svg, "svg1.1/paths-data-05-t.svg"); + t!(svg1_1_paths_data_06_t_svg, "svg1.1/paths-data-06-t.svg"); + t!(svg1_1_paths_data_07_t_svg, "svg1.1/paths-data-07-t.svg"); + t!(svg1_1_paths_data_08_t_svg, "svg1.1/paths-data-08-t.svg"); + t!(svg1_1_paths_data_09_t_svg, "svg1.1/paths-data-09-t.svg"); + t!(svg1_1_paths_data_10_t_svg, "svg1.1/paths-data-10-t.svg"); + t!(svg1_1_paths_data_12_t_svg, "svg1.1/paths-data-12-t.svg"); + t!(svg1_1_paths_data_13_t_svg, "svg1.1/paths-data-13-t.svg"); + t!(svg1_1_paths_data_14_t_svg, "svg1.1/paths-data-14-t.svg"); + t!(svg1_1_paths_data_15_t_svg, "svg1.1/paths-data-15-t.svg"); + t!(svg1_1_paths_data_16_t_svg, "svg1.1/paths-data-16-t.svg"); + t!(svg1_1_paths_data_17_f_svg, "svg1.1/paths-data-17-f.svg"); + t!(svg1_1_paths_data_18_f_svg, "svg1.1/paths-data-18-f.svg"); + t!(svg1_1_paths_data_19_f_svg, "svg1.1/paths-data-19-f.svg"); + t!(svg1_1_paths_data_20_f_svg, "svg1.1/paths-data-20-f.svg"); + t!(svg1_1_pservers_grad_01_b_svg, "svg1.1/pservers-grad-01-b.svg"); + t!(svg1_1_pservers_grad_02_b_svg, "svg1.1/pservers-grad-02-b.svg"); + t!(svg1_1_pservers_grad_03_b_svg, "svg1.1/pservers-grad-03-b.svg"); + t!(svg1_1_pservers_grad_04_b_svg, "svg1.1/pservers-grad-04-b.svg"); + t!(svg1_1_pservers_grad_05_b_svg, "svg1.1/pservers-grad-05-b.svg"); + t!(svg1_1_pservers_grad_06_b_svg, "svg1.1/pservers-grad-06-b.svg"); + t!(svg1_1_pservers_grad_07_b_svg, "svg1.1/pservers-grad-07-b.svg"); + t!(svg1_1_pservers_grad_08_b_svg, "svg1.1/pservers-grad-08-b.svg"); + t!(svg1_1_pservers_grad_09_b_svg, "svg1.1/pservers-grad-09-b.svg"); + t!(svg1_1_pservers_grad_10_b_svg, "svg1.1/pservers-grad-10-b.svg"); + t!(svg1_1_pservers_grad_11_b_svg, "svg1.1/pservers-grad-11-b.svg"); + t!(svg1_1_pservers_grad_12_b_svg, "svg1.1/pservers-grad-12-b.svg"); + t!(svg1_1_pservers_grad_14_b_svg, "svg1.1/pservers-grad-14-b.svg"); + t!(svg1_1_pservers_grad_15_b_svg, "svg1.1/pservers-grad-15-b.svg"); + t!(svg1_1_pservers_grad_16_b_svg, "svg1.1/pservers-grad-16-b.svg"); + t!(svg1_1_pservers_grad_18_b_svg, "svg1.1/pservers-grad-18-b.svg"); + t!(svg1_1_pservers_grad_22_b_svg, "svg1.1/pservers-grad-22-b.svg"); + t!(svg1_1_pservers_grad_23_f_svg, "svg1.1/pservers-grad-23-f.svg"); + t!(svg1_1_pservers_grad_24_f_svg, "svg1.1/pservers-grad-24-f.svg"); + t!(svg1_1_pservers_grad_stops_01_f_svg, "svg1.1/pservers-grad-stops-01-f.svg"); + t!(svg1_1_pservers_pattern_01_b_svg, "svg1.1/pservers-pattern-01-b.svg"); + t!(svg1_1_pservers_pattern_02_f_svg, "svg1.1/pservers-pattern-02-f.svg"); + t!(svg1_1_pservers_pattern_03_f_svg, "svg1.1/pservers-pattern-03-f.svg"); + t!(svg1_1_pservers_pattern_04_f_svg, "svg1.1/pservers-pattern-04-f.svg"); + t!(svg1_1_pservers_pattern_05_f_svg, "svg1.1/pservers-pattern-05-f.svg"); + t!(svg1_1_pservers_pattern_06_f_svg, "svg1.1/pservers-pattern-06-f.svg"); + t!(svg1_1_pservers_pattern_07_f_svg, "svg1.1/pservers-pattern-07-f.svg"); + t!(svg1_1_pservers_pattern_08_f_svg, "svg1.1/pservers-pattern-08-f.svg"); + t!(svg1_1_pservers_pattern_09_f_svg, "svg1.1/pservers-pattern-09-f.svg"); + t!(svg1_1_shapes_intro_01_t_svg, "svg1.1/shapes-intro-01-t.svg"); + t!(svg1_1_shapes_intro_02_f_svg, "svg1.1/shapes-intro-02-f.svg"); + t!(svg1_1_struct_cond_01_t_svg, "svg1.1/struct-cond-01-t.svg"); + t!(svg1_1_struct_cond_03_t_svg, "svg1.1/struct-cond-03-t.svg"); + t!(svg1_1_struct_group_03_t_svg, "svg1.1/struct-group-03-t.svg"); + t!(svg1_1_struct_svg_03_f_svg, "svg1.1/struct-svg-03-f.svg"); + t!(svg1_1_struct_symbol_01_b_svg, "svg1.1/struct-symbol-01-b.svg"); + t!(svg1_1_struct_use_01_t_svg, "svg1.1/struct-use-01-t.svg"); + t!(svg1_1_struct_use_03_t_svg, "svg1.1/struct-use-03-t.svg"); + t!(svg1_1_struct_use_04_b_svg, "svg1.1/struct-use-04-b.svg"); + t!(svg1_1_struct_use_09_b_svg, "svg1.1/struct-use-09-b.svg"); + t!(svg1_1_struct_use_10_f_svg, "svg1.1/struct-use-10-f.svg"); + t!(svg1_1_styling_css_01_b_svg, "svg1.1/styling-css-01-b.svg"); + t!(svg1_1_styling_css_02_b_svg, "svg1.1/styling-css-02-b.svg"); + t!(svg1_1_styling_css_03_b_svg, "svg1.1/styling-css-03-b.svg"); + t!(svg1_1_styling_css_04_f_svg, "svg1.1/styling-css-04-f.svg"); + t!(svg1_1_styling_css_07_f_svg, "svg1.1/styling-css-07-f.svg"); + t!(svg1_1_styling_css_08_f_svg, "svg1.1/styling-css-08-f.svg"); + t!(svg1_1_text_align_01_b_svg, "svg1.1/text-align-01-b.svg"); + t!(svg1_1_text_align_02_b_svg, "svg1.1/text-align-02-b.svg"); + t!(svg1_1_text_align_03_b_svg, "svg1.1/text-align-03-b.svg"); + t!(svg1_1_text_fonts_02_t_svg, "svg1.1/text-fonts-02-t.svg"); + t!(svg1_1_text_text_03_b_svg, "svg1.1/text-text-03-b.svg"); + t!(svg1_1_text_text_08_b_svg, "svg1.1/text-text-08-b.svg"); + t!(svg1_1_text_text_10_t_svg, "svg1.1/text-text-10-t.svg"); + t!(svg1_1_text_tref_01_b_svg, "svg1.1/text-tref-01-b.svg"); + t!(svg1_1_text_tref_02_b_svg, "svg1.1/text-tref-02-b.svg"); + t!(svg1_1_text_tref_03_b_svg, "svg1.1/text-tref-03-b.svg"); + t!(svg1_1_types_basic_02_f_svg, "svg1.1/types-basic-02-f.svg"); + t!(svg2_gradient_01_b_svg, "svg2/gradient-01-b.svg"); + t!(svg2_mix_blend_mode_svg, "svg2/mix-blend-mode.svg"); + t!(svg2_multi_filter_svg, "svg2/multi-filter.svg"); + t!(svg2_paint_order_svg, "svg2/paint-order.svg"); + t!(svg2_text_paint_order_svg, "svg2/text-paint-order.svg"); +} + +test_compare_render_output!( + marker_orient_auto_start_reverse, + 100, + 100, + br##"<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100"> + <defs> + <marker id="marker" orient="auto-start-reverse" viewBox="0 0 10 10" + refX="0" refY="5" markerWidth="10" markerHeight="10" + markerUnits="userSpaceOnUse"> + <path d="M0,0 L10,5 L0,10 Z" fill="green"/> + </marker> + </defs> + + <path d="M20,50 L80,50" marker-start="url(#marker)" marker-end="url(#marker)" stroke-width="10" stroke="black"/> + </svg>"##, + + br##"<?xml version="1.0" encoding="UTF-8" standalone="no"?> + <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100"> + <path + d="M 20,55 10,50 20,45 Z" + id="triangle1" fill="green"/> + <path + d="m 80,45 10,5 -10,5 z" + id="triangle2" fill="green"/> + <rect + id="rectangle" + width="60" + height="10" + x="20" + y="45" fill="black"/> + </svg>"##, +); + +test_compare_render_output!( + marker_context_stroke_fill, + 400, + 400, + br##"<?xml version="1.0" encoding="UTF-8"?> + <svg xmlns="http://www.w3.org/2000/svg" width="400" height="400"> + <style> + .path1 { + fill: none; + stroke-width: 4px; + marker: url(#marker1); + } + + .path2 { + fill: darkblue; + stroke: mediumseagreen; + stroke-width: 4px; + marker: url(#marker2); + } + </style> + + <path class="path1" d="M20,20 L200,20 L380,20" stroke="lime"/> + + <path class="path2" d="M20,40 h360 v320 h-360 v-320 Z"/> + + <marker id="marker1" markerWidth="12" markerHeight="12" refX="6" refY="6" + markerUnits="userSpaceOnUse"> + <circle cx="6" cy="6" r="3" + fill="white" stroke="context-stroke" stroke-width="2"/> + </marker> + + <marker id="marker2" markerWidth="12" markerHeight="12" refX="6" refY="6" + markerUnits="userSpaceOnUse"> + <!-- Note that here the paint is reversed: + fill=context-stroke, + stroke=context-fill + --> + <circle cx="6" cy="6" r="3" + fill="context-stroke" stroke="context-fill" stroke-width="2"/> + </marker> + </svg>"##, + br##"<?xml version="1.0" encoding="UTF-8"?> + <svg xmlns="http://www.w3.org/2000/svg" width="400" height="400"> + <path d="M20,20 L200,20 L380,20" stroke="lime" stroke-width="4"/> + <circle cx="20" cy="20" r="3" stroke-width="2" fill="white" stroke="lime"/> + <circle cx="200" cy="20" r="3" stroke-width="2" fill="white" stroke="lime"/> + <circle cx="380" cy="20" r="3" stroke-width="2" fill="white" stroke="lime"/> + + <path class="path2" d="M20,40 h360 v320 h-360 v-320 Z" fill="darkblue" + stroke="mediumseagreen" stroke-width="4"/> + <circle cx="20" cy="40" r="3" fill="mediumseagreen" stroke="darkblue" stroke-width="2"/> + <circle cx="20" cy="40" r="3" fill="mediumseagreen" stroke="darkblue" stroke-width="2"/> + <circle cx="380" cy="40" r="3" fill="mediumseagreen" stroke="darkblue" stroke-width="2"/> + <circle cx="380" cy="360" r="3" fill="mediumseagreen" stroke="darkblue" stroke-width="2"/> + <circle cx="20" cy="360" r="3" fill="mediumseagreen" stroke="darkblue" stroke-width="2"/> + <circle cx="20" cy="40" r="3" fill="mediumseagreen" stroke="darkblue" stroke-width="2"/> + </svg> + "##, +); + +test_compare_render_output!( + image_auto_width_height, + 30, + 30, + br##"<?xml version="1.0" encoding="UTF-8"?> + <svg xmlns="http://www.w3.org/2000/svg" width="30" height="30"> + <image + href="data:;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAIAAAACUFjqAAAAFElEQVQY02Nk+M+ABzAxMIxKYwIAQC0BEwZFOw4AAAAASUVORK5CYII=" + x="10" y="10"/> + </svg>"##, + br##"<?xml version="1.0" encoding="UTF-8"?> + <svg xmlns="http://www.w3.org/2000/svg" width="30" height="30"> + <rect x="10" y="10" width="10" height="10" fill="lime"/> + </svg>"##, +); + +test_compare_render_output!( + rect_auto_width_height, + 30, + 30, + br##"<?xml version="1.0" encoding="UTF-8"?> + <svg xmlns="http://www.w3.org/2000/svg" width="30" height="30"> + <rect x="10" y="10" width="auto" height="auto" fill="lime"/> + </svg>"##, + br##"<?xml version="1.0" encoding="UTF-8"?> + <svg xmlns="http://www.w3.org/2000/svg" width="30" height="30"> + </svg>"## +); + +test_compare_render_output!( + svg_auto_width_height, + 30, + 30, + br##"<?xml version="1.0" encoding="UTF-8"?> + <svg xmlns="http://www.w3.org/2000/svg" width="30" height="30"> + <svg xmlns="http://www.w3.org/2000/svg" width="auto" height="auto"> + <rect x="10" y="10" width="100%" height="100%" fill="lime"/> + </svg> + </svg>"##, + br##"<?xml version="1.0" encoding="UTF-8"?> + <svg xmlns="http://www.w3.org/2000/svg" width="30" height="30"> + <rect x="10" y="10" width="100%" height="100%" fill="lime"/> + </svg>"##, +); + +test_compare_render_output!( + use_context_stroke, + 100, + 20, + br##"<?xml version="1.0" encoding="UTF-8"?> + <svg width="100" height="20" viewBox="0 0 40 10" xmlns="http://www.w3.org/2000/svg"> + <g id="group"> + <circle cx="5" cy="5" r="4" stroke="context-stroke" fill="black"/> + <circle cx="14" cy="5" r="4" stroke="context-fill"/> + </g> + <use href="#group" x="20" stroke="blue" fill="yellow"/> + <!-- + Modified from: https://developer.mozilla.org/en-US/docs/Web/SVG/Element/use + --> +</svg> + "##, + br##"<?xml version="1.0" encoding="UTF-8"?> + <svg width="100" height="20" viewBox="0 0 40 10" xmlns="http://www.w3.org/2000/svg"> + <circle cx="5" cy="5" r="4" fill="black"/> + <circle cx="14" cy="5" r="4" fill="black"/> + <circle cx="25" cy="5" r="4" stroke="blue" fill="black"/> + <circle cx="34" cy="5" r="4" stroke="yellow" fill="yellow"/> + <!-- + Modified from: https://developer.mozilla.org/en-US/docs/Web/SVG/Element/use + --> + </svg> + "##, +); + +test_svg_reference!( + isolation, + "tests/fixtures/reftests/svg2-reftests/isolation.svg", + "tests/fixtures/reftests/svg2-reftests/isolation-ref.svg" +); + +test_svg_reference!( + mask_and_opacity, + "tests/fixtures/reftests/svg2-reftests/mask-and-opacity.svg", + "tests/fixtures/reftests/svg2-reftests/mask-and-opacity-ref.svg" +); + +test_svg_reference!( + gaussian_blur_nonpositive_913, + "tests/fixtures/reftests/svg2-reftests/bug913-gaussian-blur-nonpositive.svg", + "tests/fixtures/reftests/svg2-reftests/bug913-gaussian-blur-nonpositive-ref.svg" +); + +test_svg_reference!( + bug_880_horizontal_vertical_stroked_lines, + "tests/fixtures/reftests/bugs-reftests/bug880-stroke-wide-line.svg", + "tests/fixtures/reftests/bugs-reftests/bug880-stroke-wide-line-ref.svg" +); + +test_svg_reference!( + bug_92_symbol_clip, + "tests/fixtures/reftests/bugs-reftests/bug92-symbol-clip.svg", + "tests/fixtures/reftests/bugs-reftests/bug92-symbol-clip-ref.svg" +); + +test_svg_reference!( + bug_875_svg_use_width_height, + "tests/fixtures/reftests/bugs-reftests/bug875-svg-use-width-height.svg", + "tests/fixtures/reftests/bugs-reftests/bug875-svg-use-width-height-ref.svg" +); + +test_svg_reference!( + bug_885_vector_effect_non_scaling_stroke, + "tests/fixtures/reftests/bugs-reftests/bug885-vector-effect-non-scaling-stroke.svg", + "tests/fixtures/reftests/bugs-reftests/bug885-vector-effect-non-scaling-stroke-ref.svg" +); + +test_svg_reference!( + bug_930_invalid_clip_path_transform, + "tests/fixtures/reftests/bugs-reftests/bug930-invalid-clip-path-transform.svg", + "tests/fixtures/reftests/bugs-reftests/bug930-invalid-clip-path-transform-ref.svg" +); |