Inkscape
Vector Graphics Editor
Loading...
Searching...
No Matches
font-tags.h
Go to the documentation of this file.
1// SPDX-License-Identifier: GPL-2.0-or-later
2
3#include <string>
4#include <vector>
5#include <unordered_map>
6#include <set>
7#include <pangomm.h>
8
9namespace std {
10 template<>
11 struct hash<Glib::RefPtr<Pango::FontFace>> {
12 ::std::size_t operator () (const Glib::RefPtr<Pango::FontFace>& face) const {
13 return ::std::hash<void*>()(face.get());
14 }
15 };
16}
17
18namespace Inkscape {
19
20struct FontTag {
21 std::string tag;
22 Glib::ustring display_name;
23
24 bool operator == (const FontTag& ft) const { return tag == ft.tag && display_name == ft.display_name; }
25};
26
27class FontTags {
28public:
29 static FontTags& get();
30
31 std::vector<FontTag> get_tags() const;
32 void add_tag(const FontTag& tag);
33
34 std::set<std::string> get_font_tags(Glib::RefPtr<Pango::FontFace>& face) const;
35 void tag_font(Glib::RefPtr<Pango::FontFace>& face, std::string tag);
36
37 const std::vector<FontTag>& get_selected_tags() const;
38 bool select_tag(const std::string& tag_id, bool selected);
39 bool is_tag_selected(const std::string& tag_id) const;
40 bool deselect_all();
41
42 const FontTag* find_tag(const std::string& tag_id) const;
43
44 sigc::signal<void (const FontTag*, bool)>& get_signal_tag_changed();
45
46private:
47 FontTags();
48 std::unordered_map<Glib::RefPtr<Pango::FontFace>, std::set<std::string>> _map;
49 std::vector<FontTag> _tags;
50 std::vector<FontTag> _selected;
51 sigc::signal<void (const FontTag*, bool)> _signal_tag_changed;
52};
53
54} // namespace
sigc::signal< void(const FontTag *, bool)> _signal_tag_changed
Definition font-tags.h:51
bool is_tag_selected(const std::string &tag_id) const
Definition font-tags.cpp:61
std::vector< FontTag > _selected
Definition font-tags.h:50
static FontTags & get()
Definition font-tags.cpp:9
std::unordered_map< Glib::RefPtr< Pango::FontFace >, std::set< std::string > > _map
Definition font-tags.h:48
sigc::signal< void(const FontTag *, bool)> & get_signal_tag_changed()
const FontTag * find_tag(const std::string &tag_id) const
Definition font-tags.cpp:53
bool select_tag(const std::string &tag_id, bool selected)
Definition font-tags.cpp:75
const std::vector< FontTag > & get_selected_tags() const
Definition font-tags.cpp:49
std::set< std::string > get_font_tags(Glib::RefPtr< Pango::FontFace > &face) const
Definition font-tags.cpp:35
void tag_font(Glib::RefPtr< Pango::FontFace > &face, std::string tag)
Definition font-tags.cpp:43
std::vector< FontTag > get_tags() const
Definition font-tags.cpp:27
std::vector< FontTag > _tags
Definition font-tags.h:49
void add_tag(const FontTag &tag)
Definition font-tags.cpp:31
Helper class to stream background task notifications as a series of messages.
STL namespace.
Glib::ustring display_name
Definition font-tags.h:22
std::string tag
Definition font-tags.h:21