diff options
author | Dylam De La Torre <DyXel04@gmail.com> | 2021-11-23 05:21:56 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-23 04:21:56 +0000 |
commit | a51a54bc5979a2491f152abc47ad54e6b63f27c8 (patch) | |
tree | ce67092b2f6df366033a65a6111e4650866766b2 /util.hpp | |
parent | d88079000a79e6bcbe51c5a2868d57b303b5fcb6 (diff) | |
download | abaddon-portaudio-a51a54bc5979a2491f152abc47ad54e6b63f27c8.tar.gz abaddon-portaudio-a51a54bc5979a2491f152abc47ad54e6b63f27c8.zip |
Restructure source and resource files (#46)
importantly, res is now res/res and css is now res/css
Diffstat (limited to 'util.hpp')
-rw-r--r-- | util.hpp | 119 |
1 files changed, 0 insertions, 119 deletions
diff --git a/util.hpp b/util.hpp deleted file mode 100644 index feaf08d..0000000 --- a/util.hpp +++ /dev/null @@ -1,119 +0,0 @@ -#pragma once -#include <cctype> -#include <algorithm> -#include <cstdlib> -#include <vector> -#include <functional> -#include <iterator> -#include <sstream> -#include <string> -#include <iomanip> -#include <regex> -#include <mutex> -#include <condition_variable> -#include <optional> -#include <type_traits> -#include <gtkmm.h> - -namespace util { -template<typename T> -struct is_optional : ::std::false_type {}; - -template<typename T> -struct is_optional<::std::optional<T>> : ::std::true_type {}; - -bool IsFolder(std::string_view path); - -bool IsFile(std::string_view path); -} // namespace util - -class Semaphore { -public: - Semaphore(int count = 0); - void notify(); - void wait(); - -private: - std::mutex m_mutex; - std::condition_variable m_cv; - int m_count; -}; - -void LaunchBrowser(Glib::ustring url); -void GetImageDimensions(int inw, int inh, int &outw, int &outh, int clampw = 400, int clamph = 300); -std::string IntToCSSColor(int color); -Gdk::RGBA IntToRGBA(int color); -void AddWidgetMenuHandler(Gtk::Widget *widget, Gtk::Menu &menu); -void AddWidgetMenuHandler(Gtk::Widget *widget, Gtk::Menu &menu, sigc::slot<void()> pre_callback); -std::vector<std::string> StringSplit(const std::string &str, const char *delim); -std::string GetExtension(std::string url); -bool IsURLViewableImage(const std::string &url); -std::vector<uint8_t> ReadWholeFile(std::string path); -std::string HumanReadableBytes(uint64_t bytes); -std::string FormatISO8601(const std::string &in, int extra_offset = 0, const std::string &fmt = "%x %X"); -void AddPointerCursor(Gtk::Widget &widget); - -template<typename T> -struct Bitwise { - static const bool enable = false; -}; - -template<typename T> -typename std::enable_if<Bitwise<T>::enable, T>::type operator|(T a, T b) { - using x = typename std::underlying_type<T>::type; - return static_cast<T>(static_cast<x>(a) | static_cast<x>(b)); -} - -template<typename T> -typename std::enable_if<Bitwise<T>::enable, T>::type operator|=(T &a, T b) { - using x = typename std::underlying_type<T>::type; - a = static_cast<T>(static_cast<x>(a) | static_cast<x>(b)); - return a; -} - -template<typename T> -typename std::enable_if<Bitwise<T>::enable, T>::type operator&(T a, T b) { - using x = typename std::underlying_type<T>::type; - return static_cast<T>(static_cast<x>(a) & static_cast<x>(b)); -} - -template<typename T> -typename std::enable_if<Bitwise<T>::enable, T>::type operator&=(T &a, T b) { - using x = typename std::underlying_type<T>::type; - a = static_cast<T>(static_cast<x>(a) & static_cast<x>(b)); - return a; -} - -template<typename T> -typename std::enable_if<Bitwise<T>::enable, T>::type operator~(T a) { - return static_cast<T>(~static_cast<typename std::underlying_type<T>::type>(a)); -} - -template<typename T> -inline void AlphabeticalSort(T start, T end, std::function<std::string(const typename std::iterator_traits<T>::value_type &)> get_string) { - std::sort(start, end, [&](const auto &a, const auto &b) -> bool { - const std::string &s1 = get_string(a); - const std::string &s2 = get_string(b); - - if (s1.empty() || s2.empty()) - return s1 < s2; - - bool ac[] = { - !isalnum(s1[0]), - !isalnum(s2[0]), - !!isdigit(s1[0]), - !!isdigit(s2[0]), - !!isalpha(s1[0]), - !!isalpha(s2[0]), - }; - - if ((ac[0] && ac[1]) || (ac[2] && ac[3]) || (ac[4] && ac[5])) - return s1 < s2; - - return ac[0] || ac[5]; - }); -} - -void ScrollListBoxToSelected(Gtk::ListBox &list); - -bool StringContainsCaseless(const Glib::ustring &str, const Glib::ustring &sub); |