view include/animone/player.h @ 23:1cfa7d57c022

dep/animone: add experimental accessibility strategy I also moved most of the functions out of util/win32.cc, because that file is meant for things that are shared between the different functions, and currently that is only wide string conversion helpers.
author Paper <paper@paper.us.eu.org>
date Wed, 19 Jun 2024 23:13:55 -0400
parents 973734ebd2be
children 60ded877339b
line wrap: on
line source

#ifndef ANIMONE_ANIMONE_PLAYER_H_
#define ANIMONE_ANIMONE_PLAYER_H_

#include <string>
#include <vector>
#include <map>

namespace animone {

enum class ExecutablePlatform {
	Posix,   // Posix platforms that aren't OS X
	Win32,   // Windows
	Xnu,     // OS X
	Unknown, // ...
};

enum class WindowPlatform {
	Quartz,  // OS X
	Win32,   // Windows
	X11,     // X11
	Unknown, // ...
};

enum class Strategy {
	WindowTitle,
	OpenFiles,
	UiAutomation // unused
};

enum class PlayerType {
	Default,
	WebBrowser // unused
};

struct Player {
	PlayerType type = PlayerType::Default;
	std::string name;
	std::string window_title_format;
	std::map<WindowPlatform, std::vector<std::string>> windows;
	std::map<ExecutablePlatform, std::vector<std::string>> executables;
	std::vector<Strategy> strategies;
};

bool ParsePlayersData(const std::string& data, std::vector<Player>& players);
bool ParsePlayersFile(const std::string& path, std::vector<Player>& players);

} // namespace animone

#endif // ANIMONE_ANIMONE_PLAYER_H_