Configurable font
This commit is contained in:
parent
120af1612f
commit
41e2b7286d
24
src/bar.cpp
24
src/bar.cpp
|
@ -14,7 +14,16 @@ const zwlr_layer_surface_v1_listener Bar::_layerSurfaceListener = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static QFont getFont()
|
||||||
|
{
|
||||||
|
QFont font {fontFamily, fontSizePt};
|
||||||
|
font.setBold(fontBold);
|
||||||
|
return font;
|
||||||
|
}
|
||||||
|
|
||||||
Bar::Bar(const wl_output *output)
|
Bar::Bar(const wl_output *output)
|
||||||
|
: _font {getFont()}
|
||||||
|
, _fontMetrics {_font}
|
||||||
{
|
{
|
||||||
_surface = wl_compositor_create_surface(compositor);
|
_surface = wl_compositor_create_surface(compositor);
|
||||||
_layerSurface = zwlr_layer_shell_v1_get_layer_surface(wlrLayerShell,
|
_layerSurface = zwlr_layer_shell_v1_get_layer_surface(wlrLayerShell,
|
||||||
|
@ -23,6 +32,10 @@ Bar::Bar(const wl_output *output)
|
||||||
auto anchor = topbar ? ZWLR_LAYER_SURFACE_V1_ANCHOR_TOP : ZWLR_LAYER_SURFACE_V1_ANCHOR_BOTTOM;
|
auto anchor = topbar ? ZWLR_LAYER_SURFACE_V1_ANCHOR_TOP : ZWLR_LAYER_SURFACE_V1_ANCHOR_BOTTOM;
|
||||||
zwlr_layer_surface_v1_set_anchor(_layerSurface,
|
zwlr_layer_surface_v1_set_anchor(_layerSurface,
|
||||||
anchor | ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT | ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT);
|
anchor | ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT | ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT);
|
||||||
|
|
||||||
|
auto barSize = _fontMetrics.ascent() + _fontMetrics.descent() + paddingY * 2;
|
||||||
|
_textY = _fontMetrics.ascent() + paddingY;
|
||||||
|
|
||||||
zwlr_layer_surface_v1_set_size(_layerSurface, 0, barSize);
|
zwlr_layer_surface_v1_set_size(_layerSurface, 0, barSize);
|
||||||
zwlr_layer_surface_v1_set_exclusive_zone(_layerSurface, barSize);
|
zwlr_layer_surface_v1_set_exclusive_zone(_layerSurface, barSize);
|
||||||
wl_surface_commit(_surface);
|
wl_surface_commit(_surface);
|
||||||
|
@ -56,15 +69,10 @@ void Bar::render()
|
||||||
};
|
};
|
||||||
auto painter = QPainter {&img};
|
auto painter = QPainter {&img};
|
||||||
_painter = &painter;
|
_painter = &painter;
|
||||||
auto font = painter.font();
|
painter.setFont(_font);
|
||||||
font.setBold(true);
|
|
||||||
font.setPixelSize(18);
|
|
||||||
painter.setFont(font);
|
|
||||||
|
|
||||||
setColorScheme(colorActive);
|
setColorScheme(colorActive);
|
||||||
painter.fillRect(0, 0, img.width(), img.height(), painter.brush());
|
painter.fillRect(0, 0, img.width(), img.height(), painter.brush());
|
||||||
_fontMetrics.emplace(painter.font());
|
|
||||||
_textY = _fontMetrics->ascent() + paddingY;
|
|
||||||
renderTags(painter);
|
renderTags(painter);
|
||||||
|
|
||||||
_painter = nullptr;
|
_painter = nullptr;
|
||||||
|
@ -85,7 +93,7 @@ void Bar::renderTags(QPainter &painter)
|
||||||
for (const auto &tag : _tags) {
|
for (const auto &tag : _tags) {
|
||||||
auto size = textWidth(tag.name) + paddingX*2;
|
auto size = textWidth(tag.name) + paddingX*2;
|
||||||
setColorScheme(tag.active ? colorActive : colorInactive);
|
setColorScheme(tag.active ? colorActive : colorInactive);
|
||||||
painter.fillRect(x, 0, size, barSize, _painter->brush());
|
painter.fillRect(x, 0, size, _bufs->height, _painter->brush());
|
||||||
painter.drawText(paddingX+x, _textY, tag.name);
|
painter.drawText(paddingX+x, _textY, tag.name);
|
||||||
x += size;
|
x += size;
|
||||||
}
|
}
|
||||||
|
@ -93,5 +101,5 @@ void Bar::renderTags(QPainter &painter)
|
||||||
|
|
||||||
int Bar::textWidth(const QString &text)
|
int Bar::textWidth(const QString &text)
|
||||||
{
|
{
|
||||||
return _fontMetrics->size(Qt::TextSingleLine, text).width();
|
return _fontMetrics.size(Qt::TextSingleLine, text).width();
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,8 @@ class Bar {
|
||||||
wl_surface *_surface {nullptr};
|
wl_surface *_surface {nullptr};
|
||||||
zwlr_layer_surface_v1 *_layerSurface {nullptr};
|
zwlr_layer_surface_v1 *_layerSurface {nullptr};
|
||||||
QPainter *_painter {nullptr};
|
QPainter *_painter {nullptr};
|
||||||
std::optional<QFontMetrics> _fontMetrics;
|
QFont _font;
|
||||||
|
QFontMetrics _fontMetrics;
|
||||||
std::optional<ShmBuffer> _bufs;
|
std::optional<ShmBuffer> _bufs;
|
||||||
std::vector<Tag> _tags;
|
std::vector<Tag> _tags;
|
||||||
int _textY;
|
int _textY;
|
||||||
|
|
|
@ -4,10 +4,14 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#include "common.hpp"
|
#include "common.hpp"
|
||||||
|
|
||||||
constexpr int barSize = 26;
|
|
||||||
constexpr bool topbar = 1;
|
constexpr bool topbar = 1;
|
||||||
|
|
||||||
constexpr int paddingX = 10;
|
constexpr int paddingX = 10;
|
||||||
constexpr int paddingY = 3;
|
constexpr int paddingY = 3;
|
||||||
|
|
||||||
|
constexpr const char *fontFamily = "Source Sans Pro";
|
||||||
|
constexpr int fontSizePt = 12;
|
||||||
|
constexpr bool fontBold = true;
|
||||||
|
|
||||||
constexpr ColorScheme colorInactive = {QColor(255, 255, 255), QColor(0, 0, 0)};
|
constexpr ColorScheme colorInactive = {QColor(255, 255, 255), QColor(0, 0, 0)};
|
||||||
constexpr ColorScheme colorActive = {QColor(255, 255, 255), QColor(0, 0, 255)};
|
constexpr ColorScheme colorActive = {QColor(255, 255, 255), QColor(0, 0, 255)};
|
||||||
|
|
Loading…
Reference in New Issue