Added support for controller types.
|
@ -37,6 +37,7 @@ MetaDataDecl gameDecls[] = {
|
|||
{"nomultiscrape", MD_BOOL, "false", false, "exclude from multi-scraper", "enter no multi-scrape off/on", false},
|
||||
{"hidemetadata", MD_BOOL, "false", false, "hide metadata fields", "enter hide metadata off/on", false},
|
||||
{"playcount", MD_INT, "0", false, "times played", "enter number of times played", false},
|
||||
{"controller", MD_CONTROLLER, "", false, "controller type", "select controller type", false},
|
||||
{"altemulator", MD_ALT_EMULATOR, "", false, "alternative emulator", "select alternative emulator", false},
|
||||
{"lastplayed", MD_TIME, "0", true, "last played", "enter last played date", false}
|
||||
};
|
||||
|
@ -57,6 +58,7 @@ MetaDataDecl folderDecls[] = {
|
|||
{"broken", MD_BOOL, "false", false, "broken/not working", "enter broken off/on", false},
|
||||
{"nomultiscrape", MD_BOOL, "false", false, "exclude from multi-scraper", "enter no multi-scrape off/on", false},
|
||||
{"hidemetadata", MD_BOOL, "false", false, "hide metadata fields", "enter hide metadata off/on", false},
|
||||
{"controller", MD_CONTROLLER, "", false, "controller type", "select controller type", false},
|
||||
{"lastplayed", MD_TIME, "0", true, "last played", "enter last played date", false}
|
||||
};
|
||||
// clang-format on
|
||||
|
|
|
@ -32,6 +32,7 @@ enum MetaDataType {
|
|||
|
||||
// Specialized types.
|
||||
MD_MULTILINE_STRING,
|
||||
MD_CONTROLLER,
|
||||
MD_ALT_EMULATOR,
|
||||
MD_PATH,
|
||||
MD_RATING,
|
||||
|
|
|
@ -53,6 +53,12 @@ GuiMetaDataEd::GuiMetaDataEd(Window* window,
|
|||
, mMediaFilesUpdated{false}
|
||||
, mInvalidEmulatorEntry{false}
|
||||
{
|
||||
mControllerTypes = BadgesComponent::getControllerTypes();
|
||||
|
||||
// Remove the last "unknown" controller entry.
|
||||
if (mControllerTypes.size() > 1)
|
||||
mControllerTypes.pop_back();
|
||||
|
||||
addChild(&mBackground);
|
||||
addChild(&mGrid);
|
||||
|
||||
|
@ -137,8 +143,7 @@ GuiMetaDataEd::GuiMetaDataEd(Window* window,
|
|||
ed = std::make_shared<SwitchComponent>(window);
|
||||
// Make the switches slightly smaller.
|
||||
glm::vec2 switchSize{ed->getSize() * 0.9f};
|
||||
ed->setResize(switchSize.x, switchSize.y);
|
||||
ed->setOrigin(-0.05f, -0.09f);
|
||||
ed->setResize(ceilf(switchSize.x), switchSize.y);
|
||||
|
||||
ed->setChangedColor(ICONCOLOR_USERMARKED);
|
||||
row.addElement(ed, false, true);
|
||||
|
@ -175,6 +180,89 @@ GuiMetaDataEd::GuiMetaDataEd(Window* window,
|
|||
std::placeholders::_2);
|
||||
break;
|
||||
}
|
||||
case MD_CONTROLLER: {
|
||||
ed = std::make_shared<TextComponent>(window, "",
|
||||
Font::get(FONT_SIZE_SMALL, FONT_PATH_LIGHT),
|
||||
0x777777FF, ALIGN_RIGHT);
|
||||
row.addElement(ed, true);
|
||||
|
||||
auto spacer = std::make_shared<GuiComponent>(mWindow);
|
||||
spacer->setSize(Renderer::getScreenWidth() * 0.005f, 0.0f);
|
||||
row.addElement(spacer, false);
|
||||
|
||||
auto bracket = std::make_shared<ImageComponent>(mWindow);
|
||||
bracket->setImage(":/graphics/arrow.svg");
|
||||
bracket->setResize(glm::vec2{0.0f, lbl->getFont()->getLetterHeight()});
|
||||
row.addElement(bracket, false);
|
||||
|
||||
const std::string title = iter->displayPrompt;
|
||||
|
||||
// OK callback (apply new value to ed).
|
||||
auto updateVal = [ed, originalValue](const std::string& newVal) {
|
||||
ed->setValue(newVal);
|
||||
if (newVal == BadgesComponent::getDisplayName(originalValue))
|
||||
ed->setColor(DEFAULT_TEXTCOLOR);
|
||||
else
|
||||
ed->setColor(TEXTCOLOR_USERMARKED);
|
||||
};
|
||||
|
||||
row.makeAcceptInputHandler([this, title, scraperParams, ed, updateVal,
|
||||
originalValue] {
|
||||
GuiSettings* s = new GuiSettings(mWindow, title);
|
||||
|
||||
for (auto controllerType : mControllerTypes) {
|
||||
std::string selectedLabel = ed->getValue();
|
||||
std::string label;
|
||||
ComponentListRow row;
|
||||
|
||||
std::shared_ptr<TextComponent> labelText = std::make_shared<TextComponent>(
|
||||
mWindow, label, Font::get(FONT_SIZE_MEDIUM), 0x777777FF);
|
||||
labelText->setSelectable(true);
|
||||
labelText->setValue(controllerType.displayName);
|
||||
|
||||
label = controllerType.displayName;
|
||||
|
||||
row.addElement(labelText, true);
|
||||
|
||||
row.makeAcceptInputHandler([s, updateVal, controllerType] {
|
||||
updateVal(controllerType.displayName);
|
||||
delete s;
|
||||
});
|
||||
|
||||
// Select the row that corresponds to the selected label.
|
||||
if (selectedLabel == label)
|
||||
s->addRow(row, true);
|
||||
else
|
||||
s->addRow(row, false);
|
||||
}
|
||||
|
||||
// If a value is set, then display "Clear entry" as the last entry.
|
||||
if (ed->getValue() != "") {
|
||||
ComponentListRow row;
|
||||
std::shared_ptr<TextComponent> clearText = std::make_shared<TextComponent>(
|
||||
mWindow, ViewController::CROSSEDCIRCLE_CHAR + " CLEAR ENTRY",
|
||||
Font::get(FONT_SIZE_MEDIUM), 0x777777FF);
|
||||
clearText->setSelectable(true);
|
||||
row.addElement(clearText, true);
|
||||
row.makeAcceptInputHandler([s, ed] {
|
||||
ed->setValue("");
|
||||
delete s;
|
||||
});
|
||||
s->addRow(row, false);
|
||||
}
|
||||
|
||||
float aspectValue = 1.778f / Renderer::getScreenAspectRatio();
|
||||
float maxWidthModifier = glm::clamp(0.64f * aspectValue, 0.42f, 0.92f);
|
||||
float maxWidth =
|
||||
static_cast<float>(Renderer::getScreenWidth()) * maxWidthModifier;
|
||||
|
||||
s->setMenuSize(glm::vec2{maxWidth, s->getMenuSize().y});
|
||||
s->setMenuPosition(
|
||||
glm::vec3{(s->getSize().x - maxWidth) / 2.0f, mPosition.y, mPosition.z});
|
||||
mWindow->pushGui(s);
|
||||
});
|
||||
break;
|
||||
}
|
||||
case MD_ALT_EMULATOR: {
|
||||
mInvalidEmulatorEntry = false;
|
||||
|
||||
|
@ -296,11 +384,7 @@ GuiMetaDataEd::GuiMetaDataEd(Window* window,
|
|||
s->addRow(row, false);
|
||||
}
|
||||
|
||||
// Adjust the width depending on the aspect ratio of the screen, to make the
|
||||
// screen look somewhat coherent regardless of screen type. The 1.778 aspect
|
||||
// ratio value is the 16:9 reference.
|
||||
float aspectValue = 1.778f / Renderer::getScreenAspectRatio();
|
||||
|
||||
float maxWidthModifier = glm::clamp(0.64f * aspectValue, 0.42f, 0.92f);
|
||||
float maxWidth =
|
||||
static_cast<float>(Renderer::getScreenWidth()) * maxWidthModifier;
|
||||
|
@ -390,10 +474,19 @@ GuiMetaDataEd::GuiMetaDataEd(Window* window,
|
|||
assert(ed);
|
||||
mList->addRow(row);
|
||||
|
||||
if (iter->type == MD_ALT_EMULATOR && mInvalidEmulatorEntry == true)
|
||||
if (iter->type == MD_ALT_EMULATOR && mInvalidEmulatorEntry == true) {
|
||||
ed->setValue(ViewController::EXCLAMATION_CHAR + " " + originalValue);
|
||||
else
|
||||
}
|
||||
else if (iter->type == MD_CONTROLLER && mMetaData->get(iter->key) != "") {
|
||||
std::string displayName = BadgesComponent::getDisplayName(mMetaData->get(iter->key));
|
||||
if (displayName != "unknown")
|
||||
ed->setValue(displayName);
|
||||
else
|
||||
ed->setValue(ViewController::EXCLAMATION_CHAR + " " + mMetaData->get(iter->key));
|
||||
}
|
||||
else {
|
||||
ed->setValue(mMetaData->get(iter->key));
|
||||
}
|
||||
|
||||
mEditors.push_back(ed);
|
||||
}
|
||||
|
@ -524,6 +617,13 @@ void GuiMetaDataEd::save()
|
|||
if (mMetaDataDecl.at(i).key == "altemulator" && mInvalidEmulatorEntry == true)
|
||||
continue;
|
||||
|
||||
if (mMetaDataDecl.at(i).key == "controller" && mEditors.at(i)->getValue() != "") {
|
||||
std::string shortName = BadgesComponent::getShortName(mEditors.at(i)->getValue());
|
||||
if (shortName != "unknown")
|
||||
mMetaData->set(mMetaDataDecl.at(i).key, shortName);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!showHiddenGames && mMetaDataDecl.at(i).key == "hidden" &&
|
||||
mEditors.at(i)->getValue() != mMetaData->get("hidden"))
|
||||
hideGameWhileHidden = true;
|
||||
|
@ -668,6 +768,12 @@ void GuiMetaDataEd::close()
|
|||
if (key == "altemulator" && mInvalidEmulatorEntry == true)
|
||||
continue;
|
||||
|
||||
if (mMetaDataDecl.at(i).key == "controller" && mEditors.at(i)->getValue() != "") {
|
||||
std::string shortName = BadgesComponent::getShortName(mEditors.at(i)->getValue());
|
||||
if (shortName == "unknown" || mMetaDataValue == shortName)
|
||||
continue;
|
||||
}
|
||||
|
||||
if (mMetaDataValue != mEditorsValue) {
|
||||
metadataUpdated = true;
|
||||
break;
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
|
||||
#include "GuiComponent.h"
|
||||
#include "MetaData.h"
|
||||
#include "components/BadgesComponent.h"
|
||||
#include "components/ComponentGrid.h"
|
||||
#include "components/NinePatchComponent.h"
|
||||
#include "components/ScrollIndicatorComponent.h"
|
||||
|
@ -60,6 +61,7 @@ private:
|
|||
|
||||
ScraperSearchParams mScraperParams;
|
||||
|
||||
std::vector<ControllerTypes> mControllerTypes;
|
||||
std::vector<std::shared_ptr<GuiComponent>> mEditors;
|
||||
|
||||
std::vector<MetaDataDecl> mMetaDataDecl;
|
||||
|
|
|
@ -104,7 +104,7 @@ DetailedGameListView::DetailedGameListView(Window* window, FileData* root)
|
|||
|
||||
// Badges.
|
||||
addChild(&mBadges);
|
||||
mBadges.setOrigin(0.0f, 0.0f);
|
||||
mBadges.setOrigin(0.5f, 0.5f);
|
||||
mBadges.setPosition(mSize.x * 0.8f, mSize.y * 0.7f);
|
||||
mBadges.setSize(mSize.x * 0.15f, mSize.y * 0.2f);
|
||||
mBadges.setDefaultZIndex(50.0f);
|
||||
|
@ -410,15 +410,23 @@ void DetailedGameListView::updateInfoPanel()
|
|||
mPlayers.setValue(file->metadata.get("players"));
|
||||
|
||||
// Populate the badge slots based on game metadata.
|
||||
std::vector<std::string> badgeSlots;
|
||||
std::vector<BadgesComponent::BadgeInfo> badgeSlots;
|
||||
for (auto badge : mBadges.getBadgeTypes()) {
|
||||
if (badge == "altemulator") {
|
||||
BadgesComponent::BadgeInfo badgeInfo;
|
||||
badgeInfo.badgeType = badge;
|
||||
if (badge == "controller") {
|
||||
if (file->metadata.get("controller").compare("") != 0) {
|
||||
badgeInfo.controllerType = file->metadata.get("controller");
|
||||
badgeSlots.push_back(badgeInfo);
|
||||
}
|
||||
}
|
||||
else if (badge == "altemulator") {
|
||||
if (file->metadata.get(badge).compare("") != 0)
|
||||
badgeSlots.push_back(badge);
|
||||
badgeSlots.push_back(badgeInfo);
|
||||
}
|
||||
else {
|
||||
if (file->metadata.get(badge).compare("true") == 0)
|
||||
badgeSlots.push_back(badge);
|
||||
badgeSlots.push_back(badgeInfo);
|
||||
}
|
||||
}
|
||||
mBadges.setBadges(badgeSlots);
|
||||
|
|
|
@ -121,7 +121,7 @@ VideoGameListView::VideoGameListView(Window* window, FileData* root)
|
|||
|
||||
// Badges.
|
||||
addChild(&mBadges);
|
||||
mBadges.setOrigin(0.0f, 0.0f);
|
||||
mBadges.setOrigin(0.5f, 0.5f);
|
||||
mBadges.setPosition(mSize.x * 0.8f, mSize.y * 0.7f);
|
||||
mBadges.setSize(mSize.x * 0.15f, mSize.y * 0.2f);
|
||||
mBadges.setDefaultZIndex(50.0f);
|
||||
|
@ -450,15 +450,23 @@ void VideoGameListView::updateInfoPanel()
|
|||
mPlayers.setValue(file->metadata.get("players"));
|
||||
|
||||
// Populate the badge slots based on game metadata.
|
||||
std::vector<std::string> badgeSlots;
|
||||
std::vector<BadgesComponent::BadgeInfo> badgeSlots;
|
||||
for (auto badge : mBadges.getBadgeTypes()) {
|
||||
if (badge == "altemulator") {
|
||||
BadgesComponent::BadgeInfo badgeInfo;
|
||||
badgeInfo.badgeType = badge;
|
||||
if (badge == "controller") {
|
||||
if (file->metadata.get("controller").compare("") != 0) {
|
||||
badgeInfo.controllerType = file->metadata.get("controller");
|
||||
badgeSlots.push_back(badgeInfo);
|
||||
}
|
||||
}
|
||||
else if (badge == "altemulator") {
|
||||
if (file->metadata.get(badge).compare("") != 0)
|
||||
badgeSlots.push_back(badge);
|
||||
badgeSlots.push_back(badgeInfo);
|
||||
}
|
||||
else {
|
||||
if (file->metadata.get(badge).compare("true") == 0)
|
||||
badgeSlots.push_back(badge);
|
||||
badgeSlots.push_back(badgeInfo);
|
||||
}
|
||||
}
|
||||
mBadges.setBadges(badgeSlots);
|
||||
|
|
|
@ -155,10 +155,12 @@ std::map<std::string, std::map<std::string, ThemeData::ElementPropertyType>> The
|
|||
{"alignment", STRING},
|
||||
{"itemsPerRow", FLOAT},
|
||||
{"rows", FLOAT},
|
||||
{"itemPlacement", STRING},
|
||||
{"itemMargin", NORMALIZED_PAIR},
|
||||
{"slots", STRING},
|
||||
{"controllerPos", NORMALIZED_PAIR},
|
||||
{"controllerSize", FLOAT},
|
||||
{"customBadgeIcon", PATH},
|
||||
{"customControllerIcon", PATH},
|
||||
{"visible", BOOLEAN},
|
||||
{"zIndex", FLOAT}}},
|
||||
{"sound", {{"path", PATH}}},
|
||||
|
@ -519,21 +521,29 @@ void ThemeData::parseElement(const pugi::xml_node& root,
|
|||
}
|
||||
|
||||
// Special parsing instruction for recurring options.
|
||||
// Store as it's attribute to prevent nodes overwriting each other.
|
||||
// Store as its attribute to prevent nodes overwriting each other.
|
||||
if (strcmp(node.name(), "customButtonIcon") == 0) {
|
||||
const auto btn = node.attribute("button").as_string("");
|
||||
if (strcmp(btn, "") == 0)
|
||||
const auto button = node.attribute("button").as_string("");
|
||||
if (strcmp(button, "") == 0)
|
||||
LOG(LogError)
|
||||
<< "<customButtonIcon> element requires the `button` property.";
|
||||
else
|
||||
element.properties[btn] = path;
|
||||
element.properties[button] = path;
|
||||
}
|
||||
else if (strcmp(node.name(), "customBadgeIcon") == 0) {
|
||||
const auto btn = node.attribute("badge").as_string("");
|
||||
if (strcmp(btn, "") == 0)
|
||||
const auto badge = node.attribute("badge").as_string("");
|
||||
if (strcmp(badge, "") == 0)
|
||||
LOG(LogError) << "<customBadgeIcon> element requires the `badge` property.";
|
||||
else
|
||||
element.properties[btn] = path;
|
||||
element.properties[badge] = path;
|
||||
}
|
||||
else if (strcmp(node.name(), "customControllerIcon") == 0) {
|
||||
const auto controller = node.attribute("controller").as_string("");
|
||||
if (strcmp(controller, "") == 0)
|
||||
LOG(LogError)
|
||||
<< "<customControllerIcon> element requires the `controller` property.";
|
||||
else
|
||||
element.properties[controller] = path;
|
||||
}
|
||||
else
|
||||
element.properties[node.name()] = path;
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
#define SLOT_COMPLETED "completed"
|
||||
#define SLOT_KIDGAME "kidgame"
|
||||
#define SLOT_BROKEN "broken"
|
||||
#define SLOT_CONTROLLER "controller"
|
||||
#define SLOT_ALTEMULATOR "altemulator"
|
||||
|
||||
#include "components/BadgesComponent.h"
|
||||
|
@ -19,46 +20,134 @@
|
|||
#include "ThemeData.h"
|
||||
#include "utils/StringUtil.h"
|
||||
|
||||
std::vector<ControllerTypes> BadgesComponent::sControllerTypes;
|
||||
|
||||
// clang-format off
|
||||
|
||||
// The "unknown" controller entry has to be placed last.
|
||||
ControllerTypes sControllerDefinitions [] = {
|
||||
// shortName displayName fileName
|
||||
{"gamepad_generic", "Gamepad (Generic)", ":/graphics/controllers/gamepad_generic.svg"},
|
||||
{"gamepad_xbox", "Gamepad (Xbox)", ":/graphics/controllers/gamepad_xbox.svg"},
|
||||
{"gamepad_playstation", "Gamepad (PlayStation)", ":/graphics/controllers/gamepad_playstation.svg"},
|
||||
{"gamepad_nintendo_nes", "Gamepad (Nintendo NES)", ":/graphics/controllers/gamepad_nintendo_nes.svg"},
|
||||
{"gamepad_nintendo_snes", "Gamepad (Nintendo SNES)", ":/graphics/controllers/gamepad_nintendo_snes.svg"},
|
||||
{"gamepad_nintendo_64", "Gamepad (Nintendo 64)", ":/graphics/controllers/gamepad_nintendo_64.svg"},
|
||||
{"joystick_generic", "Joystick (Generic)", ":/graphics/controllers/joystick_generic.svg"},
|
||||
{"joystick_arcade_2_buttons", "Joystick (Arcade 2 Buttons)", ":/graphics/controllers/joystick_arcade_2_buttons.svg"},
|
||||
{"joystick_arcade_3_buttons", "Joystick (Arcade 3 Buttons)", ":/graphics/controllers/joystick_arcade_3_buttons.svg"},
|
||||
{"joystick_arcade_4_buttons", "Joystick (Arcade 4 Buttons)", ":/graphics/controllers/joystick_arcade_4_buttons.svg"},
|
||||
{"joystick_arcade_6_buttons", "Joystick (Arcade 6 Buttons)", ":/graphics/controllers/joystick_arcade_6_buttons.svg"},
|
||||
{"trackball_generic", "Trackball (Generic)", ":/graphics/controllers/trackball_generic.svg"},
|
||||
{"lightgun_generic", "Lightgun (Generic)", ":/graphics/controllers/lightgun_generic.svg"},
|
||||
{"lightgun_nintendo", "Lightgun (Nintendo)", ":/graphics/controllers/lightgun_nintendo.svg"},
|
||||
{"keyboard_generic", "Keyboard (Generic)", ":/graphics/controllers/keyboard_generic.svg"},
|
||||
{"mouse_generic", "Mouse (Generic)", ":/graphics/controllers/mouse_generic.svg"},
|
||||
{"mouse_amiga", "Mouse (Amiga)", ":/graphics/controllers/mouse_amiga.svg"},
|
||||
{"keyboard_mouse_generic", "Keyboard and Mouse (Generic)", ":/graphics/controllers/keyboard_mouse_generic.svg"},
|
||||
{"steering_wheel_generic", "Steering Wheel (Generic)", ":/graphics/controllers/steering_wheel_generic.svg"},
|
||||
{"wii_remote_nintendo", "Wii Remote (Nintendo)", ":/graphics/controllers/wii_remote_nintendo.svg"},
|
||||
{"wii_remote_nunchuck_nintendo", "Wii Remote and Nunchuck (Nintendo)", ":/graphics/controllers/wii_remote_nunchuck_nintendo.svg"},
|
||||
{"joycon_left_or_right_nintendo", "Joy-Con Left or Right (Nintendo)", ":/graphics/controllers/joycon_left_or_right_nintendo.svg"},
|
||||
{"joycon_pair_nintendo", "Joy-Con Pair (Nintendo)", ":/graphics/controllers/joycon_pair_nintendo.svg"},
|
||||
{"unknown", "Unknown Controller", ":/graphics/controllers/unknown.svg"}
|
||||
};
|
||||
|
||||
// clang-format on
|
||||
|
||||
BadgesComponent::BadgesComponent(Window* window)
|
||||
: GuiComponent{window}
|
||||
, mFlexboxComponent{window, mBadgeImages}
|
||||
, mBadgeTypes{{SLOT_FAVORITE, SLOT_COMPLETED, SLOT_KIDGAME, SLOT_BROKEN, SLOT_ALTEMULATOR}}
|
||||
, mFlexboxItems{}
|
||||
, mFlexboxComponent{window, mFlexboxItems}
|
||||
, mBadgeTypes{{SLOT_FAVORITE, SLOT_COMPLETED, SLOT_KIDGAME, SLOT_BROKEN, SLOT_CONTROLLER,
|
||||
SLOT_ALTEMULATOR}}
|
||||
{
|
||||
mBadgeIcons[SLOT_FAVORITE] = ":/graphics/badge_favorite.svg";
|
||||
mBadgeIcons[SLOT_COMPLETED] = ":/graphics/badge_completed.svg";
|
||||
mBadgeIcons[SLOT_KIDGAME] = ":/graphics/badge_kidgame.svg";
|
||||
mBadgeIcons[SLOT_BROKEN] = ":/graphics/badge_broken.svg";
|
||||
mBadgeIcons[SLOT_CONTROLLER] = ":/graphics/badge_controller.svg";
|
||||
mBadgeIcons[SLOT_ALTEMULATOR] = ":/graphics/badge_altemulator.svg";
|
||||
}
|
||||
|
||||
void BadgesComponent::setBadges(const std::vector<std::string>& badges)
|
||||
void BadgesComponent::populateControllerTypes()
|
||||
{
|
||||
sControllerTypes.clear();
|
||||
for (auto type : sControllerDefinitions)
|
||||
sControllerTypes.push_back(type);
|
||||
}
|
||||
|
||||
void BadgesComponent::setBadges(const std::vector<BadgeInfo>& badges)
|
||||
{
|
||||
std::map<std::string, bool> prevVisibility;
|
||||
std::map<std::string, std::string> prevPlayers;
|
||||
std::map<std::string, std::string> prevController;
|
||||
|
||||
// Save the visibility status to know whether any badges changed.
|
||||
for (auto& image : mBadgeImages) {
|
||||
prevVisibility[image.first] = image.second.isVisible();
|
||||
image.second.setVisible(false);
|
||||
for (auto& item : mFlexboxItems) {
|
||||
prevVisibility[item.label] = item.visible;
|
||||
prevController[item.label] = item.overlayImage.getTexture()->getTextureFilePath();
|
||||
item.visible = false;
|
||||
}
|
||||
|
||||
for (auto& badge : badges) {
|
||||
auto it = std::find_if(
|
||||
mBadgeImages.begin(), mBadgeImages.end(),
|
||||
[badge](std::pair<std::string, ImageComponent> image) { return image.first == badge; });
|
||||
mFlexboxItems.begin(), mFlexboxItems.end(),
|
||||
[badge](FlexboxComponent::FlexboxItem item) { return item.label == badge.badgeType; });
|
||||
|
||||
if (it != mBadgeImages.cend())
|
||||
it->second.setVisible(true);
|
||||
if (it != mFlexboxItems.end()) {
|
||||
it->visible = true;
|
||||
if (badge.controllerType != "" &&
|
||||
badge.controllerType != it->overlayImage.getTexture()->getTextureFilePath()) {
|
||||
|
||||
auto it2 = std::find_if(sControllerTypes.begin(), sControllerTypes.end(),
|
||||
[badge](ControllerTypes controllerType) {
|
||||
return controllerType.shortName == badge.controllerType;
|
||||
});
|
||||
|
||||
if (it2 != sControllerTypes.cend()) {
|
||||
it->overlayImage.setImage((*it2).fileName);
|
||||
}
|
||||
else if (badge.controllerType != "")
|
||||
it->overlayImage.setImage(sControllerTypes.back().fileName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Only recalculate the flexbox if any badges changed.
|
||||
for (auto& image : mBadgeImages) {
|
||||
if (prevVisibility[image.first] != image.second.isVisible()) {
|
||||
for (auto& item : mFlexboxItems) {
|
||||
if (prevVisibility[item.label] != item.visible ||
|
||||
prevController[item.label] != item.label) {
|
||||
mFlexboxComponent.onSizeChanged();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const std::string BadgesComponent::getShortName(const std::string& displayName)
|
||||
{
|
||||
auto it = std::find_if(sControllerTypes.begin(), sControllerTypes.end(),
|
||||
[displayName](ControllerTypes controllerType) {
|
||||
return controllerType.displayName == displayName;
|
||||
});
|
||||
if (it != sControllerTypes.end())
|
||||
return (*it).shortName;
|
||||
else
|
||||
return "unknown";
|
||||
}
|
||||
|
||||
const std::string BadgesComponent::getDisplayName(const std::string& shortName)
|
||||
{
|
||||
auto it = std::find_if(sControllerTypes.begin(), sControllerTypes.end(),
|
||||
[shortName](ControllerTypes controllerType) {
|
||||
return controllerType.shortName == shortName;
|
||||
});
|
||||
if (it != sControllerTypes.end())
|
||||
return (*it).displayName;
|
||||
else
|
||||
return "unknown";
|
||||
}
|
||||
|
||||
void BadgesComponent::render(const glm::mat4& parentTrans)
|
||||
{
|
||||
if (!isVisible())
|
||||
|
@ -79,6 +168,8 @@ void BadgesComponent::applyTheme(const std::shared_ptr<ThemeData>& theme,
|
|||
const std::string& element,
|
||||
unsigned int properties)
|
||||
{
|
||||
populateControllerTypes();
|
||||
|
||||
using namespace ThemeFlags;
|
||||
|
||||
const ThemeData::ThemeElement* elem{theme->getElement(view, element, "badges")};
|
||||
|
@ -119,27 +210,11 @@ void BadgesComponent::applyTheme(const std::shared_ptr<ThemeData>& theme,
|
|||
}
|
||||
}
|
||||
|
||||
if (elem->has("itemPlacement")) {
|
||||
std::string itemPlacement{elem->get<std::string>("itemPlacement")};
|
||||
if (itemPlacement != "top" && itemPlacement != "center" && itemPlacement != "bottom" &&
|
||||
itemPlacement != "stretch") {
|
||||
LOG(LogWarning)
|
||||
<< "BadgesComponent: Invalid theme configuration, <itemPlacement> set to \""
|
||||
<< itemPlacement << "\"";
|
||||
}
|
||||
else {
|
||||
if (itemPlacement == "top")
|
||||
itemPlacement = "start";
|
||||
else if (itemPlacement == "bottom")
|
||||
itemPlacement = "end";
|
||||
mFlexboxComponent.setItemPlacement(itemPlacement);
|
||||
}
|
||||
}
|
||||
|
||||
if (elem->has("itemMargin")) {
|
||||
const glm::vec2 itemMargin = elem->get<glm::vec2>("itemMargin");
|
||||
if (itemMargin.x < 0.0f || itemMargin.x > 0.2f || itemMargin.y < 0.0f ||
|
||||
itemMargin.y > 0.2f) {
|
||||
glm::vec2 itemMargin = elem->get<glm::vec2>("itemMargin");
|
||||
if ((itemMargin.x != -1.0 && itemMargin.y != -1.0) &&
|
||||
(itemMargin.x < 0.0f || itemMargin.x > 0.2f || itemMargin.y < 0.0f ||
|
||||
itemMargin.y > 0.2f)) {
|
||||
LOG(LogWarning)
|
||||
<< "BadgesComponent: Invalid theme configuration, <itemMargin> set to \""
|
||||
<< itemMargin.x << " " << itemMargin.y << "\"";
|
||||
|
@ -149,26 +224,67 @@ void BadgesComponent::applyTheme(const std::shared_ptr<ThemeData>& theme,
|
|||
}
|
||||
}
|
||||
|
||||
if (elem->has("controllerPos")) {
|
||||
const glm::vec2 controllerPos = elem->get<glm::vec2>("controllerPos");
|
||||
if (controllerPos.x < -1.0f || controllerPos.x > 2.0f || controllerPos.y < -1.0f ||
|
||||
controllerPos.y > 2.0f) {
|
||||
LOG(LogWarning)
|
||||
<< "BadgesComponent: Invalid theme configuration, <controllerPos> set to \""
|
||||
<< controllerPos.x << " " << controllerPos.y << "\"";
|
||||
}
|
||||
else {
|
||||
mFlexboxComponent.setOverlayPosition(controllerPos);
|
||||
}
|
||||
}
|
||||
|
||||
if (elem->has("controllerSize")) {
|
||||
const float controllerSize = elem->get<float>("controllerSize");
|
||||
if (controllerSize < 0.1f || controllerSize > 2.0f) {
|
||||
LOG(LogWarning)
|
||||
<< "BadgesComponent: Invalid theme configuration, <controllerSize> set to \""
|
||||
<< controllerSize << "\"";
|
||||
}
|
||||
else {
|
||||
mFlexboxComponent.setOverlaySize(controllerSize);
|
||||
}
|
||||
}
|
||||
|
||||
if (elem->has("slots")) {
|
||||
std::vector<std::string> slots = Utils::String::delimitedStringToVector(
|
||||
Utils::String::toLower(elem->get<std::string>("slots")), " ");
|
||||
// Replace possible whitespace separators with commas.
|
||||
std::string slotsTag = Utils::String::toLower(elem->get<std::string>("slots"));
|
||||
for (auto& character : slotsTag) {
|
||||
if (std::isspace(character))
|
||||
character = ',';
|
||||
}
|
||||
slotsTag = Utils::String::replace(slotsTag, ",,", ",");
|
||||
std::vector<std::string> slots = Utils::String::delimitedStringToVector(slotsTag, ",");
|
||||
|
||||
for (auto slot : slots) {
|
||||
if (std::find(mBadgeTypes.cbegin(), mBadgeTypes.cend(), slot) != mBadgeTypes.end()) {
|
||||
if (properties & PATH && elem->has(slot))
|
||||
mBadgeIcons[slot] = elem->get<std::string>(slot);
|
||||
|
||||
ImageComponent badgeImage{mWindow};
|
||||
FlexboxComponent::FlexboxItem item;
|
||||
item.label = slot;
|
||||
|
||||
ImageComponent badgeImage{mWindow};
|
||||
badgeImage.setForceLoad(true);
|
||||
badgeImage.setImage(mBadgeIcons[slot]);
|
||||
badgeImage.setVisible(false);
|
||||
mBadgeImages.push_back(std::make_pair(slot, badgeImage));
|
||||
item.baseImage = badgeImage;
|
||||
item.overlayImage = ImageComponent{mWindow};
|
||||
|
||||
mFlexboxItems.push_back(item);
|
||||
}
|
||||
else {
|
||||
LOG(LogError) << "Invalid badge slot \"" << slot << "\" defined";
|
||||
}
|
||||
}
|
||||
|
||||
for (auto& controllerType : sControllerTypes) {
|
||||
if (properties & PATH && elem->has(controllerType.shortName))
|
||||
controllerType.fileName = elem->get<std::string>(controllerType.shortName);
|
||||
}
|
||||
|
||||
GuiComponent::applyTheme(theme, view, element, properties);
|
||||
|
||||
mFlexboxComponent.setPosition(mPosition);
|
||||
|
|
|
@ -13,13 +13,34 @@
|
|||
#include "FlexboxComponent.h"
|
||||
#include "GuiComponent.h"
|
||||
|
||||
struct ControllerTypes {
|
||||
std::string shortName;
|
||||
std::string displayName;
|
||||
std::string fileName;
|
||||
};
|
||||
|
||||
class BadgesComponent : public GuiComponent
|
||||
{
|
||||
public:
|
||||
BadgesComponent(Window* window);
|
||||
|
||||
struct BadgeInfo {
|
||||
std::string badgeType;
|
||||
std::string controllerType;
|
||||
};
|
||||
|
||||
static void populateControllerTypes();
|
||||
std::vector<std::string> getBadgeTypes() { return mBadgeTypes; }
|
||||
void setBadges(const std::vector<std::string>& badges);
|
||||
void setBadges(const std::vector<BadgeInfo>& badges);
|
||||
static const std::vector<ControllerTypes>& getControllerTypes()
|
||||
{
|
||||
if (sControllerTypes.empty())
|
||||
populateControllerTypes();
|
||||
return sControllerTypes;
|
||||
}
|
||||
|
||||
static const std::string getShortName(const std::string& displayName);
|
||||
static const std::string getDisplayName(const std::string& shortName);
|
||||
|
||||
void render(const glm::mat4& parentTrans) override;
|
||||
void onSizeChanged() override { mFlexboxComponent.onSizeChanged(); }
|
||||
|
@ -30,11 +51,13 @@ public:
|
|||
unsigned int properties) override;
|
||||
|
||||
private:
|
||||
static std::vector<ControllerTypes> sControllerTypes;
|
||||
|
||||
std::vector<FlexboxComponent::FlexboxItem> mFlexboxItems;
|
||||
FlexboxComponent mFlexboxComponent;
|
||||
|
||||
std::vector<std::string> mBadgeTypes;
|
||||
std::map<std::string, std::string> mBadgeIcons;
|
||||
std::vector<std::pair<std::string, ImageComponent>> mBadgeImages;
|
||||
};
|
||||
|
||||
#endif // ES_CORE_COMPONENTS_BADGES_COMPONENT_H
|
||||
|
|
|
@ -19,16 +19,17 @@
|
|||
#include "Settings.h"
|
||||
#include "ThemeData.h"
|
||||
|
||||
FlexboxComponent::FlexboxComponent(Window* window,
|
||||
std::vector<std::pair<std::string, ImageComponent>>& images)
|
||||
FlexboxComponent::FlexboxComponent(Window* window, std::vector<FlexboxItem>& items)
|
||||
: GuiComponent{window}
|
||||
, mImages(images)
|
||||
, mItems(items)
|
||||
, mDirection{DEFAULT_DIRECTION}
|
||||
, mAlignment{DEFAULT_ALIGNMENT}
|
||||
, mItemsPerLine{DEFAULT_ITEMS_PER_LINE}
|
||||
, mLines{DEFAULT_LINES}
|
||||
, mItemPlacement{DEFAULT_ITEM_PLACEMENT}
|
||||
, mItemMargin{glm::vec2{DEFAULT_MARGIN_X, DEFAULT_MARGIN_Y}}
|
||||
, mOverlayPosition{0.5f, 0.5f}
|
||||
, mOverlaySize{0.5f}
|
||||
, mLayoutValid{false}
|
||||
{
|
||||
}
|
||||
|
@ -45,35 +46,47 @@ void FlexboxComponent::render(const glm::mat4& parentTrans)
|
|||
Renderer::setMatrix(trans);
|
||||
|
||||
if (Settings::getInstance()->getBool("DebugImage"))
|
||||
Renderer::drawRect(0.0f, 0.0f, mSize.x, mSize.y, 0xFF000033, 0xFF000033);
|
||||
Renderer::drawRect(0.0f, 0.0f, ceilf(mSize.x), ceilf(mSize.y), 0xFF000033, 0xFF000033);
|
||||
|
||||
for (auto& image : mImages) {
|
||||
for (auto& item : mItems) {
|
||||
if (!item.visible)
|
||||
continue;
|
||||
if (mOpacity == 255) {
|
||||
image.second.render(trans);
|
||||
item.baseImage.render(trans);
|
||||
if (item.overlayImage.getTexture() != nullptr)
|
||||
item.overlayImage.render(trans);
|
||||
}
|
||||
else {
|
||||
image.second.setOpacity(mOpacity);
|
||||
image.second.render(trans);
|
||||
image.second.setOpacity(255);
|
||||
item.baseImage.setOpacity(mOpacity);
|
||||
item.baseImage.render(trans);
|
||||
item.baseImage.setOpacity(255);
|
||||
if (item.overlayImage.getTexture() != nullptr) {
|
||||
item.overlayImage.setOpacity(mOpacity);
|
||||
item.overlayImage.render(trans);
|
||||
item.overlayImage.setOpacity(255);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void FlexboxComponent::setItemMargin(glm::vec2 value)
|
||||
{
|
||||
if (value.x == -1.0f)
|
||||
mItemMargin.x = std::roundf(value.y * Renderer::getScreenHeight());
|
||||
else
|
||||
mItemMargin.x = std::roundf(value.x * Renderer::getScreenWidth());
|
||||
|
||||
if (value.y == -1.0f)
|
||||
mItemMargin.y = std::roundf(value.x * Renderer::getScreenWidth());
|
||||
else
|
||||
mItemMargin.y = std::roundf(value.y * Renderer::getScreenHeight());
|
||||
|
||||
mLayoutValid = false;
|
||||
}
|
||||
|
||||
void FlexboxComponent::computeLayout()
|
||||
{
|
||||
// Start placing items in the top-left.
|
||||
float anchorX{0.0f};
|
||||
float anchorY{0.0f};
|
||||
|
||||
// Translation directions when placing items.
|
||||
glm::vec2 directionLine{1, 0};
|
||||
glm::vec2 directionRow{0, 1};
|
||||
|
||||
// Change direction.
|
||||
if (mDirection == "column") {
|
||||
directionLine = {0, 1};
|
||||
directionRow = {1, 0};
|
||||
}
|
||||
// TODO: There is no right-alignment support for column mode.
|
||||
|
||||
// If we're not clamping itemMargin to a reasonable value, all kinds of weird rendering
|
||||
// issues could occur.
|
||||
|
@ -86,125 +99,146 @@ void FlexboxComponent::computeLayout()
|
|||
mSize.y = glm::clamp(mSize.y, static_cast<float>(Renderer::getScreenHeight()) * 0.03f,
|
||||
static_cast<float>(Renderer::getScreenHeight()));
|
||||
|
||||
// Compute maximum image dimensions.
|
||||
glm::vec2 grid;
|
||||
if (mDirection == "row")
|
||||
grid = {mItemsPerLine, mLines};
|
||||
else
|
||||
grid = {mLines, mItemsPerLine};
|
||||
if (mItemsPerLine * mLines < mItems.size()) {
|
||||
LOG(LogWarning)
|
||||
<< "FlexboxComponent: Invalid theme configuration, the number of badges"
|
||||
" exceeds the product of <lines> times <itemsPerLine>, setting <itemsPerLine> to "
|
||||
<< mItems.size();
|
||||
mItemsPerLine = static_cast<unsigned int>(mItems.size());
|
||||
}
|
||||
|
||||
glm::vec2 grid{mItemsPerLine, mLines};
|
||||
glm::vec2 maxItemSize{(mSize + mItemMargin - grid * mItemMargin) / grid};
|
||||
maxItemSize.x = floorf(maxItemSize.x);
|
||||
maxItemSize.y = floorf(maxItemSize.y);
|
||||
|
||||
if (grid.x * grid.y < static_cast<float>(mImages.size())) {
|
||||
LOG(LogWarning) << "FlexboxComponent: Invalid theme configuration, the number of badges "
|
||||
"exceeds the product of <lines> times <itemsPerLine>";
|
||||
}
|
||||
float rowHeight{0.0f};
|
||||
bool firstItem{true};
|
||||
|
||||
glm::vec2 sizeChange{0.0f, 0.0f};
|
||||
|
||||
// Set final image dimensions.
|
||||
for (auto& image : mImages) {
|
||||
if (!image.second.isVisible())
|
||||
continue;
|
||||
auto oldSize{image.second.getSize()};
|
||||
if (oldSize.x == 0)
|
||||
oldSize.x = maxItemSize.x;
|
||||
glm::vec2 sizeMaxX{maxItemSize.x, oldSize.y * (maxItemSize.x / oldSize.x)};
|
||||
glm::vec2 sizeMaxY{oldSize.x * (maxItemSize.y / oldSize.y), maxItemSize.y};
|
||||
glm::vec2 newSize;
|
||||
if (sizeMaxX.y > maxItemSize.y)
|
||||
newSize = sizeMaxY;
|
||||
else if (sizeMaxY.x > maxItemSize.x)
|
||||
newSize = sizeMaxX;
|
||||
else
|
||||
newSize = sizeMaxX.x * sizeMaxX.y >= sizeMaxY.x * sizeMaxY.y ? sizeMaxX : sizeMaxY;
|
||||
|
||||
if (image.second.getSize() != newSize)
|
||||
image.second.setResize(std::round(newSize.x), std::round(newSize.y));
|
||||
|
||||
// In case maxItemSize needs to be updated.
|
||||
if (newSize.x != sizeChange.x)
|
||||
sizeChange.x = newSize.x;
|
||||
if (newSize.y != sizeChange.y)
|
||||
sizeChange.y = newSize.y;
|
||||
}
|
||||
|
||||
if (maxItemSize.x != sizeChange.x)
|
||||
maxItemSize.x = std::round(sizeChange.x);
|
||||
if (maxItemSize.y != sizeChange.y)
|
||||
maxItemSize.y = std::round(sizeChange.y);
|
||||
|
||||
// Pre-compute layout parameters.
|
||||
float anchorXStart{anchorX};
|
||||
float anchorYStart{anchorY};
|
||||
|
||||
int i = 0;
|
||||
|
||||
// Iterate through the images.
|
||||
for (auto& image : mImages) {
|
||||
if (!image.second.isVisible())
|
||||
// Calculate maximum item dimensions.
|
||||
for (auto& item : mItems) {
|
||||
if (!item.visible)
|
||||
continue;
|
||||
|
||||
auto size{image.second.getSize()};
|
||||
glm::vec2 sizeDiff{item.baseImage.getSize() / maxItemSize};
|
||||
|
||||
// Top-left anchor position.
|
||||
float x{anchorX};
|
||||
float y{anchorY};
|
||||
|
||||
// Apply alignment.
|
||||
if (mItemPlacement == "end") {
|
||||
x += directionLine.x == 0 ? (maxItemSize.x - size.x) : 0;
|
||||
y += directionLine.y == 0 ? (maxItemSize.y - size.y) : 0;
|
||||
}
|
||||
else if (mItemPlacement == "center") {
|
||||
x += directionLine.x == 0 ? (maxItemSize.x - size.x) / 2 : 0;
|
||||
y += directionLine.y == 0 ? (maxItemSize.y - size.y) / 2 : 0;
|
||||
}
|
||||
else if (mItemPlacement == "stretch" && mDirection == "row") {
|
||||
image.second.setSize(image.second.getSize().x, maxItemSize.y);
|
||||
}
|
||||
|
||||
// Apply overall container alignment.
|
||||
if (mAlignment == "right")
|
||||
x += (mSize.x - maxItemSize.x * grid.x - (grid.x - 1) * mItemMargin.x);
|
||||
|
||||
// Store final item position.
|
||||
image.second.setPosition(x, y);
|
||||
|
||||
// Translate anchor.
|
||||
if ((i++ + 1) % std::max(1, static_cast<int>(mItemsPerLine)) != 0) {
|
||||
// Translate on same line.
|
||||
anchorX += (size.x + mItemMargin.x) * static_cast<float>(directionLine.x);
|
||||
anchorY += (size.y + mItemMargin.y) * static_cast<float>(directionLine.y);
|
||||
// The first item dictates the maximum width for the rest.
|
||||
if (firstItem) {
|
||||
maxItemSize.x = (item.baseImage.getSize() / std::max(sizeDiff.x, sizeDiff.y)).x;
|
||||
sizeDiff = item.baseImage.getSize() / maxItemSize;
|
||||
item.baseImage.setSize((item.baseImage.getSize() / std::max(sizeDiff.x, sizeDiff.y)));
|
||||
firstItem = false;
|
||||
}
|
||||
else {
|
||||
// Translate to first position of next line.
|
||||
if (directionRow.x == 0) {
|
||||
anchorY += size.y + mItemMargin.y;
|
||||
anchorX = anchorXStart;
|
||||
item.baseImage.setSize((item.baseImage.getSize() / std::max(sizeDiff.x, sizeDiff.y)));
|
||||
}
|
||||
|
||||
if (item.baseImage.getSize().y > rowHeight)
|
||||
rowHeight = item.baseImage.getSize().y;
|
||||
}
|
||||
|
||||
// Update the maximum item height.
|
||||
maxItemSize.y = 0.0f;
|
||||
for (auto& item : mItems) {
|
||||
if (!item.visible)
|
||||
continue;
|
||||
if (item.baseImage.getSize().y > maxItemSize.y)
|
||||
maxItemSize.y = item.baseImage.getSize().y;
|
||||
}
|
||||
|
||||
maxItemSize = glm::round(maxItemSize);
|
||||
|
||||
bool alignRight{mAlignment == "right" && mDirection == "row"};
|
||||
float alignRightComp{0.0f};
|
||||
|
||||
// If right-aligning, move the overall container contents during grid setup.
|
||||
if (alignRight)
|
||||
alignRightComp =
|
||||
std::round(mSize.x - ((maxItemSize.x + mItemMargin.x) * grid.x) + mItemMargin.x);
|
||||
|
||||
std::vector<glm::vec2> itemPositions;
|
||||
|
||||
// Lay out the grid.
|
||||
if (mDirection == "row") {
|
||||
for (int y = 0; y < grid.y; y++) {
|
||||
for (int x = 0; x < grid.x; x++) {
|
||||
itemPositions.push_back(
|
||||
glm::vec2{(x * (maxItemSize.x + mItemMargin.x) + alignRightComp),
|
||||
y * (rowHeight + mItemMargin.y)});
|
||||
}
|
||||
else {
|
||||
anchorX += size.x + mItemMargin.x;
|
||||
anchorY = anchorYStart;
|
||||
}
|
||||
}
|
||||
else { // Column mode.
|
||||
for (int x = 0; x < grid.x; x++) {
|
||||
for (int y = 0; y < grid.y; y++) {
|
||||
itemPositions.push_back(
|
||||
glm::vec2{(x * (maxItemSize.x + mItemMargin.x) + alignRightComp),
|
||||
y * (rowHeight + mItemMargin.y)});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Apply right-align to the images on the last row, if needed.
|
||||
if (mAlignment == "right") {
|
||||
std::vector<ImageComponent*> imagesToAlign;
|
||||
for (auto& image : mImages) {
|
||||
if (!image.second.isVisible())
|
||||
continue;
|
||||
// Only include images on the last row.
|
||||
if (image.second.getPosition().y == anchorY)
|
||||
imagesToAlign.push_back(&image.second);
|
||||
int pos{0};
|
||||
float lastY{0.0f};
|
||||
float itemsOnLastRow{0};
|
||||
|
||||
// Position items on the grid.
|
||||
for (auto& item : mItems) {
|
||||
if (!item.visible)
|
||||
continue;
|
||||
|
||||
if (pos > 0) {
|
||||
if (itemPositions[pos - 1].y < itemPositions[pos].y) {
|
||||
lastY = itemPositions[pos].y;
|
||||
itemsOnLastRow = 0;
|
||||
}
|
||||
}
|
||||
for (auto& moveImage : imagesToAlign) {
|
||||
float offset = (maxItemSize.x + mItemMargin.x) * (grid.x - imagesToAlign.size());
|
||||
moveImage->setPosition(moveImage->getPosition().x + offset, moveImage->getPosition().y);
|
||||
|
||||
float verticalOffset{0.0f};
|
||||
|
||||
// For any items that do not fill the maximum height, position these either on
|
||||
// top/start (implicit), center or bottom/end.
|
||||
if (item.baseImage.getSize().y < maxItemSize.y) {
|
||||
if (mItemPlacement == "center") {
|
||||
verticalOffset = std::floor((maxItemSize.y - item.baseImage.getSize().y) / 2.0f);
|
||||
}
|
||||
else if (mItemPlacement == "end") {
|
||||
verticalOffset = maxItemSize.y - item.baseImage.getSize().y;
|
||||
}
|
||||
}
|
||||
|
||||
item.baseImage.setPosition(itemPositions[pos].x, itemPositions[pos].y + verticalOffset,
|
||||
0.0f);
|
||||
|
||||
// Optional overlay image.
|
||||
if (item.overlayImage.getTexture() != nullptr) {
|
||||
item.overlayImage.setResize(item.baseImage.getSize().x * mOverlaySize, 0.0f);
|
||||
item.overlayImage.setPosition(
|
||||
item.baseImage.getPosition().x + (item.baseImage.getSize().x * mOverlayPosition.x) -
|
||||
item.overlayImage.getSize().x / 2.0f,
|
||||
item.baseImage.getPosition().y + (item.baseImage.getSize().y * mOverlayPosition.y) -
|
||||
item.overlayImage.getSize().y / 2.0f);
|
||||
}
|
||||
|
||||
// This rasterizes the SVG images so they look nice and smooth.
|
||||
item.baseImage.setResize(item.baseImage.getSize());
|
||||
|
||||
itemsOnLastRow++;
|
||||
pos++;
|
||||
}
|
||||
|
||||
// Apply right-align to the items (only works in row mode).
|
||||
if (alignRight) {
|
||||
for (auto& item : mItems) {
|
||||
if (!item.visible)
|
||||
continue;
|
||||
glm::vec3 currPos{item.baseImage.getPosition()};
|
||||
if (currPos.y == lastY) {
|
||||
const float offset{(grid.x - itemsOnLastRow) * (maxItemSize.x + mItemMargin.x)};
|
||||
item.baseImage.setPosition(currPos.x + offset, currPos.y, currPos.z);
|
||||
if (item.overlayImage.getTexture() != nullptr) {
|
||||
currPos = item.overlayImage.getPosition();
|
||||
item.overlayImage.setPosition(currPos.x + offset, currPos.y, currPos.z);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -10,12 +10,23 @@
|
|||
#define ES_CORE_COMPONENTS_FLEXBOX_COMPONENT_H
|
||||
|
||||
#include "GuiComponent.h"
|
||||
#include "Window.h"
|
||||
#include "components/ImageComponent.h"
|
||||
|
||||
class FlexboxComponent : public GuiComponent
|
||||
{
|
||||
public:
|
||||
FlexboxComponent(Window* window, std::vector<std::pair<std::string, ImageComponent>>& images);
|
||||
struct FlexboxItem {
|
||||
// Optional label, mostly a convenience for the calling class to track items.
|
||||
std::string label;
|
||||
// Main image that governs grid sizing and placement.
|
||||
ImageComponent baseImage{nullptr};
|
||||
// Optional overlay image that can be sized and positioned relative to the base image.
|
||||
ImageComponent overlayImage{nullptr};
|
||||
bool visible = false;
|
||||
};
|
||||
|
||||
FlexboxComponent(Window* window, std::vector<FlexboxItem>& items);
|
||||
|
||||
// Getters/setters for the layout.
|
||||
std::string getDirection() const { return mDirection; }
|
||||
|
@ -56,12 +67,13 @@ public:
|
|||
}
|
||||
|
||||
glm::vec2 getItemMargin() const { return mItemMargin; }
|
||||
void setItemMargin(glm::vec2 value)
|
||||
{
|
||||
mItemMargin.x = std::roundf(value.x * Renderer::getScreenWidth());
|
||||
mItemMargin.y = std::roundf(value.y * Renderer::getScreenHeight());
|
||||
mLayoutValid = false;
|
||||
}
|
||||
void setItemMargin(glm::vec2 value);
|
||||
|
||||
glm::vec2 getOverlayPosition() const { return mOverlayPosition; }
|
||||
void setOverlayPosition(glm::vec2 position) { mOverlayPosition = position; }
|
||||
|
||||
float getOverlaySize() const { return mOverlaySize; }
|
||||
void setOverlaySize(float size) { mOverlaySize = size; }
|
||||
|
||||
void onSizeChanged() override { mLayoutValid = false; }
|
||||
void render(const glm::mat4& parentTrans) override;
|
||||
|
@ -70,7 +82,7 @@ private:
|
|||
// Calculate flexbox layout.
|
||||
void computeLayout();
|
||||
|
||||
std::vector<std::pair<std::string, ImageComponent>>& mImages;
|
||||
std::vector<FlexboxItem>& mItems;
|
||||
|
||||
// Layout options.
|
||||
std::string mDirection;
|
||||
|
@ -80,6 +92,9 @@ private:
|
|||
std::string mItemPlacement;
|
||||
glm::vec2 mItemMargin;
|
||||
|
||||
glm::vec2 mOverlayPosition;
|
||||
float mOverlaySize;
|
||||
|
||||
bool mLayoutValid;
|
||||
};
|
||||
|
||||
|
|
147
resources/graphics/badge_controller.svg
Normal file
|
@ -0,0 +1,147 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="80"
|
||||
height="92"
|
||||
version="1.1"
|
||||
viewBox="0 0 21.166666 24.341666"
|
||||
id="svg90"
|
||||
sodipodi:docname="badge_controller.svg"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
|
||||
<defs
|
||||
id="defs94" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2065"
|
||||
id="namedview92"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:zoom="10.971939"
|
||||
inkscape:cx="-8.9420672"
|
||||
inkscape:cy="61.90432"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg90"
|
||||
inkscape:snap-global="false" />
|
||||
<metadata
|
||||
id="metadata2">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<rect
|
||||
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.51566374;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
|
||||
id="rect5286"
|
||||
width="21.166666"
|
||||
height="24.341665"
|
||||
x="-6.884097e-12"
|
||||
y="-2.6253017e-14" />
|
||||
<g
|
||||
id="g16"
|
||||
transform="matrix(0.10079384,0,0,0.08235571,-4.2392733e-4,0.0496411)"
|
||||
style="fill:#d7d7d7;fill-opacity:1">
|
||||
<rect
|
||||
x="3.0257001"
|
||||
y="2.9029"
|
||||
width="204.36"
|
||||
height="288.81"
|
||||
id="rect14"
|
||||
style="fill:#d7d7d7;fill-opacity:1;stroke-width:0.26458001" />
|
||||
</g>
|
||||
<g
|
||||
id="g20"
|
||||
transform="matrix(0.10079384,0,0,0.0816046,-4.2392733e-4,0.13809204)"
|
||||
style="fill:#000000;fill-opacity:1">
|
||||
<rect
|
||||
x="7.7007999"
|
||||
y="7.7174001"
|
||||
width="194.89999"
|
||||
height="279.22"
|
||||
id="rect18"
|
||||
style="stroke-width:0.26458001;fill:#000000;fill-opacity:1" />
|
||||
</g>
|
||||
<rect
|
||||
style="fill:#e6e6e6;fill-opacity:1;stroke-width:0.02649944"
|
||||
id="rect22"
|
||||
height="17.205626"
|
||||
width="17.540144"
|
||||
y="5.3001146"
|
||||
x="1.8323106" />
|
||||
<g
|
||||
aria-label="CONTROLLER"
|
||||
transform="matrix(0.92632099,0,0,1.1827072,0,-0.4326279)"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.0387764px;line-height:1.25;font-family:Digitalt;-inkscape-font-specification:Digitalt;letter-spacing:0px;word-spacing:0px;fill:#f0f0f0;fill-opacity:1;stroke:none;stroke-width:0.10096943"
|
||||
id="text4846">
|
||||
<path
|
||||
d="m 1.9102824,2.9855499 q 0,-0.2741162 0.049301,-0.4811824 Q 2.0098713,2.2963153 2.0996,2.1592573 2.1893287,2.0212131 2.3254008,1.9354286 2.4624588,1.848658 2.6251537,1.8121749 q 0.1626948,-0.036483 0.369761,-0.036483 0.1104353,0 0.2080522,0.016763 0.098603,0.015777 0.2415772,0.050288 L 3.3597456,2.4609823 2.9959007,2.4363315 q -0.046343,-0.00296 -0.082826,0.00789 -0.036483,0.010846 -0.070994,0.046343 -0.034511,0.035497 -0.05719,0.096631 -0.022679,0.060148 -0.036483,0.1607228 -0.013804,0.100575 -0.013804,0.2376331 0,0.1380441 0.011832,0.2386191 0.012818,0.099589 0.033525,0.1617088 0.021693,0.061134 0.055218,0.095645 0.034511,0.034511 0.07198,0.046343 0.037469,0.010846 0.088743,0.0069 L 3.3597456,3.5111036 3.4406,4.1342741 q -0.235661,0.043385 -0.4535735,0.043385 -0.1153655,0 -0.2119963,-0.00789 Q 2.6783993,4.1608969 2.5837405,4.1411763 2.4900677,4.1204697 2.4131574,4.0879308 2.3362471,4.0553918 2.265253,4.0051043 2.1952449,3.9548168 2.1410133,3.8887528 2.0867816,3.8217028 2.0424103,3.7329602 1.998039,3.6442175 1.9694441,3.5337822 1.9408493,3.4233469 1.9250728,3.2862889 1.9102824,3.1482447 1.9102824,2.9855499 Z"
|
||||
style="fill:#f0f0f0;fill-opacity:1;stroke-width:0.10096943"
|
||||
id="path4848"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 3.5470911,2.9855499 q 0,-0.2869346 0.06212,-0.5107632 0.06212,-0.2248147 0.1784713,-0.3746912 0.1173375,-0.1498765 0.2829904,-0.2317169 0.166639,-0.08184 0.3756772,-0.092687 0.1922758,0 0.3431383,0.026623 0.1508625,0.025637 0.2760882,0.084799 0.1262118,0.058176 0.2149544,0.1518486 0.088743,0.093673 0.1498765,0.2277728 0.06212,0.1341 0.090715,0.3125713 0.029581,0.1784713 0.029581,0.4062441 0,0.2869345 -0.063106,0.5117492 Q 5.4244911,3.7211278 5.3051815,3.8710043 5.186858,4.0198947 5.020219,4.1017352 q -0.1666389,0.080854 -0.3766632,0.091701 -0.1912897,0 -0.3421522,-0.025637 Q 4.1515272,4.1411763 4.0263014,4.0830006 3.9020617,4.0248249 3.8133191,3.9321381 3.7255625,3.8384653 3.6644286,3.7043653 3.6042808,3.5702653 3.575686,3.39278 3.5470911,3.2143087 3.5470911,2.9855499 Z m 0.8243206,0 q 0,0.1380441 0.00887,0.234675 0.00986,0.096631 0.023665,0.1528345 0.01479,0.055218 0.039441,0.085785 0.024651,0.030567 0.049301,0.039441 0.024651,0.00887 0.060148,0.00887 0.035497,0 0.059162,-0.00887 0.023665,-0.00887 0.047329,-0.039441 0.023665,-0.030567 0.036483,-0.085785 0.013804,-0.056204 0.021693,-0.1528345 0.00887,-0.096631 0.00887,-0.234675 0,-0.1143794 -0.00592,-0.200164 -0.00592,-0.086771 -0.018735,-0.1429742 -0.012818,-0.056204 -0.027609,-0.091701 -0.01479,-0.036483 -0.038455,-0.054232 -0.022679,-0.017748 -0.044371,-0.023665 -0.020707,-0.0069 -0.050287,-0.0069 -0.029581,0 -0.050288,0.00592 -0.019721,0.00592 -0.040427,0.024651 -0.020707,0.017749 -0.034511,0.054232 -0.012818,0.035497 -0.023665,0.092687 -0.010846,0.056204 -0.015776,0.1419882 -0.00493,0.084799 -0.00493,0.200164 z"
|
||||
style="fill:#f0f0f0;fill-opacity:1;stroke-width:0.10096943"
|
||||
id="path4850"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 5.7557968,2.9865359 q 0,-0.5521764 0.015777,-1.1832353 0.1873456,-0.00887 0.3253897,-0.00887 0.1173375,0 0.3411662,0.00887 0.028595,9.861e-4 0.043385,0.039441 L 6.8897306,2.8524359 6.8759262,1.8033006 q 0.1883316,-0.00887 0.3451103,-0.00887 0.1538206,0 0.3648309,0.00887 0.016763,9.861e-4 0.027609,0.012818 0.011832,0.010846 0.011832,0.026623 0.015777,0.7414941 0.015777,1.1437941 0,0.5521765 -0.015777,1.1832353 -0.1636808,0.00887 -0.3056691,0.00887 -0.168611,0 -0.3608867,-0.00887 Q 6.9291716,4.168785 6.9153676,4.13033 L 6.5071512,3.1206359 6.5209556,4.1697712 q -0.1873456,0.00887 -0.3253897,0.00887 -0.1557926,0 -0.3845514,-0.00887 Q 5.794252,4.1687852 5.7824196,4.1579388 5.7715733,4.1461065 5.7715733,4.13033 5.7557968,3.3888359 5.7557968,2.9865359 Z"
|
||||
style="fill:#f0f0f0;fill-opacity:1;stroke-width:0.10096943"
|
||||
id="path4852"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 7.802794,2.1030536 q 0,-0.1587507 0.00394,-0.299753 0.1883316,-0.00887 0.9130632,-0.00887 0.5728831,0 0.8144603,0.00887 0.015776,0 0.027609,0.011832 0.011832,0.011832 0.011832,0.027609 0.00394,0.2228427 0.00394,0.33525 0,0.1607228 -0.00394,0.2958088 -0.064092,0.00296 -0.4772383,0.0069 0.00394,0.2129824 0.00394,0.5058331 0,0.5521765 -0.015776,1.1832353 -0.1873456,0.00887 -0.3451103,0.00887 -0.1626949,0 -0.4042721,-0.00887 -0.015776,0 -0.027609,-0.011832 -0.011832,-0.011832 -0.011832,-0.027609 -0.015776,-0.7414941 -0.015776,-1.1437941 0,-0.1824154 0.00394,-0.5097772 -0.2267868,-0.00493 -0.437797,-0.010846 -0.015777,0 -0.027609,-0.011832 -0.011832,-0.011832 -0.011832,-0.027609 -0.00394,-0.2267867 -0.00394,-0.3234176 z"
|
||||
style="fill:#f0f0f0;fill-opacity:1;stroke-width:0.10096943"
|
||||
id="path4854"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 9.7472437,2.9352624 q 0,-0.1972059 0.00394,-0.5462603 0.00394,-0.3490544 0.00394,-0.5462603 0.1972059,-0.030567 0.4190623,-0.048315 0.222843,-0.018735 0.389482,-0.018735 0.14396,0 0.241577,0.00493 0.09762,0.00394 0.210025,0.019721 0.113393,0.01479 0.186359,0.043385 0.07297,0.028595 0.145932,0.078882 0.07297,0.050288 0.113394,0.1222677 0.04141,0.07198 0.06705,0.1764992 0.02564,0.1045191 0.02564,0.2396052 0,0.2139683 -0.110436,0.3766632 -0.110435,0.1626948 -0.307641,0.2553816 0.1341,0.046343 0.217913,0.1893176 0.196219,0.3855375 0.313557,0.8874265 -0.181429,0.021693 -0.413146,0.021693 -0.167625,0 -0.316516,-0.00986 -0.01873,-9.86e-4 -0.03648,-0.011832 -0.01775,-0.010846 -0.02366,-0.027609 -0.192278,-0.5837298 -0.29877,-0.9426445 h -0.05226 q 0.002,0.1104353 0.0089,0.4525875 0.0079,0.3421522 0.0089,0.5176654 -0.161708,0.0069 -0.346096,0.0069 -0.166639,0 -0.4032859,-0.0069 -0.016762,0 -0.028595,-0.010846 -0.010846,-0.011832 -0.010846,-0.028595 0,-0.1824154 -0.00394,-0.5886595 -0.00394,-0.4062441 -0.00394,-0.6064081 z M 10.524235,2.7143918 h 0.06705 q 0.09367,0 0.150862,-0.046343 0.05818,-0.047329 0.05818,-0.1242397 0,-0.096631 -0.03944,-0.1429742 -0.03944,-0.047329 -0.140016,-0.047329 -0.05127,0 -0.09466,0.00296 -0.002,0.2307309 -0.002,0.3579287 z"
|
||||
style="fill:#f0f0f0;fill-opacity:1;stroke-width:0.10096943"
|
||||
id="path4856"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 11.735079,2.9855499 q 0,-0.2869346 0.06212,-0.5107632 0.06212,-0.2248147 0.178471,-0.3746912 0.117338,-0.1498765 0.282991,-0.2317169 0.166639,-0.08184 0.375677,-0.092687 0.192276,0 0.343138,0.026623 0.150863,0.025637 0.276088,0.084799 0.126212,0.058176 0.214955,0.1518486 0.08874,0.093673 0.149876,0.2277728 0.06212,0.1341 0.09072,0.3125713 0.02958,0.1784713 0.02958,0.4062441 0,0.2869345 -0.06311,0.5117492 -0.06311,0.2238287 -0.182416,0.3737052 -0.118323,0.1488904 -0.284962,0.2307309 -0.166639,0.080854 -0.376663,0.091701 -0.19129,0 -0.342152,-0.025637 -0.149877,-0.026623 -0.275103,-0.084798 -0.124239,-0.058176 -0.212982,-0.1508625 -0.08776,-0.093673 -0.14889,-0.2277728 -0.06015,-0.1341 -0.08874,-0.3115853 -0.02859,-0.1784713 -0.02859,-0.4072301 z m 0.824321,0 q 0,0.1380441 0.0089,0.234675 0.0099,0.096631 0.02366,0.1528345 0.01479,0.055218 0.03944,0.085785 0.02465,0.030567 0.0493,0.039441 0.02465,0.00887 0.06015,0.00887 0.0355,0 0.05916,-0.00887 0.02366,-0.00887 0.04733,-0.039441 0.02366,-0.030567 0.03648,-0.085785 0.0138,-0.056204 0.02169,-0.1528345 0.0089,-0.096631 0.0089,-0.234675 0,-0.1143794 -0.0059,-0.200164 -0.0059,-0.086771 -0.01874,-0.1429742 -0.01282,-0.056204 -0.02761,-0.091701 -0.01479,-0.036483 -0.03846,-0.054232 -0.02268,-0.017748 -0.04437,-0.023665 -0.02071,-0.0069 -0.05029,-0.0069 -0.02958,0 -0.05029,0.00592 -0.01972,0.00592 -0.04043,0.024651 -0.02071,0.017749 -0.03451,0.054232 -0.01282,0.035497 -0.02366,0.092687 -0.01085,0.056204 -0.01578,0.1419882 -0.0049,0.084799 -0.0049,0.200164 z"
|
||||
style="fill:#f0f0f0;fill-opacity:1;stroke-width:0.10096943"
|
||||
id="path4858"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 13.943785,2.9865359 q 0,-0.5521764 0.01578,-1.1832353 0.187345,-0.00887 0.34511,-0.00887 0.162695,0 0.404272,0.00887 0.01578,0 0.02761,0.011832 0.01183,0.011832 0.01183,0.027609 0.01578,0.7414941 0.01578,1.1437941 0,0.2622838 -0.003,0.5117493 h 0.01676 q 0.359901,0 0.601478,0.00887 0.01578,0 0.02761,0.011832 0.01183,0.011832 0.01183,0.027609 0.0039,0.2405912 0.0039,0.3411662 0,0.1548066 -0.0039,0.2898926 -0.187346,0.00887 -0.581757,0.00887 -0.09762,0 -0.416105,-0.0069 -0.317501,-0.00592 -0.42202,-0.00986 -0.01578,0 -0.02761,-0.011832 -0.01183,-0.011832 -0.01183,-0.027609 -0.01578,-0.7414941 -0.01578,-1.1437941 z"
|
||||
style="fill:#f0f0f0;fill-opacity:1;stroke-width:0.10096943"
|
||||
id="path4860"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 15.560873,2.9865359 q 0,-0.5521764 0.01578,-1.1832353 0.187345,-0.00887 0.34511,-0.00887 0.162695,0 0.404272,0.00887 0.01578,0 0.02761,0.011832 0.01183,0.011832 0.01183,0.027609 0.01578,0.7414941 0.01578,1.1437941 0,0.2622838 -0.003,0.5117493 h 0.01676 q 0.359901,0 0.601478,0.00887 0.01578,0 0.02761,0.011832 0.01183,0.011832 0.01183,0.027609 0.0039,0.2405912 0.0039,0.3411662 0,0.1548066 -0.0039,0.2898926 -0.187345,0.00887 -0.581757,0.00887 -0.09762,0 -0.416104,-0.0069 -0.317502,-0.00592 -0.422021,-0.00986 -0.01578,0 -0.02761,-0.011832 -0.01183,-0.011832 -0.01183,-0.027609 -0.01578,-0.7414941 -0.01578,-1.1437941 z"
|
||||
style="fill:#f0f0f0;fill-opacity:1;stroke-width:0.10096943"
|
||||
id="path4862"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 17.177962,2.9865359 q 0,-0.5521764 0.01578,-1.1832353 0.187346,-0.00887 0.818405,-0.00887 0.446671,0 0.688248,0.00887 0.01578,0 0.02761,0.011832 0.01183,0.011832 0.01183,0.027609 0.0039,0.2405912 0.0039,0.3411662 0,0.1548066 -0.0039,0.2898926 -0.166639,0.00789 -0.627114,0.00789 -0.08283,0 -0.149877,-9.861e-4 -0.002,0.1360721 -0.003,0.2070662 0.352999,0.00197 0.472308,0.0069 0.01578,0 0.02761,0.011832 0.01183,0.011832 0.01183,0.027609 0.003,0.1617088 0.003,0.2967948 0,0.1212817 -0.003,0.2632699 h -0.511749 q 9.86e-4,0.069022 0.003,0.2050941 h 0.04733 q 0.483154,0 0.698108,0.00789 0.01578,0 0.02761,0.011832 0.01183,0.011832 0.01183,0.027609 0.0039,0.2405912 0.0039,0.3411662 0,0.1548066 -0.0039,0.2898926 -0.187346,0.00887 -0.676417,0.00887 -0.09762,0 -0.416104,-0.0069 -0.317502,-0.00592 -0.422021,-0.00986 -0.01578,0 -0.02761,-0.011832 -0.01183,-0.011832 -0.01183,-0.027609 -0.01578,-0.7414941 -0.01578,-1.1437941 z"
|
||||
style="fill:#f0f0f0;fill-opacity:1;stroke-width:0.10096943"
|
||||
id="path4864"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 18.976478,2.9352624 q 0,-0.1972059 0.0039,-0.5462603 0.0039,-0.3490544 0.0039,-0.5462603 0.197206,-0.030567 0.419062,-0.048315 0.222843,-0.018735 0.389482,-0.018735 0.14396,0 0.241577,0.00493 0.09762,0.00394 0.210024,0.019721 0.113394,0.01479 0.18636,0.043385 0.07297,0.028595 0.145932,0.078882 0.07297,0.050288 0.113393,0.1222677 0.04141,0.07198 0.06705,0.1764992 0.02564,0.1045191 0.02564,0.2396052 0,0.2139683 -0.110435,0.3766632 -0.110435,0.1626948 -0.307641,0.2553816 0.1341,0.046343 0.217912,0.1893176 0.19622,0.3855375 0.313558,0.8874265 -0.18143,0.021693 -0.413147,0.021693 -0.167625,0 -0.316515,-0.00986 Q 20.1478,4.1806178 20.13005,4.1697718 20.1123,4.1589258 20.10638,4.1421628 19.914192,3.558433 19.807701,3.1995183 h -0.05226 q 0.002,0.1104353 0.0089,0.4525875 0.0079,0.3421522 0.0089,0.5176654 -0.161709,0.0069 -0.346096,0.0069 -0.166639,0 -0.403286,-0.0069 -0.01676,0 -0.02859,-0.010846 -0.01085,-0.011832 -0.01085,-0.028595 0,-0.1824154 -0.0039,-0.5886595 -0.0039,-0.4062441 -0.0039,-0.6064081 z M 19.75347,2.7143918 h 0.06705 q 0.09367,0 0.150862,-0.046343 0.05818,-0.047329 0.05818,-0.1242397 0,-0.096631 -0.03944,-0.1429742 -0.03944,-0.047329 -0.140017,-0.047329 -0.05127,0 -0.09466,0.00296 -0.002,0.2307309 -0.002,0.3579287 z"
|
||||
style="fill:#f0f0f0;fill-opacity:1;stroke-width:0.10096943"
|
||||
id="path4866"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 15 KiB |
69
resources/graphics/controllers/gamepad_generic.svg
Normal file
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="42"
|
||||
height="42"
|
||||
viewBox="0 0 11.1125 11.1125"
|
||||
version="1.1"
|
||||
id="svg4925"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
|
||||
sodipodi:docname="unknown.svg">
|
||||
<defs
|
||||
id="defs4919" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="6.7728148"
|
||||
inkscape:cx="-21.346482"
|
||||
inkscape:cy="-0.76992782"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2065"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4922">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-285.88748)">
|
||||
<g
|
||||
aria-label="?"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.72348785px;line-height:1.25;font-family:Digitalt;-inkscape-font-specification:Digitalt;letter-spacing:0px;word-spacing:0px;fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="text4825"
|
||||
transform="matrix(0.91316098,0,0,0.91316098,1.9388092,25.308702)">
|
||||
<path
|
||||
d="m 1.9437243,295.40006 q 0,-0.59882 0.013713,-1.25707 0.66739,-0.032 1.3530646,-0.032 0.6033936,0 1.5724804,0.032 0.073139,0 0.1279926,0.0548 0.054854,0.0549 0.054854,0.128 0.013713,0.74053 0.013713,1.40334 0,0.58968 -0.013713,1.24793 -0.4114048,0.0229 -0.9919426,0.0229 -0.8410942,0 -1.9336024,-0.0594 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.12799 -0.013713,-0.71768 -0.013713,-1.35764 z m -1.50391294,-9.11947 q 1.63190554,-0.39312 3.35523444,-0.39312 0.6811034,0 1.2205008,0.0777 0.5439685,0.0777 1.0147984,0.2697 0.475401,0.18741 0.7908113,0.48911 0.3154104,0.29713 0.4936858,0.76339 0.1828465,0.46625 0.1828465,1.07879 0,0.68567 -0.3016968,1.27078 -0.2971257,0.58511 -0.8182384,1.12908 -0.2422717,0.25142 -0.3656931,0.38855 -0.1234214,0.13713 -0.3199815,0.39769 -0.1919889,0.25599 -0.2925545,0.46169 -0.095994,0.2057 -0.1782754,0.50283 -0.07771,0.29255 -0.082281,0.60339 -0.5531109,0.0366 -1.3804916,0.0366 -0.8502365,0 -1.6913306,-0.0366 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.128 0,-0.53025 0.1325638,-0.99651 0.1325637,-0.46626 0.3428373,-0.79538 0.2102735,-0.32913 0.4662587,-0.61254 0.2559852,-0.28798 0.5119704,-0.5074 0.2559851,-0.22398 0.4662587,-0.41597 0.2102735,-0.19199 0.3428373,-0.38855 0.1325637,-0.19656 0.1325637,-0.38398 0,-0.5394 -0.754242,-0.5394 -0.612536,0 -1.5084841,0.31541 -0.891377,0.31084 -1.16564687,0.5074 z"
|
||||
style="fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4827"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.7 KiB |
69
resources/graphics/controllers/gamepad_nintendo_64.svg
Normal file
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="42"
|
||||
height="42"
|
||||
viewBox="0 0 11.1125 11.1125"
|
||||
version="1.1"
|
||||
id="svg4925"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
|
||||
sodipodi:docname="unknown.svg">
|
||||
<defs
|
||||
id="defs4919" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="6.7728148"
|
||||
inkscape:cx="-21.346482"
|
||||
inkscape:cy="-0.76992782"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2065"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4922">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-285.88748)">
|
||||
<g
|
||||
aria-label="?"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.72348785px;line-height:1.25;font-family:Digitalt;-inkscape-font-specification:Digitalt;letter-spacing:0px;word-spacing:0px;fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="text4825"
|
||||
transform="matrix(0.91316098,0,0,0.91316098,1.9388092,25.308702)">
|
||||
<path
|
||||
d="m 1.9437243,295.40006 q 0,-0.59882 0.013713,-1.25707 0.66739,-0.032 1.3530646,-0.032 0.6033936,0 1.5724804,0.032 0.073139,0 0.1279926,0.0548 0.054854,0.0549 0.054854,0.128 0.013713,0.74053 0.013713,1.40334 0,0.58968 -0.013713,1.24793 -0.4114048,0.0229 -0.9919426,0.0229 -0.8410942,0 -1.9336024,-0.0594 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.12799 -0.013713,-0.71768 -0.013713,-1.35764 z m -1.50391294,-9.11947 q 1.63190554,-0.39312 3.35523444,-0.39312 0.6811034,0 1.2205008,0.0777 0.5439685,0.0777 1.0147984,0.2697 0.475401,0.18741 0.7908113,0.48911 0.3154104,0.29713 0.4936858,0.76339 0.1828465,0.46625 0.1828465,1.07879 0,0.68567 -0.3016968,1.27078 -0.2971257,0.58511 -0.8182384,1.12908 -0.2422717,0.25142 -0.3656931,0.38855 -0.1234214,0.13713 -0.3199815,0.39769 -0.1919889,0.25599 -0.2925545,0.46169 -0.095994,0.2057 -0.1782754,0.50283 -0.07771,0.29255 -0.082281,0.60339 -0.5531109,0.0366 -1.3804916,0.0366 -0.8502365,0 -1.6913306,-0.0366 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.128 0,-0.53025 0.1325638,-0.99651 0.1325637,-0.46626 0.3428373,-0.79538 0.2102735,-0.32913 0.4662587,-0.61254 0.2559852,-0.28798 0.5119704,-0.5074 0.2559851,-0.22398 0.4662587,-0.41597 0.2102735,-0.19199 0.3428373,-0.38855 0.1325637,-0.19656 0.1325637,-0.38398 0,-0.5394 -0.754242,-0.5394 -0.612536,0 -1.5084841,0.31541 -0.891377,0.31084 -1.16564687,0.5074 z"
|
||||
style="fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4827"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.7 KiB |
69
resources/graphics/controllers/gamepad_nintendo_nes.svg
Normal file
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="42"
|
||||
height="42"
|
||||
viewBox="0 0 11.1125 11.1125"
|
||||
version="1.1"
|
||||
id="svg4925"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
|
||||
sodipodi:docname="unknown.svg">
|
||||
<defs
|
||||
id="defs4919" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="6.7728148"
|
||||
inkscape:cx="-21.346482"
|
||||
inkscape:cy="-0.76992782"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2065"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4922">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-285.88748)">
|
||||
<g
|
||||
aria-label="?"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.72348785px;line-height:1.25;font-family:Digitalt;-inkscape-font-specification:Digitalt;letter-spacing:0px;word-spacing:0px;fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="text4825"
|
||||
transform="matrix(0.91316098,0,0,0.91316098,1.9388092,25.308702)">
|
||||
<path
|
||||
d="m 1.9437243,295.40006 q 0,-0.59882 0.013713,-1.25707 0.66739,-0.032 1.3530646,-0.032 0.6033936,0 1.5724804,0.032 0.073139,0 0.1279926,0.0548 0.054854,0.0549 0.054854,0.128 0.013713,0.74053 0.013713,1.40334 0,0.58968 -0.013713,1.24793 -0.4114048,0.0229 -0.9919426,0.0229 -0.8410942,0 -1.9336024,-0.0594 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.12799 -0.013713,-0.71768 -0.013713,-1.35764 z m -1.50391294,-9.11947 q 1.63190554,-0.39312 3.35523444,-0.39312 0.6811034,0 1.2205008,0.0777 0.5439685,0.0777 1.0147984,0.2697 0.475401,0.18741 0.7908113,0.48911 0.3154104,0.29713 0.4936858,0.76339 0.1828465,0.46625 0.1828465,1.07879 0,0.68567 -0.3016968,1.27078 -0.2971257,0.58511 -0.8182384,1.12908 -0.2422717,0.25142 -0.3656931,0.38855 -0.1234214,0.13713 -0.3199815,0.39769 -0.1919889,0.25599 -0.2925545,0.46169 -0.095994,0.2057 -0.1782754,0.50283 -0.07771,0.29255 -0.082281,0.60339 -0.5531109,0.0366 -1.3804916,0.0366 -0.8502365,0 -1.6913306,-0.0366 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.128 0,-0.53025 0.1325638,-0.99651 0.1325637,-0.46626 0.3428373,-0.79538 0.2102735,-0.32913 0.4662587,-0.61254 0.2559852,-0.28798 0.5119704,-0.5074 0.2559851,-0.22398 0.4662587,-0.41597 0.2102735,-0.19199 0.3428373,-0.38855 0.1325637,-0.19656 0.1325637,-0.38398 0,-0.5394 -0.754242,-0.5394 -0.612536,0 -1.5084841,0.31541 -0.891377,0.31084 -1.16564687,0.5074 z"
|
||||
style="fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4827"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.7 KiB |
69
resources/graphics/controllers/gamepad_nintendo_snes.svg
Normal file
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="42"
|
||||
height="42"
|
||||
viewBox="0 0 11.1125 11.1125"
|
||||
version="1.1"
|
||||
id="svg4925"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
|
||||
sodipodi:docname="unknown.svg">
|
||||
<defs
|
||||
id="defs4919" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="6.7728148"
|
||||
inkscape:cx="-21.346482"
|
||||
inkscape:cy="-0.76992782"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2065"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4922">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-285.88748)">
|
||||
<g
|
||||
aria-label="?"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.72348785px;line-height:1.25;font-family:Digitalt;-inkscape-font-specification:Digitalt;letter-spacing:0px;word-spacing:0px;fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="text4825"
|
||||
transform="matrix(0.91316098,0,0,0.91316098,1.9388092,25.308702)">
|
||||
<path
|
||||
d="m 1.9437243,295.40006 q 0,-0.59882 0.013713,-1.25707 0.66739,-0.032 1.3530646,-0.032 0.6033936,0 1.5724804,0.032 0.073139,0 0.1279926,0.0548 0.054854,0.0549 0.054854,0.128 0.013713,0.74053 0.013713,1.40334 0,0.58968 -0.013713,1.24793 -0.4114048,0.0229 -0.9919426,0.0229 -0.8410942,0 -1.9336024,-0.0594 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.12799 -0.013713,-0.71768 -0.013713,-1.35764 z m -1.50391294,-9.11947 q 1.63190554,-0.39312 3.35523444,-0.39312 0.6811034,0 1.2205008,0.0777 0.5439685,0.0777 1.0147984,0.2697 0.475401,0.18741 0.7908113,0.48911 0.3154104,0.29713 0.4936858,0.76339 0.1828465,0.46625 0.1828465,1.07879 0,0.68567 -0.3016968,1.27078 -0.2971257,0.58511 -0.8182384,1.12908 -0.2422717,0.25142 -0.3656931,0.38855 -0.1234214,0.13713 -0.3199815,0.39769 -0.1919889,0.25599 -0.2925545,0.46169 -0.095994,0.2057 -0.1782754,0.50283 -0.07771,0.29255 -0.082281,0.60339 -0.5531109,0.0366 -1.3804916,0.0366 -0.8502365,0 -1.6913306,-0.0366 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.128 0,-0.53025 0.1325638,-0.99651 0.1325637,-0.46626 0.3428373,-0.79538 0.2102735,-0.32913 0.4662587,-0.61254 0.2559852,-0.28798 0.5119704,-0.5074 0.2559851,-0.22398 0.4662587,-0.41597 0.2102735,-0.19199 0.3428373,-0.38855 0.1325637,-0.19656 0.1325637,-0.38398 0,-0.5394 -0.754242,-0.5394 -0.612536,0 -1.5084841,0.31541 -0.891377,0.31084 -1.16564687,0.5074 z"
|
||||
style="fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4827"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.7 KiB |
69
resources/graphics/controllers/gamepad_playstation.svg
Normal file
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="42"
|
||||
height="42"
|
||||
viewBox="0 0 11.1125 11.1125"
|
||||
version="1.1"
|
||||
id="svg4925"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
|
||||
sodipodi:docname="unknown.svg">
|
||||
<defs
|
||||
id="defs4919" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="6.7728148"
|
||||
inkscape:cx="-21.346482"
|
||||
inkscape:cy="-0.76992782"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2065"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4922">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-285.88748)">
|
||||
<g
|
||||
aria-label="?"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.72348785px;line-height:1.25;font-family:Digitalt;-inkscape-font-specification:Digitalt;letter-spacing:0px;word-spacing:0px;fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="text4825"
|
||||
transform="matrix(0.91316098,0,0,0.91316098,1.9388092,25.308702)">
|
||||
<path
|
||||
d="m 1.9437243,295.40006 q 0,-0.59882 0.013713,-1.25707 0.66739,-0.032 1.3530646,-0.032 0.6033936,0 1.5724804,0.032 0.073139,0 0.1279926,0.0548 0.054854,0.0549 0.054854,0.128 0.013713,0.74053 0.013713,1.40334 0,0.58968 -0.013713,1.24793 -0.4114048,0.0229 -0.9919426,0.0229 -0.8410942,0 -1.9336024,-0.0594 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.12799 -0.013713,-0.71768 -0.013713,-1.35764 z m -1.50391294,-9.11947 q 1.63190554,-0.39312 3.35523444,-0.39312 0.6811034,0 1.2205008,0.0777 0.5439685,0.0777 1.0147984,0.2697 0.475401,0.18741 0.7908113,0.48911 0.3154104,0.29713 0.4936858,0.76339 0.1828465,0.46625 0.1828465,1.07879 0,0.68567 -0.3016968,1.27078 -0.2971257,0.58511 -0.8182384,1.12908 -0.2422717,0.25142 -0.3656931,0.38855 -0.1234214,0.13713 -0.3199815,0.39769 -0.1919889,0.25599 -0.2925545,0.46169 -0.095994,0.2057 -0.1782754,0.50283 -0.07771,0.29255 -0.082281,0.60339 -0.5531109,0.0366 -1.3804916,0.0366 -0.8502365,0 -1.6913306,-0.0366 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.128 0,-0.53025 0.1325638,-0.99651 0.1325637,-0.46626 0.3428373,-0.79538 0.2102735,-0.32913 0.4662587,-0.61254 0.2559852,-0.28798 0.5119704,-0.5074 0.2559851,-0.22398 0.4662587,-0.41597 0.2102735,-0.19199 0.3428373,-0.38855 0.1325637,-0.19656 0.1325637,-0.38398 0,-0.5394 -0.754242,-0.5394 -0.612536,0 -1.5084841,0.31541 -0.891377,0.31084 -1.16564687,0.5074 z"
|
||||
style="fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4827"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.7 KiB |
69
resources/graphics/controllers/gamepad_xbox.svg
Normal file
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="42"
|
||||
height="42"
|
||||
viewBox="0 0 11.1125 11.1125"
|
||||
version="1.1"
|
||||
id="svg4925"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
|
||||
sodipodi:docname="unknown.svg">
|
||||
<defs
|
||||
id="defs4919" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="6.7728148"
|
||||
inkscape:cx="-21.346482"
|
||||
inkscape:cy="-0.76992782"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2065"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4922">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-285.88748)">
|
||||
<g
|
||||
aria-label="?"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.72348785px;line-height:1.25;font-family:Digitalt;-inkscape-font-specification:Digitalt;letter-spacing:0px;word-spacing:0px;fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="text4825"
|
||||
transform="matrix(0.91316098,0,0,0.91316098,1.9388092,25.308702)">
|
||||
<path
|
||||
d="m 1.9437243,295.40006 q 0,-0.59882 0.013713,-1.25707 0.66739,-0.032 1.3530646,-0.032 0.6033936,0 1.5724804,0.032 0.073139,0 0.1279926,0.0548 0.054854,0.0549 0.054854,0.128 0.013713,0.74053 0.013713,1.40334 0,0.58968 -0.013713,1.24793 -0.4114048,0.0229 -0.9919426,0.0229 -0.8410942,0 -1.9336024,-0.0594 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.12799 -0.013713,-0.71768 -0.013713,-1.35764 z m -1.50391294,-9.11947 q 1.63190554,-0.39312 3.35523444,-0.39312 0.6811034,0 1.2205008,0.0777 0.5439685,0.0777 1.0147984,0.2697 0.475401,0.18741 0.7908113,0.48911 0.3154104,0.29713 0.4936858,0.76339 0.1828465,0.46625 0.1828465,1.07879 0,0.68567 -0.3016968,1.27078 -0.2971257,0.58511 -0.8182384,1.12908 -0.2422717,0.25142 -0.3656931,0.38855 -0.1234214,0.13713 -0.3199815,0.39769 -0.1919889,0.25599 -0.2925545,0.46169 -0.095994,0.2057 -0.1782754,0.50283 -0.07771,0.29255 -0.082281,0.60339 -0.5531109,0.0366 -1.3804916,0.0366 -0.8502365,0 -1.6913306,-0.0366 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.128 0,-0.53025 0.1325638,-0.99651 0.1325637,-0.46626 0.3428373,-0.79538 0.2102735,-0.32913 0.4662587,-0.61254 0.2559852,-0.28798 0.5119704,-0.5074 0.2559851,-0.22398 0.4662587,-0.41597 0.2102735,-0.19199 0.3428373,-0.38855 0.1325637,-0.19656 0.1325637,-0.38398 0,-0.5394 -0.754242,-0.5394 -0.612536,0 -1.5084841,0.31541 -0.891377,0.31084 -1.16564687,0.5074 z"
|
||||
style="fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4827"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.7 KiB |
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="42"
|
||||
height="42"
|
||||
viewBox="0 0 11.1125 11.1125"
|
||||
version="1.1"
|
||||
id="svg4925"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
|
||||
sodipodi:docname="unknown.svg">
|
||||
<defs
|
||||
id="defs4919" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="6.7728148"
|
||||
inkscape:cx="-21.346482"
|
||||
inkscape:cy="-0.76992782"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2065"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4922">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-285.88748)">
|
||||
<g
|
||||
aria-label="?"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.72348785px;line-height:1.25;font-family:Digitalt;-inkscape-font-specification:Digitalt;letter-spacing:0px;word-spacing:0px;fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="text4825"
|
||||
transform="matrix(0.91316098,0,0,0.91316098,1.9388092,25.308702)">
|
||||
<path
|
||||
d="m 1.9437243,295.40006 q 0,-0.59882 0.013713,-1.25707 0.66739,-0.032 1.3530646,-0.032 0.6033936,0 1.5724804,0.032 0.073139,0 0.1279926,0.0548 0.054854,0.0549 0.054854,0.128 0.013713,0.74053 0.013713,1.40334 0,0.58968 -0.013713,1.24793 -0.4114048,0.0229 -0.9919426,0.0229 -0.8410942,0 -1.9336024,-0.0594 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.12799 -0.013713,-0.71768 -0.013713,-1.35764 z m -1.50391294,-9.11947 q 1.63190554,-0.39312 3.35523444,-0.39312 0.6811034,0 1.2205008,0.0777 0.5439685,0.0777 1.0147984,0.2697 0.475401,0.18741 0.7908113,0.48911 0.3154104,0.29713 0.4936858,0.76339 0.1828465,0.46625 0.1828465,1.07879 0,0.68567 -0.3016968,1.27078 -0.2971257,0.58511 -0.8182384,1.12908 -0.2422717,0.25142 -0.3656931,0.38855 -0.1234214,0.13713 -0.3199815,0.39769 -0.1919889,0.25599 -0.2925545,0.46169 -0.095994,0.2057 -0.1782754,0.50283 -0.07771,0.29255 -0.082281,0.60339 -0.5531109,0.0366 -1.3804916,0.0366 -0.8502365,0 -1.6913306,-0.0366 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.128 0,-0.53025 0.1325638,-0.99651 0.1325637,-0.46626 0.3428373,-0.79538 0.2102735,-0.32913 0.4662587,-0.61254 0.2559852,-0.28798 0.5119704,-0.5074 0.2559851,-0.22398 0.4662587,-0.41597 0.2102735,-0.19199 0.3428373,-0.38855 0.1325637,-0.19656 0.1325637,-0.38398 0,-0.5394 -0.754242,-0.5394 -0.612536,0 -1.5084841,0.31541 -0.891377,0.31084 -1.16564687,0.5074 z"
|
||||
style="fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4827"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.7 KiB |
69
resources/graphics/controllers/joycon_pair_nintendo.svg
Normal file
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="42"
|
||||
height="42"
|
||||
viewBox="0 0 11.1125 11.1125"
|
||||
version="1.1"
|
||||
id="svg4925"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
|
||||
sodipodi:docname="unknown.svg">
|
||||
<defs
|
||||
id="defs4919" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="6.7728148"
|
||||
inkscape:cx="-21.346482"
|
||||
inkscape:cy="-0.76992782"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2065"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4922">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-285.88748)">
|
||||
<g
|
||||
aria-label="?"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.72348785px;line-height:1.25;font-family:Digitalt;-inkscape-font-specification:Digitalt;letter-spacing:0px;word-spacing:0px;fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="text4825"
|
||||
transform="matrix(0.91316098,0,0,0.91316098,1.9388092,25.308702)">
|
||||
<path
|
||||
d="m 1.9437243,295.40006 q 0,-0.59882 0.013713,-1.25707 0.66739,-0.032 1.3530646,-0.032 0.6033936,0 1.5724804,0.032 0.073139,0 0.1279926,0.0548 0.054854,0.0549 0.054854,0.128 0.013713,0.74053 0.013713,1.40334 0,0.58968 -0.013713,1.24793 -0.4114048,0.0229 -0.9919426,0.0229 -0.8410942,0 -1.9336024,-0.0594 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.12799 -0.013713,-0.71768 -0.013713,-1.35764 z m -1.50391294,-9.11947 q 1.63190554,-0.39312 3.35523444,-0.39312 0.6811034,0 1.2205008,0.0777 0.5439685,0.0777 1.0147984,0.2697 0.475401,0.18741 0.7908113,0.48911 0.3154104,0.29713 0.4936858,0.76339 0.1828465,0.46625 0.1828465,1.07879 0,0.68567 -0.3016968,1.27078 -0.2971257,0.58511 -0.8182384,1.12908 -0.2422717,0.25142 -0.3656931,0.38855 -0.1234214,0.13713 -0.3199815,0.39769 -0.1919889,0.25599 -0.2925545,0.46169 -0.095994,0.2057 -0.1782754,0.50283 -0.07771,0.29255 -0.082281,0.60339 -0.5531109,0.0366 -1.3804916,0.0366 -0.8502365,0 -1.6913306,-0.0366 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.128 0,-0.53025 0.1325638,-0.99651 0.1325637,-0.46626 0.3428373,-0.79538 0.2102735,-0.32913 0.4662587,-0.61254 0.2559852,-0.28798 0.5119704,-0.5074 0.2559851,-0.22398 0.4662587,-0.41597 0.2102735,-0.19199 0.3428373,-0.38855 0.1325637,-0.19656 0.1325637,-0.38398 0,-0.5394 -0.754242,-0.5394 -0.612536,0 -1.5084841,0.31541 -0.891377,0.31084 -1.16564687,0.5074 z"
|
||||
style="fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4827"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.7 KiB |
69
resources/graphics/controllers/joystick_arcade_2_buttons.svg
Normal file
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="42"
|
||||
height="42"
|
||||
viewBox="0 0 11.1125 11.1125"
|
||||
version="1.1"
|
||||
id="svg4925"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
|
||||
sodipodi:docname="unknown.svg">
|
||||
<defs
|
||||
id="defs4919" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="6.7728148"
|
||||
inkscape:cx="-21.346482"
|
||||
inkscape:cy="-0.76992782"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2065"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4922">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-285.88748)">
|
||||
<g
|
||||
aria-label="?"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.72348785px;line-height:1.25;font-family:Digitalt;-inkscape-font-specification:Digitalt;letter-spacing:0px;word-spacing:0px;fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="text4825"
|
||||
transform="matrix(0.91316098,0,0,0.91316098,1.9388092,25.308702)">
|
||||
<path
|
||||
d="m 1.9437243,295.40006 q 0,-0.59882 0.013713,-1.25707 0.66739,-0.032 1.3530646,-0.032 0.6033936,0 1.5724804,0.032 0.073139,0 0.1279926,0.0548 0.054854,0.0549 0.054854,0.128 0.013713,0.74053 0.013713,1.40334 0,0.58968 -0.013713,1.24793 -0.4114048,0.0229 -0.9919426,0.0229 -0.8410942,0 -1.9336024,-0.0594 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.12799 -0.013713,-0.71768 -0.013713,-1.35764 z m -1.50391294,-9.11947 q 1.63190554,-0.39312 3.35523444,-0.39312 0.6811034,0 1.2205008,0.0777 0.5439685,0.0777 1.0147984,0.2697 0.475401,0.18741 0.7908113,0.48911 0.3154104,0.29713 0.4936858,0.76339 0.1828465,0.46625 0.1828465,1.07879 0,0.68567 -0.3016968,1.27078 -0.2971257,0.58511 -0.8182384,1.12908 -0.2422717,0.25142 -0.3656931,0.38855 -0.1234214,0.13713 -0.3199815,0.39769 -0.1919889,0.25599 -0.2925545,0.46169 -0.095994,0.2057 -0.1782754,0.50283 -0.07771,0.29255 -0.082281,0.60339 -0.5531109,0.0366 -1.3804916,0.0366 -0.8502365,0 -1.6913306,-0.0366 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.128 0,-0.53025 0.1325638,-0.99651 0.1325637,-0.46626 0.3428373,-0.79538 0.2102735,-0.32913 0.4662587,-0.61254 0.2559852,-0.28798 0.5119704,-0.5074 0.2559851,-0.22398 0.4662587,-0.41597 0.2102735,-0.19199 0.3428373,-0.38855 0.1325637,-0.19656 0.1325637,-0.38398 0,-0.5394 -0.754242,-0.5394 -0.612536,0 -1.5084841,0.31541 -0.891377,0.31084 -1.16564687,0.5074 z"
|
||||
style="fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4827"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.7 KiB |
69
resources/graphics/controllers/joystick_arcade_3_buttons.svg
Normal file
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="42"
|
||||
height="42"
|
||||
viewBox="0 0 11.1125 11.1125"
|
||||
version="1.1"
|
||||
id="svg4925"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
|
||||
sodipodi:docname="unknown.svg">
|
||||
<defs
|
||||
id="defs4919" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="6.7728148"
|
||||
inkscape:cx="-21.346482"
|
||||
inkscape:cy="-0.76992782"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2065"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4922">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-285.88748)">
|
||||
<g
|
||||
aria-label="?"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.72348785px;line-height:1.25;font-family:Digitalt;-inkscape-font-specification:Digitalt;letter-spacing:0px;word-spacing:0px;fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="text4825"
|
||||
transform="matrix(0.91316098,0,0,0.91316098,1.9388092,25.308702)">
|
||||
<path
|
||||
d="m 1.9437243,295.40006 q 0,-0.59882 0.013713,-1.25707 0.66739,-0.032 1.3530646,-0.032 0.6033936,0 1.5724804,0.032 0.073139,0 0.1279926,0.0548 0.054854,0.0549 0.054854,0.128 0.013713,0.74053 0.013713,1.40334 0,0.58968 -0.013713,1.24793 -0.4114048,0.0229 -0.9919426,0.0229 -0.8410942,0 -1.9336024,-0.0594 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.12799 -0.013713,-0.71768 -0.013713,-1.35764 z m -1.50391294,-9.11947 q 1.63190554,-0.39312 3.35523444,-0.39312 0.6811034,0 1.2205008,0.0777 0.5439685,0.0777 1.0147984,0.2697 0.475401,0.18741 0.7908113,0.48911 0.3154104,0.29713 0.4936858,0.76339 0.1828465,0.46625 0.1828465,1.07879 0,0.68567 -0.3016968,1.27078 -0.2971257,0.58511 -0.8182384,1.12908 -0.2422717,0.25142 -0.3656931,0.38855 -0.1234214,0.13713 -0.3199815,0.39769 -0.1919889,0.25599 -0.2925545,0.46169 -0.095994,0.2057 -0.1782754,0.50283 -0.07771,0.29255 -0.082281,0.60339 -0.5531109,0.0366 -1.3804916,0.0366 -0.8502365,0 -1.6913306,-0.0366 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.128 0,-0.53025 0.1325638,-0.99651 0.1325637,-0.46626 0.3428373,-0.79538 0.2102735,-0.32913 0.4662587,-0.61254 0.2559852,-0.28798 0.5119704,-0.5074 0.2559851,-0.22398 0.4662587,-0.41597 0.2102735,-0.19199 0.3428373,-0.38855 0.1325637,-0.19656 0.1325637,-0.38398 0,-0.5394 -0.754242,-0.5394 -0.612536,0 -1.5084841,0.31541 -0.891377,0.31084 -1.16564687,0.5074 z"
|
||||
style="fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4827"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.7 KiB |
69
resources/graphics/controllers/joystick_arcade_4_buttons.svg
Normal file
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="42"
|
||||
height="42"
|
||||
viewBox="0 0 11.1125 11.1125"
|
||||
version="1.1"
|
||||
id="svg4925"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
|
||||
sodipodi:docname="unknown.svg">
|
||||
<defs
|
||||
id="defs4919" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="6.7728148"
|
||||
inkscape:cx="-21.346482"
|
||||
inkscape:cy="-0.76992782"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2065"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4922">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-285.88748)">
|
||||
<g
|
||||
aria-label="?"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.72348785px;line-height:1.25;font-family:Digitalt;-inkscape-font-specification:Digitalt;letter-spacing:0px;word-spacing:0px;fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="text4825"
|
||||
transform="matrix(0.91316098,0,0,0.91316098,1.9388092,25.308702)">
|
||||
<path
|
||||
d="m 1.9437243,295.40006 q 0,-0.59882 0.013713,-1.25707 0.66739,-0.032 1.3530646,-0.032 0.6033936,0 1.5724804,0.032 0.073139,0 0.1279926,0.0548 0.054854,0.0549 0.054854,0.128 0.013713,0.74053 0.013713,1.40334 0,0.58968 -0.013713,1.24793 -0.4114048,0.0229 -0.9919426,0.0229 -0.8410942,0 -1.9336024,-0.0594 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.12799 -0.013713,-0.71768 -0.013713,-1.35764 z m -1.50391294,-9.11947 q 1.63190554,-0.39312 3.35523444,-0.39312 0.6811034,0 1.2205008,0.0777 0.5439685,0.0777 1.0147984,0.2697 0.475401,0.18741 0.7908113,0.48911 0.3154104,0.29713 0.4936858,0.76339 0.1828465,0.46625 0.1828465,1.07879 0,0.68567 -0.3016968,1.27078 -0.2971257,0.58511 -0.8182384,1.12908 -0.2422717,0.25142 -0.3656931,0.38855 -0.1234214,0.13713 -0.3199815,0.39769 -0.1919889,0.25599 -0.2925545,0.46169 -0.095994,0.2057 -0.1782754,0.50283 -0.07771,0.29255 -0.082281,0.60339 -0.5531109,0.0366 -1.3804916,0.0366 -0.8502365,0 -1.6913306,-0.0366 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.128 0,-0.53025 0.1325638,-0.99651 0.1325637,-0.46626 0.3428373,-0.79538 0.2102735,-0.32913 0.4662587,-0.61254 0.2559852,-0.28798 0.5119704,-0.5074 0.2559851,-0.22398 0.4662587,-0.41597 0.2102735,-0.19199 0.3428373,-0.38855 0.1325637,-0.19656 0.1325637,-0.38398 0,-0.5394 -0.754242,-0.5394 -0.612536,0 -1.5084841,0.31541 -0.891377,0.31084 -1.16564687,0.5074 z"
|
||||
style="fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4827"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.7 KiB |
69
resources/graphics/controllers/joystick_arcade_6_buttons.svg
Normal file
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="42"
|
||||
height="42"
|
||||
viewBox="0 0 11.1125 11.1125"
|
||||
version="1.1"
|
||||
id="svg4925"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
|
||||
sodipodi:docname="unknown.svg">
|
||||
<defs
|
||||
id="defs4919" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="6.7728148"
|
||||
inkscape:cx="-21.346482"
|
||||
inkscape:cy="-0.76992782"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2065"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4922">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-285.88748)">
|
||||
<g
|
||||
aria-label="?"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.72348785px;line-height:1.25;font-family:Digitalt;-inkscape-font-specification:Digitalt;letter-spacing:0px;word-spacing:0px;fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="text4825"
|
||||
transform="matrix(0.91316098,0,0,0.91316098,1.9388092,25.308702)">
|
||||
<path
|
||||
d="m 1.9437243,295.40006 q 0,-0.59882 0.013713,-1.25707 0.66739,-0.032 1.3530646,-0.032 0.6033936,0 1.5724804,0.032 0.073139,0 0.1279926,0.0548 0.054854,0.0549 0.054854,0.128 0.013713,0.74053 0.013713,1.40334 0,0.58968 -0.013713,1.24793 -0.4114048,0.0229 -0.9919426,0.0229 -0.8410942,0 -1.9336024,-0.0594 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.12799 -0.013713,-0.71768 -0.013713,-1.35764 z m -1.50391294,-9.11947 q 1.63190554,-0.39312 3.35523444,-0.39312 0.6811034,0 1.2205008,0.0777 0.5439685,0.0777 1.0147984,0.2697 0.475401,0.18741 0.7908113,0.48911 0.3154104,0.29713 0.4936858,0.76339 0.1828465,0.46625 0.1828465,1.07879 0,0.68567 -0.3016968,1.27078 -0.2971257,0.58511 -0.8182384,1.12908 -0.2422717,0.25142 -0.3656931,0.38855 -0.1234214,0.13713 -0.3199815,0.39769 -0.1919889,0.25599 -0.2925545,0.46169 -0.095994,0.2057 -0.1782754,0.50283 -0.07771,0.29255 -0.082281,0.60339 -0.5531109,0.0366 -1.3804916,0.0366 -0.8502365,0 -1.6913306,-0.0366 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.128 0,-0.53025 0.1325638,-0.99651 0.1325637,-0.46626 0.3428373,-0.79538 0.2102735,-0.32913 0.4662587,-0.61254 0.2559852,-0.28798 0.5119704,-0.5074 0.2559851,-0.22398 0.4662587,-0.41597 0.2102735,-0.19199 0.3428373,-0.38855 0.1325637,-0.19656 0.1325637,-0.38398 0,-0.5394 -0.754242,-0.5394 -0.612536,0 -1.5084841,0.31541 -0.891377,0.31084 -1.16564687,0.5074 z"
|
||||
style="fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4827"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.7 KiB |
69
resources/graphics/controllers/joystick_generic.svg
Normal file
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="42"
|
||||
height="42"
|
||||
viewBox="0 0 11.1125 11.1125"
|
||||
version="1.1"
|
||||
id="svg4925"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
|
||||
sodipodi:docname="unknown.svg">
|
||||
<defs
|
||||
id="defs4919" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="6.7728148"
|
||||
inkscape:cx="-21.346482"
|
||||
inkscape:cy="-0.76992782"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2065"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4922">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-285.88748)">
|
||||
<g
|
||||
aria-label="?"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.72348785px;line-height:1.25;font-family:Digitalt;-inkscape-font-specification:Digitalt;letter-spacing:0px;word-spacing:0px;fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="text4825"
|
||||
transform="matrix(0.91316098,0,0,0.91316098,1.9388092,25.308702)">
|
||||
<path
|
||||
d="m 1.9437243,295.40006 q 0,-0.59882 0.013713,-1.25707 0.66739,-0.032 1.3530646,-0.032 0.6033936,0 1.5724804,0.032 0.073139,0 0.1279926,0.0548 0.054854,0.0549 0.054854,0.128 0.013713,0.74053 0.013713,1.40334 0,0.58968 -0.013713,1.24793 -0.4114048,0.0229 -0.9919426,0.0229 -0.8410942,0 -1.9336024,-0.0594 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.12799 -0.013713,-0.71768 -0.013713,-1.35764 z m -1.50391294,-9.11947 q 1.63190554,-0.39312 3.35523444,-0.39312 0.6811034,0 1.2205008,0.0777 0.5439685,0.0777 1.0147984,0.2697 0.475401,0.18741 0.7908113,0.48911 0.3154104,0.29713 0.4936858,0.76339 0.1828465,0.46625 0.1828465,1.07879 0,0.68567 -0.3016968,1.27078 -0.2971257,0.58511 -0.8182384,1.12908 -0.2422717,0.25142 -0.3656931,0.38855 -0.1234214,0.13713 -0.3199815,0.39769 -0.1919889,0.25599 -0.2925545,0.46169 -0.095994,0.2057 -0.1782754,0.50283 -0.07771,0.29255 -0.082281,0.60339 -0.5531109,0.0366 -1.3804916,0.0366 -0.8502365,0 -1.6913306,-0.0366 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.128 0,-0.53025 0.1325638,-0.99651 0.1325637,-0.46626 0.3428373,-0.79538 0.2102735,-0.32913 0.4662587,-0.61254 0.2559852,-0.28798 0.5119704,-0.5074 0.2559851,-0.22398 0.4662587,-0.41597 0.2102735,-0.19199 0.3428373,-0.38855 0.1325637,-0.19656 0.1325637,-0.38398 0,-0.5394 -0.754242,-0.5394 -0.612536,0 -1.5084841,0.31541 -0.891377,0.31084 -1.16564687,0.5074 z"
|
||||
style="fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4827"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.7 KiB |
69
resources/graphics/controllers/keyboard_generic.svg
Normal file
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="42"
|
||||
height="42"
|
||||
viewBox="0 0 11.1125 11.1125"
|
||||
version="1.1"
|
||||
id="svg4925"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
|
||||
sodipodi:docname="unknown.svg">
|
||||
<defs
|
||||
id="defs4919" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="6.7728148"
|
||||
inkscape:cx="-21.346482"
|
||||
inkscape:cy="-0.76992782"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2065"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4922">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-285.88748)">
|
||||
<g
|
||||
aria-label="?"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.72348785px;line-height:1.25;font-family:Digitalt;-inkscape-font-specification:Digitalt;letter-spacing:0px;word-spacing:0px;fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="text4825"
|
||||
transform="matrix(0.91316098,0,0,0.91316098,1.9388092,25.308702)">
|
||||
<path
|
||||
d="m 1.9437243,295.40006 q 0,-0.59882 0.013713,-1.25707 0.66739,-0.032 1.3530646,-0.032 0.6033936,0 1.5724804,0.032 0.073139,0 0.1279926,0.0548 0.054854,0.0549 0.054854,0.128 0.013713,0.74053 0.013713,1.40334 0,0.58968 -0.013713,1.24793 -0.4114048,0.0229 -0.9919426,0.0229 -0.8410942,0 -1.9336024,-0.0594 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.12799 -0.013713,-0.71768 -0.013713,-1.35764 z m -1.50391294,-9.11947 q 1.63190554,-0.39312 3.35523444,-0.39312 0.6811034,0 1.2205008,0.0777 0.5439685,0.0777 1.0147984,0.2697 0.475401,0.18741 0.7908113,0.48911 0.3154104,0.29713 0.4936858,0.76339 0.1828465,0.46625 0.1828465,1.07879 0,0.68567 -0.3016968,1.27078 -0.2971257,0.58511 -0.8182384,1.12908 -0.2422717,0.25142 -0.3656931,0.38855 -0.1234214,0.13713 -0.3199815,0.39769 -0.1919889,0.25599 -0.2925545,0.46169 -0.095994,0.2057 -0.1782754,0.50283 -0.07771,0.29255 -0.082281,0.60339 -0.5531109,0.0366 -1.3804916,0.0366 -0.8502365,0 -1.6913306,-0.0366 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.128 0,-0.53025 0.1325638,-0.99651 0.1325637,-0.46626 0.3428373,-0.79538 0.2102735,-0.32913 0.4662587,-0.61254 0.2559852,-0.28798 0.5119704,-0.5074 0.2559851,-0.22398 0.4662587,-0.41597 0.2102735,-0.19199 0.3428373,-0.38855 0.1325637,-0.19656 0.1325637,-0.38398 0,-0.5394 -0.754242,-0.5394 -0.612536,0 -1.5084841,0.31541 -0.891377,0.31084 -1.16564687,0.5074 z"
|
||||
style="fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4827"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.7 KiB |
69
resources/graphics/controllers/keyboard_mouse_generic.svg
Normal file
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="42"
|
||||
height="42"
|
||||
viewBox="0 0 11.1125 11.1125"
|
||||
version="1.1"
|
||||
id="svg4925"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
|
||||
sodipodi:docname="unknown.svg">
|
||||
<defs
|
||||
id="defs4919" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="6.7728148"
|
||||
inkscape:cx="-21.346482"
|
||||
inkscape:cy="-0.76992782"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2065"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4922">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-285.88748)">
|
||||
<g
|
||||
aria-label="?"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.72348785px;line-height:1.25;font-family:Digitalt;-inkscape-font-specification:Digitalt;letter-spacing:0px;word-spacing:0px;fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="text4825"
|
||||
transform="matrix(0.91316098,0,0,0.91316098,1.9388092,25.308702)">
|
||||
<path
|
||||
d="m 1.9437243,295.40006 q 0,-0.59882 0.013713,-1.25707 0.66739,-0.032 1.3530646,-0.032 0.6033936,0 1.5724804,0.032 0.073139,0 0.1279926,0.0548 0.054854,0.0549 0.054854,0.128 0.013713,0.74053 0.013713,1.40334 0,0.58968 -0.013713,1.24793 -0.4114048,0.0229 -0.9919426,0.0229 -0.8410942,0 -1.9336024,-0.0594 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.12799 -0.013713,-0.71768 -0.013713,-1.35764 z m -1.50391294,-9.11947 q 1.63190554,-0.39312 3.35523444,-0.39312 0.6811034,0 1.2205008,0.0777 0.5439685,0.0777 1.0147984,0.2697 0.475401,0.18741 0.7908113,0.48911 0.3154104,0.29713 0.4936858,0.76339 0.1828465,0.46625 0.1828465,1.07879 0,0.68567 -0.3016968,1.27078 -0.2971257,0.58511 -0.8182384,1.12908 -0.2422717,0.25142 -0.3656931,0.38855 -0.1234214,0.13713 -0.3199815,0.39769 -0.1919889,0.25599 -0.2925545,0.46169 -0.095994,0.2057 -0.1782754,0.50283 -0.07771,0.29255 -0.082281,0.60339 -0.5531109,0.0366 -1.3804916,0.0366 -0.8502365,0 -1.6913306,-0.0366 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.128 0,-0.53025 0.1325638,-0.99651 0.1325637,-0.46626 0.3428373,-0.79538 0.2102735,-0.32913 0.4662587,-0.61254 0.2559852,-0.28798 0.5119704,-0.5074 0.2559851,-0.22398 0.4662587,-0.41597 0.2102735,-0.19199 0.3428373,-0.38855 0.1325637,-0.19656 0.1325637,-0.38398 0,-0.5394 -0.754242,-0.5394 -0.612536,0 -1.5084841,0.31541 -0.891377,0.31084 -1.16564687,0.5074 z"
|
||||
style="fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4827"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.7 KiB |
69
resources/graphics/controllers/lightgun_generic.svg
Normal file
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="42"
|
||||
height="42"
|
||||
viewBox="0 0 11.1125 11.1125"
|
||||
version="1.1"
|
||||
id="svg4925"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
|
||||
sodipodi:docname="unknown.svg">
|
||||
<defs
|
||||
id="defs4919" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="6.7728148"
|
||||
inkscape:cx="-21.346482"
|
||||
inkscape:cy="-0.76992782"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2065"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4922">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-285.88748)">
|
||||
<g
|
||||
aria-label="?"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.72348785px;line-height:1.25;font-family:Digitalt;-inkscape-font-specification:Digitalt;letter-spacing:0px;word-spacing:0px;fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="text4825"
|
||||
transform="matrix(0.91316098,0,0,0.91316098,1.9388092,25.308702)">
|
||||
<path
|
||||
d="m 1.9437243,295.40006 q 0,-0.59882 0.013713,-1.25707 0.66739,-0.032 1.3530646,-0.032 0.6033936,0 1.5724804,0.032 0.073139,0 0.1279926,0.0548 0.054854,0.0549 0.054854,0.128 0.013713,0.74053 0.013713,1.40334 0,0.58968 -0.013713,1.24793 -0.4114048,0.0229 -0.9919426,0.0229 -0.8410942,0 -1.9336024,-0.0594 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.12799 -0.013713,-0.71768 -0.013713,-1.35764 z m -1.50391294,-9.11947 q 1.63190554,-0.39312 3.35523444,-0.39312 0.6811034,0 1.2205008,0.0777 0.5439685,0.0777 1.0147984,0.2697 0.475401,0.18741 0.7908113,0.48911 0.3154104,0.29713 0.4936858,0.76339 0.1828465,0.46625 0.1828465,1.07879 0,0.68567 -0.3016968,1.27078 -0.2971257,0.58511 -0.8182384,1.12908 -0.2422717,0.25142 -0.3656931,0.38855 -0.1234214,0.13713 -0.3199815,0.39769 -0.1919889,0.25599 -0.2925545,0.46169 -0.095994,0.2057 -0.1782754,0.50283 -0.07771,0.29255 -0.082281,0.60339 -0.5531109,0.0366 -1.3804916,0.0366 -0.8502365,0 -1.6913306,-0.0366 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.128 0,-0.53025 0.1325638,-0.99651 0.1325637,-0.46626 0.3428373,-0.79538 0.2102735,-0.32913 0.4662587,-0.61254 0.2559852,-0.28798 0.5119704,-0.5074 0.2559851,-0.22398 0.4662587,-0.41597 0.2102735,-0.19199 0.3428373,-0.38855 0.1325637,-0.19656 0.1325637,-0.38398 0,-0.5394 -0.754242,-0.5394 -0.612536,0 -1.5084841,0.31541 -0.891377,0.31084 -1.16564687,0.5074 z"
|
||||
style="fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4827"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.7 KiB |
69
resources/graphics/controllers/lightgun_nintendo.svg
Normal file
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="42"
|
||||
height="42"
|
||||
viewBox="0 0 11.1125 11.1125"
|
||||
version="1.1"
|
||||
id="svg4925"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
|
||||
sodipodi:docname="unknown.svg">
|
||||
<defs
|
||||
id="defs4919" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="6.7728148"
|
||||
inkscape:cx="-21.346482"
|
||||
inkscape:cy="-0.76992782"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2065"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4922">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-285.88748)">
|
||||
<g
|
||||
aria-label="?"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.72348785px;line-height:1.25;font-family:Digitalt;-inkscape-font-specification:Digitalt;letter-spacing:0px;word-spacing:0px;fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="text4825"
|
||||
transform="matrix(0.91316098,0,0,0.91316098,1.9388092,25.308702)">
|
||||
<path
|
||||
d="m 1.9437243,295.40006 q 0,-0.59882 0.013713,-1.25707 0.66739,-0.032 1.3530646,-0.032 0.6033936,0 1.5724804,0.032 0.073139,0 0.1279926,0.0548 0.054854,0.0549 0.054854,0.128 0.013713,0.74053 0.013713,1.40334 0,0.58968 -0.013713,1.24793 -0.4114048,0.0229 -0.9919426,0.0229 -0.8410942,0 -1.9336024,-0.0594 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.12799 -0.013713,-0.71768 -0.013713,-1.35764 z m -1.50391294,-9.11947 q 1.63190554,-0.39312 3.35523444,-0.39312 0.6811034,0 1.2205008,0.0777 0.5439685,0.0777 1.0147984,0.2697 0.475401,0.18741 0.7908113,0.48911 0.3154104,0.29713 0.4936858,0.76339 0.1828465,0.46625 0.1828465,1.07879 0,0.68567 -0.3016968,1.27078 -0.2971257,0.58511 -0.8182384,1.12908 -0.2422717,0.25142 -0.3656931,0.38855 -0.1234214,0.13713 -0.3199815,0.39769 -0.1919889,0.25599 -0.2925545,0.46169 -0.095994,0.2057 -0.1782754,0.50283 -0.07771,0.29255 -0.082281,0.60339 -0.5531109,0.0366 -1.3804916,0.0366 -0.8502365,0 -1.6913306,-0.0366 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.128 0,-0.53025 0.1325638,-0.99651 0.1325637,-0.46626 0.3428373,-0.79538 0.2102735,-0.32913 0.4662587,-0.61254 0.2559852,-0.28798 0.5119704,-0.5074 0.2559851,-0.22398 0.4662587,-0.41597 0.2102735,-0.19199 0.3428373,-0.38855 0.1325637,-0.19656 0.1325637,-0.38398 0,-0.5394 -0.754242,-0.5394 -0.612536,0 -1.5084841,0.31541 -0.891377,0.31084 -1.16564687,0.5074 z"
|
||||
style="fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4827"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.7 KiB |
69
resources/graphics/controllers/mouse_amiga.svg
Normal file
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="42"
|
||||
height="42"
|
||||
viewBox="0 0 11.1125 11.1125"
|
||||
version="1.1"
|
||||
id="svg4925"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
|
||||
sodipodi:docname="unknown.svg">
|
||||
<defs
|
||||
id="defs4919" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="6.7728148"
|
||||
inkscape:cx="-21.346482"
|
||||
inkscape:cy="-0.76992782"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2065"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4922">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-285.88748)">
|
||||
<g
|
||||
aria-label="?"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.72348785px;line-height:1.25;font-family:Digitalt;-inkscape-font-specification:Digitalt;letter-spacing:0px;word-spacing:0px;fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="text4825"
|
||||
transform="matrix(0.91316098,0,0,0.91316098,1.9388092,25.308702)">
|
||||
<path
|
||||
d="m 1.9437243,295.40006 q 0,-0.59882 0.013713,-1.25707 0.66739,-0.032 1.3530646,-0.032 0.6033936,0 1.5724804,0.032 0.073139,0 0.1279926,0.0548 0.054854,0.0549 0.054854,0.128 0.013713,0.74053 0.013713,1.40334 0,0.58968 -0.013713,1.24793 -0.4114048,0.0229 -0.9919426,0.0229 -0.8410942,0 -1.9336024,-0.0594 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.12799 -0.013713,-0.71768 -0.013713,-1.35764 z m -1.50391294,-9.11947 q 1.63190554,-0.39312 3.35523444,-0.39312 0.6811034,0 1.2205008,0.0777 0.5439685,0.0777 1.0147984,0.2697 0.475401,0.18741 0.7908113,0.48911 0.3154104,0.29713 0.4936858,0.76339 0.1828465,0.46625 0.1828465,1.07879 0,0.68567 -0.3016968,1.27078 -0.2971257,0.58511 -0.8182384,1.12908 -0.2422717,0.25142 -0.3656931,0.38855 -0.1234214,0.13713 -0.3199815,0.39769 -0.1919889,0.25599 -0.2925545,0.46169 -0.095994,0.2057 -0.1782754,0.50283 -0.07771,0.29255 -0.082281,0.60339 -0.5531109,0.0366 -1.3804916,0.0366 -0.8502365,0 -1.6913306,-0.0366 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.128 0,-0.53025 0.1325638,-0.99651 0.1325637,-0.46626 0.3428373,-0.79538 0.2102735,-0.32913 0.4662587,-0.61254 0.2559852,-0.28798 0.5119704,-0.5074 0.2559851,-0.22398 0.4662587,-0.41597 0.2102735,-0.19199 0.3428373,-0.38855 0.1325637,-0.19656 0.1325637,-0.38398 0,-0.5394 -0.754242,-0.5394 -0.612536,0 -1.5084841,0.31541 -0.891377,0.31084 -1.16564687,0.5074 z"
|
||||
style="fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4827"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.7 KiB |
69
resources/graphics/controllers/mouse_generic.svg
Normal file
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="42"
|
||||
height="42"
|
||||
viewBox="0 0 11.1125 11.1125"
|
||||
version="1.1"
|
||||
id="svg4925"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
|
||||
sodipodi:docname="unknown.svg">
|
||||
<defs
|
||||
id="defs4919" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="6.7728148"
|
||||
inkscape:cx="-21.346482"
|
||||
inkscape:cy="-0.76992782"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2065"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4922">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-285.88748)">
|
||||
<g
|
||||
aria-label="?"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.72348785px;line-height:1.25;font-family:Digitalt;-inkscape-font-specification:Digitalt;letter-spacing:0px;word-spacing:0px;fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="text4825"
|
||||
transform="matrix(0.91316098,0,0,0.91316098,1.9388092,25.308702)">
|
||||
<path
|
||||
d="m 1.9437243,295.40006 q 0,-0.59882 0.013713,-1.25707 0.66739,-0.032 1.3530646,-0.032 0.6033936,0 1.5724804,0.032 0.073139,0 0.1279926,0.0548 0.054854,0.0549 0.054854,0.128 0.013713,0.74053 0.013713,1.40334 0,0.58968 -0.013713,1.24793 -0.4114048,0.0229 -0.9919426,0.0229 -0.8410942,0 -1.9336024,-0.0594 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.12799 -0.013713,-0.71768 -0.013713,-1.35764 z m -1.50391294,-9.11947 q 1.63190554,-0.39312 3.35523444,-0.39312 0.6811034,0 1.2205008,0.0777 0.5439685,0.0777 1.0147984,0.2697 0.475401,0.18741 0.7908113,0.48911 0.3154104,0.29713 0.4936858,0.76339 0.1828465,0.46625 0.1828465,1.07879 0,0.68567 -0.3016968,1.27078 -0.2971257,0.58511 -0.8182384,1.12908 -0.2422717,0.25142 -0.3656931,0.38855 -0.1234214,0.13713 -0.3199815,0.39769 -0.1919889,0.25599 -0.2925545,0.46169 -0.095994,0.2057 -0.1782754,0.50283 -0.07771,0.29255 -0.082281,0.60339 -0.5531109,0.0366 -1.3804916,0.0366 -0.8502365,0 -1.6913306,-0.0366 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.128 0,-0.53025 0.1325638,-0.99651 0.1325637,-0.46626 0.3428373,-0.79538 0.2102735,-0.32913 0.4662587,-0.61254 0.2559852,-0.28798 0.5119704,-0.5074 0.2559851,-0.22398 0.4662587,-0.41597 0.2102735,-0.19199 0.3428373,-0.38855 0.1325637,-0.19656 0.1325637,-0.38398 0,-0.5394 -0.754242,-0.5394 -0.612536,0 -1.5084841,0.31541 -0.891377,0.31084 -1.16564687,0.5074 z"
|
||||
style="fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4827"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.7 KiB |
69
resources/graphics/controllers/steering_wheel_generic.svg
Normal file
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="42"
|
||||
height="42"
|
||||
viewBox="0 0 11.1125 11.1125"
|
||||
version="1.1"
|
||||
id="svg4925"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
|
||||
sodipodi:docname="unknown.svg">
|
||||
<defs
|
||||
id="defs4919" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="6.7728148"
|
||||
inkscape:cx="-21.346482"
|
||||
inkscape:cy="-0.76992782"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2065"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4922">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-285.88748)">
|
||||
<g
|
||||
aria-label="?"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.72348785px;line-height:1.25;font-family:Digitalt;-inkscape-font-specification:Digitalt;letter-spacing:0px;word-spacing:0px;fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="text4825"
|
||||
transform="matrix(0.91316098,0,0,0.91316098,1.9388092,25.308702)">
|
||||
<path
|
||||
d="m 1.9437243,295.40006 q 0,-0.59882 0.013713,-1.25707 0.66739,-0.032 1.3530646,-0.032 0.6033936,0 1.5724804,0.032 0.073139,0 0.1279926,0.0548 0.054854,0.0549 0.054854,0.128 0.013713,0.74053 0.013713,1.40334 0,0.58968 -0.013713,1.24793 -0.4114048,0.0229 -0.9919426,0.0229 -0.8410942,0 -1.9336024,-0.0594 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.12799 -0.013713,-0.71768 -0.013713,-1.35764 z m -1.50391294,-9.11947 q 1.63190554,-0.39312 3.35523444,-0.39312 0.6811034,0 1.2205008,0.0777 0.5439685,0.0777 1.0147984,0.2697 0.475401,0.18741 0.7908113,0.48911 0.3154104,0.29713 0.4936858,0.76339 0.1828465,0.46625 0.1828465,1.07879 0,0.68567 -0.3016968,1.27078 -0.2971257,0.58511 -0.8182384,1.12908 -0.2422717,0.25142 -0.3656931,0.38855 -0.1234214,0.13713 -0.3199815,0.39769 -0.1919889,0.25599 -0.2925545,0.46169 -0.095994,0.2057 -0.1782754,0.50283 -0.07771,0.29255 -0.082281,0.60339 -0.5531109,0.0366 -1.3804916,0.0366 -0.8502365,0 -1.6913306,-0.0366 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.128 0,-0.53025 0.1325638,-0.99651 0.1325637,-0.46626 0.3428373,-0.79538 0.2102735,-0.32913 0.4662587,-0.61254 0.2559852,-0.28798 0.5119704,-0.5074 0.2559851,-0.22398 0.4662587,-0.41597 0.2102735,-0.19199 0.3428373,-0.38855 0.1325637,-0.19656 0.1325637,-0.38398 0,-0.5394 -0.754242,-0.5394 -0.612536,0 -1.5084841,0.31541 -0.891377,0.31084 -1.16564687,0.5074 z"
|
||||
style="fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4827"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.7 KiB |
69
resources/graphics/controllers/trackball_generic.svg
Normal file
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="42"
|
||||
height="42"
|
||||
viewBox="0 0 11.1125 11.1125"
|
||||
version="1.1"
|
||||
id="svg4925"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
|
||||
sodipodi:docname="unknown.svg">
|
||||
<defs
|
||||
id="defs4919" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="6.7728148"
|
||||
inkscape:cx="-21.346482"
|
||||
inkscape:cy="-0.76992782"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2065"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4922">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-285.88748)">
|
||||
<g
|
||||
aria-label="?"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.72348785px;line-height:1.25;font-family:Digitalt;-inkscape-font-specification:Digitalt;letter-spacing:0px;word-spacing:0px;fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="text4825"
|
||||
transform="matrix(0.91316098,0,0,0.91316098,1.9388092,25.308702)">
|
||||
<path
|
||||
d="m 1.9437243,295.40006 q 0,-0.59882 0.013713,-1.25707 0.66739,-0.032 1.3530646,-0.032 0.6033936,0 1.5724804,0.032 0.073139,0 0.1279926,0.0548 0.054854,0.0549 0.054854,0.128 0.013713,0.74053 0.013713,1.40334 0,0.58968 -0.013713,1.24793 -0.4114048,0.0229 -0.9919426,0.0229 -0.8410942,0 -1.9336024,-0.0594 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.12799 -0.013713,-0.71768 -0.013713,-1.35764 z m -1.50391294,-9.11947 q 1.63190554,-0.39312 3.35523444,-0.39312 0.6811034,0 1.2205008,0.0777 0.5439685,0.0777 1.0147984,0.2697 0.475401,0.18741 0.7908113,0.48911 0.3154104,0.29713 0.4936858,0.76339 0.1828465,0.46625 0.1828465,1.07879 0,0.68567 -0.3016968,1.27078 -0.2971257,0.58511 -0.8182384,1.12908 -0.2422717,0.25142 -0.3656931,0.38855 -0.1234214,0.13713 -0.3199815,0.39769 -0.1919889,0.25599 -0.2925545,0.46169 -0.095994,0.2057 -0.1782754,0.50283 -0.07771,0.29255 -0.082281,0.60339 -0.5531109,0.0366 -1.3804916,0.0366 -0.8502365,0 -1.6913306,-0.0366 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.128 0,-0.53025 0.1325638,-0.99651 0.1325637,-0.46626 0.3428373,-0.79538 0.2102735,-0.32913 0.4662587,-0.61254 0.2559852,-0.28798 0.5119704,-0.5074 0.2559851,-0.22398 0.4662587,-0.41597 0.2102735,-0.19199 0.3428373,-0.38855 0.1325637,-0.19656 0.1325637,-0.38398 0,-0.5394 -0.754242,-0.5394 -0.612536,0 -1.5084841,0.31541 -0.891377,0.31084 -1.16564687,0.5074 z"
|
||||
style="fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4827"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.7 KiB |
69
resources/graphics/controllers/unknown.svg
Normal file
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="42"
|
||||
height="42"
|
||||
viewBox="0 0 11.1125 11.1125"
|
||||
version="1.1"
|
||||
id="svg4925"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
|
||||
sodipodi:docname="unknown.svg">
|
||||
<defs
|
||||
id="defs4919" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="6.7728148"
|
||||
inkscape:cx="-21.346482"
|
||||
inkscape:cy="-0.76992782"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2065"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4922">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-285.88748)">
|
||||
<g
|
||||
aria-label="?"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.72348785px;line-height:1.25;font-family:Digitalt;-inkscape-font-specification:Digitalt;letter-spacing:0px;word-spacing:0px;fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="text4825"
|
||||
transform="matrix(0.91316098,0,0,0.91316098,1.9388092,25.308702)">
|
||||
<path
|
||||
d="m 1.9437243,295.40006 q 0,-0.59882 0.013713,-1.25707 0.66739,-0.032 1.3530646,-0.032 0.6033936,0 1.5724804,0.032 0.073139,0 0.1279926,0.0548 0.054854,0.0549 0.054854,0.128 0.013713,0.74053 0.013713,1.40334 0,0.58968 -0.013713,1.24793 -0.4114048,0.0229 -0.9919426,0.0229 -0.8410942,0 -1.9336024,-0.0594 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.12799 -0.013713,-0.71768 -0.013713,-1.35764 z m -1.50391294,-9.11947 q 1.63190554,-0.39312 3.35523444,-0.39312 0.6811034,0 1.2205008,0.0777 0.5439685,0.0777 1.0147984,0.2697 0.475401,0.18741 0.7908113,0.48911 0.3154104,0.29713 0.4936858,0.76339 0.1828465,0.46625 0.1828465,1.07879 0,0.68567 -0.3016968,1.27078 -0.2971257,0.58511 -0.8182384,1.12908 -0.2422717,0.25142 -0.3656931,0.38855 -0.1234214,0.13713 -0.3199815,0.39769 -0.1919889,0.25599 -0.2925545,0.46169 -0.095994,0.2057 -0.1782754,0.50283 -0.07771,0.29255 -0.082281,0.60339 -0.5531109,0.0366 -1.3804916,0.0366 -0.8502365,0 -1.6913306,-0.0366 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.128 0,-0.53025 0.1325638,-0.99651 0.1325637,-0.46626 0.3428373,-0.79538 0.2102735,-0.32913 0.4662587,-0.61254 0.2559852,-0.28798 0.5119704,-0.5074 0.2559851,-0.22398 0.4662587,-0.41597 0.2102735,-0.19199 0.3428373,-0.38855 0.1325637,-0.19656 0.1325637,-0.38398 0,-0.5394 -0.754242,-0.5394 -0.612536,0 -1.5084841,0.31541 -0.891377,0.31084 -1.16564687,0.5074 z"
|
||||
style="fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4827"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.7 KiB |
69
resources/graphics/controllers/wii_remote_nintendo.svg
Normal file
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="42"
|
||||
height="42"
|
||||
viewBox="0 0 11.1125 11.1125"
|
||||
version="1.1"
|
||||
id="svg4925"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
|
||||
sodipodi:docname="unknown.svg">
|
||||
<defs
|
||||
id="defs4919" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="6.7728148"
|
||||
inkscape:cx="-21.346482"
|
||||
inkscape:cy="-0.76992782"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2065"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4922">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-285.88748)">
|
||||
<g
|
||||
aria-label="?"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.72348785px;line-height:1.25;font-family:Digitalt;-inkscape-font-specification:Digitalt;letter-spacing:0px;word-spacing:0px;fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="text4825"
|
||||
transform="matrix(0.91316098,0,0,0.91316098,1.9388092,25.308702)">
|
||||
<path
|
||||
d="m 1.9437243,295.40006 q 0,-0.59882 0.013713,-1.25707 0.66739,-0.032 1.3530646,-0.032 0.6033936,0 1.5724804,0.032 0.073139,0 0.1279926,0.0548 0.054854,0.0549 0.054854,0.128 0.013713,0.74053 0.013713,1.40334 0,0.58968 -0.013713,1.24793 -0.4114048,0.0229 -0.9919426,0.0229 -0.8410942,0 -1.9336024,-0.0594 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.12799 -0.013713,-0.71768 -0.013713,-1.35764 z m -1.50391294,-9.11947 q 1.63190554,-0.39312 3.35523444,-0.39312 0.6811034,0 1.2205008,0.0777 0.5439685,0.0777 1.0147984,0.2697 0.475401,0.18741 0.7908113,0.48911 0.3154104,0.29713 0.4936858,0.76339 0.1828465,0.46625 0.1828465,1.07879 0,0.68567 -0.3016968,1.27078 -0.2971257,0.58511 -0.8182384,1.12908 -0.2422717,0.25142 -0.3656931,0.38855 -0.1234214,0.13713 -0.3199815,0.39769 -0.1919889,0.25599 -0.2925545,0.46169 -0.095994,0.2057 -0.1782754,0.50283 -0.07771,0.29255 -0.082281,0.60339 -0.5531109,0.0366 -1.3804916,0.0366 -0.8502365,0 -1.6913306,-0.0366 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.128 0,-0.53025 0.1325638,-0.99651 0.1325637,-0.46626 0.3428373,-0.79538 0.2102735,-0.32913 0.4662587,-0.61254 0.2559852,-0.28798 0.5119704,-0.5074 0.2559851,-0.22398 0.4662587,-0.41597 0.2102735,-0.19199 0.3428373,-0.38855 0.1325637,-0.19656 0.1325637,-0.38398 0,-0.5394 -0.754242,-0.5394 -0.612536,0 -1.5084841,0.31541 -0.891377,0.31084 -1.16564687,0.5074 z"
|
||||
style="fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4827"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.7 KiB |
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="42"
|
||||
height="42"
|
||||
viewBox="0 0 11.1125 11.1125"
|
||||
version="1.1"
|
||||
id="svg4925"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
|
||||
sodipodi:docname="unknown.svg">
|
||||
<defs
|
||||
id="defs4919" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="6.7728148"
|
||||
inkscape:cx="-21.346482"
|
||||
inkscape:cy="-0.76992782"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2065"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata4922">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-285.88748)">
|
||||
<g
|
||||
aria-label="?"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.72348785px;line-height:1.25;font-family:Digitalt;-inkscape-font-specification:Digitalt;letter-spacing:0px;word-spacing:0px;fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="text4825"
|
||||
transform="matrix(0.91316098,0,0,0.91316098,1.9388092,25.308702)">
|
||||
<path
|
||||
d="m 1.9437243,295.40006 q 0,-0.59882 0.013713,-1.25707 0.66739,-0.032 1.3530646,-0.032 0.6033936,0 1.5724804,0.032 0.073139,0 0.1279926,0.0548 0.054854,0.0549 0.054854,0.128 0.013713,0.74053 0.013713,1.40334 0,0.58968 -0.013713,1.24793 -0.4114048,0.0229 -0.9919426,0.0229 -0.8410942,0 -1.9336024,-0.0594 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.12799 -0.013713,-0.71768 -0.013713,-1.35764 z m -1.50391294,-9.11947 q 1.63190554,-0.39312 3.35523444,-0.39312 0.6811034,0 1.2205008,0.0777 0.5439685,0.0777 1.0147984,0.2697 0.475401,0.18741 0.7908113,0.48911 0.3154104,0.29713 0.4936858,0.76339 0.1828465,0.46625 0.1828465,1.07879 0,0.68567 -0.3016968,1.27078 -0.2971257,0.58511 -0.8182384,1.12908 -0.2422717,0.25142 -0.3656931,0.38855 -0.1234214,0.13713 -0.3199815,0.39769 -0.1919889,0.25599 -0.2925545,0.46169 -0.095994,0.2057 -0.1782754,0.50283 -0.07771,0.29255 -0.082281,0.60339 -0.5531109,0.0366 -1.3804916,0.0366 -0.8502365,0 -1.6913306,-0.0366 -0.07771,-0.005 -0.1325638,-0.0548 -0.050283,-0.0549 -0.050283,-0.128 0,-0.53025 0.1325638,-0.99651 0.1325637,-0.46626 0.3428373,-0.79538 0.2102735,-0.32913 0.4662587,-0.61254 0.2559852,-0.28798 0.5119704,-0.5074 0.2559851,-0.22398 0.4662587,-0.41597 0.2102735,-0.19199 0.3428373,-0.38855 0.1325637,-0.19656 0.1325637,-0.38398 0,-0.5394 -0.754242,-0.5394 -0.612536,0 -1.5084841,0.31541 -0.891377,0.31084 -1.16564687,0.5074 z"
|
||||
style="fill:#f00000;fill-opacity:1;stroke:#000000;stroke-width:0.2605817;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path4827"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.7 KiB |
|
@ -237,14 +237,16 @@ based on: 'recalbox-multi' by the Recalbox community
|
|||
<alignment>right</alignment>
|
||||
</text>
|
||||
<badges name="md_badges">
|
||||
<pos>0.815 0.675</pos>
|
||||
<pos>0.880 0.757</pos>
|
||||
<size>0.13 0.1635</size>
|
||||
<origin>0 0</origin>
|
||||
<origin>0.5 0.5</origin>
|
||||
<alignment>left</alignment>
|
||||
<itemsPerRow>3</itemsPerRow>
|
||||
<rows>2</rows>
|
||||
<itemMargin>0.0028125 0.005</itemMargin>
|
||||
<slots>favorite completed kidgame broken altemulator</slots>
|
||||
<controllerPos>0.5 0.572</controllerPos>
|
||||
<controllerSize>0.67</controllerSize>
|
||||
<itemMargin>-1.0 0.005</itemMargin>
|
||||
<slots>favorite, completed, kidgame, broken, controller, altemulator</slots>
|
||||
</badges>
|
||||
<!-- This block prevents additional elements from interfering when mixing layouts. -->
|
||||
<image name="backframe4" extra="false"></image>
|
||||
|
|