Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • videolan/vlc
  • chouquette/vlc
  • bakiewicz.marek122/vlc
  • devnexen/vlc
  • rohanrajpal/vlc
  • blurrrb/vlc
  • gsoc/gsoc2019/darkapex/vlc
  • b1ue/vlc
  • fkuehne/vlc
  • magsoft/vlc
  • chub/vlc
  • cramiro9/vlc
  • robUx4/vlc
  • rom1v/vlc
  • akshayaky/vlc
  • tmk907/vlc
  • akymaster/vlc
  • govind.sharma/vlc
  • psilokos/vlc
  • xjbeta/vlc
  • jahan/vlc
  • 1480c1/vlc
  • amanchande/vlc
  • aaqib/vlc
  • rist/vlc
  • apol/vlc
  • mindfreeze/vlc
  • alexandre-janniaux/vlc
  • sandsmark/vlc
  • jagannatharjun/vlc
  • gsoc/gsoc2020/matiaslgonzalez/vlc
  • gsoc/gsoc2020/jagannatharjun/vlc
  • mstorsjo/vlc
  • gsoc/gsoc2020/vedenta/vlc
  • gsoc/gsoc2020/arnav-ishaan/vlc
  • gsoc/gsoc2020/andreduong/vlc
  • fuzun/vlc
  • gsoc/gsoc2020/vatsin/vlc
  • gsoc/gsoc2020/sagid/vlc
  • yaron/vlc
  • Phoenix/vlc
  • Garf/vlc
  • ePiratWorkarounds/vlc
  • tguillem/vlc
  • jnqnfe/vlc
  • mdc/vlc
  • Vedaa/vlc
  • rasa/vlc
  • quink/vlc
  • yealo/vlc
  • aleksey_ak/vlc
  • ePirat/vlc
  • ilya.yanok/vlc
  • asenat/vlc
  • m/vlc
  • bunjee/vlc
  • BLumia/vlc
  • sagudev/vlc
  • hamedmonji30/vlc
  • nullgemm/vlc
  • DivyamAhuja/vlc
  • thesamesam/vlc
  • dag7/vlc
  • snehil101/vlc
  • haasn/vlc
  • jbk/vlc
  • ValZapod/vlc
  • mfkl/vlc
  • WangChuan/vlc
  • core1024/vlc
  • GhostVaibhav/vlc
  • dfuhrmann/vlc
  • davide.prade/vlc
  • tmatth/vlc
  • Courmisch/vlc
  • zouya/vlc
  • hpi/vlc
  • EwoutH/vlc
  • aleung27/vlc
  • hengwu0/vlc
  • saladin/vlc
  • ashuio/vlc
  • richselwood/vlc
  • verma16Ayush/vlc
  • chemicalflash/vlc
  • PoignardAzur/vlc
  • huangjieNT/vlc
  • Blake-Haydon/vlc
  • AnuthaDev/vlc
  • gsoc/gsoc2021/mpd/vlc
  • nicolas_lequec/vlc
  • sambassaly/vlc
  • thresh/vlc
  • bonniegong/vlc
  • myaashish/vlc
  • stavros.vagionitis/vlc
  • ileoo/vlc
  • louis-santucci/vlc
  • cchristiansen/vlc
  • sabyasachi07/vlc
  • AbduAmeen/vlc
  • ashishb0410/vlc
  • urbanhusky/vlc
  • davidepietrasanta/vlc
  • riksleutelstad/vlc
  • jeremyVignelles/vlc
  • komh/vlc
  • iamjithinjohn/vlc
  • JohannesKauffmann/vlc2
  • kunglao/vlc
  • natzberg/vlc
  • jill/vlc
  • cwendling/vlc
  • adufou/vlc
  • ErwanAirone/vlc
  • HasinduDilshan10/vlc
  • vagrantc/vlc
  • rafiv/macos-bigsur-icon
  • Aymeriic/vlc
  • saranshg20/vlc
  • metzlove24/vlc
  • linkfanel/vlc
  • Ds886/vlc
  • metehan-arslan/vlc
  • Skantes/vlc
  • kgsandundananjaya96/vlc
  • mitchcapper/vlc
  • advaitgupta/vlc
  • StefanBruens/vlc
  • ratajs/vlc
  • T.M.F.B.3761/vlc
  • m222059/vlc
  • casemerrick/vlc
  • joshuaword2alt/vlc
  • sjwaddy/vlc
  • dima/vlc
  • Ybalrid/vlc
  • umxprime/vlc
  • eschmidt/vlc
  • vannieuwenhuysenmichelle/vlc
  • badcf00d/vlc
  • wesinator/vlc
  • louis/vlc
  • xqq/vlc
  • EmperorYP7/vlc
  • NicoLiam/vlc
  • loveleen/vlc
  • rofferom/vlc
  • rbultje/vlc
  • TheUnamed/vlc
  • pratiksharma341/vlc
  • Saurab17/vlc
  • purist.coder/vlc
  • Shuicheng/vlc
  • mdrrubel292/vlc
  • silverbleu00/vlc
  • metif12/vlc
  • asher-m/vlc
  • jeffk/vlc
  • Brandonbr1/vlc
  • beautyyuyanli/vlc
  • rego21/vlc
  • muyangren907/vlc
  • collectionbylawrencejason/vlc
  • evelez/vlc
  • GSMgeeth/vlc
  • Oneric/vlc
  • TJ5/vlc
  • XuanTung95/vlc
  • darrenjenny21/vlc
  • Trenly/vlc
  • RockyTDR/vlc
  • mjakubowski/vlc
  • caprica/vlc
  • ForteFrankie/vlc
  • seannamiller19/vlc
  • junlon2006/vlc
  • kiwiren6666/vlc
  • iuseiphonexs/vlc
  • fenngtun/vlc
  • Rajdutt999/vlc
  • typx/vlc
  • leon.vitanos/vlc
  • robertogarci0938/vlc
  • gsoc/gsoc2022/luc65r/vlc-mpd
  • skeller/vlc
  • MCJack123/vlc
  • luc65r/vlc-mpd
  • popov895/vlc
  • claucambra/vlc
  • brad/vlc
  • matthewmurua88/vlc
  • Tomas8874/vlc
  • philenotfound/vlc
  • makita-do3/vlc
  • LZXCorp/vlc
  • mar0x/vlc
  • senojetkennedy0102/vlc
  • shaneb243/vlc
  • ahmadbader/vlc
  • rajduttcse26/vlc-audio-filters
  • Juniorzito8415/vlc
  • achernyakov/vlc
  • lucasjetgroup/vlc
  • pupdoggy666/vlc
  • gmde9363/vlc
  • alexnwayne/vlc
  • bahareebrahimi781/vlc
  • hamad633666/vlc
  • umghof3112/vlc
  • joe0199771874/vlc
  • Octocats66666666/vlc
  • jjm_223/vlc
  • btech10110.19/vlc
  • sunnykfc028/vlc-audio-filters
  • loic/vlc
  • nguyenminhducmx1/vlc
  • JanekKrueger/vlc
  • bstubbington2/vlc
  • rcombs/vlc
  • Ordissimo/vlc
  • king7532/vlc
  • noobsauce101/vlc
  • schong0525/vlc
  • myQwil/vlc
  • apisbg91/vlc
  • geeboy0101017/vlc
  • kim.faughey/vlc
  • nurupo/vlc
  • yyusea/vlc
  • 0711235879.khco/vlc
  • ialo/vlc
  • iloveyeye2/vlc
  • gdtdftdqtd/vlc
  • leandroconsiglio/vlc
  • AndyHTML2012/vlc
  • ncz/vlc
  • lucenticus/vlc
  • knr1931/vlc
  • kjoonlee/vlc
  • chandrakant100/vlc-qt
  • johge42/vlc
  • polter/vlc
  • hexchain/vlc
  • Tushwrld/vlc
  • mztea928/vlc
  • jbelloncastro/vlc
  • alvinhochun/vlc
  • ghostpiratecrow/vlc
  • ujjwaltwitx/vlc
  • alexsonarin06/vlc
  • adrianbon76/vlc
  • altsod/vlc
  • damien.lucas44/vlc
  • dmytrivtaisa/vlc
  • utk202/vlc
  • aaxhrj/vlc
  • thomas.hermes/vlc
  • structurenewworldorder/vlc
  • slomo/vlc
  • wantlamy/vlc
  • musc.o3cminc/vlc
  • thebarshablog/vlc
  • kerrick/vlc
  • kratos142518/vlc
  • leogps/vlc
  • vacantron/vlc
  • luna_koly/vlc
  • Ratio2/vlc
  • anuoshemohammad/vlc
  • apsun/vlc
  • aaa1115910/vlc
  • alimotmoyo/vlc
  • Ambossmann/vlc
  • Sam-LearnsToCode/vlc
  • Chilledheart/vlc
  • Labnann/vlc
  • ktcoooot1/vlc
  • mohit-marathe/vlc
  • johnddx/vlc
  • manstabuk/vlc
  • Omar-ahmed314/vlc
  • vineethkm/vlc
  • 9Enemi86/vlc
  • radoslav.m.panteleev/vlc
  • ashishami2002/vlc
  • Corbax/vlc
  • firnasahmed/vlc
  • pelayarmalam4/vlc
  • c0ff330k/vlc
  • shikhindahikar/vlc
  • l342723951/vlc
  • christianschwandner/vlc
  • douniwan5788/vlc
  • 7damian7/vlc
  • ferdnyc/vlc
  • f.ales1/vlc
  • pandagby/vlc
  • BaaBaa/vlc
  • jewe37/vlc
  • w00drow/vlc
  • russelltg/vlc
  • ironicallygod/vlc
  • soumyaDghosh/vlc
  • linzihao1999/vlc
  • deyayush6/vlc
  • mibi88/vlc
  • newabdallah10/vlc
  • jhorbincolombia/vlc
  • rimvihaqueshupto/vlc
  • andrewkhon98/vlc
  • fab78/vlc
  • lapaz17/vlc
  • amanna13/vlc
  • mdakram28/vlc
  • 07jw1980/vlc
  • sohamgupta/vlc
  • Eson-Jia1/vlc
  • Sumou/vlc
  • vikram-kangotra/vlc
  • chalice191/vlc
  • olivercalder/vlc
  • aaasg4001/vlc
  • zipdox/vlc
  • kwizart/vlc
  • Dragon-S/vlc
  • jdemeule/vlc
  • gabriel_lt/vlc
  • locutusofborg/vlc
  • sammirata/vlc-librist
  • another/vlc
  • Benjamin_Loison/vlc
  • ahmedmoselhi/vlc
  • petergaal/vlc
  • huynhsontung/vlc
  • dariusmihut/vlc
  • tvermaashutosh/vlc
  • buti/vlc
  • Niram7777/vlc
  • rohan-here/vlc
  • balaji-sivasakthi/vlc
  • rlindner81/vlc
  • Kakadus/vlc
  • djain/vlc
  • ABBurmeister/vlc
  • craighuggins/vlc
  • orbea/vlc
  • maxos/vlc
  • aakarshmj/vlc
  • kblaschke/vlc
  • ankitm/vlc
  • advait-0/vlc
  • mohak2003/vlc
  • yselkowitz/vlc
  • AZM999/vlc-azm
  • andrey.turkin/vlc
  • Disha-Baghel/vlc
  • nowrep/vlc
  • Apeng/vlc
  • Choucroute_melba/vlc
  • autra/vlc
  • eclipseo/vlc
  • fhuber/vlc
  • olafhering/vlc
  • sdasda7777/vlc
  • 1div0/vlc
  • skosnits/vlc-extended-playlist-support
  • dnicolson/vlc
  • Timshel/vlc
  • octopols/vlc
  • MangalK/vlc
  • nima64/vlc
  • misawai/vlc
  • Alexander-Wilms/vlc
  • Maxime2/vlc-fork-for-visualizer
  • ww/vlc
  • jeske/vlc
  • sgross-emlix/vlc
  • morenonatural/vlc
  • freakingLovesVLC/vlc
  • borisgolovnev/vlc
  • mpromonet/vlc
  • diogo.simao-marques/vlc
  • masstock/vlc
  • pratikpatel8982/vlc
  • hugok79/vlc
  • longervision/vlc
  • abhiudaysurya/vlc
  • rishabhgarg/vlc
  • tumic/vlc
  • cart/vlc
  • shubham442/vlc
  • Aditya692005/vlc
  • sammirata/vlc4
  • syrykh/vlc
  • Vvorcun/macos-new-icon
  • AyaanshC/vlc
  • nasso/vlc
  • Quark/vlc
  • sebastinas/vlc
  • rhstone/vlc
  • talregev/vlc
  • Managor/vlc
