summaryrefslogtreecommitdiff
path: root/somebar/src/bar.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'somebar/src/bar.hpp')
-rw-r--r--somebar/src/bar.hpp74
1 files changed, 0 insertions, 74 deletions
diff --git a/somebar/src/bar.hpp b/somebar/src/bar.hpp
deleted file mode 100644
index 176a1bc..0000000
--- a/somebar/src/bar.hpp
+++ /dev/null
@@ -1,74 +0,0 @@
-// somebar - dwl bar
-// See LICENSE file for copyright and license details.
-
-#pragma once
-#include <optional>
-#include <string>
-#include <vector>
-#include <wayland-client.h>
-#include "wlr-layer-shell-unstable-v1-client-protocol.h"
-#include "common.hpp"
-#include "shm_buffer.hpp"
-
-class BarComponent {
- std::unique_ptr<std::string> _text;
-public:
- BarComponent();
- explicit BarComponent(wl_unique_ptr<PangoLayout> layout);
- int width() const;
- void setText(const std::string& text);
- wl_unique_ptr<PangoLayout> pangoLayout;
- int x {0};
-};
-
-struct Tag {
- int state;
- int numClients;
- int focusedClient;
- BarComponent component;
-};
-
-struct Monitor;
-class Bar {
- static const zwlr_layer_surface_v1_listener _layerSurfaceListener;
- static const wl_callback_listener _frameListener;
-
- wl_unique_ptr<wl_surface> _surface;
- wl_unique_ptr<zwlr_layer_surface_v1> _layerSurface;
- wl_unique_ptr<PangoContext> _pangoContext;
- std::optional<ShmBuffer> _bufs;
- std::vector<Tag> _tags;
- BarComponent _layoutCmp, _titleCmp, _statusCmp;
- bool _selected;
- bool _invalid {false};
-
- // only vaild during render()
- cairo_t* _painter {nullptr};
- int _x;
- ColorScheme _colorScheme;
-
- void layerSurfaceConfigure(uint32_t serial, uint32_t width, uint32_t height);
- void render();
- void renderTags();
- void renderStatus();
-
- // low-level rendering
- void setColorScheme(const ColorScheme& scheme, bool invert = false);
- void beginFg();
- void beginBg();
- void renderComponent(BarComponent& component);
- BarComponent createComponent(const std::string& initial = {});
-public:
- Bar();
- const wl_surface* surface() const;
- bool visible() const;
- void show(wl_output* output);
- void hide();
- void setTag(int tag, int state, int numClients, int focusedClient);
- void setSelected(bool selected);
- void setLayout(const std::string& layout);
- void setTitle(const std::string& title);
- void setStatus(const std::string& status);
- void invalidate();
- void click(Monitor* mon, int x, int y, int btn);
-};