blitz-pdf 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +355 -2
- package/THIRD_PARTY_NOTICES.md +25 -0
- package/assets/icon.svg +4 -0
- package/dist/api.d.ts +7 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +46 -0
- package/dist/api.js.map +1 -0
- package/dist/assets.d.ts +7 -0
- package/dist/assets.d.ts.map +1 -0
- package/dist/assets.js +52 -0
- package/dist/assets.js.map +1 -0
- package/dist/browser.d.ts +3 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +3 -0
- package/dist/browser.js.map +1 -0
- package/dist/node.d.ts +3 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +10 -0
- package/dist/node.js.map +1 -0
- package/dist/options.d.ts +24 -0
- package/dist/options.d.ts.map +1 -0
- package/dist/options.js +135 -0
- package/dist/options.js.map +1 -0
- package/dist/types.d.ts +51 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/examples/bun.ts +8 -0
- package/examples/german-invoice/README.md +70 -0
- package/examples/german-invoice/data.mjs +83 -0
- package/examples/german-invoice/invoice.css +59 -0
- package/examples/german-invoice/template.mjs +49 -0
- package/examples/german-invoice.mjs +20 -0
- package/examples/invoice.html +29 -0
- package/examples/node.mjs +8 -0
- package/examples/pagination.html +40 -0
- package/examples/pagination.mjs +8 -0
- package/licenses/DejaVu.txt +187 -0
- package/licenses/RUST_DEPENDENCIES.txt +11577 -0
- package/package.json +89 -4
- package/src/api.ts +44 -0
- package/src/assets.ts +43 -0
- package/src/browser.ts +6 -0
- package/src/node.ts +12 -0
- package/src/options.ts +101 -0
- package/src/types.ts +49 -0
- package/vendor/README.md +17 -0
- package/vendor/stylo/.cargo-ok +1 -0
- package/vendor/stylo/.cargo_vcs_info.json +6 -0
- package/vendor/stylo/Cargo.lock +1485 -0
- package/vendor/stylo/Cargo.toml +274 -0
- package/vendor/stylo/LICENSE +373 -0
- package/vendor/stylo/README.md +6 -0
- package/vendor/stylo/applicable_declarations.rs +328 -0
- package/vendor/stylo/author_styles.rs +79 -0
- package/vendor/stylo/bezier.rs +176 -0
- package/vendor/stylo/bloom.rs +414 -0
- package/vendor/stylo/build.rs +91 -0
- package/vendor/stylo/build_gecko.rs +393 -0
- package/vendor/stylo/color/color_function.rs +601 -0
- package/vendor/stylo/color/component.rs +207 -0
- package/vendor/stylo/color/convert.rs +935 -0
- package/vendor/stylo/color/gamut/raytrace.rs +265 -0
- package/vendor/stylo/color/gamut.rs +227 -0
- package/vendor/stylo/color/mix.rs +645 -0
- package/vendor/stylo/color/mod.rs +750 -0
- package/vendor/stylo/color/parsing.rs +770 -0
- package/vendor/stylo/color/to_css.rs +297 -0
- package/vendor/stylo/context.rs +716 -0
- package/vendor/stylo/counter_style/mod.rs +754 -0
- package/vendor/stylo/counter_style/predefined.rs +61 -0
- package/vendor/stylo/counter_style/update_predefined.py +35 -0
- package/vendor/stylo/custom_properties.rs +2023 -0
- package/vendor/stylo/custom_properties_map.rs +220 -0
- package/vendor/stylo/data.rs +693 -0
- package/vendor/stylo/device/gecko.rs +486 -0
- package/vendor/stylo/device/mod.rs +304 -0
- package/vendor/stylo/device/servo.rs +507 -0
- package/vendor/stylo/dom.rs +1164 -0
- package/vendor/stylo/dom_apis.rs +937 -0
- package/vendor/stylo/driver.rs +172 -0
- package/vendor/stylo/error_reporting.rs +484 -0
- package/vendor/stylo/font_face.rs +558 -0
- package/vendor/stylo/font_metrics.rs +124 -0
- package/vendor/stylo/gecko/anon_boxes.toml +113 -0
- package/vendor/stylo/gecko/arc_types.rs +211 -0
- package/vendor/stylo/gecko/conversions.rs +59 -0
- package/vendor/stylo/gecko/data.rs +222 -0
- package/vendor/stylo/gecko/media_features.rs +971 -0
- package/vendor/stylo/gecko/mod.rs +20 -0
- package/vendor/stylo/gecko/non_ts_pseudo_class_list.rs +119 -0
- package/vendor/stylo/gecko/pseudo_element.rs +640 -0
- package/vendor/stylo/gecko/pseudo_element_definition.mako.rs +298 -0
- package/vendor/stylo/gecko/pseudo_elements.py +137 -0
- package/vendor/stylo/gecko/pseudo_elements.toml +197 -0
- package/vendor/stylo/gecko/regen_pseudo_elements.py +33 -0
- package/vendor/stylo/gecko/restyle_damage.rs +127 -0
- package/vendor/stylo/gecko/selector_parser.rs +627 -0
- package/vendor/stylo/gecko/snapshot.rs +202 -0
- package/vendor/stylo/gecko/snapshot_helpers.rs +334 -0
- package/vendor/stylo/gecko/traversal.rs +52 -0
- package/vendor/stylo/gecko/wrapper.rs +2258 -0
- package/vendor/stylo/gecko_bindings/mod.rs +34 -0
- package/vendor/stylo/gecko_bindings/sugar/mod.rs +12 -0
- package/vendor/stylo/gecko_bindings/sugar/ns_com_ptr.rs +15 -0
- package/vendor/stylo/gecko_bindings/sugar/ns_compatibility.rs +19 -0
- package/vendor/stylo/gecko_bindings/sugar/ns_style_auto_array.rs +111 -0
- package/vendor/stylo/gecko_bindings/sugar/origin_flags.rs +31 -0
- package/vendor/stylo/gecko_bindings/sugar/ownership.rs +70 -0
- package/vendor/stylo/gecko_bindings/sugar/refptr.rs +299 -0
- package/vendor/stylo/gecko_string_cache/mod.rs +543 -0
- package/vendor/stylo/gecko_string_cache/namespace.rs +106 -0
- package/vendor/stylo/global_style_data.rs +224 -0
- package/vendor/stylo/invalidation/element/document_state.rs +156 -0
- package/vendor/stylo/invalidation/element/element_wrapper.rs +432 -0
- package/vendor/stylo/invalidation/element/invalidation_map.rs +1631 -0
- package/vendor/stylo/invalidation/element/invalidator.rs +1470 -0
- package/vendor/stylo/invalidation/element/mod.rs +13 -0
- package/vendor/stylo/invalidation/element/relative_selector.rs +1399 -0
- package/vendor/stylo/invalidation/element/restyle_hints.rs +226 -0
- package/vendor/stylo/invalidation/element/state_and_attributes.rs +756 -0
- package/vendor/stylo/invalidation/media_queries.rs +144 -0
- package/vendor/stylo/invalidation/mod.rs +10 -0
- package/vendor/stylo/invalidation/stylesheets.rs +745 -0
- package/vendor/stylo/invalidation/viewport_units.rs +71 -0
- package/vendor/stylo/lib.rs +336 -0
- package/vendor/stylo/logical_geometry.rs +1684 -0
- package/vendor/stylo/macros.rs +70 -0
- package/vendor/stylo/matching.rs +1226 -0
- package/vendor/stylo/media_queries/media_list.rs +168 -0
- package/vendor/stylo/media_queries/media_query.rs +190 -0
- package/vendor/stylo/media_queries/mod.rs +13 -0
- package/vendor/stylo/parallel.rs +205 -0
- package/vendor/stylo/parser.rs +276 -0
- package/vendor/stylo/piecewise_linear.rs +282 -0
- package/vendor/stylo/prefs.rs +33 -0
- package/vendor/stylo/properties/build.py +119 -0
- package/vendor/stylo/properties/cascade.rs +2704 -0
- package/vendor/stylo/properties/computed_value_flags.rs +206 -0
- package/vendor/stylo/properties/counted_unknown_properties.py +104 -0
- package/vendor/stylo/properties/counter_style_descriptors.toml +45 -0
- package/vendor/stylo/properties/data.py +1375 -0
- package/vendor/stylo/properties/declaration_block.rs +1788 -0
- package/vendor/stylo/properties/font_face_descriptors.toml +50 -0
- package/vendor/stylo/properties/gecko.mako.rs +1555 -0
- package/vendor/stylo/properties/helpers/animated_properties.mako.rs +800 -0
- package/vendor/stylo/properties/helpers.mako.rs +812 -0
- package/vendor/stylo/properties/longhands.toml +4305 -0
- package/vendor/stylo/properties/mod.rs +1857 -0
- package/vendor/stylo/properties/properties.html.mako +31 -0
- package/vendor/stylo/properties/properties.mako.rs +3103 -0
- package/vendor/stylo/properties/property_descriptors.toml +18 -0
- package/vendor/stylo/properties/shorthands.rs +4241 -0
- package/vendor/stylo/properties/shorthands.toml +575 -0
- package/vendor/stylo/properties/vendored_python/mako-1.3.10-py3-none-any.whl +0 -0
- package/vendor/stylo/properties/vendored_python/markupsafe/LICENSE.txt +28 -0
- package/vendor/stylo/properties/vendored_python/markupsafe/__init__.py +384 -0
- package/vendor/stylo/properties/vendored_python/toml-0.10.2-py2.py3-none-any.whl +0 -0
- package/vendor/stylo/properties/view_transition_descriptors.toml +11 -0
- package/vendor/stylo/properties_and_values/mod.rs +12 -0
- package/vendor/stylo/properties_and_values/registry.rs +65 -0
- package/vendor/stylo/properties_and_values/rule.rs +331 -0
- package/vendor/stylo/properties_and_values/syntax/ascii.rs +60 -0
- package/vendor/stylo/properties_and_values/syntax/data_type.rs +146 -0
- package/vendor/stylo/properties_and_values/syntax/mod.rs +437 -0
- package/vendor/stylo/properties_and_values/value.rs +758 -0
- package/vendor/stylo/queries/condition.rs +996 -0
- package/vendor/stylo/queries/feature.rs +199 -0
- package/vendor/stylo/queries/feature_expression.rs +1170 -0
- package/vendor/stylo/queries/mod.rs +19 -0
- package/vendor/stylo/queries/values.rs +46 -0
- package/vendor/stylo/rule_cache.rs +267 -0
- package/vendor/stylo/rule_collector.rs +554 -0
- package/vendor/stylo/rule_tree/core.rs +787 -0
- package/vendor/stylo/rule_tree/level.rs +396 -0
- package/vendor/stylo/rule_tree/map.rs +201 -0
- package/vendor/stylo/rule_tree/mod.rs +427 -0
- package/vendor/stylo/rule_tree/source.rs +80 -0
- package/vendor/stylo/rule_tree/unsafe_box.rs +78 -0
- package/vendor/stylo/scoped_tls.rs +80 -0
- package/vendor/stylo/selector_map.rs +1050 -0
- package/vendor/stylo/selector_parser.rs +305 -0
- package/vendor/stylo/servo/animation.rs +1922 -0
- package/vendor/stylo/servo/attr.rs +714 -0
- package/vendor/stylo/servo/encoding_support.rs +81 -0
- package/vendor/stylo/servo/media_features.rs +254 -0
- package/vendor/stylo/servo/mod.rs +16 -0
- package/vendor/stylo/servo/restyle_damage.rs +215 -0
- package/vendor/stylo/servo/selector_parser.rs +1036 -0
- package/vendor/stylo/servo/shadow_parts.rs +207 -0
- package/vendor/stylo/shared_lock.rs +271 -0
- package/vendor/stylo/sharing/checks.rs +281 -0
- package/vendor/stylo/sharing/mod.rs +1000 -0
- package/vendor/stylo/simple_buckets_map.rs +52 -0
- package/vendor/stylo/str.rs +168 -0
- package/vendor/stylo/style_adjuster.rs +1086 -0
- package/vendor/stylo/style_resolver.rs +658 -0
- package/vendor/stylo/stylesheet_set.rs +658 -0
- package/vendor/stylo/stylesheets/appearance_base_rule.rs +51 -0
- package/vendor/stylo/stylesheets/container_rule.rs +769 -0
- package/vendor/stylo/stylesheets/counter_style_rule.rs +7 -0
- package/vendor/stylo/stylesheets/document_rule.rs +272 -0
- package/vendor/stylo/stylesheets/font_face_rule.rs +7 -0
- package/vendor/stylo/stylesheets/font_feature_values_rule.rs +481 -0
- package/vendor/stylo/stylesheets/font_palette_values_rule.rs +304 -0
- package/vendor/stylo/stylesheets/import_rule.rs +259 -0
- package/vendor/stylo/stylesheets/keyframes_rule.rs +733 -0
- package/vendor/stylo/stylesheets/layer_rule.rs +221 -0
- package/vendor/stylo/stylesheets/loader.rs +29 -0
- package/vendor/stylo/stylesheets/margin_rule.rs +190 -0
- package/vendor/stylo/stylesheets/media_rule.rs +191 -0
- package/vendor/stylo/stylesheets/mod.rs +918 -0
- package/vendor/stylo/stylesheets/namespace_rule.rs +43 -0
- package/vendor/stylo/stylesheets/nested_declarations_rule.rs +51 -0
- package/vendor/stylo/stylesheets/origin.rs +249 -0
- package/vendor/stylo/stylesheets/page_rule.rs +354 -0
- package/vendor/stylo/stylesheets/position_try_rule.rs +68 -0
- package/vendor/stylo/stylesheets/property_rule.rs +5 -0
- package/vendor/stylo/stylesheets/rule_list.rs +167 -0
- package/vendor/stylo/stylesheets/rule_parser.rs +1189 -0
- package/vendor/stylo/stylesheets/rules_iterator.rs +397 -0
- package/vendor/stylo/stylesheets/scope_rule.rs +511 -0
- package/vendor/stylo/stylesheets/starting_style_rule.rs +54 -0
- package/vendor/stylo/stylesheets/style_rule.rs +80 -0
- package/vendor/stylo/stylesheets/stylesheet.rs +570 -0
- package/vendor/stylo/stylesheets/supports_rule.rs +486 -0
- package/vendor/stylo/stylesheets/view_transition_rule.rs +81 -0
- package/vendor/stylo/stylist.rs +5076 -0
- package/vendor/stylo/thread_state.rs +87 -0
- package/vendor/stylo/traversal.rs +765 -0
- package/vendor/stylo/traversal_flags.rs +68 -0
- package/vendor/stylo/typed_om/mod.rs +981 -0
- package/vendor/stylo/typed_om/numeric.rs +128 -0
- package/vendor/stylo/typed_om/numeric_declaration.rs +93 -0
- package/vendor/stylo/typed_om/numeric_type.rs +640 -0
- package/vendor/stylo/typed_om/sum_value.rs +426 -0
- package/vendor/stylo/url/gecko.rs +367 -0
- package/vendor/stylo/url/mod.rs +71 -0
- package/vendor/stylo/url/servo.rs +239 -0
- package/vendor/stylo/use_counters/mod.rs +137 -0
- package/vendor/stylo/values/animated/color.rs +103 -0
- package/vendor/stylo/values/animated/effects.rs +26 -0
- package/vendor/stylo/values/animated/font.rs +37 -0
- package/vendor/stylo/values/animated/grid.rs +161 -0
- package/vendor/stylo/values/animated/lists.rs +141 -0
- package/vendor/stylo/values/animated/mod.rs +550 -0
- package/vendor/stylo/values/animated/svg.rs +46 -0
- package/vendor/stylo/values/animated/text.rs +58 -0
- package/vendor/stylo/values/animated/transform.rs +1592 -0
- package/vendor/stylo/values/computed/align.rs +90 -0
- package/vendor/stylo/values/computed/angle.rs +130 -0
- package/vendor/stylo/values/computed/animation.rs +124 -0
- package/vendor/stylo/values/computed/background.rs +13 -0
- package/vendor/stylo/values/computed/basic_shape.rs +267 -0
- package/vendor/stylo/values/computed/border.rs +163 -0
- package/vendor/stylo/values/computed/box.rs +267 -0
- package/vendor/stylo/values/computed/calc.rs +334 -0
- package/vendor/stylo/values/computed/color.rs +161 -0
- package/vendor/stylo/values/computed/column.rs +11 -0
- package/vendor/stylo/values/computed/corner_shape.rs +155 -0
- package/vendor/stylo/values/computed/counters.rs +26 -0
- package/vendor/stylo/values/computed/easing.rs +109 -0
- package/vendor/stylo/values/computed/effects.rs +30 -0
- package/vendor/stylo/values/computed/flex.rs +19 -0
- package/vendor/stylo/values/computed/font.rs +1517 -0
- package/vendor/stylo/values/computed/image.rs +273 -0
- package/vendor/stylo/values/computed/length.rs +576 -0
- package/vendor/stylo/values/computed/length_percentage.rs +1055 -0
- package/vendor/stylo/values/computed/list.rs +16 -0
- package/vendor/stylo/values/computed/mod.rs +1141 -0
- package/vendor/stylo/values/computed/motion.rs +73 -0
- package/vendor/stylo/values/computed/outline.rs +7 -0
- package/vendor/stylo/values/computed/page.rs +77 -0
- package/vendor/stylo/values/computed/param.rs +9 -0
- package/vendor/stylo/values/computed/percentage.rs +143 -0
- package/vendor/stylo/values/computed/position.rs +273 -0
- package/vendor/stylo/values/computed/ratio.rs +88 -0
- package/vendor/stylo/values/computed/rect.rs +19 -0
- package/vendor/stylo/values/computed/resolution.rs +76 -0
- package/vendor/stylo/values/computed/svg.rs +66 -0
- package/vendor/stylo/values/computed/table.rs +7 -0
- package/vendor/stylo/values/computed/text.rs +199 -0
- package/vendor/stylo/values/computed/time.rs +83 -0
- package/vendor/stylo/values/computed/transform.rs +559 -0
- package/vendor/stylo/values/computed/tree_counting.rs +30 -0
- package/vendor/stylo/values/computed/ui.rs +23 -0
- package/vendor/stylo/values/computed/url.rs +12 -0
- package/vendor/stylo/values/distance.rs +139 -0
- package/vendor/stylo/values/generics/animation.rs +363 -0
- package/vendor/stylo/values/generics/background.rs +65 -0
- package/vendor/stylo/values/generics/basic_shape.rs +1389 -0
- package/vendor/stylo/values/generics/border.rs +303 -0
- package/vendor/stylo/values/generics/box.rs +552 -0
- package/vendor/stylo/values/generics/calc.rs +2986 -0
- package/vendor/stylo/values/generics/color.rs +318 -0
- package/vendor/stylo/values/generics/column.rs +44 -0
- package/vendor/stylo/values/generics/counters.rs +320 -0
- package/vendor/stylo/values/generics/easing.rs +132 -0
- package/vendor/stylo/values/generics/effects.rs +131 -0
- package/vendor/stylo/values/generics/flex.rs +34 -0
- package/vendor/stylo/values/generics/font.rs +376 -0
- package/vendor/stylo/values/generics/grid.rs +962 -0
- package/vendor/stylo/values/generics/image.rs +653 -0
- package/vendor/stylo/values/generics/length.rs +656 -0
- package/vendor/stylo/values/generics/mod.rs +303 -0
- package/vendor/stylo/values/generics/motion.rs +274 -0
- package/vendor/stylo/values/generics/page.rs +167 -0
- package/vendor/stylo/values/generics/position.rs +669 -0
- package/vendor/stylo/values/generics/ratio.rs +88 -0
- package/vendor/stylo/values/generics/rect.rs +147 -0
- package/vendor/stylo/values/generics/size.rs +102 -0
- package/vendor/stylo/values/generics/svg.rs +226 -0
- package/vendor/stylo/values/generics/text.rs +268 -0
- package/vendor/stylo/values/generics/transform.rs +1157 -0
- package/vendor/stylo/values/generics/ui.rs +147 -0
- package/vendor/stylo/values/generics/url.rs +51 -0
- package/vendor/stylo/values/mod.rs +820 -0
- package/vendor/stylo/values/resolved/animation.rs +33 -0
- package/vendor/stylo/values/resolved/color.rs +53 -0
- package/vendor/stylo/values/resolved/counters.rs +45 -0
- package/vendor/stylo/values/resolved/mod.rs +316 -0
- package/vendor/stylo/values/specified/align.rs +711 -0
- package/vendor/stylo/values/specified/angle.rs +407 -0
- package/vendor/stylo/values/specified/animation.rs +921 -0
- package/vendor/stylo/values/specified/background.rs +270 -0
- package/vendor/stylo/values/specified/basic_shape.rs +986 -0
- package/vendor/stylo/values/specified/border.rs +430 -0
- package/vendor/stylo/values/specified/box.rs +2231 -0
- package/vendor/stylo/values/specified/calc.rs +1657 -0
- package/vendor/stylo/values/specified/color.rs +1210 -0
- package/vendor/stylo/values/specified/column.rs +11 -0
- package/vendor/stylo/values/specified/corner_shape.rs +152 -0
- package/vendor/stylo/values/specified/counters.rs +242 -0
- package/vendor/stylo/values/specified/easing.rs +225 -0
- package/vendor/stylo/values/specified/effects.rs +421 -0
- package/vendor/stylo/values/specified/flex.rs +42 -0
- package/vendor/stylo/values/specified/font.rs +2103 -0
- package/vendor/stylo/values/specified/frequency.rs +39 -0
- package/vendor/stylo/values/specified/grid.rs +407 -0
- package/vendor/stylo/values/specified/image.rs +1385 -0
- package/vendor/stylo/values/specified/intersection_observer.rs +80 -0
- package/vendor/stylo/values/specified/length.rs +2024 -0
- package/vendor/stylo/values/specified/list.rs +190 -0
- package/vendor/stylo/values/specified/mod.rs +531 -0
- package/vendor/stylo/values/specified/motion.rs +316 -0
- package/vendor/stylo/values/specified/number.rs +603 -0
- package/vendor/stylo/values/specified/outline.rs +69 -0
- package/vendor/stylo/values/specified/page.rs +94 -0
- package/vendor/stylo/values/specified/param.rs +121 -0
- package/vendor/stylo/values/specified/percentage.rs +364 -0
- package/vendor/stylo/values/specified/position.rs +2247 -0
- package/vendor/stylo/values/specified/ratio.rs +29 -0
- package/vendor/stylo/values/specified/rect.rs +28 -0
- package/vendor/stylo/values/specified/resolution.rs +237 -0
- package/vendor/stylo/values/specified/source_size_list.rs +135 -0
- package/vendor/stylo/values/specified/svg.rs +427 -0
- package/vendor/stylo/values/specified/svg_path.rs +1115 -0
- package/vendor/stylo/values/specified/table.rs +38 -0
- package/vendor/stylo/values/specified/text.rs +1561 -0
- package/vendor/stylo/values/specified/time.rs +313 -0
- package/vendor/stylo/values/specified/transform.rs +599 -0
- package/vendor/stylo/values/specified/tree_counting.rs +32 -0
- package/vendor/stylo/values/specified/ui.rs +344 -0
- package/vendor/stylo/values/specified/url.rs +12 -0
- package/vendor/stylo/values/tagged_numeric.rs +253 -0
- package/wasm/blitz_pdf.d.ts +67 -0
- package/wasm/blitz_pdf.js +699 -0
- package/wasm/blitz_pdf_bg.wasm +0 -0
- package/wasm/blitz_pdf_bg.wasm.d.ts +20 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
|
|
5
|
+
//! Resolution values:
|
|
6
|
+
//!
|
|
7
|
+
//! https://drafts.csswg.org/css-values/#resolution
|
|
8
|
+
|
|
9
|
+
use crate::derives::*;
|
|
10
|
+
use crate::typed_om::{NumericType, NumericValue, ToTyped, TypedValue, UnitValue};
|
|
11
|
+
use crate::values::CSSFloat;
|
|
12
|
+
use std::{
|
|
13
|
+
fmt::{self, Write},
|
|
14
|
+
ops::AddAssign,
|
|
15
|
+
};
|
|
16
|
+
use style_traits::{CssString, CssWriter, ToCss};
|
|
17
|
+
use thin_vec::ThinVec;
|
|
18
|
+
|
|
19
|
+
/// A computed `<resolution>`.
|
|
20
|
+
#[repr(C)]
|
|
21
|
+
#[derive(
|
|
22
|
+
Animate,
|
|
23
|
+
Copy,
|
|
24
|
+
Clone,
|
|
25
|
+
Debug,
|
|
26
|
+
Deserialize,
|
|
27
|
+
MallocSizeOf,
|
|
28
|
+
PartialEq,
|
|
29
|
+
PartialOrd,
|
|
30
|
+
Serialize,
|
|
31
|
+
ToAnimatedZero,
|
|
32
|
+
ToResolvedValue,
|
|
33
|
+
ToShmem,
|
|
34
|
+
)]
|
|
35
|
+
pub struct Resolution(CSSFloat);
|
|
36
|
+
|
|
37
|
+
impl Resolution {
|
|
38
|
+
/// Returns this resolution value as dppx.
|
|
39
|
+
#[inline]
|
|
40
|
+
pub fn dppx(&self) -> CSSFloat {
|
|
41
|
+
self.0
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/// Return a computed `resolution` value from a dppx float value.
|
|
45
|
+
#[inline]
|
|
46
|
+
pub fn from_dppx(dppx: CSSFloat) -> Self {
|
|
47
|
+
Resolution(dppx)
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
impl ToCss for Resolution {
|
|
52
|
+
fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result
|
|
53
|
+
where
|
|
54
|
+
W: fmt::Write,
|
|
55
|
+
{
|
|
56
|
+
self.dppx().to_css(dest)?;
|
|
57
|
+
dest.write_str("dppx")
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
impl ToTyped for Resolution {
|
|
62
|
+
fn to_typed(&self, dest: &mut ThinVec<TypedValue>) -> Result<(), ()> {
|
|
63
|
+
dest.push(TypedValue::Numeric(NumericValue::Unit(UnitValue {
|
|
64
|
+
numeric_type: NumericType::resolution(),
|
|
65
|
+
value: self.dppx(),
|
|
66
|
+
unit: CssString::from("dppx"),
|
|
67
|
+
})));
|
|
68
|
+
Ok(())
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
impl AddAssign for Resolution {
|
|
73
|
+
fn add_assign(&mut self, rhs: Self) {
|
|
74
|
+
self.0 += rhs.0
|
|
75
|
+
}
|
|
76
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
|
|
5
|
+
//! Computed types for SVG properties.
|
|
6
|
+
|
|
7
|
+
use crate::values::computed::color::Color;
|
|
8
|
+
use crate::values::computed::url::ComputedUrl;
|
|
9
|
+
use crate::values::computed::{LengthPercentage, NonNegativeLengthPercentage, Opacity};
|
|
10
|
+
use crate::values::generics::svg as generic;
|
|
11
|
+
use crate::Zero;
|
|
12
|
+
|
|
13
|
+
pub use crate::values::specified::{DProperty, MozContextProperties, SVGPaintOrder, VectorEffect};
|
|
14
|
+
|
|
15
|
+
/// Computed SVG Paint value
|
|
16
|
+
pub type SVGPaint = generic::GenericSVGPaint<Color, ComputedUrl>;
|
|
17
|
+
|
|
18
|
+
/// Computed SVG Paint Kind value
|
|
19
|
+
pub type SVGPaintKind = generic::GenericSVGPaintKind<Color, ComputedUrl>;
|
|
20
|
+
|
|
21
|
+
impl SVGPaint {
|
|
22
|
+
/// Opaque black color
|
|
23
|
+
pub const BLACK: Self = Self {
|
|
24
|
+
kind: generic::SVGPaintKind::Color(Color::BLACK),
|
|
25
|
+
fallback: generic::SVGPaintFallback::Unset,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/// <length> | <percentage> | <number> | context-value
|
|
30
|
+
pub type SVGLength = generic::GenericSVGLength<LengthPercentage>;
|
|
31
|
+
|
|
32
|
+
impl SVGLength {
|
|
33
|
+
/// `0px`
|
|
34
|
+
pub fn zero() -> Self {
|
|
35
|
+
generic::SVGLength::LengthPercentage(LengthPercentage::zero())
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/// An non-negative wrapper of SVGLength.
|
|
40
|
+
pub type SVGWidth = generic::GenericSVGLength<NonNegativeLengthPercentage>;
|
|
41
|
+
|
|
42
|
+
impl SVGWidth {
|
|
43
|
+
/// `1px`.
|
|
44
|
+
pub fn one() -> Self {
|
|
45
|
+
use crate::values::generics::NonNegative;
|
|
46
|
+
generic::SVGLength::LengthPercentage(NonNegative(LengthPercentage::one()))
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/// [ <length> | <percentage> | <number> ]# | context-value
|
|
51
|
+
pub type SVGStrokeDashArray = generic::GenericSVGStrokeDashArray<NonNegativeLengthPercentage>;
|
|
52
|
+
|
|
53
|
+
impl Default for SVGStrokeDashArray {
|
|
54
|
+
fn default() -> Self {
|
|
55
|
+
generic::SVGStrokeDashArray::Values(Default::default())
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/// <opacity-value> | context-fill-opacity | context-stroke-opacity
|
|
60
|
+
pub type SVGOpacity = generic::GenericSVGOpacity<Opacity>;
|
|
61
|
+
|
|
62
|
+
impl Default for SVGOpacity {
|
|
63
|
+
fn default() -> Self {
|
|
64
|
+
generic::SVGOpacity::Opacity(1.)
|
|
65
|
+
}
|
|
66
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
|
|
5
|
+
//! Computed types for CSS values related to tables.
|
|
6
|
+
|
|
7
|
+
pub use super::specified::table::CaptionSide;
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
|
|
5
|
+
//! Computed types for text properties.
|
|
6
|
+
|
|
7
|
+
use crate::derives::*;
|
|
8
|
+
#[cfg(feature = "gecko")]
|
|
9
|
+
use crate::gecko_bindings::bindings;
|
|
10
|
+
use crate::typed_om::{KeywordValue, ToTyped, TypedValue};
|
|
11
|
+
use crate::values::animated::text::TextDecorationInset as AnimatedTextDecorationInset;
|
|
12
|
+
use crate::values::animated::{Context as AnimatedContext, ToAnimatedValue};
|
|
13
|
+
use crate::values::computed::length::{CSSPixelLength, LengthPercentage};
|
|
14
|
+
use crate::values::generics::text::{
|
|
15
|
+
GenericHyphenateLimitChars, GenericInitialLetter, GenericTextDecorationInset,
|
|
16
|
+
GenericTextDecorationLength, GenericTextIndent,
|
|
17
|
+
};
|
|
18
|
+
use crate::values::generics::NumberOrAuto;
|
|
19
|
+
use crate::values::specified::text as specified;
|
|
20
|
+
use crate::values::specified::text::{TextEmphasisFillMode, TextEmphasisShapeKeyword};
|
|
21
|
+
use crate::values::{CSSFloat, CSSInteger, ComputeSquaredDistance};
|
|
22
|
+
use crate::Zero;
|
|
23
|
+
use std::fmt::{self, Write};
|
|
24
|
+
use style_traits::{CssString, CssWriter, ToCss};
|
|
25
|
+
use thin_vec::ThinVec;
|
|
26
|
+
|
|
27
|
+
pub use crate::values::specified::text::{
|
|
28
|
+
HyphenateCharacter, LineBreak, MozControlCharacterVisibility, OverflowWrap, RubyPosition,
|
|
29
|
+
TextAlignLast, TextAutospace, TextBoxEdge, TextBoxTrim, TextDecorationLine,
|
|
30
|
+
TextDecorationSkipInk, TextEmphasisPosition, TextJustify, TextOverflow, TextTransform,
|
|
31
|
+
TextUnderlinePosition, WordBreak,
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
/// A computed value for the `initial-letter` property.
|
|
35
|
+
pub type InitialLetter = GenericInitialLetter<CSSFloat, CSSInteger>;
|
|
36
|
+
|
|
37
|
+
/// Implements type for `text-decoration-thickness` property.
|
|
38
|
+
pub type TextDecorationLength = GenericTextDecorationLength<LengthPercentage>;
|
|
39
|
+
|
|
40
|
+
/// Implements type for `text-decoration-inset` property.
|
|
41
|
+
pub type TextDecorationInset = GenericTextDecorationInset<LengthPercentage>;
|
|
42
|
+
|
|
43
|
+
impl ToAnimatedValue for TextDecorationInset {
|
|
44
|
+
type AnimatedValue = AnimatedTextDecorationInset;
|
|
45
|
+
|
|
46
|
+
fn to_animated_value(self, context: &AnimatedContext) -> Self::AnimatedValue {
|
|
47
|
+
match self {
|
|
48
|
+
Self::Auto => {
|
|
49
|
+
let font_size_px = context
|
|
50
|
+
.style
|
|
51
|
+
.get_font()
|
|
52
|
+
.clone_font_size()
|
|
53
|
+
.computed_size()
|
|
54
|
+
.px();
|
|
55
|
+
#[cfg(feature = "gecko")]
|
|
56
|
+
let auto_length = unsafe { bindings::Gecko_CalcAutoDecorationInset(font_size_px) };
|
|
57
|
+
#[cfg(feature = "servo")]
|
|
58
|
+
let auto_length = {
|
|
59
|
+
// Use an inset factor of 1/12.5, so we get 2px of inset (resulting in 4px
|
|
60
|
+
// gap between adjacent lines) at font-size 25px.
|
|
61
|
+
let auto_inset_factor = 1.0 / 12.5;
|
|
62
|
+
|
|
63
|
+
// Use the em size multiplied by auto_inset_factor, with a minimum of one
|
|
64
|
+
// CSS pixel to ensure that at least some separation occurs.
|
|
65
|
+
(font_size_px * auto_inset_factor).max(1.0)
|
|
66
|
+
};
|
|
67
|
+
let auto_length = CSSPixelLength::new(auto_length);
|
|
68
|
+
Self::AnimatedValue {
|
|
69
|
+
start: LengthPercentage::new_length(auto_length),
|
|
70
|
+
end: LengthPercentage::new_length(auto_length),
|
|
71
|
+
is_auto: true,
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
Self::LengthPercentage { start, end } => Self::AnimatedValue {
|
|
75
|
+
start: start.to_animated_value(context),
|
|
76
|
+
end: end.to_animated_value(context),
|
|
77
|
+
is_auto: false,
|
|
78
|
+
},
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
#[inline]
|
|
83
|
+
fn from_animated_value(value: Self::AnimatedValue) -> Self {
|
|
84
|
+
if value.is_auto {
|
|
85
|
+
Self::Auto
|
|
86
|
+
} else {
|
|
87
|
+
Self::LengthPercentage {
|
|
88
|
+
start: value.start,
|
|
89
|
+
end: value.end,
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/// The computed value of `text-align`.
|
|
96
|
+
pub type TextAlign = specified::TextAlignKeyword;
|
|
97
|
+
|
|
98
|
+
/// The computed value of `text-indent`.
|
|
99
|
+
pub type TextIndent = GenericTextIndent<LengthPercentage>;
|
|
100
|
+
|
|
101
|
+
/// A computed value for the `hyphenate-character` property.
|
|
102
|
+
pub type HyphenateLimitChars = GenericHyphenateLimitChars<CSSInteger>;
|
|
103
|
+
|
|
104
|
+
impl HyphenateLimitChars {
|
|
105
|
+
/// Return the `auto` value, which has all three component values as `auto`.
|
|
106
|
+
#[inline]
|
|
107
|
+
pub fn auto() -> Self {
|
|
108
|
+
Self {
|
|
109
|
+
total_word_length: NumberOrAuto::Auto,
|
|
110
|
+
pre_hyphen_length: NumberOrAuto::Auto,
|
|
111
|
+
post_hyphen_length: NumberOrAuto::Auto,
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/// A computed value for the `letter-spacing` property.
|
|
117
|
+
#[repr(transparent)]
|
|
118
|
+
#[derive(
|
|
119
|
+
Animate,
|
|
120
|
+
Clone,
|
|
121
|
+
ComputeSquaredDistance,
|
|
122
|
+
Copy,
|
|
123
|
+
Debug,
|
|
124
|
+
MallocSizeOf,
|
|
125
|
+
PartialEq,
|
|
126
|
+
ToAnimatedValue,
|
|
127
|
+
ToAnimatedZero,
|
|
128
|
+
ToResolvedValue,
|
|
129
|
+
)]
|
|
130
|
+
pub struct GenericLetterSpacing<L>(pub L);
|
|
131
|
+
/// This is generic just to make the #[derive()] code do the right thing for lengths.
|
|
132
|
+
pub type LetterSpacing = GenericLetterSpacing<LengthPercentage>;
|
|
133
|
+
|
|
134
|
+
impl LetterSpacing {
|
|
135
|
+
/// Return the `normal` computed value, which is just zero.
|
|
136
|
+
#[inline]
|
|
137
|
+
pub fn normal() -> Self {
|
|
138
|
+
Self(LengthPercentage::zero())
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
impl ToCss for LetterSpacing {
|
|
143
|
+
fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result
|
|
144
|
+
where
|
|
145
|
+
W: Write,
|
|
146
|
+
{
|
|
147
|
+
// https://drafts.csswg.org/css-text/#propdef-letter-spacing
|
|
148
|
+
//
|
|
149
|
+
// For legacy reasons, a computed letter-spacing of zero yields a
|
|
150
|
+
// resolved value (getComputedStyle() return value) of normal.
|
|
151
|
+
if self.0.is_zero() {
|
|
152
|
+
return dest.write_str("normal");
|
|
153
|
+
}
|
|
154
|
+
self.0.to_css(dest)
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
impl ToTyped for LetterSpacing {
|
|
159
|
+
// Note: The specification does not currently define how letter spacing
|
|
160
|
+
// should be reified into Typed OM. The current behavior follows existing
|
|
161
|
+
// WPT coverage (letter-spacing.html). Syncing spec with UA/WPT behavior
|
|
162
|
+
// tracked in https://github.com/w3c/csswg-drafts/issues/13907
|
|
163
|
+
fn to_typed(&self, dest: &mut ThinVec<TypedValue>) -> Result<(), ()> {
|
|
164
|
+
if !self.0.has_percentage() && self.0.is_zero() {
|
|
165
|
+
dest.push(TypedValue::Keyword(KeywordValue(CssString::from("normal"))));
|
|
166
|
+
return Ok(());
|
|
167
|
+
}
|
|
168
|
+
self.0.to_typed(dest)
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/// A computed value for the `word-spacing` property.
|
|
173
|
+
pub type WordSpacing = LengthPercentage;
|
|
174
|
+
|
|
175
|
+
impl WordSpacing {
|
|
176
|
+
/// Return the `normal` computed value, which is just zero.
|
|
177
|
+
#[inline]
|
|
178
|
+
pub fn normal() -> Self {
|
|
179
|
+
LengthPercentage::zero()
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/// Computed value for the text-emphasis-style property
|
|
184
|
+
#[derive(Clone, Debug, MallocSizeOf, PartialEq, ToCss, ToResolvedValue, ToTyped)]
|
|
185
|
+
#[allow(missing_docs)]
|
|
186
|
+
#[repr(C, u8)]
|
|
187
|
+
#[typed(todo_derive_fields)]
|
|
188
|
+
pub enum TextEmphasisStyle {
|
|
189
|
+
/// [ <fill> || <shape> ]
|
|
190
|
+
Keyword {
|
|
191
|
+
#[css(skip_if = "TextEmphasisFillMode::is_filled")]
|
|
192
|
+
fill: TextEmphasisFillMode,
|
|
193
|
+
shape: TextEmphasisShapeKeyword,
|
|
194
|
+
},
|
|
195
|
+
/// `none`
|
|
196
|
+
None,
|
|
197
|
+
/// `<string>` (of which only the first grapheme cluster will be used).
|
|
198
|
+
String(crate::OwnedStr),
|
|
199
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
|
|
5
|
+
//! Computed time values.
|
|
6
|
+
|
|
7
|
+
use crate::derives::*;
|
|
8
|
+
use crate::typed_om::{NumericType, NumericValue, ToTyped, TypedValue, UnitValue};
|
|
9
|
+
use crate::values::CSSFloat;
|
|
10
|
+
use crate::Zero;
|
|
11
|
+
use std::fmt::{self, Write};
|
|
12
|
+
use std::ops::AddAssign;
|
|
13
|
+
use style_traits::{CssString, CssWriter, ToCss};
|
|
14
|
+
use thin_vec::ThinVec;
|
|
15
|
+
|
|
16
|
+
/// A computed `<time>` value.
|
|
17
|
+
#[derive(
|
|
18
|
+
Animate,
|
|
19
|
+
Clone,
|
|
20
|
+
Copy,
|
|
21
|
+
Debug,
|
|
22
|
+
Deserialize,
|
|
23
|
+
MallocSizeOf,
|
|
24
|
+
PartialEq,
|
|
25
|
+
PartialOrd,
|
|
26
|
+
Serialize,
|
|
27
|
+
ToAnimatedZero,
|
|
28
|
+
ToResolvedValue,
|
|
29
|
+
)]
|
|
30
|
+
#[repr(C)]
|
|
31
|
+
pub struct Time {
|
|
32
|
+
seconds: CSSFloat,
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
impl Time {
|
|
36
|
+
/// Creates a time value from a seconds amount.
|
|
37
|
+
pub fn from_seconds(seconds: CSSFloat) -> Self {
|
|
38
|
+
Time { seconds }
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/// Returns the amount of seconds this time represents.
|
|
42
|
+
#[inline]
|
|
43
|
+
pub fn seconds(&self) -> CSSFloat {
|
|
44
|
+
self.seconds
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
impl ToCss for Time {
|
|
49
|
+
fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result
|
|
50
|
+
where
|
|
51
|
+
W: Write,
|
|
52
|
+
{
|
|
53
|
+
self.seconds().to_css(dest)?;
|
|
54
|
+
dest.write_char('s')
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
impl ToTyped for Time {
|
|
59
|
+
fn to_typed(&self, dest: &mut ThinVec<TypedValue>) -> Result<(), ()> {
|
|
60
|
+
dest.push(TypedValue::Numeric(NumericValue::Unit(UnitValue {
|
|
61
|
+
numeric_type: NumericType::time(),
|
|
62
|
+
value: self.seconds(),
|
|
63
|
+
unit: CssString::from("s"),
|
|
64
|
+
})));
|
|
65
|
+
Ok(())
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
impl Zero for Time {
|
|
70
|
+
fn zero() -> Self {
|
|
71
|
+
Self::from_seconds(0.0)
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
fn is_zero(&self) -> bool {
|
|
75
|
+
self.seconds == 0.
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
impl AddAssign for Time {
|
|
80
|
+
fn add_assign(&mut self, rhs: Self) {
|
|
81
|
+
self.seconds += rhs.seconds
|
|
82
|
+
}
|
|
83
|
+
}
|