403 results
Show changes
Commits on Source (3)
......@@ -836,6 +836,7 @@ libqt_plugin_la_QML = \
gui/qt/playlist/qml/PlaylistOverlayMenu.qml \
gui/qt/playlist/qml/PlaylistToolbar.qml \
gui/qt/playlist/qml/PlaylistDetachedWindow.qml \
gui/qt/style/AcrylicController.qml \
gui/qt/style/VLCColors.qml \
gui/qt/style/VLCIcons.qml \
gui/qt/style/VLCStyle.qml \
......
......@@ -279,7 +279,7 @@ bool CompositorDirectComposition::makeMainInterface(MainInterface* mainInterface
auto resetAcrylicSurface = [this](QScreen * = nullptr)
{
m_acrylicSurface.reset(new CompositorDCompositionAcrylicSurface(m_intf, m_d3d11Device.Get()));
m_acrylicSurface.reset(new CompositorDCompositionAcrylicSurface(m_intf, this, m_mainInterface, m_d3d11Device.Get()));
};
resetAcrylicSurface();
......
......@@ -78,25 +78,27 @@ bool isWinPreIron()
namespace vlc
{
CompositorDCompositionAcrylicSurface::CompositorDCompositionAcrylicSurface(qt_intf_t *intf_t, ID3D11Device *device, QObject *parent)
CompositorDCompositionAcrylicSurface::CompositorDCompositionAcrylicSurface(qt_intf_t *intf, CompositorDirectComposition *compositor, MainInterface *mainInterface, ID3D11Device *device, QObject *parent)
: QObject(parent)
, m_intf {intf_t}
, m_intf {intf}
, m_compositor {compositor}
, m_mainInterface {mainInterface}
{
if (!init(device))
{
m_intf = nullptr;
return;
}
if (auto w = window())
setActive(m_transparencyEnabled && w->isActive());
qApp->installNativeEventFilter(this);
setActive(m_transparencyEnabled && m_mainInterface->acrylicActive());
connect(m_mainInterface, &MainInterface::acrylicActiveChanged, this, [this]()
{
setActive(m_transparencyEnabled && m_mainInterface->acrylicActive());
});
}
CompositorDCompositionAcrylicSurface::~CompositorDCompositionAcrylicSurface()
{
setActive(false);
m_mainInterface->setHasAcrylicSurface(false);
if (m_dummyWindow)
DestroyWindow(m_dummyWindow);
......@@ -106,7 +108,7 @@ bool CompositorDCompositionAcrylicSurface::nativeEventFilter(const QByteArray &e
{
MSG* msg = static_cast<MSG*>( message );
if (!m_intf || msg->hwnd != hwnd())
if (msg->hwnd != hwnd())
return false;
switch (msg->message)
......@@ -122,18 +124,6 @@ bool CompositorDCompositionAcrylicSurface::nativeEventFilter(const QByteArray &e
requestReset(); // incase z-order changed
break;
}
case WM_ACTIVATE:
{
if (!m_transparencyEnabled)
break;
const int activeType = LOWORD(msg->wParam);
if ((activeType == WA_ACTIVE) || (activeType == WA_CLICKACTIVE))
setActive(true);
else if (activeType == WA_INACTIVE)
setActive(false);
break;
}
case WM_SETTINGCHANGE:
{
if (!lstrcmpW(LPCWSTR(msg->lParam), L"ImmersiveColorSet"))
......@@ -143,8 +133,8 @@ bool CompositorDCompositionAcrylicSurface::nativeEventFilter(const QByteArray &e
break;
m_transparencyEnabled = transparencyEnabled;
if (const auto w = window())
setActive(m_transparencyEnabled && w->isActive());
m_mainInterface->setHasAcrylicSurface(m_transparencyEnabled);
setActive(m_transparencyEnabled && m_mainInterface->acrylicActive());
}
break;
}
......@@ -168,8 +158,6 @@ bool CompositorDCompositionAcrylicSurface::init(ID3D11Device *device)
if (!createBackHostVisual())
return false;
m_transparencyEnabled = isTransparencyEnabled();
m_leftMostScreenX = 0;
m_topMostScreenY = 0;
for (const auto screen : qGuiApp->screens())
......@@ -179,6 +167,9 @@ bool CompositorDCompositionAcrylicSurface::init(ID3D11Device *device)
m_topMostScreenY = std::min<int>(geometry.top(), m_topMostScreenY);
}
m_transparencyEnabled = isTransparencyEnabled();
m_mainInterface->setHasAcrylicSurface(m_transparencyEnabled);
return true;
}
......@@ -251,7 +242,7 @@ try
m_saturationEffect->SetSaturation(2);
m_gaussianBlur->SetBorderMode(D2D1_BORDER_MODE_HARD);
m_gaussianBlur->SetStandardDeviation(20);
m_gaussianBlur->SetStandardDeviation(40);
m_gaussianBlur->SetInput(0, m_saturationEffect.Get(), 0);
m_rootVisual->SetEffect(m_gaussianBlur.Get());
......@@ -333,7 +324,7 @@ catch (const DXError &err)
void CompositorDCompositionAcrylicSurface::sync()
{
if (!m_intf || !hwnd())
if (!hwnd())
return;
const int dx = std::abs(m_leftMostScreenX);
......@@ -351,7 +342,7 @@ void CompositorDCompositionAcrylicSurface::sync()
int frameX = 0;
int frameY = 0;
if (m_intf->p_mi && !m_intf->p_mi->useClientSideDecoration())
if (!m_mainInterface->useClientSideDecoration())
{
frameX = GetSystemMetrics(SM_CXFRAME) + GetSystemMetrics(SM_CXPADDEDBORDER);
frameY = GetSystemMetrics(SM_CYFRAME) + GetSystemMetrics(SM_CYCAPTION)
......@@ -420,41 +411,29 @@ void CompositorDCompositionAcrylicSurface::setActive(const bool newActive)
m_active = newActive;
if (m_active)
{
auto dcompositor = static_cast<vlc::CompositorDirectComposition *>(m_intf->p_compositor);
dcompositor->addVisual(m_rootVisual);
m_compositor->addVisual(m_rootVisual);
updateVisual();
sync();
commitChanges();
// delay propagating changes to avoid flickering
QMetaObject::invokeMethod(this, [this]()
{
m_intf->p_mi->setHasAcrylicSurface(true);
}, Qt::QueuedConnection);
}
else
{
m_intf->p_mi->setHasAcrylicSurface(false);
// delay propagating changes to avoid flickering
QMetaObject::invokeMethod(this, [this]()
{
auto dcompositor = static_cast<vlc::CompositorDirectComposition *>(m_intf->p_compositor);
dcompositor->removeVisual(m_rootVisual);
}, Qt::QueuedConnection);
m_compositor->removeVisual(m_rootVisual);
}
}
QWindow *CompositorDCompositionAcrylicSurface::window()
{
return m_intf ? m_intf->p_compositor->interfaceMainWindow() : nullptr;
return m_compositor->interfaceMainWindow();
}
HWND CompositorDCompositionAcrylicSurface::hwnd()
{
auto w = window();
return w->handle() ? (HWND)w->winId() : nullptr;
if (auto w = window())
return w->handle() ? (HWND)w->winId() : nullptr;
return nullptr;
}
void CompositorDCompositionAcrylicSurface::timerEvent(QTimerEvent *event)
......
......@@ -155,6 +155,8 @@ typedef HRESULT (*DCompositionCreateDeviceFun)(IDXGIDevice *dxgiDevice, REFIID i
namespace vlc
{
class CompositorDirectComposition;
/**
* @brief The CompositorDCompositionAcrylicSurface class
* Adds acrylic surface to the compositor_dcomp when the main window becomes active
......@@ -168,7 +170,7 @@ class CompositorDCompositionAcrylicSurface
Q_OBJECT
public:
CompositorDCompositionAcrylicSurface(qt_intf_t *intf_t, ID3D11Device *device, QObject *parent = nullptr);
CompositorDCompositionAcrylicSurface(qt_intf_t * intf, CompositorDirectComposition *compositor, MainInterface *mainInterface, ID3D11Device *device, QObject *parent = nullptr);
~CompositorDCompositionAcrylicSurface();
......@@ -221,7 +223,9 @@ private:
Microsoft::WRL::ComPtr<IDCompositionSaturationEffect> m_saturationEffect;
Microsoft::WRL::ComPtr<IDCompositionGaussianBlurEffect> m_gaussianBlur;
qt_intf_t *m_intf {};
qt_intf_t *m_intf = nullptr;
CompositorDirectComposition *m_compositor = nullptr;
MainInterface *m_mainInterface = nullptr;
QBasicTimer m_resetTimer;
bool m_resetPending = false;
bool m_active = false;
......
......@@ -388,15 +388,6 @@ void MainInterface::onWindowVisibilityChanged(QWindow::Visibility visibility)
m_windowVisibility = visibility;
}
void MainInterface::setUseAcrylicBackground(const bool v)
{
if (m_useAcrylicBackground == v)
return;
m_useAcrylicBackground = v;
emit useAcrylicBackgroundChanged();
}
void MainInterface::setHasAcrylicSurface(const bool v)
{
if (m_hasAcrylicSurface == v)
......@@ -812,3 +803,17 @@ static int IntfBossCB( vlc_object_t *, const char *,
return VLC_SUCCESS;
}
bool MainInterface::acrylicActive() const
{
return m_acrylicActive;
}
void MainInterface::setAcrylicActive(bool newAcrylicActive)
{
if (m_acrylicActive == newAcrylicActive)
return;
m_acrylicActive = newAcrylicActive;
emit acrylicActiveChanged();
}
......@@ -163,9 +163,11 @@ class MainInterface : public QObject
Q_PROPERTY(bool canShowVideoPIP READ canShowVideoPIP CONSTANT FINAL)
Q_PROPERTY(bool pinVideoControls READ pinVideoControls WRITE setPinVideoControls NOTIFY pinVideoControlsChanged FINAL)
Q_PROPERTY(ControlbarProfileModel* controlbarProfileModel READ controlbarProfileModel CONSTANT FINAL)
Q_PROPERTY(bool useAcrylicBackground READ useAcrylicBackground NOTIFY useAcrylicBackgroundChanged FINAL)
Q_PROPERTY(bool hasAcrylicSurface READ hasAcrylicSurface NOTIFY hasAcrylicSurfaceChanged FINAL)
// This Property only works if hasAcrylicSurface is set
Q_PROPERTY(bool acrylicActive READ acrylicActive WRITE setAcrylicActive NOTIFY acrylicActiveChanged FINAL)
public:
/* tors */
MainInterface(qt_intf_t *);
......@@ -219,7 +221,6 @@ public:
inline ControlbarProfileModel* controlbarProfileModel() const { return m_controlbarProfileModel; }
inline QUrl getDialogFilePath() const { return m_dialogFilepath; }
inline void setDialogFilePath(const QUrl& filepath ){ m_dialogFilepath = filepath; }
inline bool useAcrylicBackground() const { return m_useAcrylicBackground; }
inline bool hasAcrylicSurface() const { return m_hasAcrylicSurface; }
inline void reloadFromSettings() { loadFromSettingsImpl(true); }
......@@ -237,6 +238,9 @@ public:
*/
bool onWindowClose(QWindow* );
bool acrylicActive() const;
void setAcrylicActive(bool newAcrylicActive);
protected:
/* Systray */
void createSystray();
......@@ -295,8 +299,8 @@ protected:
ControlbarProfileModel* m_controlbarProfileModel = nullptr;
bool m_useAcrylicBackground = true;
bool m_hasAcrylicSurface = false;
bool m_acrylicActive = false;
public slots:
void toggleUpdateSystrayMenu();
......@@ -314,7 +318,6 @@ public slots:
void setPinVideoControls( bool );
void updateIntfScaleFactor();
void onWindowVisibilityChanged(QWindow::Visibility);
void setUseAcrylicBackground(bool);
void setHasAcrylicSurface(bool);
void emitBoss();
......@@ -366,9 +369,10 @@ signals:
void intfScaleFactorChanged();
void pinVideoControlsChanged( bool );
void useAcrylicBackgroundChanged();
void hasAcrylicSurfaceChanged();
void acrylicActiveChanged();
private:
void loadPrefs(bool callSignals);
void loadFromSettingsImpl(bool callSignals);
......
/*****************************************************************************
* Copyright (C) 2021 VLC authors and VideoLAN
*
* Authors: Prince Gupta <guptaprince8832@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* ( at your option ) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
pragma Singleton
import QtQuick 2.11
Item {
id: root
property real uiTransluency: (enabled && topWindow.active) ? 1 : 0
enabled: mainInterface.hasAcrylicSurface
Behavior on uiTransluency {
NumberAnimation {
duration: VLCStyle.duration_normal
easing.type: Easing.InOutSine
}
}
Binding {
when: root.enabled
target: mainInterface
property: "acrylicActive"
value: root.uiTransluency != 0
Component.onCompleted: {
// restoreMode is only available in Qt >= 5.14
if ("restoreMode" in this)
this.restoreMode = Binding.RestoreBindingOrValue
}
}
}
singleton VLCStyle 1.0 VLCStyle.qml
singleton VLCIcons 1.0 VLCIcons.qml
singleton AcrylicController 1.0 AcrylicController.qml
......@@ -313,6 +313,7 @@
<file alias="VideoDisplayRecentVideos.qml">medialibrary/qml/VideoDisplayRecentVideos.qml</file>
</qresource>
<qresource prefix="/style">
<file alias="AcrylicController.qml">style/AcrylicController.qml</file>
<file alias="qmldir">style/qmldir</file>
<file alias="VLCStyle.qml">style/VLCStyle.qml</file>
<file alias="VLCColors.qml">style/VLCColors.qml</file>
......
......@@ -26,15 +26,17 @@ import "qrc:///style/"
Item {
id: root
readonly property bool usingAcrylic: visible && enabled && mainInterface.useAcrylicBackground && mainInterface.hasAcrylicSurface
readonly property bool usingAcrylic: visible && enabled && AcrylicController.enabled
property color tintColor: VLCStyle.colors.setColorAlpha(VLCStyle.colors.bg, 0.7)
property color alternativeColor: VLCStyle.colors.bgAlt
property real _blend: usingAcrylic ? AcrylicController.uiTransluency : 0
layer.enabled: true
layer.effect: ShaderEffect {
property color overlay: root.usingAcrylic ? root.tintColor : root.alternativeColor
property color overlay: VLCStyle.colors.blendColors(root.tintColor, root.alternativeColor, root._blend)
blending: false
fragmentShader: "
......