Comments (9)
Hi, can you elaborate on what is missing to support HiDPI on Linux? Thanks.
from vstgui.
Hello! I am not a programmer, but I was informed by a developer a software that I am trying to use that VSTGUI doesnโt support HIDPI on linux, and that is the reason his software doesnโt support HIDPI. See here:
The documentation indicates that Linux isnโt supported for HIDPI. I felt that it would be proactive to request this feature. More and more plugin users on Linux are using HIDPI screens. Wayland is even supporting fractional scaling now. This is a feature we need. ๐
from vstgui.
Edit: This is the correct link:
from vstgui.
Concerning VSTGUI: it supports any scale factor you throw at it. The developer only needs to call CFrame::setZoom.
The problem on Linux may be that the host needs to tell the plug-in which scale factor to use.
from vstgui.
Very interesting! I'll direct the developer to this comment. Maybe the two development teams can get a solution into Sfizz. :)
Thank you for the info! ๐
from vstgui.
Hi @Audiojunkie,
I just checked this on Linux and when building the VSTGUI standalone examples they support HiDPI without issues. So it's up to the host and plug-in developers to properly implement this in their hosts and plug-ins.
from vstgui.
Thank you everyone! I really appreciate you looking into this! ๐
from vstgui.
The problem in the end is not the HiDPI support, but the lack of the system scale factor.
AFAICS there are 2 types of scale factors: the zoom (get|setZoom()
functions) which is an user preference and the system wide scale factor, which in VSTGUI is represented by the platformScaleFactor
variable, set by default to 1 at least on Linux. There is CFrame::platformScaleFactorChanged
that sets it but it seems to be called only in the macOS version (protected function and the class is declared as final, so no way to derive and override the former, probably just to call the default implementation to pass the system scale).
The resulting scale factor is obtained by getScaleFactor()
function, which returns the product of zoom and system scale, so that on Linux is the same as getZoom()
if platformScaleFactor is never set.
In brief what it's not there (except on macOS) is the system scale factor auto detection.
The documentation looks a bit confusing to me, because setZoom
is a custom user setting, not the system wide (no setScaleFactor()
).
from vstgui.
For VST3 there's a dedicated interface (IPlugViewContentScaleSupport) to set the scale factor of a plug-in editor. This interface must be called by the host to set the desired scale factor and the plug-in can then call CFrame::setZoom(scaleFactor)
. The platform scale factor is only used on macOS, because there the system uses this factor throughout the system. If you ask a window on macOS for its size you get the size divided by the scale factor. If you do this on Windows or Linux you get the actual size in pixels.
So on Linux you need to use CFrame::setZoom(scaleFactor)
and the host has to tell the plug-in editors the scale factor.
from vstgui.
Related Issues (20)
- Some modern casting issues.. CBitmapPixelAccess::setPosition and itmapPixelAccess::operator++ HOT 2
- Reintroduce setBackOffset() / getBackOffset() and respect the backOffset in all views / controls HOT 4
- Requesting accessibility implementation, expose GUI controls to platform specific APIs HOT 7
- Use of new CMultiBitmap implementation in CAnimKnob is not backwards compatible HOT 1
- 4.12.1 cswitch.cpp fails compilation with VSTGUI_ENABLE_DEPRECATED_METHODS=0 HOT 1
- CAnimKnob not receiving mouse button release in some hosts HOT 20
- Unhandled exception when using vstgui HOT 2
- compile error after updating to Xcode 14.3: no member named 'move' in namespace 'std'
- getChildViewsOfType() with option 'deep' searches only one level deep HOT 1
- ui built on ver 4.11+ will flicker especially run on vst3plugintesthost 64bit HOT 8
- Issue when building with Xcode 14.3 HOT 1
- Segment Button segment names string gets replaced by parameter steps normalized value in Release build HOT 3
- Font drawing inconsistencies between Mac and Windows HOT 5
- [Windows] Cannot move window after a COptionMenu has been popped up HOT 2
- Standalone application crash with newest version of vst3sdk (3.7.9) on Windows when using transforms HOT 6
- std::unique_ptr of forward-declared types HOT 1
- COptionMenu().getMax() returns 18446744073709551616
- Build error while compiling vst3sdk on Fedora 40 HOT 2
- Mac Fails to compile generated project HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from vstgui.