HID reports can use negative numbers.

Use UTF-8 for input device names and profile filenames.
From8Bit->To8Bit is not transparent.


git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6857 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
Soren Jorvang 2011-01-15 21:16:13 +00:00
parent 2add956cba
commit 2cb5a1aa56
4 changed files with 10 additions and 11 deletions

View File

@ -974,7 +974,7 @@ void CConfigMain::ChooseMemcardPath(std::string& strMemcard, bool isSlotA)
{ {
std::string filename = std::string(wxFileSelector( std::string filename = std::string(wxFileSelector(
_("Choose a file to open"), _("Choose a file to open"),
wxString::From8BitData(File::GetUserPath(D_GCUSER_IDX)), wxString::FromUTF8(File::GetUserPath(D_GCUSER_IDX)),
isSlotA ? wxT(GC_MEMCARDA) : wxT(GC_MEMCARDB), isSlotA ? wxT(GC_MEMCARDA) : wxT(GC_MEMCARDB),
wxEmptyString, wxEmptyString,
_("Gamecube Memory Cards (*.raw,*.gcp)") + wxString(wxT("|*.raw;*.gcp"))).mb_str()); _("Gamecube Memory Cards (*.raw,*.gcp)") + wxString(wxT("|*.raw;*.gcp"))).mb_str());
@ -1234,7 +1234,7 @@ void CConfigMain::FillChoiceBox(wxChoice* _pChoice, int _PluginType, const std::
if (rPluginInfo.Type == _PluginType) if (rPluginInfo.Type == _PluginType)
{ {
wxString temp; wxString temp;
temp = wxGetTranslation(wxString::From8BitData(rInfos[i].GetPluginInfo().Name)); temp = wxGetTranslation(wxString::FromUTF8(rInfos[i].GetPluginInfo().Name));
int NewIndex = _pChoice->Append(temp, (void*)&rInfos[i]); int NewIndex = _pChoice->Append(temp, (void*)&rInfos[i]);
if (rInfos[i].GetFilename() == _SelectFilename) if (rInfos[i].GetFilename() == _SelectFilename)

View File

@ -19,10 +19,9 @@
#include "UDPConfigDiag.h" #include "UDPConfigDiag.h"
#define _connect_macro_(b, f, c, s) (b)->Connect(wxID_ANY, (c), wxCommandEventHandler(f), (wxObject*)0, (wxEvtHandler*)s) #define _connect_macro_(b, f, c, s) (b)->Connect(wxID_ANY, (c), wxCommandEventHandler(f), (wxObject*)0, (wxEvtHandler*)s)
#define WXSTR_FROM_STR(s) (wxString::From8BitData((s).c_str())) #define WXSTR_FROM_STR(s) (wxString::FromUTF8((s).c_str()))
#define WXTSTR_FROM_CSTR(s) (wxGetTranslation(wxString::From8BitData(s))) #define WXTSTR_FROM_CSTR(s) (wxGetTranslation(wxString::FromUTF8(s)))
// ToAscii was causing probs with some extended ascii characters, To8BitData seems to work #define STR_FROM_WXSTR(w) (std::string((w).ToUTF8()))
#define STR_FROM_WXSTR(w) (std::string((w).To8BitData()))
void GamepadPage::ConfigUDPWii(wxCommandEvent &event) void GamepadPage::ConfigUDPWii(wxCommandEvent &event)
{ {

View File

@ -50,6 +50,7 @@ protected:
std::string m_name; std::string m_name;
direction m_direction; direction m_direction;
float m_neutral; float m_neutral;
float m_scale;
}; };
bool UpdateInput(); bool UpdateInput();

View File

@ -173,8 +173,9 @@ Joystick::Axis::Axis(IOHIDElementRef element, direction dir)
m_name = std::string("Axis ") + description; m_name = std::string("Axis ") + description;
m_name.append((m_direction == positive) ? "+" : "-"); m_name.append((m_direction == positive) ? "+" : "-");
m_neutral = (IOHIDElementGetLogicalMax(m_element) - m_neutral = (IOHIDElementGetLogicalMax(m_element) +
IOHIDElementGetLogicalMin(m_element)) / 2.; IOHIDElementGetLogicalMin(m_element)) / 2.;
m_scale = 1 / fabs(IOHIDElementGetLogicalMax(m_element) - m_neutral);
} }
ControlState Joystick::Axis::GetState(IOHIDDeviceRef device) const ControlState Joystick::Axis::GetState(IOHIDDeviceRef device) const
@ -185,12 +186,10 @@ ControlState Joystick::Axis::GetState(IOHIDDeviceRef device) const
{ {
float position = IOHIDValueGetIntegerValue(value); float position = IOHIDValueGetIntegerValue(value);
//NSLog(@"%s %f %f", m_name.c_str(), m_neutral, position);
if (m_direction == positive && position > m_neutral) if (m_direction == positive && position > m_neutral)
return (position - m_neutral) / m_neutral; return (position - m_neutral) * m_scale;
if (m_direction == negative && position < m_neutral) if (m_direction == negative && position < m_neutral)
return (m_neutral - position) / m_neutral; return (m_neutral - position) * m_scale;
} }
return 0; return 0;