Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adds ViewportSettings.Transparent #3886

Merged
merged 51 commits into from
Mar 1, 2025

Conversation

tig
Copy link
Collaborator

@tig tig commented Dec 14, 2024

Fixes

For

We need the concept of a view that is transparent. In addition I've found that View.Draw has some errors in it regarding in how clipping is done.

This PR fixes those issues and adds the new capability.

  • Adds ViewportSettings.Transparent enabling see-through/click-through views
  • Adds ViewportSettingsEditor to Scenarios and expands AllViewsTester to utilize

Proposed Changes/Todos

  • Add ViewportSettings.Transparent
  • Add ViewportSettingsEditor to Scenarios and expand AllViewsTester to utilize
  • Upgrade ViewportSettings scenario to use ViewportSettingsEditor and illustrate transparency
  • Add ViewportSettings.Transparent unit tests

Pull Request checklist:

  • I've named my PR in the form of "Fixes #issue. Terse description."
  • My code follows the style guidelines of Terminal.Gui - if you use Visual Studio, hit CTRL-K-D to automatically reformat your files before committing.
  • My code follows the Terminal.Gui library design guidelines
  • I ran dotnet test before commit
  • I have made corresponding changes to the API documentation (using /// style comments)
  • My changes generate no new warnings
  • I have checked my code and corrected any poor grammar or misspellings
  • I conducted basic QA to assure all features are working

@tig
Copy link
Collaborator Author

tig commented Dec 14, 2024

TVWS3h6 1

Note, it's unlikely that this will support a transparent view with subviews that use transparent shadows.

@tig
Copy link
Collaborator Author

tig commented Dec 14, 2024

JypXlAc 1

@tig
Copy link
Collaborator Author

tig commented Feb 24, 2025

Pretty excited about this.

iyiiTUg 1

I had to do a ton of work in View.Draw and Region to get this to work. And build a bunch more unit tests.

In doing all this I remembered SkiaSharp and have a stash where I ported Region to use SkiaSharp under the covers. I plan on doing some benchmarking to see which is faster.

@tznind
Copy link
Collaborator

tznind commented Feb 25, 2025

Oh, nice! That looks awesome 🔍

Is it a draw effect only, or do clicks also drop through input transparent areas?

Could be nice future addition to optionally have that behaviour.

@tig
Copy link
Collaborator Author

tig commented Feb 25, 2025

They don't yet. But will.

The point of this is to enable Popovers.

@tig tig mentioned this pull request Feb 25, 2025
17 tasks
@tig
Copy link
Collaborator Author

tig commented Feb 28, 2025

@tznind this is with v2win... Really great sign! Nice work!

MOnAGA0 1

@tznind
Copy link
Collaborator

tznind commented Feb 28, 2025

this is with v2win

Nice! 💪

Region Scenario [...] we should combine this with the LineDrawing Scenario?

Yeah probably one drawing scenario with all the tools side by side would be nice, but it doesn't have to happen right away if its difficult.

@tig tig marked this pull request as ready for review February 28, 2025 23:10
@tig tig requested review from tznind and BDisp February 28, 2025 23:10
@tig
Copy link
Collaborator Author

tig commented Feb 28, 2025

You'll note the draw path has been simplified/cleaned up in addition to the transparent support being added.

Also, Region is much more robust.

@BDisp
Copy link
Collaborator

BDisp commented Mar 1, 2025

Some questions:

  • Is correct to be the same arrow in all edge corners?
  • Why resize acts differently when press on the boundary and when press on the top border?

WindowsTerminal_SbPbzfco7O

Copy link
Collaborator

@BDisp BDisp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lovely work. Only 2 suggestions.

@tig
Copy link
Collaborator Author

tig commented Mar 1, 2025

Some questions:

  • Is correct to be the same arrow in all edge corners?

No. Bug. Not related to this PR.

  • Why resize acts differently when press on the boundary and when press on the top border?

Not related to this PR. Not exactly sure what you mean. But probably a bug.

@tig
Copy link
Collaborator Author

tig commented Mar 1, 2025

I updated the Text Alignment & Direction Scenario to make the Views be transparent to illustrate how TextFormatter.GetDrawRegion works.

image

@tig tig merged commit 98f70b2 into gui-cs:v2_develop Mar 1, 2025
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants