File: utils.hpp

package info (click to toggle)
polybar 3.7.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,108 kB
  • sloc: cpp: 30,424; python: 3,750; sh: 284; makefile: 83
file content (47 lines) | stat: -rw-r--r-- 894 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#pragma once

#include <cairo/cairo-ft.h>

#include "common.hpp"

POLYBAR_NS

namespace cairo {
namespace utils {
  /**
   * @brief RAII wrapper used acquire cairo_device_t
   */
  class device_lock {
   public:
    explicit device_lock(cairo_device_t* device);
    ~device_lock();
    operator bool() const;
    operator cairo_device_t*() const;

   private:
    cairo_device_t* m_device{nullptr};
  };

  /**
   * @brief RAII wrapper used to access the underlying
   * FT_Face of a scaled font face
   */
  class ft_face_lock {
   public:
    explicit ft_face_lock(cairo_scaled_font_t* font);
    ~ft_face_lock();
    operator FT_Face() const;

   private:
    cairo_scaled_font_t* m_font;
    FT_Face m_face;
  };

  /**
   * @see <cairo/cairo.h>
   */
  cairo_operator_t str2operator(const string& mode, cairo_operator_t fallback);
} // namespace utils
} // namespace cairo

POLYBAR_NS_END