mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-10-15 11:51:33 +00:00
* Option: Show/ Hide inactive plates * Hide inactive plate volumes by bounds Switch inactive-plate volume hiding to use geometric overlap with the current plate bounding box instead of object and wipe tower ID mapping. This also guards against a missing current plate and keeps any active volume visible when its transformed bounds overlap the current plate footprint. * Hide inactive plates per instance and keep them unpickable Decide what is shown per object instance, from its footprint over the current plate, so the parts of an object are never split; a selected instance stays visible. Keep the hidden state between frames instead of restoring it after each one. GLVolume::on_hidden_plate records what this update hid, so it only shows that again and leaves the volumes gizmos hide alone, and the raycasts made while handling the mouse see the same scene as the frame. Nothing runs while the inactive plates are shown. Deactivate the raycasters of the other plates, whose icons still took clicks where nothing was drawn, move the axes to the current plate, and limit the option to Prepare, as Preview already shows the current plate alone. * Follow the selected plate with the camera while the others are hidden Selecting a plate in Prepare while the inactive plates are hidden moves the camera target over it and keeps the angle, distance and height, so the plate comes into view where the previous one was. A zoom to all plates, as after loading a project or adding a plate, frames the current plate instead. * Add a compact plate switcher while inactive plates are hidden The hidden plates can no longer be clicked, and the object list gets crowded on large projects. While they are hidden in Prepare, a column of numbered buttons in the top left corner, a compact counterpart of the Preview plate toolbar, selects the plate to show. It highlights the current plate, dims the empty ones and gives the plate name in the tooltip. * Simplify the inactive plates update and the plate switcher layout Decide and apply each volume's state in one pass instead of filling a per-volume vector first, and hoist the switcher's loop-invariant colors. Keep the height the bottom-left corner takes next to the constants it is made of, with the canvas toolbar's button spacing named, rather than repeating that layout in the switcher. * Rename the option to Focus mode The canvas menu entry reads Focus mode, lit while the other plates are hidden, and is off by default, so nothing changes until it is turned on. The app config key is focus_mode. Turning it on zooms to the current plate, so the plate fills the view. * Show plate thumbnails in the plate switcher The switcher shows the thumbnails of the Preview plate toolbar instead of numbered buttons, with rounded corners concentric with the window's. Plater::plate_toolbar_image_version() lets it refresh them without clearing the Preview toolbar's dirty flag. * Don't draw the sinking contours of inactive volumes GLVolume::render() skips an inactive volume, but its sinking contour was still drawn, so an object on a hidden plate left its outline behind. * Show the plate switcher's scrollbar only on hover, as in Preview The plate switcher now shares the Preview plate toolbar's scrollbar: the same width and colors, shown only while the mouse is over the column or drags the bar, with the mouse wheel scrolling it either way, and tighter window corners while it shows. Both toolbars draw it through the same helpers, so they cannot drift apart; the Preview toolbar behaves as before. Drop the frame style the switcher no longer uses since it draws thumbnails instead of buttons. * Make the plate switcher's thumbnails cheaper and match the Preview toolbar The thumbnail version moves after almost every edit, and the switcher redrew both thumbnails of every plate each time. It now redraws only the current plate's, the only one edited while the others are hidden, and the other plates' once their thumbnails are invalidated, through the new Plater::update_plate_thumbnails(). IMToolbarItem::set_thumbnail() uploads a plate thumbnail without keeping a copy of its pixels, a megabyte per plate, and replaces the item setup the Preview toolbar and the switcher each repeated. The switcher's hover border takes the Preview toolbar's color. --------- Co-authored-by: Ian Bassi <ian.bassi@outlook.com>