lib_ui/ui/style/style_core_direction.h
2019-09-17 17:48:58 +03:00

63 lines
1.7 KiB
C++

// This file is part of Desktop App Toolkit,
// a set of libraries for developing nice desktop applications.
//
// For license and copyright information please follow this link:
// https://github.com/desktop-app/legal/blob/master/LEGAL
//
#pragma once
#include "ui/style/style_core_types.h"
#include <QtCore/QPoint>
#include <QtCore/QRect>
namespace style {
[[nodiscard]] bool RightToLeft();
void SetRightToLeft(bool rtl);
[[nodiscard]] inline Qt::LayoutDirection LayoutDirection() {
return RightToLeft() ? Qt::RightToLeft : Qt::LeftToRight;
}
inline QRect centerrect(const QRect &inRect, const QRect &rect) {
return QRect(
inRect.x() + (inRect.width() - rect.width()) / 2,
inRect.y() + (inRect.height() - rect.height()) / 2,
rect.width(),
rect.height());
}
inline QRect centerrect(const QRect &inRect, const style::icon &icon) {
return centerrect(inRect, QRect(0, 0, icon.width(), icon.height()));
}
inline QPoint rtlpoint(int x, int y, int outerw) {
return QPoint(RightToLeft() ? (outerw - x) : x, y);
}
inline QPoint rtlpoint(const QPoint &p, int outerw) {
return RightToLeft() ? QPoint(outerw - p.x(), p.y()) : p;
}
inline QPointF rtlpoint(const QPointF &p, int outerw) {
return RightToLeft() ? QPointF(outerw - p.x(), p.y()) : p;
}
inline QRect rtlrect(int x, int y, int w, int h, int outerw) {
return QRect(RightToLeft() ? (outerw - x - w) : x, y, w, h);
}
inline QRect rtlrect(const QRect &r, int outerw) {
return RightToLeft()
? QRect(outerw - r.x() - r.width(), r.y(), r.width(), r.height())
: r;
}
inline QRectF rtlrect(const QRectF &r, int outerw) {
return RightToLeft()
? QRectF(outerw - r.x() - r.width(), r.y(), r.width(), r.height())
: r;
}
} // namespace style