@@ -0,0 +1,55 @@
|
||||
# Compatibility and fidelity boundaries
|
||||
|
||||
This service is an independent, read-only native-format implementation. There is no official Altium SDK or Altium executable in its runtime. The current output is explicitly **partial**, with structured diagnostics. It must not be described as pixel-perfect, fully compatible with every Altium version, or certified for engineering signoff.
|
||||
|
||||
## File parsing
|
||||
|
||||
- OLE Compound File Binary containers with a `FileHeader` stream and a recognized format 5.0 header; also native ASCII records for that envelope.
|
||||
- `Storage` is decoded only for bounded, supported embedded raster assets. `Additional` records preserve stream-local indexes. Ambiguous cross-stream ownership is reported instead of inferred.
|
||||
- Little-endian length/kind record framing, original physical record indexes, source properties, UTF-8 companion properties, legacy Windows-1252 decoding.
|
||||
- Unknown binary payloads are preserved as base64, with diagnostics, rather than misinterpreted as text.
|
||||
- Major unknown headers, missing sheets, broken CFB/record lengths and files without supported geometry fail. Minor header revisions are reported, not treated as certified Altium application releases.
|
||||
- `.PcbDoc`, libraries without an instantiated schematic, encrypted/protected variants and unknown document envelopes are not supported.
|
||||
|
||||
## Geometry
|
||||
|
||||
Original component symbol primitives are extracted from the SchDoc itself. The renderer does not replace resistors, ICs or other components with generic icons. Ownership chains, active units/display modes, placements and fractional coordinates are retained. Placed children are not rotated a second time. Component rotation/mirroring remains in JSON; readable parameter glyphs do not inherit a placement mirror.
|
||||
|
||||
| Record IDs | Rendering behavior |
|
||||
| --- | --- |
|
||||
| 1, 2 | Component ownership, part selection; original pin segments, names/numbers; common bubble/clock decorations |
|
||||
| 4, 25, 32–34, 41 | Native labels, designators, parameter text and resolved stored parameter references |
|
||||
| 5–14 | Cubic Bezier sequences, polylines, polygons, ellipses, pie sectors, rounded rectangles, elliptical/circular arcs, lines, rectangles |
|
||||
| 15, 16 | Original sheet-symbol box and entry coordinates/names; entry arrow styles are incomplete and reported |
|
||||
| 17, 18 | Common power and off-sheet port styles using native style fields; unknown power markers omitted with diagnostics |
|
||||
| 22, 26, 27, 29, 37 | No-connect marks, bus/wire vertices, junction dots and bus entry lines |
|
||||
| 28, 209 | Text boxes, newlines, clipping, estimated wrapping (warning) |
|
||||
| 30 | Embedded BMP/PNG/JPEG/TIFF/GIF raster re-encoded as PNG after bounded decoding; multi-frame assets skipped |
|
||||
| 31 | Page background, 18 standard page presets, custom sizes and portrait orientation |
|
||||
| 39, 44–48 | Original template/model metadata retained; no library/resource execution |
|
||||
| 225 | Dashed annotation rectangle from observed records; not an official format guarantee |
|
||||
| Other | Preserved original properties and explicit unsupported-object diagnostics |
|
||||
|
||||
Source paint order is preserved. Explicit saved template lines/text render like other primitives. No schematic layout algorithm is used, and crossings do not fabricate junctions.
|
||||
|
||||
## Known visual gaps
|
||||
|
||||
1. **Automatic page decorations**: Altium-generated borders, zones and title blocks are not reconstructed. Explicit saved template primitives do render. Their omission is reported when enabled.
|
||||
2. **Typography**: Original font files and suitable web distribution licenses are required for exact glyph shapes. The optional administrator font allowlist supports regular/bold/italic variants. Browser fallback changes metrics. Font em conversion (currently 0.9 × stored size), default pin label offsets, baseline mapping and estimated wrapping require calibration against Altium reference exports. Font and pin metrics are always warned about.
|
||||
3. **Special text**: Per-character overbars, some custom text positioning, advanced compiled expressions, locale code pages other than Windows-1252/UTF-8 and unusual glyph encodings remain incomplete. Stored parameter references can resolve against extracted values; dates/times and missing data are not fabricated.
|
||||
4. **Decorations/styles**: IEEE symbols, uncommon pin decorations, line-end arrow decorations, some power marker styles, sheet-entry arrows and harness objects are not fully rendered. Unsupported power styles are omitted instead of replaced by another ground/power symbol. Common generated marker proportions and port text need reference validation. Non-solid line styles currently use a common dash sequence and are not certified to match every Altium dash pattern.
|
||||
5. **Images**: Only embedded, recognized raster files are decoded. Source filenames are treated solely as matching keys, never filesystem paths or network resources. Missing assets, multi-frame files, corrupt compression, pixel/decompression limits and ambiguous names produce warnings. No vector image/EMF/WMF conversion is provided.
|
||||
6. **Electrical scope**: Wire geometry, junctions and connection anchors are extracted; no Altium compiled netlist is created. Cross-sheet connectivity, repeated channels, bus expansion and harness semantics are not resolved. Hierarchical drawing objects on a single uploaded sheet are retained; child files are not fetched.
|
||||
7. **Layer order/performance**: Source primitive order is retained, but all proprietary editor-specific draw-order exceptions have not been characterized. Very large browser SVG scenes and mobile gestures require profiling on target devices.
|
||||
|
||||
An omitted object can be important. Applications must inspect `diagnostics`, not just `status: completed`. Original source bytes and raw properties are kept to support future decoder improvements.
|
||||
|
||||
## Proprietary dependencies and licensing
|
||||
|
||||
No proprietary component library is needed when a SchDoc contains instantiated symbol primitives. A document missing required saved geometry cannot be faithfully reconstructed without its original libraries or a licensed Altium workflow. This service does not invent that geometry. Exact fonts, external templates and absent graphics must be supplied by their owners under suitable licenses. Universal reference rendering may require licensed Altium Designer or an officially supported Altium rendering/export service; no such service is configured or impersonated here.
|
||||
|
||||
## Format research
|
||||
|
||||
Record/coordinate facts were checked against the [KiCad developer format reference](https://dev-docs.kicad.org/en/import-formats/altium/index.html) and [python-altium format notes](https://github.com/vadmium/python-altium/blob/master/format.md). The [Altium drawing-object documentation](https://www.altium.com/documentation/altium-designer/schematic/drawing-objects) and [connectivity documentation](https://www.altium.com/documentation/altium-designer/schematic/creating-circuit-connectivity) describe native graphic objects and power-port variations. These references do not constitute an official binary-format guarantee.
|
||||
|
||||
The initial independently written schematic decoding modules were reused from the user's local `/home/nearology/work/altium-render` checkout and extended here; that checkout was not modified. No GPL importer implementation has been copied into this project.
|
||||
مرجع در شماره جدید
مسدود کردن کاربر