Replace theme assets with SVGs
Tracking the ability to use SVGs for theme assets.
Some related efforts:
- #7667
- #7708
- Source artwork for default theme: https://github.com/LMMS/artwork/tree/master/Default%20Theme
Some unresolved issues:
- [x]
embed::getIconPixmap()quality is "stuck" at an SVGs "natural" resolution.- Fixed via #7769
High level tasks: (break these into finer tasks as needed)
- [ ] Switch common assets from
.pngto.svg - [ ] Decide how to handle text (e.g. "ENVELOPE", "LFO")
- [ ] Switch native effects plugins from
.pngto.svg - [ ] Decide how to handle instrument plugins
Initial team (gathered from Discord)
- @StakeoutPunch
- @rubiefawn
- @Monospace-V
- @SpomJ
- @qnebra (this is not exhaustive, anyone feel free to chime in if you can help!)
So one of the issues discovered in https://github.com/LMMS/lmms/pull/7769 was that most parts of the code use QPixmap.size() (.width(), .height()) to determine how big a UI component is, however with SVGs, the devicePixelRatio causes these values to be multiplied 2x, 3x, 4x, etc.
Qt6 introduced a new QPixmap::deviceIndependentSize(), quoting:
Returns the size of the pixmap in device independent pixels.
This value should be used when using the pixmap size in user interface size calculations.
The return value is equivalent to
pixmap.size() / pixmap.devicePixelRatio()This function was introduced in Qt 6.2.
The effect this has on the codebase is evident in #7781 here:
https://github.com/LMMS/lmms/blob/5f5834a7dfab4d433f801acc2a5f45f2d20203c3/src/gui/widgets/Fader.cpp#L83
My recommendation is to provide a QPixmap wrapper class that provide a backport for deviceIndependentSize for Qt versions older than 6.2.
Plugins
If you want to work on any of these, please read the description for #3534 and use it as a reference in your design decisions.
- [x] Amplifier #7770
- [ ] AudioFileProcessor
- [x] Bass Booster #7771
- [ ] BitInvader #8122
- [x] Bitcrush #7772
- [ ] Compressor
- [x] Crossover EQ #7781
- [ ] Delay
- [x] Dispersion #7773
- [x] Dual Filter #7774
- [ ] Dynamics Processor
- [ ] EQ
- [x] Flanger #7775
- [ ] FreeBoy
- [ ] Gig Player
- [ ] Granular Pitch Shifter
- [ ] Kicker
- [ ] LOMM
- [ ] Lb302
- [ ] Monstro
- [ ] Multitap Echo
- [ ] Nes
- [ ] OpulenZ
- [ ] Organic
- [ ] Patman
- [x] Peak Controller #7776
- [x] ReverbSC #7777
- [ ] SoundFont Player (@rubiefawn will do this after #8072)
- [ ] Sfxr
- [ ] Sid
- [ ] SlicerT
- [ ] Spectrum Analyzer
- [ ] Stereo Enhancer
- [x] Stereo Matrix #7803
- [ ] Mallets
- [ ] Tap Tempo
- [ ] Triple Oscillator (@rubiefawn will do this after #4369)
- [ ] Vectorscope
- [x] VeSTige #7791
- [ ] Vibed
- [ ] Watsyn
- [ ] Waveshaper
- [ ] ZynAddSubFX