emf 0.1.2 → 0.2.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.
- checksums.yaml +4 -4
- data/README.adoc +224 -19
- data/exe/emf +12 -0
- data/lib/emf/backend.rb +60 -0
- data/lib/emf/binary/class_field_accessors.rb +49 -0
- data/lib/emf/binary/float32_le.rb +54 -0
- data/lib/emf/binary/types.rb +40 -6
- data/lib/emf/conformance/context.rb +36 -0
- data/lib/emf/conformance/diagnostic.rb +18 -0
- data/lib/emf/conformance/manifest/emf_bitmap_misc.yml +622 -0
- data/lib/emf/conformance/manifest/emf_control_buffers.yml +61 -0
- data/lib/emf/conformance/manifest/emf_core.yml +117 -0
- data/lib/emf/conformance/manifest/emf_corpus_rules.yml +21 -0
- data/lib/emf/conformance/manifest/emf_objects_geometry.yml +229 -0
- data/lib/emf/conformance/manifest/emf_plus.yml +357 -0
- data/lib/emf/conformance/manifest/emf_plus_core.yml +33 -0
- data/lib/emf/conformance/manifest/emf_state_path.yml +403 -0
- data/lib/emf/conformance/manifest/emf_text.yml +97 -0
- data/lib/emf/conformance/manifest/wmf.yml +874 -0
- data/lib/emf/conformance/manifest.rb +79 -0
- data/lib/emf/conformance/profile.rb +35 -0
- data/lib/emf/conformance/record_types.rb +24 -0
- data/lib/emf/conformance/registry.rb +76 -0
- data/lib/emf/conformance/report.rb +83 -0
- data/lib/emf/conformance/rule.rb +16 -0
- data/lib/emf/conformance/rules/emf_bitmap.rb +357 -0
- data/lib/emf/conformance/rules/emf_comment_escape.rb +309 -0
- data/lib/emf/conformance/rules/emf_control_buffers.rb +137 -0
- data/lib/emf/conformance/rules/emf_corpus_named.rb +83 -0
- data/lib/emf/conformance/rules/emf_framing.rb +94 -0
- data/lib/emf/conformance/rules/emf_geometry.rb +282 -0
- data/lib/emf/conformance/rules/emf_header.rb +114 -0
- data/lib/emf/conformance/rules/emf_objects.rb +291 -0
- data/lib/emf/conformance/rules/emf_parse_recovery.rb +97 -0
- data/lib/emf/conformance/rules/emf_path_clip.rb +165 -0
- data/lib/emf/conformance/rules/emf_plus.rb +75 -0
- data/lib/emf/conformance/rules/emf_plus_common.rb +58 -0
- data/lib/emf/conformance/rules/emf_plus_drawing.rb +78 -0
- data/lib/emf/conformance/rules/emf_plus_effects.rb +104 -0
- data/lib/emf/conformance/rules/emf_plus_fields.rb +169 -0
- data/lib/emf/conformance/rules/emf_plus_fields_b.rb +102 -0
- data/lib/emf/conformance/rules/emf_plus_framing.rb +172 -0
- data/lib/emf/conformance/rules/emf_plus_objects.rb +97 -0
- data/lib/emf/conformance/rules/emf_plus_payloads.rb +320 -0
- data/lib/emf/conformance/rules/emf_plus_properties.rb +96 -0
- data/lib/emf/conformance/rules/emf_plus_state.rb +77 -0
- data/lib/emf/conformance/rules/emf_state.rb +244 -0
- data/lib/emf/conformance/rules/emf_text.rb +221 -0
- data/lib/emf/conformance/rules/emf_transform.rb +85 -0
- data/lib/emf/conformance/rules/wmf_buffers.rb +259 -0
- data/lib/emf/conformance/rules/wmf_framing.rb +146 -0
- data/lib/emf/conformance/rules/wmf_layout_records.rb +112 -0
- data/lib/emf/conformance/rules/wmf_objects.rb +168 -0
- data/lib/emf/conformance/rules/wmf_records.rb +191 -0
- data/lib/emf/conformance/rules/wmf_rejections.rb +184 -0
- data/lib/emf/conformance/runner.rb +61 -0
- data/lib/emf/conformance/ternary_raster_operations.rb +52 -0
- data/lib/emf/conformance.rb +31 -0
- data/lib/emf/emf_plus/effects/blur.rb +24 -0
- data/lib/emf/emf_plus/effects/brightness_contrast.rb +22 -0
- data/lib/emf/emf_plus/effects/color_balance.rb +24 -0
- data/lib/emf/emf_plus/effects/color_curve.rb +24 -0
- data/lib/emf/emf_plus/effects/color_lookup_table.rb +26 -0
- data/lib/emf/emf_plus/effects/color_matrix.rb +23 -0
- data/lib/emf/emf_plus/effects/effect.rb +50 -0
- data/lib/emf/emf_plus/effects/hue_saturation_lightness.rb +24 -0
- data/lib/emf/emf_plus/effects/levels.rb +24 -0
- data/lib/emf/emf_plus/effects/opaque.rb +19 -0
- data/lib/emf/emf_plus/effects/red_eye_correction.rb +35 -0
- data/lib/emf/emf_plus/effects/sharpen.rb +24 -0
- data/lib/emf/emf_plus/effects/tint.rb +22 -0
- data/lib/emf/emf_plus/effects.rb +45 -0
- data/lib/emf/emf_plus/frame.rb +41 -0
- data/lib/emf/emf_plus/links/effect_link.rb +16 -0
- data/lib/emf/emf_plus/links/get_dc_span.rb +18 -0
- data/lib/emf/emf_plus/links/link_error.rb +15 -0
- data/lib/emf/emf_plus/links.rb +77 -0
- data/lib/emf/emf_plus/object_chain.rb +108 -0
- data/lib/emf/emf_plus/object_table.rb +182 -0
- data/lib/emf/emf_plus/objects/brush.rb +296 -0
- data/lib/emf/emf_plus/objects/custom_line_cap.rb +106 -0
- data/lib/emf/emf_plus/objects/font.rb +47 -0
- data/lib/emf/emf_plus/objects/image.rb +68 -0
- data/lib/emf/emf_plus/objects/image_attributes.rb +28 -0
- data/lib/emf/emf_plus/objects/opaque.rb +19 -0
- data/lib/emf/emf_plus/objects/parts.rb +103 -0
- data/lib/emf/emf_plus/objects/path.rb +21 -0
- data/lib/emf/emf_plus/objects/pen.rb +132 -0
- data/lib/emf/emf_plus/objects/region.rb +39 -0
- data/lib/emf/emf_plus/objects/string_format.rb +55 -0
- data/lib/emf/emf_plus/objects/typed.rb +50 -0
- data/lib/emf/emf_plus/objects.rb +46 -0
- data/lib/emf/emf_plus/parser.rb +64 -2
- data/lib/emf/emf_plus/records/base.rb +107 -0
- data/lib/emf/emf_plus/records/begin_container.rb +31 -0
- data/lib/emf/emf_plus/records/begin_container_no_params.rb +20 -0
- data/lib/emf/emf_plus/records/body.rb +16 -0
- data/lib/emf/emf_plus/records/clear.rb +22 -0
- data/lib/emf/emf_plus/records/clip_transform_flags.rb +26 -0
- data/lib/emf/emf_plus/records/comment.rb +21 -0
- data/lib/emf/emf_plus/records/draw_arc.rb +33 -0
- data/lib/emf/emf_plus/records/draw_beziers.rb +31 -0
- data/lib/emf/emf_plus/records/draw_closed_curve.rb +34 -0
- data/lib/emf/emf_plus/records/draw_curve.rb +38 -0
- data/lib/emf/emf_plus/records/draw_driver_string.rb +61 -0
- data/lib/emf/emf_plus/records/draw_ellipse.rb +28 -0
- data/lib/emf/emf_plus/records/draw_image.rb +42 -0
- data/lib/emf/emf_plus/records/draw_image_points.rb +62 -0
- data/lib/emf/emf_plus/records/draw_lines.rb +34 -0
- data/lib/emf/emf_plus/records/draw_path.rb +23 -0
- data/lib/emf/emf_plus/records/draw_pie.rb +33 -0
- data/lib/emf/emf_plus/records/draw_rects.rb +30 -0
- data/lib/emf/emf_plus/records/draw_string.rb +41 -0
- data/lib/emf/emf_plus/records/end_container.rb +20 -0
- data/lib/emf/emf_plus/records/end_of_file.rb +17 -0
- data/lib/emf/emf_plus/records/fill_brush.rb +21 -0
- data/lib/emf/emf_plus/records/fill_closed_curve.rb +38 -0
- data/lib/emf/emf_plus/records/fill_ellipse.rb +29 -0
- data/lib/emf/emf_plus/records/fill_path.rb +23 -0
- data/lib/emf/emf_plus/records/fill_pie.rb +34 -0
- data/lib/emf/emf_plus/records/fill_polygon.rb +32 -0
- data/lib/emf/emf_plus/records/fill_rects.rb +31 -0
- data/lib/emf/emf_plus/records/fill_region.rb +23 -0
- data/lib/emf/emf_plus/records/get_dc.rb +18 -0
- data/lib/emf/emf_plus/records/header.rb +35 -0
- data/lib/emf/emf_plus/records/multiply_world_transform.rb +24 -0
- data/lib/emf/emf_plus/records/object.rb +32 -0
- data/lib/emf/emf_plus/records/offset_clip.rb +24 -0
- data/lib/emf/emf_plus/records/primitives/argb.rb +20 -0
- data/lib/emf/emf_plus/records/primitives/bitmap.rb +32 -0
- data/lib/emf/emf_plus/records/primitives/bitmap_data.rb +21 -0
- data/lib/emf/emf_plus/records/primitives/blend_colors.rb +22 -0
- data/lib/emf/emf_plus/records/primitives/blend_factors.rb +21 -0
- data/lib/emf/emf_plus/records/primitives/bounded_array.rb +38 -0
- data/lib/emf/emf_plus/records/primitives/byte_reader.rb +25 -0
- data/lib/emf/emf_plus/records/primitives/character_range.rb +20 -0
- data/lib/emf/emf_plus/records/primitives/compressed_image.rb +17 -0
- data/lib/emf/emf_plus/records/primitives/focus_scale_data.rb +20 -0
- data/lib/emf/emf_plus/records/primitives/graphics_version.rb +21 -0
- data/lib/emf/emf_plus/records/primitives/language_identifier.rb +22 -0
- data/lib/emf/emf_plus/records/primitives/metafile.rb +19 -0
- data/lib/emf/emf_plus/records/primitives/palette.rb +21 -0
- data/lib/emf/emf_plus/records/primitives/path.rb +89 -0
- data/lib/emf/emf_plus/records/primitives/path_point_type.rb +21 -0
- data/lib/emf/emf_plus/records/primitives/path_point_type_rle.rb +23 -0
- data/lib/emf/emf_plus/records/primitives/point.rb +18 -0
- data/lib/emf/emf_plus/records/primitives/point_array.rb +42 -0
- data/lib/emf/emf_plus/records/primitives/point_f.rb +19 -0
- data/lib/emf/emf_plus/records/primitives/point_r.rb +19 -0
- data/lib/emf/emf_plus/records/primitives/rect.rb +20 -0
- data/lib/emf/emf_plus/records/primitives/rect_array.rb +24 -0
- data/lib/emf/emf_plus/records/primitives/rect_f.rb +21 -0
- data/lib/emf/emf_plus/records/primitives/region_node.rb +68 -0
- data/lib/emf/emf_plus/records/primitives/region_node_child_nodes.rb +22 -0
- data/lib/emf/emf_plus/records/primitives/region_node_path.rb +37 -0
- data/lib/emf/emf_plus/records/primitives/relative_coordinate.rb +32 -0
- data/lib/emf/emf_plus/records/primitives/string_format_data.rb +23 -0
- data/lib/emf/emf_plus/records/primitives/transform_matrix.rb +23 -0
- data/lib/emf/emf_plus/records/primitives.rb +41 -0
- data/lib/emf/emf_plus/records/reset_clip.rb +17 -0
- data/lib/emf/emf_plus/records/reset_world_transform.rb +17 -0
- data/lib/emf/emf_plus/records/restore.rb +20 -0
- data/lib/emf/emf_plus/records/rotate_world_transform.rb +24 -0
- data/lib/emf/emf_plus/records/save.rb +20 -0
- data/lib/emf/emf_plus/records/scale_world_transform.rb +26 -0
- data/lib/emf/emf_plus/records/serializable_object.rb +32 -0
- data/lib/emf/emf_plus/records/set_anti_alias_mode.rb +25 -0
- data/lib/emf/emf_plus/records/set_clip_path.rb +20 -0
- data/lib/emf/emf_plus/records/set_clip_rect.rb +24 -0
- data/lib/emf/emf_plus/records/set_clip_region.rb +20 -0
- data/lib/emf/emf_plus/records/set_compositing_mode.rb +21 -0
- data/lib/emf/emf_plus/records/set_compositing_quality.rb +21 -0
- data/lib/emf/emf_plus/records/set_interpolation_mode.rb +21 -0
- data/lib/emf/emf_plus/records/set_page_transform.rb +25 -0
- data/lib/emf/emf_plus/records/set_pixel_offset_mode.rb +21 -0
- data/lib/emf/emf_plus/records/set_rendering_origin.rb +22 -0
- data/lib/emf/emf_plus/records/set_text_contrast.rb +24 -0
- data/lib/emf/emf_plus/records/set_text_rendering_hint.rb +21 -0
- data/lib/emf/emf_plus/records/set_ts_clip.rb +40 -0
- data/lib/emf/emf_plus/records/set_ts_graphics.rb +88 -0
- data/lib/emf/emf_plus/records/set_world_transform.rb +22 -0
- data/lib/emf/emf_plus/records/shape_flags.rb +23 -0
- data/lib/emf/emf_plus/records/translate_world_transform.rb +26 -0
- data/lib/emf/emf_plus/records/unknown.rb +20 -0
- data/lib/emf/emf_plus/records.rb +107 -0
- data/lib/emf/emf_plus/serializer.rb +9 -2
- data/lib/emf/emf_plus/stream/conformance.rb +68 -0
- data/lib/emf/emf_plus/stream/editor.rb +21 -0
- data/lib/emf/emf_plus/stream/emf_gap.rb +20 -0
- data/lib/emf/emf_plus/stream/link_index.rb +30 -0
- data/lib/emf/emf_plus/stream/rebuild.rb +47 -0
- data/lib/emf/emf_plus/stream/record_handle.rb +26 -0
- data/lib/emf/emf_plus/stream/segment.rb +70 -0
- data/lib/emf/emf_plus/stream.rb +153 -0
- data/lib/emf/emf_plus.rb +9 -0
- data/lib/emf/emr/binary/dib_header.rb +142 -0
- data/lib/emf/emr/binary/ext_text_out_fields.rb +43 -0
- data/lib/emf/emr/binary/extended_pen_buffers.rb +23 -0
- data/lib/emf/emr/binary/fast_fill.rb +1164 -0
- data/lib/emf/emr/binary/font.rb +159 -0
- data/lib/emf/emr/binary/lazy_utf16_array.rb +82 -0
- data/lib/emf/emr/binary/pack_plan.rb +144 -0
- data/lib/emf/emr/binary/pack_plan_check.rb +75 -0
- data/lib/emf/emr/binary/pack_plan_exact.rb +130 -0
- data/lib/emf/emr/binary/pack_plan_generate.rb +116 -0
- data/lib/emf/emr/binary/pack_plan_values.rb +92 -0
- data/lib/emf/emr/binary/palette_body.rb +19 -0
- data/lib/emf/emr/binary/palette_entry.rb +18 -0
- data/lib/emf/emr/binary/record.rb +33 -0
- data/lib/emf/emr/binary/records/alpha_blend.rb +43 -0
- data/lib/emf/emr/binary/records/angle_arc.rb +2 -2
- data/lib/emf/emr/binary/records/bit_blt.rb +14 -0
- data/lib/emf/emr/binary/records/color_correct_palette.rb +55 -1
- data/lib/emf/emr/binary/records/colormatch_to_target_w.rb +76 -1
- data/lib/emf/emr/binary/records/create_colorspace.rb +67 -1
- data/lib/emf/emr/binary/records/create_colorspace_w.rb +90 -1
- data/lib/emf/emr/binary/records/create_dib_pattern_brush_pt.rb +14 -0
- data/lib/emf/emr/binary/records/create_font_indirect_w.rb +6 -2
- data/lib/emf/emr/binary/records/create_mono_brush.rb +14 -0
- data/lib/emf/emr/binary/records/create_palette.rb +19 -1
- data/lib/emf/emr/binary/records/delete_colorspace.rb +22 -1
- data/lib/emf/emr/binary/records/draw_escape.rb +45 -1
- data/lib/emf/emr/binary/records/ellipse.rb +1 -1
- data/lib/emf/emr/binary/records/eof.rb +9 -0
- data/lib/emf/emr/binary/records/ext_create_pen.rb +80 -1
- data/lib/emf/emr/binary/records/ext_escape.rb +45 -1
- data/lib/emf/emr/binary/records/ext_flood_fill.rb +9 -2
- data/lib/emf/emr/binary/records/ext_select_clip_rgn.rb +9 -1
- data/lib/emf/emr/binary/records/ext_text_out_a.rb +16 -3
- data/lib/emf/emr/binary/records/ext_text_out_w.rb +14 -3
- data/lib/emf/emr/binary/records/fill_rgn.rb +11 -2
- data/lib/emf/emr/binary/records/force_ufi_mapping.rb +38 -1
- data/lib/emf/emr/binary/records/frame_rgn.rb +12 -2
- data/lib/emf/emr/binary/records/gls_bounded_record.rb +61 -1
- data/lib/emf/emr/binary/records/gls_record.rb +42 -1
- data/lib/emf/emr/binary/records/gradient_fill.rb +7 -0
- data/lib/emf/emr/binary/records/invert_rgn.rb +11 -3
- data/lib/emf/emr/binary/records/mask_blt.rb +66 -0
- data/lib/emf/emr/binary/records/named_escape.rb +78 -1
- data/lib/emf/emr/binary/records/paint_rgn.rb +11 -3
- data/lib/emf/emr/binary/records/pixel_format.rb +76 -1
- data/lib/emf/emr/binary/records/plg_blt.rb +66 -0
- data/lib/emf/emr/binary/records/poly_textout_a.rb +128 -1
- data/lib/emf/emr/binary/records/poly_textout_w.rb +128 -1
- data/lib/emf/emr/binary/records/raw.rb +3 -0
- data/lib/emf/emr/binary/records/realize_palette.rb +1 -0
- data/lib/emf/emr/binary/records/rectangle.rb +1 -1
- data/lib/emf/emr/binary/records/resize_palette.rb +16 -2
- data/lib/emf/emr/binary/records/round_rect.rb +2 -2
- data/lib/emf/emr/binary/records/select_palette.rb +1 -0
- data/lib/emf/emr/binary/records/set_color_adjustment.rb +136 -0
- data/lib/emf/emr/binary/records/set_colorspace.rb +22 -1
- data/lib/emf/emr/binary/records/set_dibits_to_device.rb +43 -0
- data/lib/emf/emr/binary/records/set_icm_profile_a.rb +71 -1
- data/lib/emf/emr/binary/records/set_icm_profile_w.rb +71 -1
- data/lib/emf/emr/binary/records/set_linked_ufis.rb +49 -1
- data/lib/emf/emr/binary/records/set_miter_limit.rb +1 -1
- data/lib/emf/emr/binary/records/set_palette_entries.rb +20 -2
- data/lib/emf/emr/binary/records/set_text_justification.rb +8 -2
- data/lib/emf/emr/binary/records/small_text_out.rb +55 -4
- data/lib/emf/emr/binary/records/stretch_blt.rb +14 -0
- data/lib/emf/emr/binary/records/stretch_dibits.rb +14 -0
- data/lib/emf/emr/binary/records/transparent_blt.rb +43 -0
- data/lib/emf/emr/binary/records.rb +4 -2
- data/lib/emf/emr/binary/region_data.rb +33 -0
- data/lib/emf/emr/binary/state_record_body.rb +33 -0
- data/lib/emf/emr/binary/thin_shell.rb +226 -0
- data/lib/emf/emr/binary/value_view/layout.rb +101 -0
- data/lib/emf/emr/binary/value_view/reader_source.rb +88 -0
- data/lib/emf/emr/binary/value_view.rb +173 -0
- data/lib/emf/emr/binary/variable_buffers.rb +87 -0
- data/lib/emf/emr/binary.rb +4 -0
- data/lib/emf/emr/filled_record.rb +77 -0
- data/lib/emf/emr/parser.rb +239 -50
- data/lib/emf/emr/serializer.rb +4 -5
- data/lib/emf/emr.rb +1 -0
- data/lib/emf/error.rb +24 -1
- data/lib/emf/model/diagnostic.rb +41 -0
- data/lib/emf/model/emr/header.rb +40 -1
- data/lib/emf/model/emr/records.rb +142 -6
- data/lib/emf/model/emr/wire_values.rb +43 -0
- data/lib/emf/model/emr.rb +1 -0
- data/lib/emf/model/geometry/color.rb +19 -1
- data/lib/emf/model/metafile.rb +22 -2
- data/lib/emf/model/wmf/bitmap_records.rb +155 -0
- data/lib/emf/model/wmf/brush_records.rb +45 -0
- data/lib/emf/model/wmf/dc_escape_records.rb +67 -0
- data/lib/emf/model/wmf/font_record.rb +40 -0
- data/lib/emf/model/wmf/geometry_records.rb +107 -0
- data/lib/emf/model/wmf/header.rb +36 -0
- data/lib/emf/model/wmf/object_records.rb +71 -0
- data/lib/emf/model/wmf/palette_records.rb +68 -0
- data/lib/emf/model/wmf/records.rb +247 -0
- data/lib/emf/model/wmf/region_records.rb +112 -0
- data/lib/emf/model/wmf/state_records.rb +188 -0
- data/lib/emf/model/wmf/text_records.rb +36 -0
- data/lib/emf/model/wmf.rb +11 -0
- data/lib/emf/model.rb +2 -0
- data/lib/emf/native/bitmap_fields.rb +58 -0
- data/lib/emf/native/diagnostic_contract.rb +39 -0
- data/lib/emf/native/diagnostics.rb +81 -0
- data/lib/emf/native/emf_plus_loader.rb +35 -0
- data/lib/emf/native/emf_plus_snapshot.rb +96 -0
- data/lib/emf/native/emf_plus_source.rb +20 -0
- data/lib/emf/native/emf_plus_stream.rb +150 -0
- data/lib/emf/native/fields.rb +369 -0
- data/lib/emf/native/font_fields.rb +87 -0
- data/lib/emf/native/gradient_fields.rb +23 -0
- data/lib/emf/native/header.rb +35 -0
- data/lib/emf/native/header_errors.rb +30 -0
- data/lib/emf/native/hydrator.rb +151 -0
- data/lib/emf/native/lazy_wire.rb +100 -0
- data/lib/emf/native/legacy_state_fields.rb +22 -0
- data/lib/emf/native/library_path.rb +68 -0
- data/lib/emf/native/loader.rb +120 -0
- data/lib/emf/native/palette_fields.rb +45 -0
- data/lib/emf/native/poly_text_fields.rb +116 -0
- data/lib/emf/native/resource_failure.rb +28 -0
- data/lib/emf/native/small_text_fields.rb +27 -0
- data/lib/emf/native/snapshot.rb +102 -0
- data/lib/emf/native/wmf_bitmap_fields.rb +58 -0
- data/lib/emf/native/wmf_brush_fields.rb +62 -0
- data/lib/emf/native/wmf_fields.rb +117 -0
- data/lib/emf/native/wmf_hydrator.rb +143 -0
- data/lib/emf/native/wmf_loading.rb +49 -0
- data/lib/emf/native/wmf_palette_fields.rb +60 -0
- data/lib/emf/native/wmf_region_fields.rb +92 -0
- data/lib/emf/native/wmf_rejection.rb +84 -0
- data/lib/emf/native/wmf_remaining_fields.rb +70 -0
- data/lib/emf/native/wmf_snapshot.rb +51 -0
- data/lib/emf/native/wmf_text_fields.rb +56 -0
- data/lib/emf/native.rb +61 -0
- data/lib/emf/parse_evidence.rb +57 -0
- data/lib/emf/resource_budget/bitmap.rb +66 -0
- data/lib/emf/resource_budget/gradient.rb +30 -0
- data/lib/emf/resource_budget/poly_text.rb +85 -0
- data/lib/emf/resource_budget.rb +382 -0
- data/lib/emf/resource_limits/emf_records.rb +130 -0
- data/lib/emf/resource_limits.rb +58 -0
- data/lib/emf/version.rb +1 -1
- data/lib/emf/visitors/dump.rb +4 -0
- data/lib/emf/visitors/stats.rb +6 -5
- data/lib/emf/wmf/binary.rb +150 -1
- data/lib/emf/wmf/bitmap_codec.rb +118 -0
- data/lib/emf/wmf/brush_codec.rb +102 -0
- data/lib/emf/wmf/dc_escape_codec.rb +75 -0
- data/lib/emf/wmf/dib.rb +187 -0
- data/lib/emf/wmf/embedded_emf.rb +137 -0
- data/lib/emf/wmf/escape_views.rb +89 -0
- data/lib/emf/wmf/evidence.rb +255 -0
- data/lib/emf/wmf/geometry_codec.rb +49 -0
- data/lib/emf/wmf/palette_codec.rb +85 -0
- data/lib/emf/wmf/parser.rb +147 -2
- data/lib/emf/wmf/recovery.rb +95 -0
- data/lib/emf/wmf/region_codec.rb +151 -0
- data/lib/emf/wmf/serializer.rb +164 -2
- data/lib/emf/wmf/text_codec.rb +123 -0
- data/lib/emf/wmf.rb +7 -0
- data/lib/emf.rb +13 -9
- metadata +287 -10
|
@@ -0,0 +1,874 @@
|
|
|
1
|
+
# WMF requirement manifest (W20/W21). Stable ids; rows are implemented, blocked:model or not_checkable.
|
|
2
|
+
---
|
|
3
|
+
- id: wmf.header.type
|
|
4
|
+
format: wmf
|
|
5
|
+
record_types: []
|
|
6
|
+
citation: MS-WMF 2.3.2.2 META_HEADER (Type); 2.1.1.18 MetafileType Enumeration
|
|
7
|
+
status: implemented
|
|
8
|
+
reason:
|
|
9
|
+
- id: wmf.header.version
|
|
10
|
+
format: wmf
|
|
11
|
+
record_types: []
|
|
12
|
+
citation: MS-WMF 2.3.2.2 META_HEADER (Version); 2.1.1.19 MetafileVersion Enumeration
|
|
13
|
+
status: implemented
|
|
14
|
+
reason:
|
|
15
|
+
- id: wmf.header.size
|
|
16
|
+
format: wmf
|
|
17
|
+
record_types: []
|
|
18
|
+
citation: MS-WMF 2.3.2.2 META_HEADER (SizeLow, SizeHigh)
|
|
19
|
+
status: implemented
|
|
20
|
+
reason:
|
|
21
|
+
- id: wmf.header.number_of_members
|
|
22
|
+
format: wmf
|
|
23
|
+
record_types: []
|
|
24
|
+
citation: MS-WMF 2.3.2.2 META_HEADER (NumberOfMembers)
|
|
25
|
+
status: implemented
|
|
26
|
+
reason:
|
|
27
|
+
- id: wmf.placeable.handle
|
|
28
|
+
format: wmf
|
|
29
|
+
record_types: []
|
|
30
|
+
citation: MS-WMF 2.3.2.3 META_PLACEABLE (HWmf)
|
|
31
|
+
status: implemented
|
|
32
|
+
reason:
|
|
33
|
+
- id: wmf.placeable.checksum
|
|
34
|
+
format: wmf
|
|
35
|
+
record_types: []
|
|
36
|
+
citation: MS-WMF 2.3.2.3 META_PLACEABLE (Checksum)
|
|
37
|
+
status: implemented
|
|
38
|
+
reason:
|
|
39
|
+
- id: wmf.eof.missing
|
|
40
|
+
format: wmf
|
|
41
|
+
record_types:
|
|
42
|
+
- META_EOF
|
|
43
|
+
citation: MS-WMF 2.3.2.1 META_EOF
|
|
44
|
+
status: implemented
|
|
45
|
+
reason:
|
|
46
|
+
- id: wmf.eof.not_last
|
|
47
|
+
format: wmf
|
|
48
|
+
record_types:
|
|
49
|
+
- META_EOF
|
|
50
|
+
citation: MS-WMF 2.3.2.1 META_EOF
|
|
51
|
+
status: implemented
|
|
52
|
+
reason:
|
|
53
|
+
- id: wmf.record.unknown_function
|
|
54
|
+
format: wmf
|
|
55
|
+
record_types: []
|
|
56
|
+
citation: MS-WMF 2.1.1.1 RecordType Enumeration; 2.3 WMF Records (unknown record types are ignored)
|
|
57
|
+
status: implemented
|
|
58
|
+
reason:
|
|
59
|
+
- id: wmf.eof.trailing_bytes
|
|
60
|
+
format: wmf
|
|
61
|
+
record_types: []
|
|
62
|
+
citation: MS-WMF 2.3.2.2 META_HEADER (SizeLow, SizeHigh)
|
|
63
|
+
status: implemented
|
|
64
|
+
reason:
|
|
65
|
+
- id: wmf.enum.bk_mode
|
|
66
|
+
format: wmf
|
|
67
|
+
record_types:
|
|
68
|
+
- META_SETBKMODE
|
|
69
|
+
citation: MS-WMF 2.1.1.20 MixMode Enumeration; 2.3.5.15 META_SETBKMODE (BkMode)
|
|
70
|
+
status: implemented
|
|
71
|
+
reason:
|
|
72
|
+
- id: wmf.enum.map_mode
|
|
73
|
+
format: wmf
|
|
74
|
+
record_types:
|
|
75
|
+
- META_SETMAPMODE
|
|
76
|
+
citation: MS-WMF 2.1.1.16 MapMode Enumeration; 2.3.5.17 META_SETMAPMODE (MapMode)
|
|
77
|
+
status: implemented
|
|
78
|
+
reason:
|
|
79
|
+
- id: wmf.enum.poly_fill_mode
|
|
80
|
+
format: wmf
|
|
81
|
+
record_types:
|
|
82
|
+
- META_SETPOLYFILLMODE
|
|
83
|
+
citation: MS-WMF 2.1.1.25 PolyFillMode Enumeration; 2.3.5.20 META_SETPOLYFILLMODE (PolyFillMode)
|
|
84
|
+
status: implemented
|
|
85
|
+
reason:
|
|
86
|
+
- id: wmf.enum.rop2
|
|
87
|
+
format: wmf
|
|
88
|
+
record_types:
|
|
89
|
+
- META_SETROP2
|
|
90
|
+
citation: MS-WMF 2.1.1.2 BinaryRasterOperation Enumeration; 2.3.5.22 META_SETROP2 (DrawMode)
|
|
91
|
+
status: implemented
|
|
92
|
+
reason:
|
|
93
|
+
- id: wmf.enum.stretch_blt_mode
|
|
94
|
+
format: wmf
|
|
95
|
+
record_types:
|
|
96
|
+
- META_SETSTRETCHBLTMODE
|
|
97
|
+
citation: MS-WMF 2.1.1.30 StretchMode Enumeration; 2.3.5.23 META_SETSTRETCHBLTMODE (StretchMode)
|
|
98
|
+
status: implemented
|
|
99
|
+
reason:
|
|
100
|
+
- id: wmf.enum.ext_flood_fill_mode
|
|
101
|
+
format: wmf
|
|
102
|
+
record_types:
|
|
103
|
+
- META_EXTFLOODFILL
|
|
104
|
+
citation: MS-WMF 2.1.1.9 FloodFill Enumeration; 2.3.3.4 META_EXTFLOODFILL (Mode)
|
|
105
|
+
status: implemented
|
|
106
|
+
reason:
|
|
107
|
+
- id: wmf.enum.brush_style
|
|
108
|
+
format: wmf
|
|
109
|
+
record_types:
|
|
110
|
+
- META_CREATEBRUSHINDIRECT
|
|
111
|
+
citation: MS-WMF 2.1.1.4 BrushStyle Enumeration; 2.3.4.1 META_CREATEBRUSHINDIRECT, 2.2.2.10 LogBrush Object (BrushStyle)
|
|
112
|
+
status: implemented
|
|
113
|
+
reason:
|
|
114
|
+
- id: wmf.enum.color_usage
|
|
115
|
+
format: wmf
|
|
116
|
+
record_types:
|
|
117
|
+
- META_DIBCREATEPATTERNBRUSH
|
|
118
|
+
- META_SETDIBTODEV
|
|
119
|
+
- META_STRETCHDIB
|
|
120
|
+
citation: MS-WMF 2.1.1.6 ColorUsage Enumeration; 2.3.4.8 META_DIBCREATEPATTERNBRUSH, 2.3.1.4 META_SETDIBTODEV, 2.3.1.6 META_STRETCHDIB (ColorUsage)
|
|
121
|
+
status: implemented
|
|
122
|
+
reason:
|
|
123
|
+
- id: wmf.enum.hatch_style
|
|
124
|
+
format: wmf
|
|
125
|
+
record_types:
|
|
126
|
+
- META_CREATEBRUSHINDIRECT
|
|
127
|
+
citation: MS-WMF 2.1.1.12 HatchStyle Enumeration; 2.2.2.10 LogBrush Object (BrushHatch), 2.3.4.1 META_CREATEBRUSHINDIRECT
|
|
128
|
+
status: implemented
|
|
129
|
+
reason:
|
|
130
|
+
- id: wmf.enum.pen_style
|
|
131
|
+
format: wmf
|
|
132
|
+
record_types:
|
|
133
|
+
- META_CREATEPENINDIRECT
|
|
134
|
+
citation: MS-WMF 2.1.1.23 PenStyle Enumeration; 2.2.1.4 Pen Object (PenStyle), 2.3.4.5 META_CREATEPENINDIRECT
|
|
135
|
+
status: implemented
|
|
136
|
+
reason:
|
|
137
|
+
- id: wmf.flags.text_align
|
|
138
|
+
format: wmf
|
|
139
|
+
record_types:
|
|
140
|
+
- META_SETTEXTALIGN
|
|
141
|
+
citation: MS-WMF 2.1.2.3 TextAlignmentMode Flags, 2.1.2.4 VerticalTextAlignmentMode Flags; 2.3.5.24 META_SETTEXTALIGN (TextAlignmentMode)
|
|
142
|
+
status: implemented
|
|
143
|
+
reason:
|
|
144
|
+
- id: wmf.flags.layout
|
|
145
|
+
format: wmf
|
|
146
|
+
record_types:
|
|
147
|
+
- META_SETLAYOUT
|
|
148
|
+
citation: MS-WMF 2.1.1.13 Layout Enumeration; 2.3.5.16 META_SETLAYOUT (Layout)
|
|
149
|
+
status: implemented
|
|
150
|
+
reason:
|
|
151
|
+
- id: wmf.fixed.layout_reserved
|
|
152
|
+
format: wmf
|
|
153
|
+
record_types:
|
|
154
|
+
- META_SETLAYOUT
|
|
155
|
+
citation: MS-WMF 2.3.5.16 META_SETLAYOUT (Reserved)
|
|
156
|
+
status: not_checkable
|
|
157
|
+
reason: the section says Reserved MUST be ignored, so no value is invalid
|
|
158
|
+
- id: wmf.array.point_count
|
|
159
|
+
format: wmf
|
|
160
|
+
record_types:
|
|
161
|
+
- META_POLYGON
|
|
162
|
+
- META_POLYLINE
|
|
163
|
+
citation: MS-WMF 2.3.3.14 META_POLYLINE, 2.3.3.15 META_POLYGON (NumberOfPoints)
|
|
164
|
+
status: implemented
|
|
165
|
+
reason:
|
|
166
|
+
- id: wmf.array.polypolygon_counts
|
|
167
|
+
format: wmf
|
|
168
|
+
record_types:
|
|
169
|
+
- META_POLYPOLYGON
|
|
170
|
+
citation: MS-WMF 2.2.2.17 PolyPolygon Object (NumberOfPolygons, aPointsPerPolygon); 2.3.3.16 META_POLYPOLYGON
|
|
171
|
+
status: implemented
|
|
172
|
+
reason:
|
|
173
|
+
- id: wmf.fixed.point_range
|
|
174
|
+
format: wmf
|
|
175
|
+
record_types:
|
|
176
|
+
- META_POLYGON
|
|
177
|
+
- META_POLYLINE
|
|
178
|
+
- META_POLYPOLYGON
|
|
179
|
+
citation: MS-WMF 2.2.2.16 PointS Object
|
|
180
|
+
status: implemented
|
|
181
|
+
reason:
|
|
182
|
+
- id: wmf.header.header_size
|
|
183
|
+
format: wmf
|
|
184
|
+
record_types: []
|
|
185
|
+
citation: MS-WMF 2.3.2.2 META_HEADER (HeaderSize)
|
|
186
|
+
status: blocked:model
|
|
187
|
+
reason: Model::Wmf::Header does not retain HeaderSize; the parser rejects any value
|
|
188
|
+
but 9 (reason 303) before a model exists
|
|
189
|
+
- id: wmf.header.max_record
|
|
190
|
+
format: wmf
|
|
191
|
+
record_types: []
|
|
192
|
+
citation: MS-WMF 2.3.2.2 META_HEADER (MaxRecord)
|
|
193
|
+
status: implemented
|
|
194
|
+
reason:
|
|
195
|
+
- id: wmf.header.size_matches_records
|
|
196
|
+
format: wmf
|
|
197
|
+
record_types: []
|
|
198
|
+
citation: MS-WMF 2.3.2.2 META_HEADER (SizeLow, SizeHigh)
|
|
199
|
+
status: implemented
|
|
200
|
+
reason:
|
|
201
|
+
- id: wmf.placeable.key
|
|
202
|
+
format: wmf
|
|
203
|
+
record_types: []
|
|
204
|
+
citation: MS-WMF 2.3.2.3 META_PLACEABLE (Key)
|
|
205
|
+
status: not_checkable
|
|
206
|
+
reason: the key is what selects the placeable layout, so an accepted model carrying
|
|
207
|
+
a placeable always had it
|
|
208
|
+
- id: wmf.placeable.reserved
|
|
209
|
+
format: wmf
|
|
210
|
+
record_types: []
|
|
211
|
+
citation: MS-WMF 2.3.2.3 META_PLACEABLE (Reserved)
|
|
212
|
+
status: blocked:model
|
|
213
|
+
reason: PlaceableHeader does not retain Reserved; the parser rejects nonzero (reason
|
|
214
|
+
202) before a model exists
|
|
215
|
+
- id: wmf.placeable.bounding_box
|
|
216
|
+
format: wmf
|
|
217
|
+
record_types: []
|
|
218
|
+
citation: MS-WMF 2.3.2.3 META_PLACEABLE (BoundingBox, Inch)
|
|
219
|
+
status: not_checkable
|
|
220
|
+
reason: the specification states no validity constraint on BoundingBox or Inch values
|
|
221
|
+
- id: wmf.record.declared_size
|
|
222
|
+
format: wmf
|
|
223
|
+
record_types:
|
|
224
|
+
- META_ARC
|
|
225
|
+
- META_CHORD
|
|
226
|
+
- META_ELLIPSE
|
|
227
|
+
- META_PIE
|
|
228
|
+
- META_RECTANGLE
|
|
229
|
+
- META_ROUNDRECT
|
|
230
|
+
- META_LINETO
|
|
231
|
+
- META_MOVETO
|
|
232
|
+
- META_SETWINDOWORG
|
|
233
|
+
- META_SETWINDOWEXT
|
|
234
|
+
- META_SETVIEWPORTORG
|
|
235
|
+
- META_SETVIEWPORTEXT
|
|
236
|
+
- META_OFFSETWINDOWORG
|
|
237
|
+
- META_OFFSETVIEWPORTORG
|
|
238
|
+
citation: MS-WMF 2.3 (RecordSize)
|
|
239
|
+
status: implemented
|
|
240
|
+
reason:
|
|
241
|
+
- id: wmf.reject.r0101
|
|
242
|
+
format: wmf
|
|
243
|
+
record_types: []
|
|
244
|
+
citation: MS-WMF (none; implementation limit, the specification defines no input size bound)
|
|
245
|
+
status: not_checkable
|
|
246
|
+
reason: 'the specification states no input size bound (MS-WMF has no limit on a metafile), so no MUST can be violated; the 200 MiB cap is a parser resource limit and a larger input is reported as emf.parse.unparseable'
|
|
247
|
+
- id: wmf.reject.r0201
|
|
248
|
+
format: wmf
|
|
249
|
+
record_types: []
|
|
250
|
+
citation: MS-WMF 2.3.2.3 META_PLACEABLE
|
|
251
|
+
status: implemented
|
|
252
|
+
reason:
|
|
253
|
+
- id: wmf.reject.r0202
|
|
254
|
+
format: wmf
|
|
255
|
+
record_types: []
|
|
256
|
+
citation: MS-WMF 2.3.2.3 META_PLACEABLE
|
|
257
|
+
status: implemented
|
|
258
|
+
reason:
|
|
259
|
+
- id: wmf.reject.r0203
|
|
260
|
+
format: wmf
|
|
261
|
+
record_types: []
|
|
262
|
+
citation: MS-WMF 2.3.2.3 META_PLACEABLE
|
|
263
|
+
status: not_checkable
|
|
264
|
+
reason: 'the spec MUST holds, but the parser no longer rejects it: the placeable checksum disagrees with the header words, the model keeps the declared value and wmf.placeable.checksum reports it (an error when strict, a warning when tolerant), so no WMF failure with this reason exists to report'
|
|
265
|
+
- id: wmf.reject.r0301
|
|
266
|
+
format: wmf
|
|
267
|
+
record_types: []
|
|
268
|
+
citation: MS-WMF 2.3.2.2 META_HEADER
|
|
269
|
+
status: not_checkable
|
|
270
|
+
reason: 'the spec MUST holds, but the format detector turns such an input into an unrecognised signature before any WMF parse runs, so no WMF failure with this reason exists to report; the lens reports a wrong Type or HeaderSize as wmf.header.unrecognised and anything else as emf.parse.unparseable'
|
|
271
|
+
- id: wmf.reject.r0302
|
|
272
|
+
format: wmf
|
|
273
|
+
record_types: []
|
|
274
|
+
citation: MS-WMF 2.3.2.2 META_HEADER (Type); 2.1.1.18 MetafileType Enumeration
|
|
275
|
+
status: not_checkable
|
|
276
|
+
reason: 'the spec MUST holds, but the format detector turns such an input into an unrecognised signature before any WMF parse runs, so no WMF failure with this reason exists to report; the lens reports a wrong Type or HeaderSize as wmf.header.unrecognised and anything else as emf.parse.unparseable'
|
|
277
|
+
- id: wmf.reject.r0303
|
|
278
|
+
format: wmf
|
|
279
|
+
record_types: []
|
|
280
|
+
citation: MS-WMF 2.3.2.2 META_HEADER (HeaderSize)
|
|
281
|
+
status: not_checkable
|
|
282
|
+
reason: 'the spec MUST holds, but the format detector turns such an input into an unrecognised signature before any WMF parse runs, so no WMF failure with this reason exists to report; the lens reports a wrong Type or HeaderSize as wmf.header.unrecognised and anything else as emf.parse.unparseable'
|
|
283
|
+
- id: wmf.reject.r0304
|
|
284
|
+
format: wmf
|
|
285
|
+
record_types: []
|
|
286
|
+
citation: MS-WMF 2.3.2.2 META_HEADER (Version); 2.1.1.19 MetafileVersion Enumeration
|
|
287
|
+
status: implemented
|
|
288
|
+
reason:
|
|
289
|
+
- id: wmf.reject.r0305
|
|
290
|
+
format: wmf
|
|
291
|
+
record_types: []
|
|
292
|
+
citation: MS-WMF 2.3.2.2 META_HEADER (SizeLow, SizeHigh)
|
|
293
|
+
status: not_checkable
|
|
294
|
+
reason: 'the spec MUST holds, but the parser no longer rejects it: the header Size disagrees with the record stream, the model is kept and wmf.header.size_matches_records reports the drift (an error when strict, a warning when tolerant), so no WMF failure with this reason exists to report'
|
|
295
|
+
- id: wmf.reject.r0306
|
|
296
|
+
format: wmf
|
|
297
|
+
record_types: []
|
|
298
|
+
citation: MS-WMF 2.3.2.3 META_PLACEABLE (HWmf)
|
|
299
|
+
status: implemented
|
|
300
|
+
reason:
|
|
301
|
+
- id: wmf.reject.r0401
|
|
302
|
+
format: wmf
|
|
303
|
+
record_types: []
|
|
304
|
+
citation: MS-WMF (none; implementation limit, the specification defines no record count bound)
|
|
305
|
+
status: not_checkable
|
|
306
|
+
reason: 'the specification states no record count bound (MS-WMF 2.3 sets none), so no MUST can be violated; the one million record cap is a parser resource limit and a longer file is reported as emf.parse.unparseable'
|
|
307
|
+
- id: wmf.reject.r0402
|
|
308
|
+
format: wmf
|
|
309
|
+
record_types: []
|
|
310
|
+
citation: MS-WMF 2.3 WMF Records (RecordSize, RecordFunction)
|
|
311
|
+
status: implemented
|
|
312
|
+
reason:
|
|
313
|
+
- id: wmf.reject.r0403
|
|
314
|
+
format: wmf
|
|
315
|
+
record_types: []
|
|
316
|
+
citation: MS-WMF 2.3 (RecordSize)
|
|
317
|
+
status: implemented
|
|
318
|
+
reason:
|
|
319
|
+
- id: wmf.reject.r0404
|
|
320
|
+
format: wmf
|
|
321
|
+
record_types: []
|
|
322
|
+
citation: MS-WMF 2.3.2.1 META_EOF
|
|
323
|
+
status: not_checkable
|
|
324
|
+
reason: 'the spec MUST holds, but the parser no longer rejects it: the record walk ends at the first EOF and what follows is kept as trailing data, so a Size that reaches past that EOF is reported by wmf.header.size_matches_records and no WMF failure with this reason exists to report'
|
|
325
|
+
- id: wmf.reject.r0405
|
|
326
|
+
format: wmf
|
|
327
|
+
record_types: []
|
|
328
|
+
citation: MS-WMF 2.3.2.1 META_EOF
|
|
329
|
+
status: implemented
|
|
330
|
+
reason:
|
|
331
|
+
- id: wmf.reject.r0406
|
|
332
|
+
format: wmf
|
|
333
|
+
record_types: []
|
|
334
|
+
citation: MS-WMF 2.3.2.1 META_EOF (RecordSize)
|
|
335
|
+
status: not_checkable
|
|
336
|
+
reason: 'the spec MUST holds, but the parser no longer rejects it: an EOF record longer than three words still ends the stream, the model is kept and wmf.record.declared_size reports it (an error when strict, a warning when tolerant), so no WMF failure with this reason exists to report'
|
|
337
|
+
- id: wmf.reject.r0501
|
|
338
|
+
format: wmf
|
|
339
|
+
record_types: []
|
|
340
|
+
citation: MS-WMF 2.3 (RecordSize)
|
|
341
|
+
status: implemented
|
|
342
|
+
reason:
|
|
343
|
+
- id: wmf.reject.r0601
|
|
344
|
+
format: wmf
|
|
345
|
+
record_types: []
|
|
346
|
+
citation: MS-WMF 2.3.5 State Record Types
|
|
347
|
+
status: implemented
|
|
348
|
+
reason:
|
|
349
|
+
- id: wmf.reject.r0701
|
|
350
|
+
format: wmf
|
|
351
|
+
record_types: []
|
|
352
|
+
citation: MS-WMF 2.3.4.2 META_CREATEFONTINDIRECT, 2.2.1.2 Font Object
|
|
353
|
+
status: implemented
|
|
354
|
+
reason:
|
|
355
|
+
- id: wmf.reject.r0801
|
|
356
|
+
format: wmf
|
|
357
|
+
record_types: []
|
|
358
|
+
citation: MS-WMF 2.3.4 Object Record Types
|
|
359
|
+
status: implemented
|
|
360
|
+
reason:
|
|
361
|
+
- id: wmf.reject.r0901
|
|
362
|
+
format: wmf
|
|
363
|
+
record_types: []
|
|
364
|
+
citation: MS-WMF 2.3.3.14 META_POLYLINE, 2.3.3.15 META_POLYGON (NumberOfPoints), 2.2.2.17 PolyPolygon Object (NumberOfPolygons)
|
|
365
|
+
status: implemented
|
|
366
|
+
reason:
|
|
367
|
+
- id: wmf.reject.r0902
|
|
368
|
+
format: wmf
|
|
369
|
+
record_types: []
|
|
370
|
+
citation: MS-WMF 2.2.2.17 PolyPolygon Object (aPointsPerPolygon)
|
|
371
|
+
status: implemented
|
|
372
|
+
reason:
|
|
373
|
+
- id: wmf.reject.r0903
|
|
374
|
+
format: wmf
|
|
375
|
+
record_types: []
|
|
376
|
+
citation: MS-WMF 2.3.3.14 META_POLYLINE, 2.3.3.15 META_POLYGON (NumberOfPoints)
|
|
377
|
+
status: implemented
|
|
378
|
+
reason:
|
|
379
|
+
- id: wmf.reject.r0904
|
|
380
|
+
format: wmf
|
|
381
|
+
record_types: []
|
|
382
|
+
citation: MS-WMF 2.3.3.14 META_POLYLINE, 2.3.3.15 META_POLYGON (aPoints), 2.2.2.17 PolyPolygon Object (aPoints)
|
|
383
|
+
status: implemented
|
|
384
|
+
reason:
|
|
385
|
+
- id: wmf.reject.r1001
|
|
386
|
+
format: wmf
|
|
387
|
+
record_types: []
|
|
388
|
+
citation: MS-WMF 2.3.3.5 META_EXTTEXTOUT, 2.3.3.20 META_TEXTOUT
|
|
389
|
+
status: implemented
|
|
390
|
+
reason:
|
|
391
|
+
- id: wmf.reject.r1002
|
|
392
|
+
format: wmf
|
|
393
|
+
record_types: []
|
|
394
|
+
citation: MS-WMF 2.3.3.5 META_EXTTEXTOUT
|
|
395
|
+
status: implemented
|
|
396
|
+
reason:
|
|
397
|
+
- id: wmf.reject.r1003
|
|
398
|
+
format: wmf
|
|
399
|
+
record_types: []
|
|
400
|
+
citation: MS-WMF 2.3.3.5 META_EXTTEXTOUT, 2.3.3.20 META_TEXTOUT
|
|
401
|
+
status: not_checkable
|
|
402
|
+
reason: 'the spec MUST holds, but the parser no longer rejects it: a text record with a negative StringLength is kept verbatim as an opaque record and wmf.text.negative_length reports it (an error when strict, a warning when tolerant), so no WMF failure with this reason exists to report'
|
|
403
|
+
- id: wmf.reject.r1004
|
|
404
|
+
format: wmf
|
|
405
|
+
record_types: []
|
|
406
|
+
citation: MS-WMF 2.3.3.5 META_EXTTEXTOUT, 2.3.3.20 META_TEXTOUT
|
|
407
|
+
status: implemented
|
|
408
|
+
reason:
|
|
409
|
+
- id: wmf.reject.r1005
|
|
410
|
+
format: wmf
|
|
411
|
+
record_types: []
|
|
412
|
+
citation: MS-WMF 2.3.3.5 META_EXTTEXTOUT
|
|
413
|
+
status: implemented
|
|
414
|
+
reason:
|
|
415
|
+
- id: wmf.reject.r1101
|
|
416
|
+
format: wmf
|
|
417
|
+
record_types: []
|
|
418
|
+
citation: MS-WMF 2.2.1.3 Palette Object; 2.3.4.3 META_CREATEPALETTE, 2.3.5.19 META_SETPALENTRIES, 2.3.5.1 META_ANIMATEPALETTE, 2.3.4.11 META_SELECTPALETTE, 2.3.5.9 META_RESIZEPALETTE
|
|
419
|
+
status: implemented
|
|
420
|
+
reason:
|
|
421
|
+
- id: wmf.reject.r1102
|
|
422
|
+
format: wmf
|
|
423
|
+
record_types: []
|
|
424
|
+
citation: MS-WMF 2.2.1.3 Palette Object; 2.3.4.3 META_CREATEPALETTE, 2.3.5.19 META_SETPALENTRIES, 2.3.5.1 META_ANIMATEPALETTE
|
|
425
|
+
status: implemented
|
|
426
|
+
reason:
|
|
427
|
+
- id: wmf.reject.r1201
|
|
428
|
+
format: wmf
|
|
429
|
+
record_types: []
|
|
430
|
+
citation: MS-WMF 2.3.3.6 META_FILLREGION, 2.3.3.8 META_FRAMEREGION, 2.3.3.9 META_INVERTREGION, 2.3.3.11 META_PAINTREGION, 2.3.4.9 META_SELECTCLIPREGION, 2.3.5.5 META_OFFSETCLIPRGN
|
|
431
|
+
status: implemented
|
|
432
|
+
reason:
|
|
433
|
+
- id: wmf.reject.r1202
|
|
434
|
+
format: wmf
|
|
435
|
+
record_types: []
|
|
436
|
+
citation: MS-WMF 2.2.1.5 Region Object; 2.3.4.6 META_CREATEREGION
|
|
437
|
+
status: implemented
|
|
438
|
+
reason:
|
|
439
|
+
- id: wmf.reject.r1203
|
|
440
|
+
format: wmf
|
|
441
|
+
record_types: []
|
|
442
|
+
citation: MS-WMF 2.2.1.5 Region Object; 2.3.4.6 META_CREATEREGION
|
|
443
|
+
status: implemented
|
|
444
|
+
reason:
|
|
445
|
+
- id: wmf.reject.r1204
|
|
446
|
+
format: wmf
|
|
447
|
+
record_types: []
|
|
448
|
+
citation: MS-WMF 2.2.1.5 Region Object; 2.2.2.21 Scan Object
|
|
449
|
+
status: implemented
|
|
450
|
+
reason:
|
|
451
|
+
- id: wmf.reject.r1205
|
|
452
|
+
format: wmf
|
|
453
|
+
record_types: []
|
|
454
|
+
citation: MS-WMF 2.2.1.5 Region Object; 2.2.2.21 Scan Object
|
|
455
|
+
status: implemented
|
|
456
|
+
reason:
|
|
457
|
+
- id: wmf.reject.r1206
|
|
458
|
+
format: wmf
|
|
459
|
+
record_types: []
|
|
460
|
+
citation: MS-WMF 2.2.1.5 Region Object; 2.2.2.21 Scan Object
|
|
461
|
+
status: implemented
|
|
462
|
+
reason:
|
|
463
|
+
- id: wmf.reject.r1301
|
|
464
|
+
format: wmf
|
|
465
|
+
record_types: []
|
|
466
|
+
citation: MS-WMF 2.3.4.4 META_CREATEPATTERNBRUSH
|
|
467
|
+
status: implemented
|
|
468
|
+
reason:
|
|
469
|
+
- id: wmf.reject.r1302
|
|
470
|
+
format: wmf
|
|
471
|
+
record_types: []
|
|
472
|
+
citation: MS-WMF 2.3.4.4 META_CREATEPATTERNBRUSH
|
|
473
|
+
status: implemented
|
|
474
|
+
reason:
|
|
475
|
+
- id: wmf.reject.r1303
|
|
476
|
+
format: wmf
|
|
477
|
+
record_types: []
|
|
478
|
+
citation: MS-WMF 2.3.4.8 META_DIBCREATEPATTERNBRUSH
|
|
479
|
+
status: implemented
|
|
480
|
+
reason:
|
|
481
|
+
- id: wmf.reject.r1304
|
|
482
|
+
format: wmf
|
|
483
|
+
record_types: []
|
|
484
|
+
citation: MS-WMF 2.3.4.8 META_DIBCREATEPATTERNBRUSH (ColorUsage); 2.1.1.6 ColorUsage Enumeration
|
|
485
|
+
status: implemented
|
|
486
|
+
reason:
|
|
487
|
+
- id: wmf.reject.r1401
|
|
488
|
+
format: wmf
|
|
489
|
+
record_types: []
|
|
490
|
+
citation: MS-WMF 2.3.1 Bitmap Record Types
|
|
491
|
+
status: implemented
|
|
492
|
+
reason:
|
|
493
|
+
- id: wmf.reject.r1402
|
|
494
|
+
format: wmf
|
|
495
|
+
record_types: []
|
|
496
|
+
citation: MS-WMF 2.3.1 Bitmap Record Types
|
|
497
|
+
status: implemented
|
|
498
|
+
reason:
|
|
499
|
+
- id: wmf.reject.r1501
|
|
500
|
+
format: wmf
|
|
501
|
+
record_types: []
|
|
502
|
+
citation: MS-WMF 2.3.3.4 META_EXTFLOODFILL, 2.3.3.7 META_FLOODFILL, 2.3.3.19 META_SETPIXEL, 2.3.5.12 META_SCALEVIEWPORTEXT, 2.3.5.13 META_SCALEWINDOWEXT
|
|
503
|
+
status: implemented
|
|
504
|
+
reason:
|
|
505
|
+
- id: wmf.reject.r1502
|
|
506
|
+
format: wmf
|
|
507
|
+
record_types: []
|
|
508
|
+
citation: MS-WMF 2.3.3.4 META_EXTFLOODFILL (Mode); 2.1.1.9 FloodFill Enumeration
|
|
509
|
+
status: implemented
|
|
510
|
+
reason:
|
|
511
|
+
- id: wmf.reject.r1601
|
|
512
|
+
format: wmf
|
|
513
|
+
record_types: []
|
|
514
|
+
citation: MS-WMF 2.3.5.10 META_RESTOREDC
|
|
515
|
+
status: implemented
|
|
516
|
+
reason:
|
|
517
|
+
- id: wmf.reject.r1602
|
|
518
|
+
format: wmf
|
|
519
|
+
record_types: []
|
|
520
|
+
citation: MS-WMF 2.3.6.1 META_ESCAPE
|
|
521
|
+
status: implemented
|
|
522
|
+
reason:
|
|
523
|
+
- id: wmf.reject.r1603
|
|
524
|
+
format: wmf
|
|
525
|
+
record_types: []
|
|
526
|
+
citation: MS-WMF 2.3.6.1 META_ESCAPE
|
|
527
|
+
status: implemented
|
|
528
|
+
reason:
|
|
529
|
+
- id: wmf.reject.r1701
|
|
530
|
+
format: wmf
|
|
531
|
+
record_types: []
|
|
532
|
+
citation: MS-WMF 3.1.4.1 WMF Object Table; 2.3.2.2 META_HEADER (NumberOfObjects)
|
|
533
|
+
status: implemented
|
|
534
|
+
reason:
|
|
535
|
+
- id: wmf.reject.r1702
|
|
536
|
+
format: wmf
|
|
537
|
+
record_types: []
|
|
538
|
+
citation: MS-WMF 3.1.4.1 WMF Object Table; 2.3.4.10 META_SELECTOBJECT, 2.3.4.7 META_DELETEOBJECT
|
|
539
|
+
status: not_checkable
|
|
540
|
+
reason: 'the spec MUST holds, but the parser no longer rejects it: a reference to no live object is ignored, the record is kept and wmf.object.select_reference, wmf.object.delete_reference, wmf.object.palette_reference or wmf.object.region_reference reports it (an error when strict, a warning when tolerant), so no WMF failure with this reason exists to report'
|
|
541
|
+
- id: wmf.reject.r1703
|
|
542
|
+
format: wmf
|
|
543
|
+
record_types: []
|
|
544
|
+
citation: MS-WMF 2.3.4.11 META_SELECTPALETTE; 3.1.4.1 WMF Object Table
|
|
545
|
+
status: implemented
|
|
546
|
+
reason:
|
|
547
|
+
- id: wmf.reject.r1704
|
|
548
|
+
format: wmf
|
|
549
|
+
record_types: []
|
|
550
|
+
citation: MS-WMF 2.3.4.9 META_SELECTCLIPREGION; 3.1.4.1 WMF Object Table
|
|
551
|
+
status: implemented
|
|
552
|
+
reason:
|
|
553
|
+
- id: wmf.reject.r1705
|
|
554
|
+
format: wmf
|
|
555
|
+
record_types: []
|
|
556
|
+
citation: MS-WMF 2.3.3.6 META_FILLREGION, 2.3.3.8 META_FRAMEREGION (Region); 3.1.4.1 WMF Object Table
|
|
557
|
+
status: implemented
|
|
558
|
+
reason:
|
|
559
|
+
- id: wmf.reject.r1706
|
|
560
|
+
format: wmf
|
|
561
|
+
record_types: []
|
|
562
|
+
citation: MS-WMF 2.3.3.6 META_FILLREGION, 2.3.3.8 META_FRAMEREGION (Brush); 3.1.4.1 WMF Object Table
|
|
563
|
+
status: implemented
|
|
564
|
+
reason:
|
|
565
|
+
- id: wmf.reject.r1707
|
|
566
|
+
format: wmf
|
|
567
|
+
record_types: []
|
|
568
|
+
citation: MS-WMF 2.3.3.6 META_FILLREGION, 2.3.3.8 META_FRAMEREGION (Brush); 3.1.4.1 WMF Object Table
|
|
569
|
+
status: implemented
|
|
570
|
+
reason:
|
|
571
|
+
- id: wmf.reject.r1801
|
|
572
|
+
format: wmf
|
|
573
|
+
record_types: []
|
|
574
|
+
citation: MS-WMF 2.3.2.2 META_HEADER (MaxRecord)
|
|
575
|
+
status: not_checkable
|
|
576
|
+
reason: 'the spec MUST holds, but the parser no longer rejects it: the header MaxRecord disagrees with the largest record, the model is kept and wmf.header.max_record reports the drift (an error when strict, a warning when tolerant), so no WMF failure with this reason exists to report'
|
|
577
|
+
- id: wmf.object.capacity
|
|
578
|
+
format: wmf
|
|
579
|
+
record_types:
|
|
580
|
+
- META_CREATEPENINDIRECT
|
|
581
|
+
- META_CREATEBRUSHINDIRECT
|
|
582
|
+
- META_CREATEPATTERNBRUSH
|
|
583
|
+
- META_DIBCREATEPATTERNBRUSH
|
|
584
|
+
- META_CREATEFONTINDIRECT
|
|
585
|
+
- META_CREATEPALETTE
|
|
586
|
+
- META_CREATEREGION
|
|
587
|
+
citation: MS-WMF 3.1.4.1 WMF Object Table, 2.3.2.2 META_HEADER (NumberOfObjects)
|
|
588
|
+
status: implemented
|
|
589
|
+
reason:
|
|
590
|
+
- id: wmf.object.select_reference
|
|
591
|
+
format: wmf
|
|
592
|
+
record_types:
|
|
593
|
+
- META_SELECTOBJECT
|
|
594
|
+
citation: MS-WMF 2.3.4.10 META_SELECTOBJECT (ObjectIndex), 3.1.4.1; stock-object selectors (high bit 0x8000) are an implementation rule, MS-WMF defines no selector encoding
|
|
595
|
+
status: implemented
|
|
596
|
+
reason:
|
|
597
|
+
- id: wmf.object.delete_reference
|
|
598
|
+
format: wmf
|
|
599
|
+
record_types:
|
|
600
|
+
- META_DELETEOBJECT
|
|
601
|
+
citation: MS-WMF 2.3.4.7 META_DELETEOBJECT (ObjectIndex), 3.1.4.1; stock objects are never deleted (1.1 Glossary), the 0x8000 selector bit is an implementation rule
|
|
602
|
+
status: implemented
|
|
603
|
+
reason:
|
|
604
|
+
- id: wmf.object.palette_reference
|
|
605
|
+
format: wmf
|
|
606
|
+
record_types:
|
|
607
|
+
- META_SELECTPALETTE
|
|
608
|
+
citation: MS-WMF 2.3.4.11 META_SELECTPALETTE (Palette), 3.1.4.1
|
|
609
|
+
status: implemented
|
|
610
|
+
reason:
|
|
611
|
+
- id: wmf.object.region_reference
|
|
612
|
+
format: wmf
|
|
613
|
+
record_types:
|
|
614
|
+
- META_FILLREGION
|
|
615
|
+
- META_FRAMEREGION
|
|
616
|
+
- META_INVERTREGION
|
|
617
|
+
- META_PAINTREGION
|
|
618
|
+
- META_SELECTCLIPREGION
|
|
619
|
+
citation: MS-WMF 2.3.3.6 META_FILLREGION, 2.3.3.8 META_FRAMEREGION, 2.3.3.9 META_INVERTREGION,
|
|
620
|
+
2.3.3.11 META_PAINTREGION, 2.3.4.9 META_SELECTCLIPREGION (Region), 3.1.4.1
|
|
621
|
+
status: implemented
|
|
622
|
+
reason:
|
|
623
|
+
- id: wmf.object.brush_reference
|
|
624
|
+
format: wmf
|
|
625
|
+
record_types:
|
|
626
|
+
- META_FILLREGION
|
|
627
|
+
- META_FRAMEREGION
|
|
628
|
+
citation: MS-WMF 2.3.3.6 META_FILLREGION, 2.3.3.8 META_FRAMEREGION (Brush), 3.1.4.1
|
|
629
|
+
status: implemented
|
|
630
|
+
reason:
|
|
631
|
+
- id: wmf.dc.restore_depth
|
|
632
|
+
format: wmf
|
|
633
|
+
record_types:
|
|
634
|
+
- META_SAVEDC
|
|
635
|
+
- META_RESTOREDC
|
|
636
|
+
citation: MS-WMF 2.3.5.10 META_RESTOREDC (nSavedDC), 2.3.5.11 META_SAVEDC, 3.1.5; the outcome of an nSavedDC that names no saved context is an implementation rule, MS-WMF defines none
|
|
637
|
+
status: implemented
|
|
638
|
+
reason:
|
|
639
|
+
- id: wmf.state.scale_divisor
|
|
640
|
+
format: wmf
|
|
641
|
+
record_types:
|
|
642
|
+
- META_SCALEWINDOWEXT
|
|
643
|
+
- META_SCALEVIEWPORTEXT
|
|
644
|
+
citation: MS-WMF 2.3.5.12 META_SCALEVIEWPORTEXT, 2.3.5.13 META_SCALEWINDOWEXT (xDenom, yDenom)
|
|
645
|
+
status: not_checkable
|
|
646
|
+
reason: MS-WMF 2.3.5.12 and 2.3.5.13 define the divisors as signed 16-bit amounts
|
|
647
|
+
with no MUST on a zero value, so a zero divisor is not a stated constraint
|
|
648
|
+
- id: wmf.bitmap.dib_layout
|
|
649
|
+
format: wmf
|
|
650
|
+
record_types:
|
|
651
|
+
- META_DIBBITBLT
|
|
652
|
+
- META_DIBSTRETCHBLT
|
|
653
|
+
- META_SETDIBTODEV
|
|
654
|
+
- META_STRETCHDIB
|
|
655
|
+
citation: MS-WMF 2.2.2.9 DeviceIndependentBitmap Object; 2.3.1.2.1 META_DIBBITBLT, 2.3.1.3.1 META_DIBSTRETCHBLT (Target), 2.3.1.4 META_SETDIBTODEV, 2.3.1.6 META_STRETCHDIB (DIB)
|
|
656
|
+
status: implemented
|
|
657
|
+
reason:
|
|
658
|
+
- id: wmf.bitmap.bitmap16_layout
|
|
659
|
+
format: wmf
|
|
660
|
+
record_types:
|
|
661
|
+
- META_BITBLT
|
|
662
|
+
- META_STRETCHBLT
|
|
663
|
+
citation: MS-WMF 2.2.2.1 Bitmap16 Object; 2.3.1.1.1 META_BITBLT, 2.3.1.5.1 META_STRETCHBLT (Target)
|
|
664
|
+
status: implemented
|
|
665
|
+
reason:
|
|
666
|
+
- id: wmf.text.length
|
|
667
|
+
format: wmf
|
|
668
|
+
record_types:
|
|
669
|
+
- META_TEXTOUT
|
|
670
|
+
- META_EXTTEXTOUT
|
|
671
|
+
citation: MS-WMF 2.3.3.20 META_TEXTOUT, 2.3.3.5 META_EXTTEXTOUT (StringLength, String)
|
|
672
|
+
status: implemented
|
|
673
|
+
reason:
|
|
674
|
+
- id: wmf.text.negative_length
|
|
675
|
+
format: wmf
|
|
676
|
+
record_types:
|
|
677
|
+
- META_TEXTOUT
|
|
678
|
+
- META_EXTTEXTOUT
|
|
679
|
+
citation: MS-WMF 2.3.3.20 META_TEXTOUT, 2.3.3.5 META_EXTTEXTOUT (StringLength, String)
|
|
680
|
+
status: implemented
|
|
681
|
+
reason:
|
|
682
|
+
- id: wmf.region.header
|
|
683
|
+
format: wmf
|
|
684
|
+
record_types:
|
|
685
|
+
- META_CREATEREGION
|
|
686
|
+
citation: MS-WMF 2.2.1.5 Region Object (ObjectCount, RegionSize); 2.3.4.6 META_CREATEREGION
|
|
687
|
+
status: implemented
|
|
688
|
+
reason:
|
|
689
|
+
- id: wmf.array.polygon_empty
|
|
690
|
+
format: wmf
|
|
691
|
+
record_types:
|
|
692
|
+
- META_POLYGON
|
|
693
|
+
citation: MS-WMF 2.3.3.15 META_POLYGON (NumberOfPoints)
|
|
694
|
+
status: implemented
|
|
695
|
+
reason:
|
|
696
|
+
- id: wmf.text.spacing_count
|
|
697
|
+
format: wmf
|
|
698
|
+
record_types:
|
|
699
|
+
- META_EXTTEXTOUT
|
|
700
|
+
citation: MS-WMF 2.3.3.5 META_EXTTEXTOUT (Dx)
|
|
701
|
+
status: implemented
|
|
702
|
+
reason:
|
|
703
|
+
- id: wmf.text.rectangle_options
|
|
704
|
+
format: wmf
|
|
705
|
+
record_types:
|
|
706
|
+
- META_EXTTEXTOUT
|
|
707
|
+
citation: MS-WMF 2.3.3.5 META_EXTTEXTOUT (fwOpts, Rectangle)
|
|
708
|
+
status: implemented
|
|
709
|
+
reason:
|
|
710
|
+
- id: wmf.palette.entry_count
|
|
711
|
+
format: wmf
|
|
712
|
+
record_types:
|
|
713
|
+
- META_CREATEPALETTE
|
|
714
|
+
- META_SETPALENTRIES
|
|
715
|
+
- META_ANIMATEPALETTE
|
|
716
|
+
- META_RESIZEPALETTE
|
|
717
|
+
citation: MS-WMF 2.3.4.3 META_CREATEPALETTE, 2.3.5.19 META_SETPALENTRIES, 2.3.5.1 META_ANIMATEPALETTE, 2.3.5.9 META_RESIZEPALETTE (NumberOfEntries); 2.2.1.3 Palette Object (NumberOfEntries)
|
|
718
|
+
status: implemented
|
|
719
|
+
reason:
|
|
720
|
+
- id: wmf.palette.entry_fields
|
|
721
|
+
format: wmf
|
|
722
|
+
record_types:
|
|
723
|
+
- META_CREATEPALETTE
|
|
724
|
+
- META_SETPALENTRIES
|
|
725
|
+
- META_ANIMATEPALETTE
|
|
726
|
+
citation: MS-WMF 2.2.2.13 PaletteEntry Object; 2.2.1.3 Palette Object (aPaletteEntries); 2.3.4.3 META_CREATEPALETTE, 2.3.5.19 META_SETPALENTRIES, 2.3.5.1 META_ANIMATEPALETTE
|
|
727
|
+
status: implemented
|
|
728
|
+
reason:
|
|
729
|
+
- id: wmf.palette.start
|
|
730
|
+
format: wmf
|
|
731
|
+
record_types:
|
|
732
|
+
- META_CREATEPALETTE
|
|
733
|
+
citation: MS-WMF 2.2.1.3 Palette Object (Start, MUST be 0x0300 for META_CREATEPALETTE); 2.3.4.3 META_CREATEPALETTE
|
|
734
|
+
status: implemented
|
|
735
|
+
reason:
|
|
736
|
+
- id: wmf.region.scan_counts
|
|
737
|
+
format: wmf
|
|
738
|
+
record_types:
|
|
739
|
+
- META_CREATEREGION
|
|
740
|
+
citation: MS-WMF 2.2.1.5 Region Object (ScanCount, aScans), 2.2.2.21 Scan Object; 2.3.4.6 META_CREATEREGION
|
|
741
|
+
status: implemented
|
|
742
|
+
reason:
|
|
743
|
+
- id: wmf.region.size
|
|
744
|
+
format: wmf
|
|
745
|
+
record_types:
|
|
746
|
+
- META_CREATEREGION
|
|
747
|
+
citation: MS-WMF 2.2.1.5 Region Object (RegionSize); 2.3.4.6 META_CREATEREGION
|
|
748
|
+
status: implemented
|
|
749
|
+
reason:
|
|
750
|
+
- id: wmf.escape.byte_count
|
|
751
|
+
format: wmf
|
|
752
|
+
record_types:
|
|
753
|
+
- META_ESCAPE
|
|
754
|
+
citation: MS-WMF 2.3.6.1 META_ESCAPE (ByteCount, EscapeData)
|
|
755
|
+
status: implemented
|
|
756
|
+
reason:
|
|
757
|
+
- id: wmf.escape.embedded_emf.segment
|
|
758
|
+
format: wmf
|
|
759
|
+
record_types:
|
|
760
|
+
- META_ESCAPE
|
|
761
|
+
- META_ESCAPE_ENHANCED_METAFILE
|
|
762
|
+
citation: MS-WMF 2.3.6.25 META_ESCAPE_ENHANCED_METAFILE
|
|
763
|
+
status: implemented
|
|
764
|
+
reason:
|
|
765
|
+
- id: wmf.escape.embedded_emf.sequence
|
|
766
|
+
format: wmf
|
|
767
|
+
record_types:
|
|
768
|
+
- META_ESCAPE
|
|
769
|
+
- META_ESCAPE_ENHANCED_METAFILE
|
|
770
|
+
citation: MS-WMF 2.3.6.25 META_ESCAPE_ENHANCED_METAFILE (CommentRecordCount, CurrentRecordSize, RemainingBytes, EnhancedMetafileDataSize)
|
|
771
|
+
status: implemented
|
|
772
|
+
reason:
|
|
773
|
+
- id: wmf.escape.embedded_emf.checksum
|
|
774
|
+
format: wmf
|
|
775
|
+
record_types:
|
|
776
|
+
- META_ESCAPE
|
|
777
|
+
- META_ESCAPE_ENHANCED_METAFILE
|
|
778
|
+
citation: MS-WMF 2.3.6.25 META_ESCAPE_ENHANCED_METAFILE (Checksum)
|
|
779
|
+
status: implemented
|
|
780
|
+
reason:
|
|
781
|
+
- id: wmf.escape.opaque_subtype
|
|
782
|
+
format: wmf
|
|
783
|
+
record_types:
|
|
784
|
+
- META_ESCAPE
|
|
785
|
+
citation: MS-WMF 2.3.6.1 META_ESCAPE (EscapeFunction); 2.1.1.17 MetafileEscapes Enumeration
|
|
786
|
+
status: not_checkable
|
|
787
|
+
reason: escape subtypes without a typed view, and recognized subtypes whose payload size differs from the table, are preserved as opaque bytes; the model cannot tell a vendor payload from a malformed one, so nothing is reported
|
|
788
|
+
- id: wmf.buffer.declared_size
|
|
789
|
+
format: wmf
|
|
790
|
+
record_types: []
|
|
791
|
+
citation: MS-WMF 2.3 (RecordSize)
|
|
792
|
+
status: implemented
|
|
793
|
+
reason:
|
|
794
|
+
- id: wmf.record.layout_size
|
|
795
|
+
format: wmf
|
|
796
|
+
record_types:
|
|
797
|
+
- META_FLOODFILL
|
|
798
|
+
- META_SETPIXEL
|
|
799
|
+
- META_PATBLT
|
|
800
|
+
- META_EXCLUDECLIPRECT
|
|
801
|
+
- META_INTERSECTCLIPRECT
|
|
802
|
+
- META_OFFSETCLIPRGN
|
|
803
|
+
- META_REALIZEPALETTE
|
|
804
|
+
- META_SETBKCOLOR
|
|
805
|
+
- META_SETMAPPERFLAGS
|
|
806
|
+
- META_SETRELABS
|
|
807
|
+
- META_SETTEXTCHAREXTRA
|
|
808
|
+
- META_SETTEXTCOLOR
|
|
809
|
+
- META_SETTEXTJUSTIFICATION
|
|
810
|
+
citation: MS-WMF 2.3.3.7, 2.3.3.12, 2.3.3.19, 2.3.5.2, 2.3.5.3, 2.3.5.5, 2.3.5.8, 2.3.5.14, 2.3.5.18, 2.3.5.21, 2.3.5.25, 2.3.5.26, 2.3.5.27 (RecordSize; the record lists no field after its last parameter)
|
|
811
|
+
status: implemented
|
|
812
|
+
reason:
|
|
813
|
+
- id: wmf.fixed.raster_operation
|
|
814
|
+
format: wmf
|
|
815
|
+
record_types:
|
|
816
|
+
- META_PATBLT
|
|
817
|
+
citation: MS-WMF 2.3.3.12 META_PATBLT (RasterOperation); 2.1.1.31 TernaryRasterOperation Enumeration
|
|
818
|
+
status: implemented
|
|
819
|
+
reason:
|
|
820
|
+
- id: wmf.fixed.colorref_reserved
|
|
821
|
+
format: wmf
|
|
822
|
+
record_types:
|
|
823
|
+
- META_FLOODFILL
|
|
824
|
+
- META_SETPIXEL
|
|
825
|
+
- META_SETBKCOLOR
|
|
826
|
+
- META_SETTEXTCOLOR
|
|
827
|
+
citation: MS-WMF 2.2.2.8 ColorRef Object (Reserved); 2.3.3.7 META_FLOODFILL, 2.3.3.19 META_SETPIXEL, 2.3.5.14 META_SETBKCOLOR, 2.3.5.26 META_SETTEXTCOLOR
|
|
828
|
+
status: implemented
|
|
829
|
+
reason:
|
|
830
|
+
- id: wmf.fixed.colorref_palette
|
|
831
|
+
format: wmf
|
|
832
|
+
record_types:
|
|
833
|
+
- META_FLOODFILL
|
|
834
|
+
- META_SETPIXEL
|
|
835
|
+
- META_SETBKCOLOR
|
|
836
|
+
- META_SETTEXTCOLOR
|
|
837
|
+
citation: MS-WMF 2.2.2.8 ColorRef Object (Reserved); 2.3.3.7 META_FLOODFILL, 2.3.3.19 META_SETPIXEL, 2.3.5.14 META_SETBKCOLOR, 2.3.5.26 META_SETTEXTCOLOR
|
|
838
|
+
status: implemented
|
|
839
|
+
reason:
|
|
840
|
+
- id: wmf.fixed.coordinate_values
|
|
841
|
+
format: wmf
|
|
842
|
+
record_types:
|
|
843
|
+
- META_ARC
|
|
844
|
+
- META_CHORD
|
|
845
|
+
- META_ELLIPSE
|
|
846
|
+
- META_PIE
|
|
847
|
+
- META_RECTANGLE
|
|
848
|
+
- META_ROUNDRECT
|
|
849
|
+
- META_LINETO
|
|
850
|
+
- META_MOVETO
|
|
851
|
+
- META_SETWINDOWORG
|
|
852
|
+
- META_SETWINDOWEXT
|
|
853
|
+
- META_SETVIEWPORTORG
|
|
854
|
+
- META_SETVIEWPORTEXT
|
|
855
|
+
- META_OFFSETWINDOWORG
|
|
856
|
+
- META_OFFSETVIEWPORTORG
|
|
857
|
+
- META_FLOODFILL
|
|
858
|
+
- META_SETPIXEL
|
|
859
|
+
- META_PATBLT
|
|
860
|
+
- META_EXCLUDECLIPRECT
|
|
861
|
+
- META_INTERSECTCLIPRECT
|
|
862
|
+
- META_OFFSETCLIPRGN
|
|
863
|
+
- META_SETTEXTCHAREXTRA
|
|
864
|
+
- META_SETTEXTJUSTIFICATION
|
|
865
|
+
- META_SETMAPPERFLAGS
|
|
866
|
+
citation: MS-WMF 2.3.3.1-2.3.3.19, 2.3.5.2-2.3.5.30 (coordinate, extent, offset, BreakCount, BreakExtra, CharExtra and MapperValues fields)
|
|
867
|
+
status: not_checkable
|
|
868
|
+
reason: 'each of these sections defines the coordinate, extent, offset or count fields only by type and meaning (a 16-bit signed or unsigned integer in logical or device units; META_SETMAPPERFLAGS says only that bit zero selects matching fonts) and states no MUST on their value, so no value is a violation'
|
|
869
|
+
- id: wmf.header.unrecognised
|
|
870
|
+
format: wmf
|
|
871
|
+
record_types: []
|
|
872
|
+
citation: "MS-WMF 2.3.2.2"
|
|
873
|
+
status: implemented
|
|
874
|
+
reason: null
|