/* Copyright 2019 flyinghead This file is part of reicast. reicast is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. reicast is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with reicast. If not, see . */ #pragma once #include "types.h" #include "gui_util.h" namespace vgamepad { enum ControlId { None = -1, Left, Up, Right, Down, X, Y, B, A, Start, LeftTrigger, RightTrigger, AnalogArea, AnalogStick, FastForward, Btn4, Btn5, ServiceMode, InsertCard, LeftUp, RightUp, LeftDown, RightDown, _Count, _VisibleCount = LeftUp, }; enum Element { Elem_None = -1, Elem_DPad, Elem_Buttons, Elem_Start, Elem_LT, Elem_RT, Elem_Analog, Elem_FForward, Elem_Btn4, Elem_Btn5, Elem_ServiceMode, Elem_InsertCard, }; class ImguiVGamepadTexture : public ImguiTexture { public: ImTextureID getId() override; }; #if defined(__ANDROID__) || defined(TARGET_IPHONE) void show(); void hide(); void draw(); void startEditing(); void pauseEditing(); void setEditMode(bool editing); void resetEditing(); void displayCommands(); void loadImage(const std::string& path); void startGame(); ControlId hitTest(float x, float y); u32 controlToDcKey(ControlId control); void setAnalogStick(float x, float y); float getControlWidth(ControlId); void toggleServiceMode(); void applyUiScale(); Element layoutHitTest(float x, float y); void translateElement(Element element, float dx, float dy); void scaleElement(Element element, float factor); #else static inline void show() {} static inline void hide() {} static inline void draw() {} static inline void startEditing() {} static inline void pauseEditing() {} static inline void displayCommands() {} static inline void applyUiScale() {} static inline void loadImage(const std::string& path) {} static inline void startGame() {} #endif } // namespace vgamepad