OSDN Git Service

Merge branch 'feature/#36529_SlimDXからSharpDXへの移行' into develop
[dtxmania/dtxmania.git] / SlimDXc_Jun2010(VC++2008) / source / directinput / DeviceDI.cpp
diff --git a/SlimDXc_Jun2010(VC++2008)/source/directinput/DeviceDI.cpp b/SlimDXc_Jun2010(VC++2008)/source/directinput/DeviceDI.cpp
deleted file mode 100644 (file)
index 96eb53d..0000000
+++ /dev/null
@@ -1,341 +0,0 @@
-/*\r
-* Copyright (c) 2007-2010 SlimDX Group\r
-* \r
-* Permission is hereby granted, free of charge, to any person obtaining a copy\r
-* of this software and associated documentation files (the "Software"), to deal\r
-* in the Software without restriction, including without limitation the rights\r
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r
-* copies of the Software, and to permit persons to whom the Software is\r
-* furnished to do so, subject to the following conditions:\r
-* \r
-* The above copyright notice and this permission notice shall be included in\r
-* all copies or substantial portions of the Software.\r
-* \r
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
-* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
-* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r
-* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r
-* THE SOFTWARE.\r
-*/\r
-#include "stdafx.h"\r
-#include <windows.h>\r
-#include <dinput.h>\r
-#include <vcclr.h>\r
-\r
-#include "../stack_array.h"\r
-#include "../ComObject.h"\r
-#include "../Utilities.h"\r
-#include "../CollectionShim.h"\r
-\r
-#include "DirectInput.h"\r
-#include "DirectInputException.h"\r
-\r
-#include "EffectDI.h"\r
-#include "DeviceDI.h"\r
-#include "CallbacksDI.h"\r
-\r
-using namespace System;\r
-using namespace System::Threading;\r
-using namespace System::Collections::Generic;\r
-using namespace System::Windows::Forms;\r
-\r
-namespace SlimDX\r
-{\r
-namespace DirectInput\r
-{\r
-       Device::Device( DirectInput^ directInput, Guid subsystem )\r
-       {\r
-               IDirectInputDevice8* device;\r
-               HRESULT hr = directInput->InternalPointer->CreateDevice( Utilities::ConvertManagedGuid( subsystem ), &device, NULL );\r
-\r
-               if( RECORD_DINPUT( hr ).IsFailure )\r
-                       throw gcnew DirectInputException( Result::Last );\r
-\r
-               Construct( device );\r
-       }\r
-\r
-       Result Device::SetCooperativeLevel( IntPtr handle, CooperativeLevel flags )\r
-       {\r
-               HRESULT hr = InternalPointer->SetCooperativeLevel( static_cast<HWND>( handle.ToPointer() ), static_cast<DWORD>( flags ) );\r
-               return RECORD_DINPUT( hr );\r
-       }\r
-\r
-       Result Device::SetCooperativeLevel( Control^ control, CooperativeLevel flags )\r
-       {\r
-               return SetCooperativeLevel( control->Handle, flags );\r
-       }\r
-\r
-       Result Device::Acquire()\r
-       {\r
-               HRESULT hr = InternalPointer->Acquire();\r
-               return RecordError( hr );\r
-       }\r
-\r
-       Result Device::Unacquire()\r
-       {\r
-               HRESULT hr = InternalPointer->Unacquire();\r
-               return RecordError( hr );\r
-       }\r
-\r
-       Result Device::Poll()\r
-       {\r
-               HRESULT hr = InternalPointer->Poll();\r
-               return RecordError( hr );\r
-       }\r
-\r
-       Result Device::RunControlPanel()\r
-       {\r
-               HRESULT hr = InternalPointer->RunControlPanel( NULL, 0 );\r
-               return RECORD_DINPUT( hr );\r
-       }\r
-\r
-       Result Device::RunControlPanel( Control^ parent )\r
-       {\r
-               HRESULT hr = InternalPointer->RunControlPanel( static_cast<HWND>( parent->Handle.ToPointer() ), 0 );\r
-               return RECORD_DINPUT( hr );\r
-       }\r
-\r
-       DeviceImageHeader Device::GetDeviceImages()\r
-       {\r
-               DIDEVICEIMAGEINFOHEADER header;\r
-               memset( &header, 0, sizeof( DIDEVICEIMAGEINFOHEADER ) );\r
-               header.dwSize = sizeof( DIDEVICEIMAGEINFOHEADER );\r
-               header.dwSizeImageInfo = sizeof( DIDEVICEIMAGEINFO );\r
-\r
-               HRESULT hr = InternalPointer->GetImageInfo( &header );\r
-               if( RECORD_DINPUT( hr ).IsFailure || header.dwBufferUsed <= 0 )\r
-                       return DeviceImageHeader();\r
-\r
-               stack_array<DIDEVICEIMAGEINFO> images = stackalloc( DIDEVICEIMAGEINFO, header.dwBufferUsed / sizeof( DIDEVICEIMAGEINFO ) );\r
-               header.dwBufferSize = header.dwBufferUsed;\r
-               header.lprgImageInfoArray = &images[0];\r
-\r
-               hr = InternalPointer->GetImageInfo( &header );\r
-               if( RECORD_DINPUT( hr ).IsFailure )\r
-                       return DeviceImageHeader();\r
-\r
-               return DeviceImageHeader( header );\r
-       }\r
-\r
-       EffectInfo Device::GetEffectInfo( Guid guid )\r
-       {\r
-               GUID nativeGuid = Utilities::ConvertManagedGuid( guid );\r
-               DIEFFECTINFO info;\r
-               info.dwSize = sizeof( DIEFFECTINFO );\r
-\r
-               HRESULT hr = InternalPointer->GetEffectInfo( &info, nativeGuid );\r
-               if( RECORD_DINPUT( hr ).IsFailure )\r
-                       return EffectInfo();\r
-\r
-               return EffectInfo( info );\r
-       }\r
-\r
-       Result Device::SendData( array<ObjectData>^ data, bool overlay )\r
-       {\r
-               DWORD count = data->Length;\r
-               stack_array<DIDEVICEOBJECTDATA> input = stackalloc( DIDEVICEOBJECTDATA, count );\r
-\r
-               for( UINT i = 0; i < count; i++ )\r
-               {\r
-                       input[i].dwOfs = data[i].Instance;\r
-                       input[i].dwData = data[i].Data;\r
-               }\r
-\r
-               HRESULT hr = InternalPointer->SendDeviceData( sizeof( DIDEVICEOBJECTDATA ), &input[0], &count, overlay ? DISDD_CONTINUE : 0 );\r
-               return RECORD_DINPUT( hr );\r
-       }\r
-\r
-       DeviceObjectInstance Device::GetObjectInfoByUsage( int usageCode )\r
-       {\r
-               DIDEVICEOBJECTINSTANCE di;\r
-               di.dwSize = sizeof( DIDEVICEOBJECTINSTANCE );\r
-\r
-               HRESULT hr = InternalPointer->GetObjectInfo( &di, usageCode, DIPH_BYUSAGE );\r
-               if( RECORD_DINPUT( hr ).IsFailure )\r
-                       return DeviceObjectInstance();\r
-\r
-               return DeviceObjectInstance( di );\r
-       }\r
-\r
-       DeviceObjectInstance Device::GetObjectInfoById( int objectId )\r
-       {\r
-               DIDEVICEOBJECTINSTANCE di;\r
-               di.dwSize = sizeof( DIDEVICEOBJECTINSTANCE );\r
-\r
-               HRESULT hr = InternalPointer->GetObjectInfo( &di, objectId, DIPH_BYID );\r
-               if( RECORD_DINPUT( hr ).IsFailure )\r
-                       return DeviceObjectInstance();\r
-\r
-               return DeviceObjectInstance( di );\r
-       }\r
-\r
-       SlimDX::DirectInput::Capabilities^ Device::Capabilities::get()\r
-       {\r
-               if( caps != nullptr )\r
-                       return caps;\r
-\r
-               DIDEVCAPS c;\r
-               c.dwSize = sizeof( DIDEVCAPS );\r
-               HRESULT hr = InternalPointer->GetCapabilities( &c );\r
-               \r
-               if( RECORD_DINPUT( hr ).IsFailure )\r
-                       caps = nullptr;\r
-\r
-               caps = gcnew SlimDX::DirectInput::Capabilities( c );\r
-               return caps;\r
-       }\r
-\r
-       DeviceInstance^ Device::Information::get()\r
-       {\r
-               if( information != nullptr )\r
-                       return information;\r
-\r
-               DIDEVICEINSTANCE deviceInstance;\r
-               deviceInstance.dwSize = sizeof(DIDEVICEINSTANCE);\r
-               HRESULT hr = InternalPointer->GetDeviceInfo( &deviceInstance );\r
-               \r
-               if( RECORD_DINPUT( hr ).IsFailure )\r
-                       information = nullptr;\r
-\r
-               information = gcnew DeviceInstance( deviceInstance );\r
-\r
-               return information;\r
-       }\r
-\r
-       IList<DeviceObjectInstance>^ Device::GetObjects()\r
-       {\r
-               return GetObjects( ObjectDeviceType::All );\r
-       }\r
-\r
-       IList<DeviceObjectInstance>^ Device::GetObjects( ObjectDeviceType objectType )\r
-       {\r
-               List<DeviceObjectInstance>^ results = gcnew List<DeviceObjectInstance>();\r
-               CollectionShim<DeviceObjectInstance> shim( results );\r
-\r
-               HRESULT hr = InternalPointer->EnumObjects( static_cast<LPDIENUMDEVICEOBJECTSCALLBACK>( EnumerateObjects ), &shim, static_cast<DWORD>( objectType ) );\r
-               if( RECORD_DINPUT( hr ).IsFailure )\r
-                       return nullptr;\r
-\r
-               return results;\r
-       }\r
-\r
-       IList<EffectInfo>^ Device::GetEffects()\r
-       {\r
-               return GetEffects( EffectType::All );\r
-       }\r
-\r
-       IList<EffectInfo>^ Device::GetEffects( EffectType type )\r
-       {\r
-               List<EffectInfo>^ results = gcnew List<EffectInfo>();\r
-               CollectionShim<EffectInfo> shim( results );\r
-\r
-               HRESULT hr = InternalPointer->EnumEffects( static_cast<LPDIENUMEFFECTSCALLBACK>( EnumerateEffects ), &shim, static_cast<DWORD>( type ) );\r
-               if( RECORD_DINPUT( hr ).IsFailure )\r
-                       return nullptr;\r
-\r
-               return results;\r
-       }\r
-\r
-       IList<EffectFile>^ Device::GetEffectsInFile( String^ fileName )\r
-       {\r
-               return GetEffectsInFile( fileName, EffectFileFlags::None );\r
-       }\r
-\r
-       IList<EffectFile>^ Device::GetEffectsInFile( String^ fileName, EffectFileFlags flags )\r
-       {\r
-               List<EffectFile>^ results = gcnew List<EffectFile>();\r
-               CollectionShim<EffectFile> shim( results );\r
-               pin_ptr<const wchar_t> pinnedName = PtrToStringChars( fileName );\r
-\r
-               HRESULT hr = InternalPointer->EnumEffectsInFile( reinterpret_cast<LPCWSTR>( pinnedName ), \r
-                       static_cast<LPDIENUMEFFECTSINFILECALLBACK>( EnumerateEffectsInFile ), &shim, static_cast<DWORD>( flags ) );\r
-\r
-               if( RECORD_DINPUT( hr ).IsFailure )\r
-                       return nullptr;\r
-\r
-               return results;\r
-       }\r
-\r
-       Result Device::WriteEffectsToFile( String^ fileName, array<EffectFile>^ effects )\r
-       {\r
-               return WriteEffectsToFile( fileName, effects, false );\r
-       }\r
-\r
-       Result Device::WriteEffectsToFile( String^ fileName, array<EffectFile>^ effects, bool includeNonstandardEffects )\r
-       {\r
-               pin_ptr<const wchar_t> pinnedName = PtrToStringChars( fileName );\r
-               stack_array<DIFILEEFFECT> entries = stackalloc( DIFILEEFFECT, effects->Length );\r
-\r
-               for( int i = 0; i < effects->Length; i++ )\r
-                       entries[i] = effects[i].ToUnmanaged();\r
-\r
-               HRESULT hr = InternalPointer->WriteEffectToFile( reinterpret_cast<LPCWSTR>( pinnedName ), effects->Length,\r
-                       &entries[0], includeNonstandardEffects ? DIFEF_INCLUDENONSTANDARD : 0 );\r
-\r
-               for( int i = 0; i < effects->Length; i++ )\r
-                       delete entries[i].lpDiEffect;\r
-\r
-               return RECORD_DINPUT( hr );\r
-       }\r
-\r
-       Result Device::SetNotification( WaitHandle^ eventHandle )\r
-       {\r
-               HRESULT hr = InternalPointer->SetEventNotification( eventHandle->SafeWaitHandle->DangerousGetHandle().ToPointer() );\r
-               return RECORD_DINPUT( hr );\r
-       }\r
-\r
-       ObjectProperties^ Device::GetObjectPropertiesById( int objectId )\r
-       {\r
-               return gcnew ObjectProperties( InternalPointer, objectId, false );\r
-       }\r
-\r
-       ObjectProperties^ Device::GetObjectPropertiesByUsage( int usageCode )\r
-       {\r
-               return gcnew ObjectProperties( InternalPointer, usageCode, true );\r
-       }\r
-\r
-       array<Byte>^ Device::Escape( int command, array<Byte>^ data, int outputSize )\r
-       {\r
-               array<Byte>^ output = gcnew array<Byte>( outputSize );\r
-\r
-               pin_ptr<Byte> pinnedData = &data[0];\r
-               pin_ptr<Byte> pinnedOutput = &output[0];\r
-\r
-               DIEFFESCAPE input;\r
-               input.dwSize = sizeof(DIEFFESCAPE);\r
-               input.dwCommand = command;\r
-               input.cbInBuffer = data->Length;\r
-               input.cbOutBuffer = output->Length;\r
-               input.lpvInBuffer = pinnedData;\r
-               input.lpvOutBuffer = pinnedOutput;\r
-\r
-               HRESULT hr = InternalPointer->Escape( &input );\r
-               if( RECORD_DINPUT( hr ).IsFailure )\r
-                       return nullptr;\r
-\r
-               return output;\r
-       }\r
-\r
-       DeviceProperties^ Device::Properties::get()\r
-       {\r
-               if( properties == nullptr )\r
-                       properties = gcnew DeviceProperties( InternalPointer );\r
-\r
-               return properties;\r
-       }\r
-\r
-       IList<Effect^>^ Device::CreatedEffects::get()\r
-       {\r
-               List<Effect^>^ results = gcnew List<Effect^>();\r
-               CollectionShim<Effect^> shim( results );\r
-\r
-               HRESULT hr = InternalPointer->EnumCreatedEffectObjects( static_cast<LPDIENUMCREATEDEFFECTOBJECTSCALLBACK>( EnumerateCreatedEffectObjects ), &shim, 0 );\r
-               if( RECORD_DINPUT( hr ).IsFailure )\r
-                       return nullptr;\r
-\r
-               return results;\r
-       }\r
-}\r
-}\r