G-code Preview — API Reference
    Preparing search index...

    The minimal renderer contract the controller drives. 3D-only members are honored by the 2D renderer as documented no-ops or renderer-unsupported disclosures — never fabricated output.

    interface PreviewRenderer {
        hasColorChanges: boolean;
        hasRetractions: boolean;
        layerCount: number;
        segmentCount: number;
        appendPartial(slice: ToolpathIR): void;
        capture(opts?: CaptureOptions): Promise<Blob>;
        dispose(): void;
        frame(): void;
        getCameraState(): null | CameraState;
        getRenderStats(): null | RenderStats;
        isColorModeAvailable(
            mode:
                | "object"
                | "single"
                | "tool"
                | "feature"
                | "colorChange"
                | "filament"
                | "feedrate"
                | "layerHeight"
                | "power"
                | "moveKind",
        ): boolean;
        onEvent(cb: (e: PreviewRendererEvent) => void): () => void;
        pickSegment(ndcX: number, ndcY: number, threshold?: number): null | number;
        resize(width: number, height: number): void;
        setBuildVolume(def: BuildVolumeDef | MachineGeometry): void;
        setBuildVolumeCage(visible: boolean): void;
        setCameraMode(mode: CameraMode): void;
        setCameraState(state: CameraState): void;
        setColorMode(mode: ColorMode): boolean;
        setFeatureRoleVisible(role: FeatureRoleValue, visible: boolean): void;
        setFrameContent(mode: "object" | "all"): void;
        setInteractionQuality(mode: "auto" | "off"): void;
        setIR(ir: ToolpathIR): void;
        setKindVisible(kind: MoveKindToggle, visible: boolean): void;
        setLayerRange(startLayer: number, endLayer: number): void;
        setProgress(p: null | MappedProgress): void;
        setProgressivePreview(mode: ProgressivePreview): void;
        setQuality(quality: QualityMode | "auto"): void;
        setQualityMode(mode: QualityPolicy): void;
        setScrubPosition(segIndex: null | number): void;
        setShowRetractions(visible: boolean): void;
        setTheme(theme: Theme): void;
        setView(view: CameraView): void;
    }
    Index

    Properties

    hasColorChanges: boolean

    True when the current IR carries M600 color-change boundaries (DD-031 G6).

    hasRetractions: boolean

    True when the current IR carries retraction/deretraction events the markers can show (DD-031 G6).

    layerCount: number
    segmentCount: number

    Methods

    • Progressive partial IR (3D only; the 2D renderer draws on the final IR).

      Parameters

      Returns void

    • Capture the current view as an image Blob (DD-030 D1). Optional: the 3D renderer implements it via render-to-target; a renderer that cannot (the 2D renderer) omits it, and the controller reports renderer-unsupported / rejects. Never fabricated output.

      Parameters

      Returns Promise<Blob>

    • Returns void

    • Returns void

    • Read the current camera as a serializable snapshot (#268). Null when the renderer has no 3D pose (2D).

      Returns null | CameraState

    • Render diagnostics snapshot (DD-027) — backend/GPU/geometry-mode/parallelism/timings — or null before the first render / on a renderer that produces none (the 2D view). Exposed through the public surface so diagnostics are reachable without the raw handle (DD-031 G1).

      Returns null | RenderStats

    • Capability gate for a color mode (DD-001 honesty): false when the IR lacks the channel the mode reads (e.g. feature on a file with no feature roles). Lets a consumer build capability-aware UI without the raw handle (DD-031 G6). single/tool/moveKind are always available.

      Parameters

      • mode:
            | "object"
            | "single"
            | "tool"
            | "feature"
            | "colorChange"
            | "filament"
            | "feedrate"
            | "layerHeight"
            | "power"
            | "moveKind"

      Returns boolean

    • Pick the IR segment under a pointer (normalized device coords in [-1, 1]), or null (#184). The 3D renderer raycasts the toolpath; the 2D renderer returns null (no picking yet).

      Parameters

      • ndcX: number
      • ndcY: number
      • Optionalthreshold: number

      Returns null | number

    • Parameters

      • width: number
      • height: number

      Returns void

    • Show/hide the build-volume wireframe cage independently of the bed/plate (#306/#6).

      Parameters

      • visible: boolean

      Returns void

    • Parameters

      Returns void

    • Restore a camera snapshot verbatim (#268). 2D renderers disclose via renderer-unsupported.

      Parameters

      Returns void

    • Parameters

      Returns boolean

    • Show/hide a single feature role (e.g. hide Skirt/Brim). 3D only — the flat 2D view treats it as a no-op. Optional so a renderer need not implement it; gate the UI on featureRoles: 'known'.

      Parameters

      Returns void

    • Frame the printed 'object' (excl. skirt/prime) vs 'all' extrusion (#306/#6).

      Parameters

      • mode: "object" | "all"

      Returns void

    • Interaction-aware quality: 'auto' reduces detail while the camera moves (#306/2, DD-020).

      Parameters

      • mode: "auto" | "off"

      Returns void

    • Parameters

      Returns void

    • Parameters

      • kind: MoveKindToggle
      • visible: boolean

      Returns void

    • Parameters

      • startLayer: number
      • endLayer: number

      Returns void

    • Parameters

      Returns void

    • During-parse preview curtain (#60): 'lines' | 'hold' | 'off'. Applies to the NEXT parse. 3D only; 2D is a no-op.

      Parameters

      Returns void

    • Parameters

      Returns void

    • Fidelity policy (DD-023 §4 D6): 'full' | 'adaptive' | 'fast'. 3D only; 2D is a no-op.

      Parameters

      Returns void

    • Parameters

      • segIndex: null | number

      Returns void

    • Parameters

      • visible: boolean

      Returns void

    • Parameters

      Returns void

    • Snap to a preset orientation (#268). 2D renderers disclose via renderer-unsupported.

      Parameters

      Returns void