Repository navigation
feat(mono): native interactive f(x,y) 3D surfaces in Linux WinForms - #296
Draft
PawelTroka wants to merge 10 commits into
Draft
PawelTroka wants to merge 10 commits into
PawelTroka wants to merge 10 commits into
Conversation
…and export control
…and after rotation
Scale viewport pan offsets in GetImage instead of resetting them. Capture native before/after right-button XTEST screenshots and enforce that the exported image retains the resulting pan.
PawelTroka
added a commit
that referenced
this pull request
Oct 27, 2026
…xtures Assert matched native/Web sampling coordinates and heights for paraboloid and sin/cos, and exactly 33 missing diagonal points for 1/(x-y); carry forward real-X11 pan/export regression from #296.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Scope
Native Linux/Mono WinForms interactive explicit f(x,y) surface visualization for #292. Kept independent of browser WebGL work in #294 and the Mono complex-chart defect #295. Draft: do not merge without owner approval.
Implementation
Chart3DControlMonounsupported panel with a nativeIChart3DWinForms viewer. No WPF/WebGL/OpenGL or new native dependency.Function.Evaluate(x,y)compiled-expression/custom-function pipeline. Bounded grid sampling (17–97 samples/axis), finite filtering and arithmetic singularity holes.System.Drawing/libgdiplus; show numerical x/y/z axes. Left-drag rotates, right-drag pans, wheel zooms; arrows, +/- and Home are keyboard alternatives.Redraw,ClearAll, export, print, properties and stand-alone chart methods. Cached numerical grids are unaffected by camera gestures or resize.Regression / acceptance
4769084a36af7983a152367bb619aeb10c7ffaa3in LinuxMono-Validate/ Xvfb: 44 passed, 0 failed, 0 skipped (run 40252148928). Visually inspect real on-screen images.Computator.NET.Desktop.Testsjob 557/557 tests passed, including WPF surface occlusion, axis annotation, export, panning/rotation/zoom and settings dialog. Mono real/complex chart acceptance also passed. All four jobs in Cake Windows validation have now passed (Desktop.Tests, Core.Tests, Core.IntegrationTests, WebApi.IntegrationTests).Screenshot evidence
Before: actual
unsupported-3d.pngretained in the successful master Mono artifact (headfe1aba49).After: the first implementation's Mono artifact includes
mono-3d-paraboloid.png,mono-3d-visible-before.png, andmono-3d-points.png. These were successfully captured and visually inspected; gesture acceptance was not yet passing. The current rerun will additionally be required to producemono-3d-visible-rotated.pngandmono-3d-export.pngafter successful interaction.Known limitations / isolation
Rasterized 3D is CPU-bound with approximate painter's depth ordering (no hardware z-buffer). It is suitable for bounded interactive surfaces, not CAD-scale/intersecting geometry or continuous heavy animation. Implicit surfaces, true 3D object picking, and certified macOS GUI support remain out of scope. This does not ship the #294 web viewer or change #295's complex-chart renderer.
Do not merge without my approval.
Validation iteration (26 Oct 2026)
The first Mono workflow at run 40251746607 built successfully and 42 accepted cases passed, but the two new tests failed: Mono
SendKeys.SendWaitdid not deliver a real focused key event, and a negative function-type fixture usedyin a real-only expression. Follow-up commits replace SendKeys with XTEST-generated X11 mouse drag, installlibxtst6explicitly, and correct the real-only fixture. Rerun passed on exact head4769084a:Mono-BuildandMono-Validatesucceeded, 44 accepted / zero failures. XTEST delivered a real drag;mono-3d-visible-before.pngandmono-3d-visible-rotated.pngshow a visibly rotated camera, with 24,315 pixels changed beyond 10/255 in their grayscale difference. PNG export, holes and point mode also passed. This establishes native Linux/X11 behavior for the validated Ubuntu/Mono combination; it does not certify other distributions or macOS.Passing Linux/X11 evidence (exact head
4769084)Mono-Validate44/44 passed (includes actual X11 pointer drag and native pixel comparison).mono-3d-visible-before.png,mono-3d-visible-rotated.png,mono-3d-paraboloid.png,mono-3d-export.png,mono-3d-points.png, XML/logs. Inspected actual captured images; screenshots are not synthetic and are not substituted for interactive acceptance.4769084a36af7983a152367bb619aeb10c7ffaa3; this was verified independently on 2026-10-27.Cross-platform integration and PNG-pan correction — 2026-10-27
4769084a36af7983a152367bb619aeb10c7ffaa3: 21/21 workflows completed successfully, including 44/44 native Linux/X11 acceptance cases and Windows desktop regression checks. Web feat(web): interactive f(x,y) 3D surface charts with numerical sampling and WebGL #294 exact original head9fc1b794independently completed 21/21.OnPaintapplied right-drag pan offsets whileGetImagepassed zero offsets, so exported PNGs discarded the user's pan. New commitdb44d1d7carries the current camera pan into exports, scaled by output viewport dimensions.mono-3d-visible-prepan.png,mono-3d-visible-panned.pngandmono-3d-panned-export.png. The remaining workflows on the new commit must be assessed separately from the 21/21 original-head result.1/(x-y)reference contracts on Windows-Web and Linux-Mono. Treat the new candidate's whole-matrix result as pending until all workflows complete.