5 #include <QApplication>
7 # define WIN32_LEAN_AND_MEAN
8 # include <qt_windows.h>
10 #if !TTK_QT_VERSION_CHECK(5,0,0)
11 # include <QDesktopWidget>
13 #if defined Q_OS_LINUX
14 # include <X11/Xlib.h>
24 if(sr.left() != dr.left())
26 info.
m_size = std::abs(sr.left() - dr.left());
29 else if(sr.right() != dr.right())
31 info.
m_size = std::abs(sr.right() - dr.right());
34 else if(sr.top() != dr.top())
36 info.
m_size = std::abs(sr.top() - dr.top());
39 else if(sr.bottom() != dr.bottom())
41 info.
m_size = std::abs(sr.bottom() - dr.bottom());
54 #if TTK_QT_VERSION_CHECK(5,0,0)
55 const QList<QScreen*> &screens = QApplication::screens();
56 QRegion virtualGeometry;
57 for(QScreen *screen : screens)
59 virtualGeometry += screen->geometry();
61 return virtualGeometry.boundingRect();
63 QDesktopWidget *widget = QApplication::desktop();
64 return widget ? widget->geometry() : QRect();
70 #if TTK_QT_VERSION_CHECK(5,0,0)
71 const QList<QScreen*> &screens = QApplication::screens();
72 return (index < 0 || index >= screens.count()) ? QRect() : screens[index]->geometry();
74 QDesktopWidget *widget = QApplication::desktop();
75 return widget ? widget->screenGeometry(index) : QRect();
81 #if TTK_QT_VERSION_CHECK(5,0,0)
82 const QList<QScreen*> &screens = QApplication::screens();
83 return (index < 0 || index >= screens.count()) ? QRect() : screens[index]->availableGeometry();
85 QDesktopWidget *widget = QApplication::desktop();
86 return widget ? widget->availableGeometry(index) : QRect();
92 #if TTK_QT_VERSION_CHECK(5,0,0)
93 return QApplication::screens().count();
95 return QApplication::desktop()->screenCount();
105 const QPoint &pos = QCursor::pos();
106 for(
int i = 0; i <
count; ++i)
108 #if TTK_QT_VERSION_CHECK(5,0,0)
109 if(QApplication::screens().at(i)->
geometry().contains(pos))
131 widget->move(rect.x() + (rect.width() - widget->width()) / 2, rect.y() + (rect.height() - widget->height()) / 2);
136 #if TTK_QT_VERSION_CHECK(5,0,0)
137 return widget->grab(rect);
139 return QPixmap::grabWidget(widget, rect);
145 QWidget widget(
nullptr, Qt::Desktop);
146 widget.setVisible(
false);
148 #if TTK_QT_VERSION_CHECK(5,0,0)
149 QScreen *screen = QApplication::primaryScreen();
150 return screen ? screen->grabWindow(widget.winId(), x, y, w, h) : QPixmap();
152 return QPixmap::grabWindow(widget.winId(), x, y, w, h);
162 HDC screen = GetDC(GetDesktopWindow());
163 dpiSize.setWidth(GetDeviceCaps(screen, LOGPIXELSX));
164 dpiSize.setHeight(GetDeviceCaps(screen, LOGPIXELSY));
165 ReleaseDC(GetDesktopWindow(), screen);
166 #elif defined Q_OS_LINUX
167 Display *dp = XOpenDisplay(
nullptr);
174 const char *resource = XResourceManagerString(dp);
177 const QString data(resource);
179 if(regx.
match(data) != -1)
185 const int screen = 0;
186 const double x = (DisplayWidth(dp, screen) * 25.4) / DisplayWidthMM(dp, screen);
187 const double y = (DisplayHeight(dp, screen) * 25.4) / DisplayHeightMM(dp, screen);
192 dpiSize.setWidth(x + 0.5);
193 dpiSize.setHeight(y + 0.5);
197 dpiSize.setWidth(dpi + 0.5);
198 dpiSize.setHeight(dpi + 0.5);
202 #elif defined Q_OS_MAC
206 QApplication(count,
nullptr);
209 # if TTK_QT_VERSION_CHECK(5,0,0)
210 QScreen *screen = QApplication::primaryScreen();
213 dpiSize.setWidth(screen->logicalDotsPerInchX());
214 dpiSize.setHeight(screen->logicalDotsPerInchY());
218 QDesktopWidget* desktop = QApplication::desktop();
221 dpiSize.setWidth(desktop->logicalDpiX());
222 dpiSize.setHeight(desktop->logicalDpiY());
236 #if TTK_QT_VERSION_CHECK(5,5,0)
237 const QList<QScreen*> &screens = QApplication::screens();
238 return (index < 0 || index >= screens.count()) ? 1.0 : screens[index]->
devicePixelRatio();
242 return 1.0 * (size.width() + size.height()) / 2 /
DEFAULT_DPI;
#define TTKStaticCast(x, y)
TTK::Direction m_direction
static qreal devicePixelRatio(int index=0)
QString captured(int index) const
static qreal currentPixelRatio()
static constexpr int DEFAULT_DPI
static QPixmap grabWindow(int x=0, int y=0, int w=-1, int h=-1)
static TaskbarInfo screenTaskbar(int index=0)
static void centerWidget(QWidget *widget)
static int currentIndex()
static QRect currentGeometry()
static int deviceDotsPerInch(int index=0)
static QSize generateDPIValue()
static QPixmap grabWidget(QWidget *widget, const QRect &rect)
The class of the regular expression.
static QRect screenGeometry(int index=0)
int match(const QString &str, int pos=0)
static QRect availableGeometry(int index=0)