mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-29 20:28:56 +00:00
InputCommon: Introducing the "Dynamic Input Texture". Configuration links an emulated input action to an image based on what host key is defined for that emulated input. Specific regions are called out in configuration that mark where to replace an input button with a host key image.
This commit is contained in:
parent
8a1539f948
commit
fd3af4c5d3
24 changed files with 1114 additions and 9 deletions
65
Source/Core/InputCommon/ImageOperations.h
Normal file
65
Source/Core/InputCommon/ImageOperations.h
Normal file
|
@ -0,0 +1,65 @@
|
|||
// Copyright 2019 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <optional>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "Common/CommonTypes.h"
|
||||
#include "Common/MathUtil.h"
|
||||
#include "Common/Matrix.h"
|
||||
|
||||
namespace InputCommon
|
||||
{
|
||||
struct Pixel
|
||||
{
|
||||
u8 r = 0;
|
||||
u8 g = 0;
|
||||
u8 b = 0;
|
||||
u8 a = 0;
|
||||
|
||||
bool operator==(const Pixel& o) const { return r == o.r && g == o.g && b == o.b && a == o.a; }
|
||||
bool operator!=(const Pixel& o) const { return !(o == *this); }
|
||||
};
|
||||
|
||||
using Point = Common::TVec2<u32>;
|
||||
using Rect = MathUtil::Rectangle<u32>;
|
||||
|
||||
struct ImagePixelData
|
||||
{
|
||||
ImagePixelData() = default;
|
||||
|
||||
explicit ImagePixelData(std::vector<Pixel> image_pixels, u32 width, u32 height)
|
||||
: pixels(std::move(image_pixels)), width(width), height(height)
|
||||
{
|
||||
}
|
||||
|
||||
explicit ImagePixelData(u32 width, u32 height, const Pixel& default_color = Pixel{0, 0, 0, 0})
|
||||
: pixels(width * height, default_color), width(width), height(height)
|
||||
{
|
||||
}
|
||||
std::vector<Pixel> pixels;
|
||||
u32 width = 0;
|
||||
u32 height = 0;
|
||||
};
|
||||
|
||||
void CopyImageRegion(const ImagePixelData& src, ImagePixelData& dst, const Rect& src_region,
|
||||
const Rect& dst_region);
|
||||
|
||||
std::optional<ImagePixelData> LoadImage(const std::string& path);
|
||||
|
||||
bool WriteImage(const std::string& path, const ImagePixelData& image);
|
||||
|
||||
enum class ResizeMode
|
||||
{
|
||||
Nearest,
|
||||
};
|
||||
|
||||
ImagePixelData Resize(ResizeMode mode, const ImagePixelData& src, u32 new_width, u32 new_height);
|
||||
|
||||
ImagePixelData ResizeKeepAspectRatio(ResizeMode mode, const ImagePixelData& src, u32 new_width,
|
||||
u32 new_height, const Pixel& background_color);
|
||||
} // namespace InputCommon
|
Loading…
Add table
Add a link
Reference in a new issue