Initial commit.
This commit is contained in:
1228
code/ff/IFC/FeelitAPI.h
Normal file
1228
code/ff/IFC/FeelitAPI.h
Normal file
File diff suppressed because it is too large
Load Diff
79
code/ff/IFC/IFC.h
Normal file
79
code/ff/IFC/IFC.h
Normal file
@@ -0,0 +1,79 @@
|
||||
/**********************************************************************
|
||||
Copyright (c) 1997 - 2000 Immersion Corporation
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this
|
||||
software and its documentation may be granted without fee;
|
||||
interested parties are encouraged to request permission from
|
||||
Immersion Corporation
|
||||
801 Fox Lane
|
||||
San Jose, CA 95131
|
||||
408-467-1900
|
||||
|
||||
IMMERSION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
|
||||
IN NO EVENT SHALL IMMERSION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
FILE: IFC.h
|
||||
|
||||
PURPOSE: Class Types for the Force Foundation Classes
|
||||
|
||||
STARTED: 10/29/97
|
||||
|
||||
NOTES/REVISIONS:
|
||||
3/2/99 jrm (Jeff Mallett): Force-->Feel renaming
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
||||
#if !defined(AFX_IFC_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
#define AFX_IFC_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
|
||||
|
||||
#include "ImmBox.h"
|
||||
#include "ImmCondition.h"
|
||||
#include "ImmConstant.h"
|
||||
#include "ImmDamper.h"
|
||||
#include "ImmDevice.h"
|
||||
#include "ImmDevices.h"
|
||||
#include "ImmDXDevice.h"
|
||||
#include "ImmEffect.h"
|
||||
#include "ImmEllipse.h"
|
||||
#include "ImmEnclosure.h"
|
||||
#include "ImmMouse.h"
|
||||
#include "ImmFriction.h"
|
||||
#include "ImmGrid.h"
|
||||
#include "ImmInertia.h"
|
||||
#include "ImmPeriodic.h"
|
||||
#include "ImmProjects.h"
|
||||
#include "ImmRamp.h"
|
||||
#include "ImmSpring.h"
|
||||
#include "ImmTexture.h"
|
||||
#include "IFCErrors.h"
|
||||
|
||||
|
||||
#endif // !defined(AFX_IFC_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
BIN
code/ff/IFC/IFC22.dll
Normal file
BIN
code/ff/IFC/IFC22.dll
Normal file
Binary file not shown.
BIN
code/ff/IFC/IFC22.lib
Normal file
BIN
code/ff/IFC/IFC22.lib
Normal file
Binary file not shown.
181
code/ff/IFC/IFCErrors.h
Normal file
181
code/ff/IFC/IFCErrors.h
Normal file
@@ -0,0 +1,181 @@
|
||||
/**********************************************************************
|
||||
Copyright (c) 1999 - 2000 Immersion Corporation
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this
|
||||
software and its documentation may be granted without fee;
|
||||
interested parties are encouraged to request permission from
|
||||
Immersion Corporation
|
||||
801 Fox Lane
|
||||
San Jose, CA 95131
|
||||
408-467-1900
|
||||
|
||||
IMMERSION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
|
||||
IN NO EVENT SHALL IMMERSION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
FILE: IFCErrors.h
|
||||
|
||||
PURPOSE: Error codes returned in IFC; Error handling in IFC
|
||||
|
||||
STARTED: 2/28/99 by Jeff Mallett
|
||||
|
||||
NOTES/REVISIONS:
|
||||
3/2/99 jrm (Jeff Mallett): Force-->Feel renaming
|
||||
3/6/99 jrm: Added user error handling control
|
||||
3/15/99 jrm: __declspec(dllimport/dllexport) the whole class
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
||||
#if !defined(IFCERRORS_H__INCLUDED_)
|
||||
#define IFCERRORS_H__INCLUDED_
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
|
||||
#ifndef _IFCDLL_
|
||||
#define DLLIFC __declspec(dllimport)
|
||||
#else
|
||||
#define DLLIFC __declspec(dllexport)
|
||||
#endif
|
||||
|
||||
#include <winerror.h>
|
||||
#include "ImmBaseTypes.h"
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
*
|
||||
* Error Codes
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
typedef enum {
|
||||
IFC_ERR_OK = 0,
|
||||
|
||||
IFC_ERR_UNKNOWN_ERROR = 1,
|
||||
|
||||
IFC_ERR_ALLOCATION_FAILED = 2,
|
||||
IFC_ERR_INVALID_PARAMETER = 3,
|
||||
IFC_ERR_NULL_PARAMETER = 4,
|
||||
IFC_ERR_WRONG_FORM = 5,
|
||||
|
||||
IFC_ERR_DEVICE_IS_NULL = 6,
|
||||
IFC_ERR_INVALID_GUID = 7,
|
||||
IFC_ERR_EFFECT_NOT_INITIALIZED = 8,
|
||||
|
||||
IFC_ERR_CANT_INITIALIZE_DEVICE = 9,
|
||||
|
||||
IFC_ERR_CANT_CREATE_EFFECT = 10,
|
||||
IFC_ERR_CANT_CREATE_EFFECT_FROM_IFR = 11,
|
||||
IFC_ERR_NO_EFFECTS_FOUND = 12,
|
||||
IFC_ERR_EFFECT_IS_COMPOUND = 13,
|
||||
|
||||
IFC_ERR_PROJECT_ALREADY_OPEN = 14,
|
||||
IFC_ERR_PROJECT_NOT_OPEN = 15,
|
||||
|
||||
IFC_ERR_NO_DX7_DEVICE = 16,
|
||||
IFC_ERR_CANT_WRITE_IFR = 17,
|
||||
|
||||
IFC_ERR_DINPUT_NOT_FOUND = 18,
|
||||
IFC_ERR_IMMAPI_NOT_FOUND = 19,
|
||||
|
||||
IFC_ERR_FILE_NOT_FOUND = 20,
|
||||
IFC_ERR_NO_VERSION_INFO = 21
|
||||
|
||||
} IFC_ERROR_CODE;
|
||||
|
||||
typedef enum {
|
||||
IFC_OUTPUT_ERR_TO_DEBUG = 0x0001,
|
||||
IFC_OUTPUT_ERR_TO_DIALOG = 0x0002
|
||||
} IFC_ERROR_HANDLING_FLAGS;
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
*
|
||||
* Macros
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
//
|
||||
// ------ PUBLIC MACROS ------
|
||||
//
|
||||
#define IFC_GET_LAST_ERROR CIFCErrors::GetLastErrorCode()
|
||||
#define IFC_SET_ERROR_HANDLING CIFCErrors::SetErrorHandling
|
||||
|
||||
|
||||
//
|
||||
// ------ PRIVATE MACROS ------
|
||||
//
|
||||
#if (IFC_VERSION >= 0x0110)
|
||||
#define IFC_SET_ERROR(err) CIFCErrors::SetErrorCode(err, __FILE__, __LINE__)
|
||||
#else
|
||||
#define IFC_SET_ERROR(err) CIFCErrors::SetErrorCode(err)
|
||||
#endif
|
||||
#define IFC_CLEAR_ERROR IFC_SET_ERROR(IFC_ERR_OK)
|
||||
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
*
|
||||
* CIFCErrors
|
||||
*
|
||||
****************************************************************************/
|
||||
// All members are static. Don't bother instantiating an object of this class.
|
||||
|
||||
//
|
||||
// ------ PUBLIC INTERFACE ------
|
||||
//
|
||||
|
||||
class DLLIFC CIFCErrors
|
||||
{
|
||||
//
|
||||
// ATTRIBUTES
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
static HRESULT
|
||||
GetLastErrorCode()
|
||||
{ return m_Err; }
|
||||
|
||||
static void
|
||||
SetErrorHandling(unsigned long dwFlags)
|
||||
{ m_dwErrHandlingFlags = dwFlags; }
|
||||
|
||||
|
||||
//
|
||||
// ------ PRIVATE INTERFACE ------
|
||||
//
|
||||
|
||||
// Internally used by IFC classes
|
||||
static void
|
||||
SetErrorCode(
|
||||
HRESULT err
|
||||
#if (IFC_VERSION >= 0x0110)
|
||||
, const char *sFile, int nLine
|
||||
#endif
|
||||
);
|
||||
|
||||
//
|
||||
// HELPERS
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
//
|
||||
// INTERNAL DATA
|
||||
//
|
||||
|
||||
private:
|
||||
|
||||
static HRESULT m_Err;
|
||||
static unsigned long m_dwErrHandlingFlags;
|
||||
};
|
||||
|
||||
|
||||
#endif // IFCERRORS_H__INCLUDED_
|
||||
359
code/ff/IFC/ImmBaseTypes.h
Normal file
359
code/ff/IFC/ImmBaseTypes.h
Normal file
@@ -0,0 +1,359 @@
|
||||
/**********************************************************************
|
||||
Copyright (c) 1997 - 2000 Immersion Corporation
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this
|
||||
software and its documentation may be granted without fee;
|
||||
interested parties are encouraged to request permission from
|
||||
Immersion Corporation
|
||||
801 Fox Lane
|
||||
San Jose, CA 95131
|
||||
408-467-1900
|
||||
|
||||
IMMERSION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
|
||||
IN NO EVENT SHALL IMMERSION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
FILE: ImmBaseTypes.h
|
||||
|
||||
PURPOSE: Base Types for Feelit API Foundation Classes
|
||||
|
||||
STARTED: 10/29/97
|
||||
|
||||
NOTES/REVISIONS:
|
||||
3/2/99 jrm (Jeff Mallett): Force-->Feel renaming
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
||||
#if !defined(AFX_IMMBASETYPES_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
#define AFX_IMMBASETYPES_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
|
||||
//#include <windows.h>
|
||||
#include "FeelitApi.h"
|
||||
|
||||
// Version 0x0100 -- IFC10
|
||||
// Version 0x0101 -- IFC10p Special release: contains CImmProject::DestroyEffect
|
||||
// Version 0x0110 -- IFC21 (and IFC20?)
|
||||
#ifndef IFC_VERSION
|
||||
#define IFC_VERSION 0x0110
|
||||
#endif
|
||||
|
||||
//#if (IFC_VERSION >= 0x0101)
|
||||
// This means that a user can call delete on a CImmCompoundEffect
|
||||
// object that was allocated through a CImmProject::CreateEffect()
|
||||
// and all will be well.
|
||||
// #define PROTECT_AGAINST_DELETION
|
||||
//#endif
|
||||
|
||||
#if (IFC_VERSION >= 0x0110)
|
||||
#define IFC_START_DELAY
|
||||
#define IFC_EFFECT_CACHING
|
||||
#endif
|
||||
|
||||
// Add define for DirectInput Device emulating FEELit Device
|
||||
#define FEELIT_DEVICETYPE_DIRECTINPUT 3
|
||||
|
||||
|
||||
//================================================================
|
||||
// TYPE WRAPPERS
|
||||
//================================================================
|
||||
|
||||
//
|
||||
// IMM --> FEELIT Wrappers
|
||||
//
|
||||
#define IMM_VERSION FEELIT_VERSION
|
||||
|
||||
#define IMM_DEVICETYPE_DEVICE FEELIT_DEVICETYPE_DEVICE
|
||||
#define IMM_DEVICETYPE_MOUSE FEELIT_DEVICETYPE_MOUSE
|
||||
#define IMM_DEVICETYPE_HID FEELIT_DEVICETYPE_HID
|
||||
#define IMM_DEVICETYPE_DIRECTINPUT FEELIT_DEVICETYPE_DIRECTINPUT
|
||||
|
||||
#define IMM_EFFECT FEELIT_EFFECT
|
||||
#define LPIMM_EFFECT LPFEELIT_EFFECT
|
||||
#define LPCIMM_EFFECT LPCFEELIT_EFFECT
|
||||
|
||||
#define IMM_CONDITION FEELIT_CONDITION
|
||||
#define LPIMM_CONDITION LPFEELIT_CONDITION
|
||||
#define LPCIMM_CONDITION LPCFEELIT_CONDITION
|
||||
|
||||
#define IMM_CONSTANTFORCE FEELIT_CONSTANTFORCE
|
||||
#define LPIMM_CONSTANTFORCE LPFEELIT_CONSTANTFORCE
|
||||
#define LPCIMM_CONSTANTFORCE LPCFEELIT_CONSTANTFORCE
|
||||
|
||||
#define IMM_ELLIPSE FEELIT_ELLIPSE
|
||||
#define LPIMM_ELLIPSE LPFEELIT_ELLIPSE
|
||||
#define LPCIMM_ELLIPSE LPCFEELIT_ELLIPSE
|
||||
|
||||
#define IMM_ENCLOSURE FEELIT_ENCLOSURE
|
||||
#define LPIMM_ENCLOSURE LPFEELIT_ENCLOSURE
|
||||
#define LPCIMM_ENCLOSURE LPCFEELIT_ENCLOSURE
|
||||
|
||||
#define IMM_PERIODIC FEELIT_PERIODIC
|
||||
#define LPIMM_PERIODIC LPFEELIT_PERIODIC
|
||||
#define LPCIMM_PERIODIC LPCFEELIT_PERIODIC
|
||||
|
||||
#define IMM_RAMPFORCE FEELIT_RAMPFORCE
|
||||
#define LPIMM_RAMPFORCE LPFEELIT_RAMPFORCE
|
||||
#define LPCIMM_RAMPFORCE LPCFEELIT_RAMPFORCE
|
||||
|
||||
#define IMM_TEXTURE FEELIT_TEXTURE
|
||||
#define LPIMM_TEXTURE LPFEELIT_TEXTURE
|
||||
#define LPCIMM_TEXTURE LPCFEELIT_TEXTURE
|
||||
|
||||
#define IMM_ENVELOPE FEELIT_ENVELOPE
|
||||
#define LPIMM_ENVELOPE LPFEELIT_ENVELOPE
|
||||
#define LPCIMM_ENVELOPE LPCFEELIT_ENVELOPE
|
||||
|
||||
#define LPIIMM_API LPIFEELIT
|
||||
#define LPIIMM_EFFECT LPIFEELIT_EFFECT
|
||||
#define LPIIMM_DEVICE LPIFEELIT_DEVICE
|
||||
|
||||
#define IMM_CUSTOMFORCE FEELIT_CUSTOMFORCE
|
||||
#define LPIMM_CUSTOMFORCE LPFEELIT_CUSTOMFORCE
|
||||
#define LPCIMM_CUSTOMFORCE LPCFEELIT_CUSTOMFORCE
|
||||
|
||||
#define LPIMM_ENUMDEVICESCALLBACK LPFEELIT_ENUMDEVICESCALLBACK
|
||||
|
||||
/* Effect Types */
|
||||
#define IMM_EFFECTTYPE_ALL FEELIT_FEFFECTTYPE_ALL
|
||||
|
||||
#define IMM_EFFECTTYPE_CONSTANTFORCE FEELIT_FEFFECTTYPE_CONSTANTFORCE
|
||||
#define IMM_EFFECTTYPE_RAMPFORCE FEELIT_FEFFECTTYPE_RAMPFORCE
|
||||
#define IMM_EFFECTTYPE_PERIODIC FEELIT_FEFFECTTYPE_PERIODIC
|
||||
#define IMM_EFFECTTYPE_CONDITION FEELIT_FEFFECTTYPE_CONDITION
|
||||
#define IMM_EFFECTTYPE_ENCLOSURE FEELIT_FEFFECTTYPE_ENCLOSURE
|
||||
#define IMM_EFFECTTYPE_ELLIPSE FEELIT_FEFFECTTYPE_ELLIPSE
|
||||
#define IMM_EFFECTTYPE_TEXTURE FEELIT_FEFFECTTYPE_TEXTURE
|
||||
#define IMM_EFFECTTYPE_COMPOUND 0x00000008
|
||||
#define IMM_EFFECTTYPE_CUSTOMFORCE FEELIT_FEFFECTTYPE_CUSTOMFORCE
|
||||
#define IMM_EFFECTTYPE_HARDWARE FEELIT_FEFFECTTYPE_HARDWARE
|
||||
|
||||
#define IMM_EFFECTTYPE_FFATTACK FEELIT_FEFFECTTYPE_FFATTACK
|
||||
#define IMM_EFFECTTYPE_FFFADE FEELIT_FEFFECTTYPE_FFFADE
|
||||
#define IMM_EFFECTTYPE_SATURATION FEELIT_FEFFECTTYPE_SATURATION
|
||||
#define IMM_EFFECTTYPE_POSNEGCOEFFICIENTS FEELIT_FEFFECTTYPE_POSNEGCOEFFICIENTS
|
||||
#define IMM_EFFECTTYPE_POSNEGSATURATION FEELIT_FEFFECTTYPE_POSNEGSATURATION
|
||||
#define IMM_EFFECTTYPE_DEADBAND FEELIT_FEFFECTTYPE_DEADBAND
|
||||
|
||||
/* Units */
|
||||
#define IMM_DEGREES FEELIT_DEGREES
|
||||
#define IMM_FFNOMINALMAX FEELIT_FFNOMINALMAX
|
||||
#define IMM_SECONDS FEELIT_SECONDS
|
||||
|
||||
/* Start Flags */
|
||||
#define IMM_START_SOLO FEELIT_FSTART_SOLO
|
||||
#define IMM_START_NODOWNLOAD FEELIT_FSTART_NODOWNLOAD
|
||||
|
||||
/* Status Flags */
|
||||
#define IMM_STATUS_PLAYING FEELIT_FSTATUS_PLAYING
|
||||
#define IMM_STATUS_EMULATED FEELIT_FSTATUS_EMULATED
|
||||
|
||||
/* Stiffness Mask Flags */
|
||||
#define IMM_STIFF_NONE FEELIT_FSTIFF_NONE
|
||||
#define IMM_STIFF_OUTERLEFTWALL FEELIT_FSTIFF_OUTERLEFTWALL
|
||||
#define IMM_STIFF_INNERLEFTWALL FEELIT_FSTIFF_INNERLEFTWALL
|
||||
#define IMM_STIFF_INNERRIGHTWALL FEELIT_FSTIFF_INNERRIGHTWALL
|
||||
#define IMM_STIFF_OUTERRIGHTWALL FEELIT_FSTIFF_OUTERRIGHTWALL
|
||||
#define IMM_STIFF_OUTERTOPWALL FEELIT_FSTIFF_OUTERTOPWALL
|
||||
#define IMM_STIFF_INNERTOPWALL FEELIT_FSTIFF_INNERTOPWALL
|
||||
#define IMM_STIFF_INNERBOTTOMWALL FEELIT_FSTIFF_INNERBOTTOMWALL
|
||||
#define IMM_STIFF_OUTERBOTTOMWALL FEELIT_FSTIFF_OUTERBOTTOMWALL
|
||||
#define IMM_STIFF_OUTERANYWALL FEELIT_FSTIFF_OUTERANYWALL
|
||||
#define IMM_STIFF_INBOUNDANYWALL FEELIT_FSTIFF_INBOUNDANYWALL
|
||||
#define IMM_STIFF_INNERANYWALL FEELIT_FSTIFF_INNERANYWALL
|
||||
#define IMM_STIFF_OUTBOUNDANYWALL FEELIT_FSTIFF_OUTBOUNDANYWALL
|
||||
#define IMM_STIFF_ANYWALL FEELIT_FSTIFF_ANYWALL
|
||||
|
||||
/* Clipping Mask Flags */
|
||||
#define IMM_CLIP_NONE FEELIT_FCLIP_NONE
|
||||
#define IMM_CLIP_OUTERLEFTWALL FEELIT_FCLIP_OUTERLEFTWALL
|
||||
#define IMM_CLIP_INNERLEFTWALL FEELIT_FCLIP_INNERLEFTWALL
|
||||
#define IMM_CLIP_INNERRIGHTWALL FEELIT_FCLIP_INNERRIGHTWALL
|
||||
#define IMM_CLIP_OUTERRIGHTWALL FEELIT_FCLIP_OUTERRIGHTWALL
|
||||
#define IMM_CLIP_OUTERTOPWALL FEELIT_FCLIP_OUTERTOPWALL
|
||||
#define IMM_CLIP_INNERTOPWALL FEELIT_FCLIP_INNERTOPWALL
|
||||
#define IMM_CLIP_INNERBOTTOMWALL FEELIT_FCLIP_INNERBOTTOMWALL
|
||||
#define IMM_CLIP_OUTERBOTTOMWALL FEELIT_FCLIP_OUTERBOTTOMWALL
|
||||
#define IMM_CLIP_OUTERANYWALL FEELIT_FCLIP_OUTERANYWALL
|
||||
#define IMM_CLIP_INNERANYWALL FEELIT_FCLIP_INNERANYWALL
|
||||
#define IMM_CLIP_ANYWALL FEELIT_FCLIP_ANYWALL
|
||||
|
||||
/* Device capabilities Stuct */
|
||||
#define IMM_DEVCAPS FEELIT_DEVCAPS
|
||||
#define LPIMM_DEVCAPS LPFEELIT_DEVCAPS
|
||||
#define LPCIMM_DEVCAPS LPCFEELIT_DEVCAPS
|
||||
|
||||
/* Device capabilities flags */
|
||||
#define IMM_DEVCAPS_ATTACHED FEELIT_FDEVCAPS_ATTACHED
|
||||
#define IMM_DEVCAPS_POLLEDDEVICE FEELIT_FDEVCAPS_POLLEDDEVICE
|
||||
#define IMM_DEVCAPS_EMULATED FEELIT_FDEVCAPS_EMULATED
|
||||
#define IMM_DEVCAPS_POLLEDDATAFORMAT FEELIT_FDEVCAPS_POLLEDDATAFORMAT
|
||||
#define IMM_DEVCAPS_FORCEFEEDBACK FEELIT_FDEVCAPS_FORCEFEEDBACK
|
||||
#define IMM_DEVCAPS_FFATTACK FEELIT_FDEVCAPS_FFATTACK
|
||||
#define IMM_DEVCAPS_FFFADE FEELIT_FDEVCAPS_FFFADE
|
||||
#define IMM_DEVCAPS_SATURATION FEELIT_FDEVCAPS_SATURATION
|
||||
#define IMM_DEVCAPS_POSNEGCOEFFICIENTS FEELIT_FDEVCAPS_POSNEGCOEFFICIENTS
|
||||
#define IMM_DEVCAPS_POSNEGSATURATION FEELIT_FDEVCAPS_POSNEGSATURATION
|
||||
#define IMM_DEVCAPS_DEADBAND FEELIT_FDEVCAPS_DEADBAND
|
||||
|
||||
#define LPIMM_DEVICEINSTANCE LPFEELIT_DEVICEINSTANCE
|
||||
#define LPCIMM_DEVICEOBJECTINSTANCE LPCFEELIT_DEVICEOBJECTINSTANCE
|
||||
#define LPCIMM_EFFECTINFO LPCFEELIT_EFFECTINFO
|
||||
|
||||
#define IMM_PARAM_DURATION FEELIT_FPARAM_DURATION
|
||||
#define IMM_PARAM_SAMPLEPERIOD FEELIT_FPARAM_SAMPLEPERIOD
|
||||
#define IMM_PARAM_GAIN FEELIT_FPARAM_GAIN
|
||||
#define IMM_PARAM_TRIGGERBUTTON FEELIT_FPARAM_TRIGGERBUTTON
|
||||
#define IMM_PARAM_TRIGGERREPEATINTERVAL FEELIT_FPARAM_TRIGGERREPEATINTERVAL
|
||||
#define IMM_PARAM_AXES FEELIT_FPARAM_AXES
|
||||
#define IMM_PARAM_DIRECTION FEELIT_FPARAM_DIRECTION
|
||||
#define IMM_PARAM_ENVELOPE FEELIT_FPARAM_ENVELOPE
|
||||
#define IMM_PARAM_TYPESPECIFICPARAMS FEELIT_FPARAM_TYPESPECIFICPARAMS
|
||||
#define IMM_PARAM_STARTDELAY FEELIT_FPARAM_STARTDELAY
|
||||
#define IMM_PARAM_ALLPARAMS FEELIT_FPARAM_ALLPARAMS
|
||||
#define IMM_PARAM_START FEELIT_FPARAM_START
|
||||
#define IMM_PARAM_NORESTART FEELIT_FPARAM_NORESTART
|
||||
#define IMM_PARAM_NODOWNLOAD FEELIT_FPARAM_NODOWNLOAD
|
||||
|
||||
#define IMM_EFFECT_OBJECTIDS FEELIT_FEFFECT_OBJECTIDS
|
||||
#define IMM_EFFECT_OBJECTOFFSETS FEELIT_FEFFECT_OBJECTOFFSETS
|
||||
#define IMM_EFFECT_CARTESIAN FEELIT_FEFFECT_CARTESIAN
|
||||
#define IMM_EFFECT_POLAR FEELIT_FEFFECT_POLAR
|
||||
#define IMM_EFFECT_SPHERICAL FEELIT_FEFFECT_SPHERICAL
|
||||
|
||||
#define IMM_PARAM_NOTRIGGER FEELIT_PARAM_NOTRIGGER
|
||||
|
||||
/* Offsets */
|
||||
#define IMM_MOUSEOFFSET_XAXIS FEELIT_MOUSEOFFSET_XAXIS
|
||||
#define IMM_MOUSEOFFSET_YAXIS FEELIT_MOUSEOFFSET_YAXIS
|
||||
#define IMM_MOUSEOFFSET_ZAXIS FEELIT_MOUSEOFFSET_ZAXIS
|
||||
#define IMM_MOUSEOFFSET_XFORCE FEELIT_MOUSEOFFSET_XFORCE
|
||||
#define IMM_MOUSEOFFSET_YFORCE FEELIT_MOUSEOFFSET_YFORCE
|
||||
#define IMM_MOUSEOFFSET_ZFORCE FEELIT_MOUSEOFFSET_ZFORCE
|
||||
#define IMM_MOUSEOFFSET_BUTTON0 FEELIT_MOUSEOFFSET_BUTTON0
|
||||
#define IMM_MOUSEOFFSET_BUTTON1 FEELIT_MOUSEOFFSET_BUTTON1
|
||||
#define IMM_MOUSEOFFSET_BUTTON2 FEELIT_MOUSEOFFSET_BUTTON2
|
||||
#define IMM_MOUSEOFFSET_BUTTON3 FEELIT_MOUSEOFFSET_BUTTON3
|
||||
|
||||
/* Cooperative Level Flags */
|
||||
#define IMM_COOPLEVEL_FOREGROUND FEELIT_FCOOPLEVEL_FOREGROUND
|
||||
#define IMM_COOPLEVEL_BACKGROUND FEELIT_FCOOPLEVEL_BACKGROUND
|
||||
|
||||
/* Enumeration codes */
|
||||
#define IMM_ENUM_STOP FEELIT_ENUM_STOP
|
||||
#define IMM_ENUM_CONTINUE FEELIT_ENUM_CONTINUE
|
||||
|
||||
#define IMM_ENUMDEV_ALLDEVICES FEELIT_FENUMDEV_ALLDEVICES
|
||||
#define IMM_ENUMDEV_ATTACHEDONLY FEELIT_FENUMDEV_ATTACHEDONLY
|
||||
#define IMM_ENUMDEV_FORCEFEEDBACK FEELIT_FENUMDEV_FORCEFEEDBACK
|
||||
|
||||
/* Return values */
|
||||
#define IMM_RESULT_OK FEELIT_RESULT_OK
|
||||
#define IMM_RESULT_NOTATTACHED FEELIT_RESULT_NOTATTACHED
|
||||
#define IMM_RESULT_BUFFEROVERFLOW FEELIT_RESULT_BUFFEROVERFLOW
|
||||
#define IMM_RESULT_PROPNOEFFECT FEELIT_RESULT_PROPNOEFFECT
|
||||
#define IMM_RESULT_NOEFFECT FEELIT_RESULT_NOEFFECT
|
||||
#define IMM_RESULT_POLLEDDEVICE FEELIT_RESULT_POLLEDDEVICE
|
||||
#define IMM_RESULT_DOWNLOADSKIPPED FEELIT_RESULT_DOWNLOADSKIPPED
|
||||
#define IMM_RESULT_EFFECTRESTARTED FEELIT_RESULT_EFFECTRESTARTED
|
||||
#define IMM_RESULT_TRUNCATED FEELIT_RESULT_TRUNCATED
|
||||
#define IMM_RESULT_TRUNCATEDANDRESTARTED FEELIT_RESULT_TRUNCATEDANDRESTARTED
|
||||
#define IMM_ERROR_OLDFEELITVERSION FEELIT_ERROR_OLDFEELITVERSION
|
||||
#define IMM_ERROR_BETAFEELITVERSION FEELIT_ERROR_BETAFEELITVERSION
|
||||
#define IMM_ERROR_BADDRIVERVER FEELIT_ERROR_BADDRIVERVER
|
||||
#define IMM_ERROR_DEVICENOTREG FEELIT_ERROR_DEVICENOTREG
|
||||
#define IMM_ERROR_NOTFOUND FEELIT_ERROR_NOTFOUND
|
||||
#define IMM_ERROR_OBJECTNOTFOUND FEELIT_ERROR_OBJECTNOTFOUND
|
||||
#define IMM_ERROR_INVALIDPARAM FEELIT_ERROR_INVALIDPARAM
|
||||
#define IMM_ERROR_NOINTERFACE FEELIT_ERROR_NOINTERFACE
|
||||
#define IMM_ERROR_GENERIC FEELIT_ERROR_GENERIC
|
||||
#define IMM_ERROR_OUTOFMEMORY FEELIT_ERROR_OUTOFMEMORY
|
||||
#define IMM_ERROR_UNSUPPORTED FEELIT_ERROR_UNSUPPORTED
|
||||
#define IMM_ERROR_NOTINITIALIZED FEELIT_ERROR_NOTINITIALIZED
|
||||
#define IMM_ERROR_ALREADYINITIALIZED FEELIT_ERROR_ALREADYINITIALIZED
|
||||
#define IMM_ERROR_NOAGGREGATION FEELIT_ERROR_NOAGGREGATION
|
||||
#define IMM_ERROR_OTHERAPPHASPRIO FEELIT_ERROR_OTHERAPPHASPRIO
|
||||
#define IMM_ERROR_INPUTLOST FEELIT_ERROR_INPUTLOST
|
||||
#define IMM_ERROR_ACQUIRED FEELIT_ERROR_ACQUIRED
|
||||
#define IMM_ERROR_NOTACQUIRED FEELIT_ERROR_NOTACQUIRED
|
||||
#define IMM_ERROR_READONLY FEELIT_ERROR_READONLY
|
||||
#define IMM_ERROR_HANDLEEXISTS FEELIT_ERROR_HANDLEEXISTS
|
||||
#define IMM_ERROR_INSUFFICIENTPRIVS FEELIT_ERROR_INSUFFICIENTPRIVS
|
||||
#define IMM_ERROR_DEVICEFULL FEELIT_ERROR_DEVICEFULL
|
||||
#define IMM_ERROR_MOREDATA FEELIT_ERROR_MOREDATA
|
||||
#define IMM_ERROR_NOTDOWNLOADED FEELIT_ERROR_NOTDOWNLOADED
|
||||
#define IMM_ERROR_HASEFFECTS FEELIT_ERROR_HASEFFECTS
|
||||
#define IMM_ERROR_NOTEXCLUSIVEACQUIRED FEELIT_ERROR_NOTEXCLUSIVEACQUIRED
|
||||
#define IMM_ERROR_INCOMPLETEEFFECT FEELIT_ERROR_INCOMPLETEEFFECT
|
||||
#define IMM_ERROR_NOTBUFFERED FEELIT_ERROR_NOTBUFFERED
|
||||
#define IMM_ERROR_EFFECTPLAYING FEELIT_ERROR_EFFECTPLAYING
|
||||
#define IMM_ERROR_INTERNAL FEELIT_ERROR_INTERNAL
|
||||
#define IMM_ERROR_INACTIVE FEELIT_ERROR_INACTIVE
|
||||
|
||||
//================================================================
|
||||
// GUID WRAPPERS
|
||||
//================================================================
|
||||
|
||||
//
|
||||
// Immersion --> Feelit Wrappers
|
||||
//
|
||||
#define GUID_Imm_ConstantForce GUID_Feelit_ConstantForce
|
||||
#define GUID_Imm_RampForce GUID_Feelit_RampForce
|
||||
#define GUID_Imm_Square GUID_Feelit_Square
|
||||
#define GUID_Imm_Sine GUID_Feelit_Sine
|
||||
#define GUID_Imm_Triangle GUID_Feelit_Triangle
|
||||
#define GUID_Imm_SawtoothUp GUID_Feelit_SawtoothUp
|
||||
#define GUID_Imm_SawtoothDown GUID_Feelit_SawtoothDown
|
||||
#define GUID_Imm_Spring GUID_Feelit_Spring
|
||||
#define GUID_Imm_DeviceSpring GUID_Feelit_DeviceSpring
|
||||
#define GUID_Imm_Damper GUID_Feelit_Damper
|
||||
#define GUID_Imm_Inertia GUID_Feelit_Inertia
|
||||
#define GUID_Imm_Friction GUID_Feelit_Friction
|
||||
#define GUID_Imm_Texture GUID_Feelit_Texture
|
||||
#define GUID_Imm_Grid GUID_Feelit_Grid
|
||||
#define GUID_Imm_Enclosure GUID_Feelit_Enclosure
|
||||
#define GUID_Imm_Ellipse GUID_Feelit_Ellipse
|
||||
#define GUID_Imm_CustomForce GUID_Feelit_CustomForce
|
||||
|
||||
#define CLSID_Imm CLSID_Feelit
|
||||
#define CLSID_ImmDevice CLSID_FeelitDevice
|
||||
#define GUID_Imm_XAxis GUID_Feelit_XAxis
|
||||
#define GUID_Imm_YAxis GUID_Feelit_YAxis
|
||||
#define GUID_Imm_ZAxis GUID_Feelit_ZAxis
|
||||
#define GUID_Imm_RxAxis GUID_Feelit_RxAxis
|
||||
#define GUID_Imm_RyAxis GUID_Feelit_RyAxis
|
||||
#define GUID_Imm_RzAxis GUID_Feelit_RzAxis
|
||||
#define GUID_Imm_Slider GUID_Feelit_Slider
|
||||
#define GUID_Imm_Button GUID_Feelit_Button
|
||||
#define GUID_Imm_Key GUID_Feelit_Key
|
||||
#define GUID_Imm_POV GUID_Feelit_POV
|
||||
#define GUID_Imm_Unknown GUID_Feelit_Unknown
|
||||
#define GUID_Imm_Mouse GUID_Feelit_Mouse
|
||||
|
||||
|
||||
#endif // !defined(AFX_IMMBASETYPES_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
170
code/ff/IFC/ImmBox.h
Normal file
170
code/ff/IFC/ImmBox.h
Normal file
@@ -0,0 +1,170 @@
|
||||
/**********************************************************************
|
||||
Copyright (c) 1997 - 2000 Immersion Corporation
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this
|
||||
software and its documentation may be granted without fee;
|
||||
interested parties are encouraged to request permission from
|
||||
Immersion Corporation
|
||||
801 Fox Lane
|
||||
San Jose, CA 95131
|
||||
408-467-1900
|
||||
|
||||
IMMERSION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
|
||||
IN NO EVENT SHALL IMMERSION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
FILE: ImmBox.h
|
||||
|
||||
PURPOSE: Box Class for Immersion Foundation Classes
|
||||
|
||||
STARTED: 11/04/97
|
||||
|
||||
NOTES/REVISIONS:
|
||||
3/2/99 jrm (Jeff Mallett): Force-->Feel renaming
|
||||
3/15/99 jrm: __declspec(dllimport/dllexport) the whole class
|
||||
11/15/99 sdr (Steve Rank): Converted to IFC
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
||||
#if !defined(AFX_IMMBOX_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
#define AFX_IMMBOX_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
|
||||
#ifndef _IFCDLL_
|
||||
#define DLLIFC __declspec(dllimport)
|
||||
#else
|
||||
#define DLLIFC __declspec(dllexport)
|
||||
#endif
|
||||
|
||||
#include "ImmBaseTypes.h"
|
||||
#include "ImmEffect.h"
|
||||
#include "ImmEnclosure.h"
|
||||
|
||||
|
||||
|
||||
//================================================================
|
||||
// Constants
|
||||
//================================================================
|
||||
|
||||
const POINT IMM_BOX_MOUSE_POS_AT_START = { MAXLONG, MAXLONG };
|
||||
|
||||
#define IMM_BOX_DEFAULT_STIFFNESS 5000
|
||||
#define IMM_BOX_DEFAULT_WIDTH 10
|
||||
#define IMM_BOX_DEFAULT_HEIGHT IMM_ENCLOSURE_HEIGHT_AUTO
|
||||
#define IMM_BOX_DEFAULT_WALL_WIDTH IMM_ENCLOSURE_WALL_WIDTH_AUTO
|
||||
|
||||
#define IMM_BOX_DEFAULT_CENTER_POINT IMM_BOX_MOUSE_POS_AT_START
|
||||
|
||||
|
||||
|
||||
|
||||
//================================================================
|
||||
// CImmBox
|
||||
//================================================================
|
||||
|
||||
//
|
||||
// ------ PUBLIC INTERFACE ------
|
||||
//
|
||||
|
||||
class DLLIFC CImmBox : public CImmEnclosure
|
||||
{
|
||||
//
|
||||
// CONSTRUCTOR/DESCTRUCTOR
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
// Constructor
|
||||
CImmBox();
|
||||
|
||||
// Destructor
|
||||
virtual
|
||||
~CImmBox();
|
||||
|
||||
|
||||
//
|
||||
// ATTRIBUTES
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
|
||||
BOOL
|
||||
ChangeParameters(
|
||||
POINT pntCenter,
|
||||
LONG lStiffness = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwWidth = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwHeight = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwWallWidth = IMM_EFFECT_DONT_CHANGE,
|
||||
CImmEffect* pInsideEffect = (CImmEffect*) IMM_EFFECT_DONT_CHANGE
|
||||
);
|
||||
|
||||
BOOL
|
||||
ChangeParameters(
|
||||
LPCRECT pRectOutside,
|
||||
LONG lStiffness = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwWallWidth = IMM_EFFECT_DONT_CHANGE,
|
||||
CImmEffect* pInsideEffect = (CImmEffect*) IMM_EFFECT_DONT_CHANGE
|
||||
);
|
||||
|
||||
|
||||
//
|
||||
// OPERATIONS
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
|
||||
BOOL
|
||||
Initialize(
|
||||
CImmDevice* pDevice,
|
||||
DWORD dwWidth = IMM_ENCLOSURE_DEFAULT_WIDTH,
|
||||
DWORD dwHeight = IMM_ENCLOSURE_DEFAULT_HEIGHT,
|
||||
LONG lStiffness = IMM_BOX_DEFAULT_STIFFNESS,
|
||||
DWORD dwWallWidth = IMM_BOX_DEFAULT_WALL_WIDTH,
|
||||
POINT pntCenter = IMM_BOX_DEFAULT_CENTER_POINT,
|
||||
CImmEffect* pInsideEffect = NULL,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
|
||||
BOOL
|
||||
Initialize(
|
||||
CImmDevice* pDevice,
|
||||
LPCRECT pRectOutside,
|
||||
LONG lStiffness = IMM_BOX_DEFAULT_STIFFNESS,
|
||||
DWORD dwWallWidth = IMM_BOX_DEFAULT_WALL_WIDTH,
|
||||
CImmEffect* pInsideEffect = NULL,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
|
||||
//
|
||||
// ------ PRIVATE INTERFACE ------
|
||||
//
|
||||
|
||||
//
|
||||
// HELPERS
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
//
|
||||
// INTERNAL DATA
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif // !defined(AFX_IMMBOX_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
228
code/ff/IFC/ImmCompoundEffect.h
Normal file
228
code/ff/IFC/ImmCompoundEffect.h
Normal file
@@ -0,0 +1,228 @@
|
||||
/**********************************************************************
|
||||
Copyright (c) 1999 - 2000 Immersion Corporation
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this
|
||||
software and its documentation may be granted without fee;
|
||||
interested parties are encouraged to request permission from
|
||||
Immersion Corporation
|
||||
801 Fox Lane
|
||||
San Jose, CA 95131
|
||||
408-467-1900
|
||||
|
||||
IMMERSION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
|
||||
IN NO EVENT SHALL IMMERSION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
FILE: ImmCompoundEffect.h
|
||||
|
||||
PURPOSE: Manages Compound Effects for Force Foundation Classes
|
||||
|
||||
STARTED: 2/24/99 by Jeff Mallett
|
||||
|
||||
NOTES/REVISIONS:
|
||||
3/2/99 jrm (Jeff Mallett): Force-->Feel renaming
|
||||
3/15/99 jrm: __declspec(dllimport/dllexport) the whole class
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
||||
#include "ImmBaseTypes.h"
|
||||
#include "ImmEffect.h"
|
||||
|
||||
#include "ImmIFR.h"
|
||||
|
||||
#if !defined(__FEELCOMPOUNDEFFECT_H)
|
||||
#define __FEELCOMPOUNDEFFECT_H
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
|
||||
#ifndef _IFCDLL_
|
||||
#define DLLIFC __declspec(dllimport)
|
||||
#else
|
||||
#define DLLIFC __declspec(dllexport)
|
||||
#endif
|
||||
|
||||
/*
|
||||
** IMM_FFE_FILEEFFECT - struct used by DX7 to read and write to FFE
|
||||
** files. This struct is different from DIFILEEFFECT due to the use
|
||||
** of the non const LPDIEFFECT. An LPDIEFFECT is needed to be able to
|
||||
** collect information from IFC class objects. This should be defined
|
||||
** elsewhere, but no more appropriate header currently exists.
|
||||
*/
|
||||
typedef struct IMM_FFE_FILEEFFECT{
|
||||
DWORD dwSize;
|
||||
GUID GuidEffect;
|
||||
LPDIEFFECT lpDiEffect;
|
||||
CHAR szFriendlyName[MAX_PATH];
|
||||
}IMM_FFE_FILEEFFECT, *LPIMM_FFE_FILEEFFECT;
|
||||
|
||||
//================================================================
|
||||
// CImmCompoundEffect
|
||||
//================================================================
|
||||
// Represents a compound effect, such as might be created in
|
||||
// Immersion Studio. Contains an array of effect objects.
|
||||
// Methods iterate over component effects, passing the message
|
||||
// to each one.
|
||||
// Also, has stuff for being used by CImmProject:
|
||||
// * next pointer so can be put on a linked list
|
||||
// * force name
|
||||
|
||||
//
|
||||
// ------ PUBLIC INTERFACE ------
|
||||
//
|
||||
|
||||
class DLLIFC CImmCompoundEffect
|
||||
{
|
||||
//
|
||||
// CONSTRUCTOR/DESTRUCTOR
|
||||
//
|
||||
|
||||
public://### protected:
|
||||
// Constructs a CImmCompoundEffect
|
||||
// Don't try to construct a CImmCompoundEffect yourself.
|
||||
// Instead let CImmProject construct it for you.
|
||||
CImmCompoundEffect(
|
||||
IFREffect **hEffects,
|
||||
long nEffects,
|
||||
LPCSTR pEffectName
|
||||
);
|
||||
|
||||
public:
|
||||
|
||||
~CImmCompoundEffect();
|
||||
|
||||
|
||||
//
|
||||
// ATTRIBUTES
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
long
|
||||
GetNumberOfContainedEffects() const
|
||||
{ return m_nEffects; }
|
||||
|
||||
const char *
|
||||
GetName() const
|
||||
{ return m_lpszName; }
|
||||
|
||||
GENERIC_EFFECT_PTR
|
||||
GetContainedEffect(
|
||||
long index
|
||||
);
|
||||
|
||||
GENERIC_EFFECT_PTR
|
||||
GetContainedEffect(
|
||||
LPCSTR lpszEffectName
|
||||
);
|
||||
|
||||
DWORD
|
||||
GetEffectType();
|
||||
|
||||
//
|
||||
// OPERATIONS
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
// Start all the contained effects
|
||||
BOOL Start(
|
||||
DWORD dwIterations = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwFlags = 0
|
||||
);
|
||||
|
||||
// Stop all the contained effects
|
||||
BOOL Stop();
|
||||
|
||||
|
||||
//
|
||||
// ------ PRIVATE INTERFACE ------
|
||||
//
|
||||
|
||||
//
|
||||
// HELPERS
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
BOOL initialize(
|
||||
CImmDevice* pDevice,
|
||||
IFREffect **hEffects,
|
||||
DWORD dwNoDownload
|
||||
);
|
||||
|
||||
BOOL
|
||||
set_contained_effect(
|
||||
GENERIC_EFFECT_PTR pObject,
|
||||
int index = 0
|
||||
);
|
||||
|
||||
BOOL
|
||||
set_name(
|
||||
const char *lpszName
|
||||
);
|
||||
|
||||
void
|
||||
set_next(
|
||||
CImmCompoundEffect *pNext
|
||||
)
|
||||
{ m_pNext = pNext; }
|
||||
|
||||
CImmCompoundEffect *
|
||||
get_next() const
|
||||
{ return m_pNext; }
|
||||
|
||||
void
|
||||
set_objID(
|
||||
GUID* pobjID
|
||||
)
|
||||
{ m_objID = *pobjID; }
|
||||
|
||||
BOOL
|
||||
set_contained_obj_IDs(
|
||||
GUID *guidList
|
||||
);
|
||||
|
||||
int
|
||||
buffer_ifr_object(TCHAR* pData);
|
||||
|
||||
BOOL
|
||||
get_ffe_object(LPIMM_FFE_FILEEFFECT pffeObject);
|
||||
|
||||
|
||||
//
|
||||
// FRIENDS
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
friend class CImmProject;
|
||||
|
||||
|
||||
//
|
||||
// INTERNAL DATA
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
GENERIC_EFFECT_PTR *m_paEffects; // Array of force class object pointers
|
||||
long m_nEffects; // Number of effects in m_paEffects
|
||||
|
||||
private:
|
||||
|
||||
char *m_lpszName; // Name of the compound effect
|
||||
GUID m_objID;
|
||||
GUID *m_pContainedObjIDs;
|
||||
CImmCompoundEffect *m_pNext; // Next compound effect in the project
|
||||
#ifdef PROTECT_AGAINST_DELETION
|
||||
CImmProject *m_pOwningProject;
|
||||
#endif
|
||||
};
|
||||
|
||||
#endif
|
||||
451
code/ff/IFC/ImmCondition.h
Normal file
451
code/ff/IFC/ImmCondition.h
Normal file
@@ -0,0 +1,451 @@
|
||||
/**********************************************************************
|
||||
Copyright (c) 1997 - 2000 Immersion Corporation
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this
|
||||
software and its documentation may be granted without fee;
|
||||
interested parties are encouraged to request permission from
|
||||
Immersion Corporation
|
||||
801 Fox Lane
|
||||
San Jose, CA 95131
|
||||
408-467-1900
|
||||
|
||||
IMMERSION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
|
||||
IN NO EVENT SHALL IMMERSION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
FILE: ImmCondition.h
|
||||
|
||||
PURPOSE: Immersion Foundation Classes Base Condition Effect
|
||||
|
||||
STARTED: Oct.10.97
|
||||
|
||||
NOTES/REVISIONS:
|
||||
Mar.02.99 jrm (Jeff Mallett): Force-->Feel renaming
|
||||
Mar.02.99 jrm: Added GetIsCompatibleGUID
|
||||
Mar.15.99 jrm: __declspec(dllimport/dllexport) the whole class
|
||||
Nov.15.99 efw (Evan Wies): Converted to IFC
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
||||
#if !defined(AFX_IMMCondition_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
#define AFX_IMMCondition_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
|
||||
#ifndef _IFCDLL_
|
||||
#define DLLIFC __declspec(dllimport)
|
||||
#else
|
||||
#define DLLIFC __declspec(dllexport)
|
||||
#endif
|
||||
|
||||
#include "ImmBaseTypes.h"
|
||||
#include "ImmEffect.h"
|
||||
|
||||
|
||||
|
||||
//================================================================
|
||||
// Constants
|
||||
//================================================================
|
||||
|
||||
const POINT IMM_CONDITION_PT_NULL = { 0, 0 };
|
||||
|
||||
#define IMM_CONDITION_DEFAULT_COEFFICIENT 2500
|
||||
#define IMM_CONDITION_DEFAULT_SATURATION 10000
|
||||
#define IMM_CONDITION_DEFAULT_DEADBAND 100
|
||||
#define IMM_CONDITION_DEFAULT_CENTER_POINT IMM_EFFECT_MOUSE_POS_AT_START
|
||||
#define IMM_CONDITION_DEFAULT_DURATION INFINITE
|
||||
|
||||
typedef enum {
|
||||
IC_NULL = 0,
|
||||
IC_POSITIVE_COEFFICIENT,
|
||||
IC_NEGATIVE_COEFFICIENT,
|
||||
IC_POSITIVE_SATURATION,
|
||||
IC_NEGATIVE_SATURATION,
|
||||
IC_DEAD_BAND,
|
||||
IC_AXIS,
|
||||
IC_CENTER,
|
||||
IC_DIRECTION_X,
|
||||
IC_DIRECTION_Y,
|
||||
IC_ANGLE,
|
||||
IC_CONDITION_X,
|
||||
IC_CONDITION_Y
|
||||
} IC_ArgumentType;
|
||||
|
||||
#define IC_CONDITION IC_CONDITION_X
|
||||
|
||||
|
||||
|
||||
//================================================================
|
||||
// CImmCondition
|
||||
//================================================================
|
||||
|
||||
//
|
||||
// ------ PUBLIC INTERFACE ------
|
||||
//
|
||||
|
||||
class DLLIFC CImmCondition : public CImmEffect
|
||||
{
|
||||
//
|
||||
// CONSTRUCTOR/DESCTRUCTOR
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
// Constructor
|
||||
CImmCondition(
|
||||
const GUID& rguidEffect
|
||||
);
|
||||
|
||||
// Destructor
|
||||
virtual
|
||||
~CImmCondition();
|
||||
|
||||
|
||||
//
|
||||
// ATTRIBUTES
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
virtual BOOL
|
||||
GetIsCompatibleGUID(
|
||||
GUID &guid
|
||||
);
|
||||
|
||||
virtual DWORD GetEffectType()
|
||||
{ return IMM_EFFECTTYPE_CONDITION; }
|
||||
|
||||
// Use this form for single-axis and dual-axis effects
|
||||
BOOL
|
||||
ChangeConditionParams(
|
||||
LPCIMM_CONDITION pConditionX,
|
||||
LPCIMM_CONDITION pConditionY
|
||||
);
|
||||
|
||||
// Use this form for directional effects
|
||||
BOOL
|
||||
ChangeConditionParams(
|
||||
LPCIMM_CONDITION pCondition,
|
||||
LONG lDirectionX,
|
||||
LONG lDirectionY
|
||||
);
|
||||
|
||||
// Use this form for directional effects
|
||||
BOOL
|
||||
ChangeConditionParamsPolar(
|
||||
LPCIMM_CONDITION pCondition,
|
||||
LONG lAngle
|
||||
);
|
||||
|
||||
// Use this form for single-axis, dual-axis, or directional effects
|
||||
BOOL
|
||||
ChangeConditionParamsX(
|
||||
LONG lPositiveCoefficient,
|
||||
LONG lNegativeCoefficient = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwPositiveSaturation = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwNegativeSaturation = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lDeadBand = IMM_EFFECT_DONT_CHANGE,
|
||||
POINT pntCenter = IMM_EFFECT_DONT_CHANGE_POINT,
|
||||
LONG lDirectionX = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lDirectionY = IMM_EFFECT_DONT_CHANGE
|
||||
);
|
||||
|
||||
BOOL
|
||||
ChangeConditionParamsPolarX(
|
||||
LONG lPositiveCoefficient,
|
||||
LONG lNegativeCoefficient,
|
||||
DWORD dwPositiveSaturation,
|
||||
DWORD dwNegativeSaturation,
|
||||
LONG lDeadBand,
|
||||
POINT pntCenter,
|
||||
LONG lAngle
|
||||
);
|
||||
|
||||
BOOL
|
||||
ChangeConditionParamsY(
|
||||
LONG lPositiveCoefficient,
|
||||
LONG lNegativeCoefficient = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwPositiveSaturation = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwNegativeSaturation = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lDeadBand = IMM_EFFECT_DONT_CHANGE,
|
||||
POINT pntCenter = IMM_EFFECT_DONT_CHANGE_POINT,
|
||||
LONG lDirectionX = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lDirectionY = IMM_EFFECT_DONT_CHANGE
|
||||
);
|
||||
|
||||
BOOL
|
||||
ChangeConditionParamsPolarY(
|
||||
LONG lPositiveCoefficient,
|
||||
LONG lNegativeCoefficient,
|
||||
DWORD dwPositiveSaturation,
|
||||
DWORD dwNegativeSaturation,
|
||||
LONG lDeadBand,
|
||||
POINT pntCenter,
|
||||
LONG lAngle
|
||||
);
|
||||
|
||||
// Use this form for single-axis, dual-axis symetrical, or directional effects
|
||||
BOOL
|
||||
ChangeConditionParams(
|
||||
LONG lPositiveCoefficient,
|
||||
LONG lNegativeCoefficient = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwPositiveSaturation = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwNegativeSaturation = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lDeadBand = IMM_EFFECT_DONT_CHANGE,
|
||||
POINT pntCenter = IMM_EFFECT_DONT_CHANGE_POINT,
|
||||
LONG lDirectionX = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lDirectionY = IMM_EFFECT_DONT_CHANGE
|
||||
);
|
||||
|
||||
BOOL
|
||||
ChangeConditionParamsPolar(
|
||||
LONG lPositiveCoefficient,
|
||||
LONG lNegativeCoefficient,
|
||||
DWORD dwPositiveSaturation,
|
||||
DWORD dwNegativeSaturation,
|
||||
LONG lDeadBand,
|
||||
POINT pntCenter,
|
||||
LONG lAngle
|
||||
);
|
||||
|
||||
BOOL ChangePositiveCoefficientX( LONG lPositiveCoefficient );
|
||||
BOOL ChangeNegativeCoefficientX( LONG lNegativeCoefficient );
|
||||
BOOL ChangePositiveSaturationX( DWORD dwPositiveSaturation );
|
||||
BOOL ChangeNegativeSaturationX( DWORD dwNegativeSaturation );
|
||||
BOOL ChangeDeadBandX( LONG lDeadBand );
|
||||
|
||||
BOOL ChangePositiveCoefficientY( LONG lPositiveCoefficient );
|
||||
BOOL ChangeNegativeCoefficientY( LONG lNegativeCoefficient );
|
||||
BOOL ChangePositiveSaturationY( DWORD dwPositiveSaturation );
|
||||
BOOL ChangeNegativeSaturationY( DWORD dwNegativeSaturation );
|
||||
BOOL ChangeDeadBandY( LONG lDeadBand );
|
||||
|
||||
BOOL ChangePositiveCoefficient( LONG lPositiveCoefficient );
|
||||
BOOL ChangeNegativeCoefficient( LONG lNegativeCoefficient );
|
||||
BOOL ChangePositiveSaturation( DWORD dwPositiveSaturation );
|
||||
BOOL ChangeNegativeSaturation( DWORD dwNegativeSaturation );
|
||||
BOOL ChangeDeadBand( LONG lDeadBand );
|
||||
|
||||
BOOL
|
||||
SetCenter(
|
||||
POINT pntCenter
|
||||
);
|
||||
|
||||
BOOL
|
||||
ChangeConditionParams2(
|
||||
IC_ArgumentType type,
|
||||
...
|
||||
);
|
||||
|
||||
BOOL GetPositiveCoefficientX( LONG &lPositiveCoefficient );
|
||||
BOOL GetNegativeCoefficientX( LONG &lNegativeCoefficient );
|
||||
BOOL GetPositiveSaturationX( DWORD &dwPositiveSaturation );
|
||||
BOOL GetNegativeSaturationX( DWORD &dwNegativeSaturation );
|
||||
BOOL GetDeadBandX( LONG &lDeadBand );
|
||||
|
||||
BOOL GetPositiveCoefficientY( LONG &lPositiveCoefficient );
|
||||
BOOL GetNegativeCoefficientY( LONG &lNegativeCoefficient );
|
||||
BOOL GetPositiveSaturationY( DWORD &dwPositiveSaturation );
|
||||
BOOL GetNegativeSaturationY( DWORD &dwNegativeSaturation );
|
||||
BOOL GetDeadBandY( LONG &lDeadBand );
|
||||
|
||||
BOOL GetAxis( DWORD &dwfAxis );
|
||||
BOOL GetCenter( POINT &pntCenter );
|
||||
|
||||
//
|
||||
// OPERATIONS
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
virtual BOOL
|
||||
Initialize(
|
||||
CImmDevice* pDevice,
|
||||
const IMM_EFFECT &effect,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
// Use this form for single-axis and dual-axis effects
|
||||
BOOL
|
||||
InitCondition(
|
||||
CImmDevice* pDevice,
|
||||
LPCIMM_CONDITION pConditionX,
|
||||
LPCIMM_CONDITION pConditionY,
|
||||
BOOL bUseDeviceCoordinates = FALSE,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
|
||||
// Use this form for directional effects
|
||||
BOOL
|
||||
InitCondition(
|
||||
CImmDevice* pDevice,
|
||||
LPCIMM_CONDITION pCondition,
|
||||
LONG lDirectionX,
|
||||
LONG lDirectionY,
|
||||
BOOL bUseDeviceCoordinates = FALSE,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
|
||||
// Use this form for directional effects
|
||||
BOOL
|
||||
InitConditionPolar(
|
||||
CImmDevice* pDevice,
|
||||
LPCIMM_CONDITION pCondition,
|
||||
LONG lAngle,
|
||||
BOOL bUseDeviceCoordinates = FALSE,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
|
||||
// Use this form for single-axis, dual-axis symetrical, or directional effects
|
||||
BOOL
|
||||
InitCondition(
|
||||
CImmDevice* pDevice,
|
||||
LONG lPositiveCoefficient = IMM_CONDITION_DEFAULT_COEFFICIENT,
|
||||
LONG lNegativeCoefficient = IMM_CONDITION_DEFAULT_COEFFICIENT,
|
||||
DWORD dwPositiveSaturation = IMM_CONDITION_DEFAULT_SATURATION,
|
||||
DWORD dwNegativeSaturation = IMM_CONDITION_DEFAULT_SATURATION,
|
||||
LONG lDeadBand = IMM_CONDITION_DEFAULT_DEADBAND,
|
||||
DWORD dwfAxis = IMM_EFFECT_AXIS_BOTH,
|
||||
POINT pntCenter = IMM_CONDITION_DEFAULT_CENTER_POINT,
|
||||
LONG lDirectionX = IMM_EFFECT_DEFAULT_DIRECTION_X,
|
||||
LONG lDirectionY = IMM_EFFECT_DEFAULT_DIRECTION_Y,
|
||||
BOOL bUseDeviceCoordinates = FALSE,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
// Use this form for directional effects
|
||||
BOOL
|
||||
InitConditionPolar(
|
||||
CImmDevice* pDevice,
|
||||
LONG lPositiveCoefficient = IMM_CONDITION_DEFAULT_COEFFICIENT,
|
||||
LONG lNegativeCoefficient = IMM_CONDITION_DEFAULT_COEFFICIENT,
|
||||
DWORD dwPositiveSaturation = IMM_CONDITION_DEFAULT_SATURATION,
|
||||
DWORD dwNegativeSaturation = IMM_CONDITION_DEFAULT_SATURATION,
|
||||
LONG lDeadBand = IMM_CONDITION_DEFAULT_DEADBAND,
|
||||
POINT pntCenter = IMM_CONDITION_DEFAULT_CENTER_POINT,
|
||||
LONG lAngle = IMM_EFFECT_DEFAULT_ANGLE,
|
||||
BOOL bUseDeviceCoordinates = FALSE,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
|
||||
virtual BOOL
|
||||
Start(
|
||||
DWORD dwIterations = 1,
|
||||
DWORD dwFlags = 0,
|
||||
BOOL bAllowStartDelayEmulation = true
|
||||
);
|
||||
|
||||
|
||||
//
|
||||
// ------ PRIVATE INTERFACE ------
|
||||
//
|
||||
|
||||
//
|
||||
// HELPERS
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
void
|
||||
convert_line_point_to_offset(
|
||||
POINT pntOnLine
|
||||
);
|
||||
|
||||
BOOL
|
||||
set_parameters(
|
||||
DWORD dwfAxis,
|
||||
DWORD dwfCoordinates,
|
||||
LONG lDirection0,
|
||||
LONG lDirection1,
|
||||
LPCIMM_CONDITION pConditionX,
|
||||
LPCIMM_CONDITION pConditionY
|
||||
);
|
||||
|
||||
BOOL
|
||||
set_parameters(
|
||||
DWORD dwfAxis,
|
||||
DWORD dwfCoordinates,
|
||||
LONG lDirection0,
|
||||
LONG lDirection1,
|
||||
LONG lPositiveCoefficient,
|
||||
LONG lNegativeCoefficient,
|
||||
DWORD dwPositiveSaturation,
|
||||
DWORD dwNegativeSaturation,
|
||||
LONG lDeadBand,
|
||||
POINT pntCenter
|
||||
);
|
||||
|
||||
DWORD
|
||||
change_parameters(
|
||||
LONG lDirection0,
|
||||
LONG lDirection1,
|
||||
LONG lPositiveCoefficient,
|
||||
LONG lNegativeCoefficient,
|
||||
DWORD dwPositiveSaturation,
|
||||
DWORD dwNegativeSaturation,
|
||||
LONG lDeadBand,
|
||||
POINT pntCenter,
|
||||
int fAxis
|
||||
);
|
||||
|
||||
DWORD
|
||||
change_parameters(
|
||||
LONG lDirection0,
|
||||
LONG lDirection1,
|
||||
LPCIMM_CONDITION pConditionX,
|
||||
LPCIMM_CONDITION pConditionY
|
||||
);
|
||||
|
||||
int
|
||||
buffer_ifr_data(
|
||||
TCHAR* pData
|
||||
);
|
||||
|
||||
BOOL
|
||||
get_ffe_data(
|
||||
LPDIEFFECT pdiEffect
|
||||
);
|
||||
|
||||
//
|
||||
// INTERNAL DATA
|
||||
//
|
||||
|
||||
IMM_CONDITION m_aCondition[2];
|
||||
DWORD m_dwfAxis;
|
||||
BOOL m_bUseMousePosAtStart;
|
||||
|
||||
protected:
|
||||
BOOL m_bUseDeviceCoordinates;
|
||||
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// INLINES
|
||||
//
|
||||
|
||||
inline BOOL
|
||||
CImmCondition::GetIsCompatibleGUID(GUID &guid)
|
||||
{
|
||||
return IsEqualGUID(guid, GUID_Imm_Spring) ||
|
||||
IsEqualGUID(guid, GUID_Imm_DeviceSpring) ||
|
||||
IsEqualGUID(guid, GUID_Imm_Damper) ||
|
||||
IsEqualGUID(guid, GUID_Imm_Inertia) ||
|
||||
IsEqualGUID(guid, GUID_Imm_Friction) ||
|
||||
IsEqualGUID(guid, GUID_Imm_Texture) ||
|
||||
IsEqualGUID(guid, GUID_Imm_Grid);
|
||||
}
|
||||
|
||||
#endif // !defined(AFX_IMMCondition_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
|
||||
219
code/ff/IFC/ImmConstant.h
Normal file
219
code/ff/IFC/ImmConstant.h
Normal file
@@ -0,0 +1,219 @@
|
||||
/**********************************************************************
|
||||
Copyright (c) 1997 - 2000 Immersion Corporation
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this
|
||||
software and its documentation may be granted without fee;
|
||||
interested parties are encouraged to request permission from
|
||||
Immersion Corporation
|
||||
801 Fox Lane
|
||||
San Jose, CA 95131
|
||||
408-467-1900
|
||||
|
||||
IMMERSION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
|
||||
IN NO EVENT SHALL IMMERSION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
FILE: ImmConstant.h
|
||||
|
||||
PURPOSE: Base Constant Class for Immersion Foundation Classes
|
||||
|
||||
STARTED: 11/03/97
|
||||
|
||||
NOTES/REVISIONS:
|
||||
3/2/99 jrm (Jeff Mallett): Force-->Feel renaming
|
||||
3/2/99 jrm: Added GetIsCompatibleGUID
|
||||
3/15/99 jrm: __declspec(dllimport/dllexport) the whole class
|
||||
11/15/99 sdr (Steve Rank): Converted to IFC
|
||||
**********************************************************************/
|
||||
|
||||
|
||||
#if !defined(AFX_IMMCONSTANT_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
#define AFX_IMMCONSTANT_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
|
||||
#ifndef _IFCDLL_
|
||||
#define DLLIFC __declspec(dllimport)
|
||||
#else
|
||||
#define DLLIFC __declspec(dllexport)
|
||||
#endif
|
||||
|
||||
#include "ImmBaseTypes.h"
|
||||
#include "ImmEffect.h"
|
||||
|
||||
|
||||
|
||||
//================================================================
|
||||
// Constants
|
||||
//================================================================
|
||||
|
||||
const POINT IMM_CONSTANT_DEFAULT_DIRECTION = { 1, 0 };
|
||||
#define IMM_CONSTANT_DEFAULT_DURATION 1000 // Milliseconds
|
||||
#define IMM_CONSTANT_DEFAULT_MAGNITUDE 5000
|
||||
|
||||
|
||||
|
||||
//================================================================
|
||||
// CImmConstant
|
||||
//================================================================
|
||||
|
||||
//
|
||||
// ------ PUBLIC INTERFACE ------
|
||||
//
|
||||
|
||||
class DLLIFC CImmConstant : public CImmEffect
|
||||
{
|
||||
//
|
||||
// CONSTRUCTOR/DESTRUCTOR
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
// Constructor
|
||||
CImmConstant();
|
||||
|
||||
// Destructor
|
||||
virtual
|
||||
~CImmConstant();
|
||||
|
||||
|
||||
//
|
||||
// ATTRIBUTES
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
virtual BOOL
|
||||
GetIsCompatibleGUID(
|
||||
GUID &guid
|
||||
);
|
||||
|
||||
virtual DWORD GetEffectType()
|
||||
{ return IMM_EFFECTTYPE_CONSTANTFORCE; }
|
||||
|
||||
BOOL
|
||||
ChangeParameters(
|
||||
LONG lDirectionX,
|
||||
LONG lDirectionY,
|
||||
DWORD dwDuration = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lMagnitude = IMM_EFFECT_DONT_CHANGE,
|
||||
LPIMM_ENVELOPE pEnvelope = (LPIMM_ENVELOPE) IMM_EFFECT_DONT_CHANGE_PTR
|
||||
);
|
||||
|
||||
BOOL
|
||||
ChangeParametersPolar(
|
||||
LONG lAngle,
|
||||
DWORD dwDuration = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lMagnitude = IMM_EFFECT_DONT_CHANGE,
|
||||
LPIMM_ENVELOPE pEnvelope = (LPIMM_ENVELOPE) IMM_EFFECT_DONT_CHANGE_PTR
|
||||
);
|
||||
|
||||
BOOL ChangeMagnitude( LONG lMagnitude );
|
||||
BOOL GetMagnitude( LONG &lMagnitude );
|
||||
|
||||
//
|
||||
// OPERATIONS
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
virtual BOOL
|
||||
Initialize(
|
||||
CImmDevice* pDevice,
|
||||
const IMM_EFFECT &effect,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
virtual
|
||||
BOOL
|
||||
Initialize(
|
||||
CImmDevice* pDevice,
|
||||
LONG lDirectionX = IMM_EFFECT_DEFAULT_DIRECTION_X,
|
||||
LONG lDirectionY = IMM_EFFECT_DEFAULT_DIRECTION_Y,
|
||||
DWORD dwDuration = IMM_CONSTANT_DEFAULT_DURATION,
|
||||
LONG lMagnitude = IMM_CONSTANT_DEFAULT_MAGNITUDE,
|
||||
LPIMM_ENVELOPE pEnvelope = NULL,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
virtual
|
||||
BOOL
|
||||
InitializePolar(
|
||||
CImmDevice* pDevice,
|
||||
LONG lAngle = IMM_EFFECT_DEFAULT_ANGLE,
|
||||
DWORD dwDuration = IMM_CONSTANT_DEFAULT_DURATION,
|
||||
LONG lMagnitude = IMM_CONSTANT_DEFAULT_MAGNITUDE,
|
||||
LPIMM_ENVELOPE pEnvelope = NULL,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
|
||||
//
|
||||
// ------ PRIVATE INTERFACE ------
|
||||
//
|
||||
|
||||
//
|
||||
// HELPERS
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
BOOL
|
||||
set_parameters(
|
||||
DWORD dwfCoordinates,
|
||||
LONG lDirection0,
|
||||
LONG lDirection1,
|
||||
DWORD dwDuration,
|
||||
LONG lMagnitude,
|
||||
LPIMM_ENVELOPE pEnvelope
|
||||
);
|
||||
|
||||
DWORD
|
||||
change_parameters(
|
||||
LONG lDirection0,
|
||||
LONG lDirection1,
|
||||
DWORD dwDuration,
|
||||
LONG lMagnitude,
|
||||
LPIMM_ENVELOPE pEnvelope
|
||||
);
|
||||
|
||||
int
|
||||
buffer_ifr_data(
|
||||
TCHAR* pData
|
||||
);
|
||||
|
||||
BOOL
|
||||
get_ffe_data(
|
||||
LPDIEFFECT pdiEffect
|
||||
);
|
||||
|
||||
//
|
||||
// INTERNAL DATA
|
||||
//
|
||||
|
||||
IMM_CONSTANTFORCE m_ConstantForce;
|
||||
|
||||
protected:
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
//
|
||||
// INLINES
|
||||
//
|
||||
|
||||
inline BOOL
|
||||
CImmConstant::GetIsCompatibleGUID(GUID &guid)
|
||||
{
|
||||
return IsEqualGUID(guid, GUID_Imm_ConstantForce);
|
||||
}
|
||||
|
||||
|
||||
#endif // !defined(AFX_IMMCONSTANT_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
148
code/ff/IFC/ImmDXDevice.h
Normal file
148
code/ff/IFC/ImmDXDevice.h
Normal file
@@ -0,0 +1,148 @@
|
||||
/**********************************************************************
|
||||
Copyright (c) 1997 - 2000 Immersion Corporation
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this
|
||||
software and its documentation may be granted without fee;
|
||||
interested parties are encouraged to request permission from
|
||||
Immersion Corporation
|
||||
801 Fox Lane
|
||||
San Jose, CA 95131
|
||||
408-467-1900
|
||||
|
||||
IMMERSION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
|
||||
IN NO EVENT SHALL IMMERSION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
FILE: ImmDXDevice.h
|
||||
|
||||
PURPOSE: Abstraction of DirectX Force Feedback device
|
||||
|
||||
STARTED: 10/10/97
|
||||
|
||||
NOTES/REVISIONS:
|
||||
3/2/99 jrm (Jeff Mallett): Force-->Feel renaming
|
||||
3/15/99 jrm: __declspec(dllimport/dllexport) the whole class
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
#ifndef ImmDXDevice_h
|
||||
#define ImmDXDevice_h
|
||||
|
||||
#ifndef _IFCDLL_
|
||||
#define DLLIFC __declspec(dllimport)
|
||||
#else
|
||||
#define DLLIFC __declspec(dllexport)
|
||||
#endif
|
||||
|
||||
#include "ImmDevice.h"
|
||||
|
||||
|
||||
//================================================================
|
||||
// CImmDXDevice
|
||||
//================================================================
|
||||
|
||||
//
|
||||
// ------ PUBLIC INTERFACE ------
|
||||
//
|
||||
|
||||
class DLLIFC CImmDXDevice : public CImmDevice
|
||||
{
|
||||
|
||||
//
|
||||
// CONSTRUCTOR/DESCTRUCTOR
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
// Constructor
|
||||
CImmDXDevice();
|
||||
|
||||
// Destructor
|
||||
virtual
|
||||
~CImmDXDevice();
|
||||
|
||||
|
||||
//
|
||||
// ATTRIBUTES
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
virtual LPIIMM_API
|
||||
GetAPI()
|
||||
{ return (LPIIMM_API) m_piApi; } // actually LPDIRECTINPUT
|
||||
|
||||
virtual LPIIMM_DEVICE
|
||||
GetDevice()
|
||||
{ return (LPIIMM_DEVICE) m_piDevice; } // actually LPDIRECTINPUTDEVICE2
|
||||
|
||||
virtual DWORD GetProductType();
|
||||
|
||||
virtual BOOL GetDriverVersion(
|
||||
DWORD &dwFFDriverVersion,
|
||||
DWORD &dwFirmwareRevision,
|
||||
DWORD &dwHardwareRevision);
|
||||
|
||||
virtual int GetProductName(LPTSTR lpszProductName, int nMaxCount);
|
||||
virtual int GetProductGUIDString(LPTSTR lpszGUID, int nMaxCount);
|
||||
virtual GUID GetProductGUID();
|
||||
|
||||
//
|
||||
// OPERATIONS
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
BOOL
|
||||
Initialize(
|
||||
HANDLE hinstApp,
|
||||
HANDLE hwndApp,
|
||||
LPDIRECTINPUT pDI = NULL,
|
||||
LPDIRECTINPUTDEVICE2 piDevice = NULL,
|
||||
BOOL bEnumerate = TRUE
|
||||
);
|
||||
|
||||
virtual BOOL
|
||||
GetCurrentPosition( long &lXPos, long &lYPos );
|
||||
|
||||
//
|
||||
// ------ PRIVATE INTERFACE ------
|
||||
//
|
||||
|
||||
//
|
||||
// HELPERS
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
virtual void
|
||||
reset();
|
||||
|
||||
friend class CImmDevices;
|
||||
static BOOL CALLBACK
|
||||
devices_enum_proc(
|
||||
LPDIDEVICEINSTANCE pImmDevInst,
|
||||
LPVOID pv
|
||||
);
|
||||
|
||||
|
||||
//
|
||||
// INTERNAL DATA
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
// TODO: these are unused... delete them in future rev
|
||||
BOOL m_bpDIPreExist;
|
||||
BOOL m_bpDIDevicePreExist;
|
||||
// end of useless variables
|
||||
|
||||
LPDIRECTINPUT m_piApi;
|
||||
LPDIRECTINPUTDEVICE2 m_piDevice;
|
||||
};
|
||||
|
||||
#endif // ForceDXDevice_h
|
||||
185
code/ff/IFC/ImmDamper.h
Normal file
185
code/ff/IFC/ImmDamper.h
Normal file
@@ -0,0 +1,185 @@
|
||||
/**********************************************************************
|
||||
Copyright (c) 1997 - 2000 Immersion Corporation
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this
|
||||
software and its documentation may be granted without fee;
|
||||
interested parties are encouraged to request permission from
|
||||
Immersion Corporation
|
||||
801 Fox Lane
|
||||
San Jose, CA 95131
|
||||
408-467-1900
|
||||
|
||||
IMMERSION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
|
||||
IN NO EVENT SHALL IMMERSION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
FILE: ImmDamper.h
|
||||
|
||||
PURPOSE: Immersion Foundation Classes Damper Effect
|
||||
|
||||
STARTED: Oct.14.97
|
||||
|
||||
NOTES/REVISIONS:
|
||||
Mar.02.99 jrm (Jeff Mallett): Force-->Feel renaming
|
||||
Mar.02.99 jrm: Added GetIsCompatibleGUID
|
||||
Mar.15.99 jrm: __declspec(dllimport/dllexport) the whole class
|
||||
Nov.15.99 efw (Evan Wies): Converted to IFC
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
||||
#if !defined(AFX_IMMDamper_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
#define AFX_IMMDamper_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
|
||||
#ifndef _IFCDLL_
|
||||
#define DLLIFC __declspec(dllimport)
|
||||
#else
|
||||
#define DLLIFC __declspec(dllexport)
|
||||
#endif
|
||||
|
||||
#include <windows.h>
|
||||
#include "ImmCondition.h"
|
||||
|
||||
|
||||
//================================================================
|
||||
// Constants
|
||||
//================================================================
|
||||
|
||||
#define IMM_DAMPER_DEFAULT_VISCOSITY 2500
|
||||
#define IMM_DAMPER_DEFAULT_SATURATION 10000
|
||||
#define IMM_DAMPER_DEFAULT_MIN_VELOCITY 0
|
||||
|
||||
|
||||
|
||||
//================================================================
|
||||
// CImmDamper
|
||||
//================================================================
|
||||
|
||||
//
|
||||
// ------ PUBLIC INTERFACE ------
|
||||
//
|
||||
|
||||
class DLLIFC CImmDamper : public CImmCondition
|
||||
{
|
||||
//
|
||||
// CONSTRUCTOR/DESTRUCTOR
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
// Constructor
|
||||
CImmDamper();
|
||||
|
||||
// Destructor
|
||||
virtual ~CImmDamper();
|
||||
|
||||
|
||||
//
|
||||
// ATTRIBUTES
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
virtual BOOL
|
||||
GetIsCompatibleGUID(
|
||||
GUID &guid
|
||||
);
|
||||
|
||||
BOOL
|
||||
ChangeParameters(
|
||||
LONG lViscosity,
|
||||
DWORD dwSaturation = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwMinVelocity = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lDirectionX = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lDirectionY = IMM_EFFECT_DONT_CHANGE
|
||||
);
|
||||
|
||||
BOOL
|
||||
ChangeParametersPolar(
|
||||
LONG lViscosity,
|
||||
DWORD dwSaturation,
|
||||
DWORD dwMinVelocity,
|
||||
LONG lAngle
|
||||
);
|
||||
|
||||
BOOL ChangeViscosity( LONG lViscosity );
|
||||
|
||||
BOOL ChangeMinVelocityX( DWORD dwMinVelocity );
|
||||
BOOL ChangeMinVelocityY( DWORD dwMinVelocity );
|
||||
//For setting both axes to the same value
|
||||
BOOL ChangeMinVelocity( DWORD dwMinVelocity );
|
||||
|
||||
BOOL GetViscosity( LONG &lViscosity );
|
||||
|
||||
BOOL GetMinVelocityX( DWORD &dwMinVelocity );
|
||||
BOOL GetMinVelocityY( DWORD &dwMinVelocity );
|
||||
|
||||
//
|
||||
// OPERATIONS
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
virtual BOOL
|
||||
Initialize(
|
||||
CImmDevice* pDevice,
|
||||
DWORD dwViscosity = IMM_DAMPER_DEFAULT_VISCOSITY,
|
||||
DWORD dwSaturation = IMM_DAMPER_DEFAULT_SATURATION,
|
||||
DWORD dwMinVelocity = IMM_DAMPER_DEFAULT_MIN_VELOCITY,
|
||||
DWORD dwfAxis = IMM_EFFECT_AXIS_BOTH,
|
||||
LONG lDirectionX = IMM_EFFECT_DEFAULT_DIRECTION_X,
|
||||
LONG lDirectionY = IMM_EFFECT_DEFAULT_DIRECTION_Y,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
virtual BOOL
|
||||
InitializePolar(
|
||||
CImmDevice* pDevice,
|
||||
DWORD dwViscosity,
|
||||
DWORD dwSaturation,
|
||||
DWORD dwMinVelocity,
|
||||
LONG lAngle,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
|
||||
//
|
||||
// ------ PRIVATE INTERFACE ------
|
||||
//
|
||||
|
||||
//
|
||||
// HELPERS
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
//
|
||||
// INTERNAL DATA
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
//
|
||||
// INLINES
|
||||
//
|
||||
|
||||
inline BOOL
|
||||
CImmDamper::GetIsCompatibleGUID(GUID &guid)
|
||||
{
|
||||
return IsEqualGUID(guid, GUID_Imm_Damper);
|
||||
}
|
||||
|
||||
|
||||
#endif // !defined(AFX_IMMDamper_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
281
code/ff/IFC/ImmDevice.h
Normal file
281
code/ff/IFC/ImmDevice.h
Normal file
@@ -0,0 +1,281 @@
|
||||
/**********************************************************************
|
||||
Copyright (c) 1997 - 2000 Immersion Corporation
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this
|
||||
software and its documentation may be granted without fee;
|
||||
interested parties are encouraged to request permission from
|
||||
Immersion Corporation
|
||||
801 Fox Lane
|
||||
San Jose, CA 95131
|
||||
408-467-1900
|
||||
|
||||
IMMERSION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
|
||||
IN NO EVENT SHALL IMMERSION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
FILE: ImmDevice.h
|
||||
|
||||
PURPOSE: Abstract Base Device Class for Force Foundation Classes
|
||||
|
||||
STARTED: 10/10/97
|
||||
|
||||
NOTES/REVISIONS:
|
||||
3/2/99 jrm (Jeff Mallett): Force-->Feel renaming
|
||||
3/15/99 jrm: __declspec(dllimport/dllexport) the whole class
|
||||
3/16/99 jrm: Made abstract. Moved functionality to CImmMouse/CImmDXDevice
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
#if !defined(AFX_FORCEDEVICE_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
#define AFX_FORCEDEVICE_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
|
||||
#ifndef _IFCDLL_
|
||||
#define DLLIFC __declspec(dllimport)
|
||||
#else
|
||||
#define DLLIFC __declspec(dllexport)
|
||||
#endif
|
||||
|
||||
#define DIRECTINPUT_VERSION 0x0800 //[ 0x0300 | 0x0500 | 0x0700 | 0x0800 ]
|
||||
#include <dinput.h>
|
||||
#include "ImmBaseTypes.h"
|
||||
|
||||
#ifdef IFC_EFFECT_CACHING
|
||||
#include "ImmEffectSuite.h"
|
||||
#endif
|
||||
|
||||
|
||||
//================================================================
|
||||
// Device and Technology types
|
||||
//================================================================
|
||||
|
||||
//Company IDs
|
||||
const DWORD IMM_OTHERPARTNER =0x01000000;
|
||||
const DWORD IMM_IMMERSION =0x02000000;
|
||||
const DWORD IMM_ACTLABS =0x03000000;
|
||||
const DWORD IMM_ANKO =0x04000000;
|
||||
const DWORD IMM_AVB =0x05000000;
|
||||
const DWORD IMM_BOEDER =0x06000000;
|
||||
const DWORD IMM_CHPRODUCTS =0x07000000;
|
||||
const DWORD IMM_CHIC =0x08000000;
|
||||
const DWORD IMM_GUILLEMOT =0x09000000;
|
||||
const DWORD IMM_GENIUS =0x0a000000;
|
||||
const DWORD IMM_HAPP =0x0b000000;
|
||||
const DWORD IMM_INTERACT =0x0c000000;
|
||||
const DWORD IMM_INTERACTIVEIO =0x0d000000;
|
||||
const DWORD IMM_KYE =0x0e000000;
|
||||
const DWORD IMM_LMP =0x0f000000;
|
||||
const DWORD IMM_LOGITECH =0x10000000;
|
||||
const DWORD IMM_MADCATZ =0x11000000;
|
||||
const DWORD IMM_MICROSOFT =0x12000000;
|
||||
const DWORD IMM_PADIX =0x13000000;
|
||||
const DWORD IMM_PRIMAX =0x14000000;
|
||||
const DWORD IMM_QUANTUM3D =0x15000000;
|
||||
const DWORD IMM_ROCKFIRE =0x16000000;
|
||||
const DWORD IMM_SCT =0x17000000;
|
||||
const DWORD IMM_SMELECTRONIC =0x18000000;
|
||||
const DWORD IMM_SYSGRATION =0x19000000;
|
||||
const DWORD IMM_THRUSTMASTER =0x1a000000;
|
||||
const DWORD IMM_TRUST =0x1b000000;
|
||||
const DWORD IMM_VIKINGS =0x1c000000;
|
||||
|
||||
// Device IDs
|
||||
const DWORD IMM_OTHERDEVICE =0x00000001;
|
||||
const DWORD IMM_JOYSTICK =0x00000002;
|
||||
const DWORD IMM_WHEEL =0x00000003;
|
||||
const DWORD IMM_GAMEPAD =0x00000004;
|
||||
const DWORD IMM_ABSMOUSE =0x00000005;
|
||||
const DWORD IMM_RELMOUSE =0x00000006;
|
||||
|
||||
//Technology IDs
|
||||
//Note that these are bit masks
|
||||
const DWORD IMM_OTHERTECH =0x00000001;
|
||||
const DWORD IMM_FULLFF =0x00000002;
|
||||
const DWORD IMM_IHDFF =0x00000004;
|
||||
const DWORD IMM_VIBROFF =0x00000008;
|
||||
|
||||
//Product Types (not to be confused with product GUIDs)
|
||||
const DWORD IMM_JOYSTICK_FULLFF = MAKELONG(IMM_FULLFF, IMM_JOYSTICK);
|
||||
const DWORD IMM_WHEEL_FULLFF = MAKELONG(IMM_FULLFF, IMM_WHEEL);
|
||||
const DWORD IMM_GAMEPAD_FULLFF = MAKELONG(IMM_FULLFF, IMM_GAMEPAD);
|
||||
const DWORD IMM_ABSMOUSE_FULLFF = MAKELONG(IMM_FULLFF, IMM_ABSMOUSE);
|
||||
|
||||
const DWORD IMM_JOYSTICK_IHDFF = MAKELONG(IMM_IHDFF, IMM_JOYSTICK);
|
||||
const DWORD IMM_WHEEL_IHDFF = MAKELONG(IMM_IHDFF, IMM_WHEEL);
|
||||
const DWORD IMM_GAMEPAD_IHDFF = MAKELONG(IMM_IHDFF, IMM_GAMEPAD);
|
||||
const DWORD IMM_RELMOUSE_IHDFF = MAKELONG(IMM_IHDFF, IMM_RELMOUSE);
|
||||
|
||||
const DWORD IMM_JOYSTICK_VIBROFF= MAKELONG(IMM_VIBROFF, IMM_JOYSTICK);
|
||||
const DWORD IMM_WHEEL_VIBROFF = MAKELONG(IMM_VIBROFF, IMM_WHEEL);
|
||||
const DWORD IMM_GAMEPAD_VIBROFF = MAKELONG(IMM_VIBROFF, IMM_GAMEPAD);
|
||||
const DWORD IMM_RELMOUSE_VIBROFF= MAKELONG(IMM_VIBROFF, IMM_RELMOUSE);
|
||||
|
||||
//================================================================
|
||||
// CImmDevice
|
||||
//================================================================
|
||||
|
||||
//
|
||||
// ------ PUBLIC INTERFACE ------
|
||||
//
|
||||
|
||||
class DLLIFC CImmDevice
|
||||
{
|
||||
//
|
||||
// CONSTRUCTOR/DESCTRUCTOR
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
// Constructor
|
||||
CImmDevice();
|
||||
|
||||
// Destructor
|
||||
virtual
|
||||
~CImmDevice();
|
||||
|
||||
|
||||
//
|
||||
// ATTRIBUTES
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
virtual LPIIMM_API
|
||||
GetAPI()
|
||||
= 0; // pure virtual function
|
||||
|
||||
virtual LPIIMM_DEVICE // Will actually return LPDIRECTINPUTDEVICE2 for DX supported device
|
||||
GetDevice()
|
||||
= 0; // pure virtual function
|
||||
|
||||
DWORD
|
||||
GetDeviceType() const
|
||||
{ return m_dwDeviceType; }
|
||||
|
||||
virtual DWORD GetProductType() = 0;
|
||||
virtual BOOL GetDriverVersion(
|
||||
DWORD &dwFFDriverVersion,
|
||||
DWORD &dwFirmwareRevision,
|
||||
DWORD &dwHardwareRevision)
|
||||
= 0;
|
||||
|
||||
virtual int GetProductName(LPTSTR lpszProductName, int nMaxCount) = 0;
|
||||
virtual int GetProductGUIDString(LPTSTR lpszGUID, int nMaxCount) = 0;
|
||||
virtual GUID GetProductGUID() = 0;
|
||||
|
||||
static BOOL GetIFCVersion(DWORD &dwMajor, DWORD &dwMinor, DWORD &dwBuild, DWORD &dwBuildMinor);
|
||||
static BOOL GetImmAPIVersion(DWORD &dwMajor, DWORD &dwMinor, DWORD &dwBuild, DWORD &dwBuildMinor);
|
||||
static BOOL GetDXVersion(DWORD &dwMajor, DWORD &dwMinor, DWORD &dwBuild, DWORD &dwBuildMinor);
|
||||
|
||||
//
|
||||
// OPERATIONS
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
static CImmDevice *
|
||||
CreateDevice(HINSTANCE hinstApp, HWND hwndApp);
|
||||
|
||||
virtual BOOL
|
||||
GetCurrentPosition( long &lXPos, long &lYPos )
|
||||
= 0; // pure virtual function
|
||||
|
||||
virtual BOOL
|
||||
ChangeScreenResolution(
|
||||
BOOL bAutoSet,
|
||||
DWORD dwXScreenSize = 0,
|
||||
DWORD dwYScreenSize = 0
|
||||
);
|
||||
|
||||
// The default state is using standard Win32 Mouse messages (e.g., WM_MOUSEMOVE)
|
||||
// and functions (e.g, GetCursorPos). Call only to switch to relative mode
|
||||
// if not using standard Win32 Mouse services (e.g., DirectInput) for mouse
|
||||
// input.
|
||||
BOOL
|
||||
UsesWin32MouseServices(
|
||||
BOOL bWin32MouseServ
|
||||
);
|
||||
|
||||
// Another syntax for SwitchToAbsoluteMode.
|
||||
// The default is Absolute mode. Call only to switch to Relative mode or
|
||||
// to switch back to Absolute mode.
|
||||
virtual BOOL
|
||||
SwitchToAbsoluteMode(
|
||||
BOOL bAbsMode
|
||||
);
|
||||
|
||||
//
|
||||
// ------ PRIVATE INTERFACE ------
|
||||
//
|
||||
|
||||
//
|
||||
// CACHING
|
||||
//
|
||||
|
||||
#ifdef IFC_EFFECT_CACHING
|
||||
public:
|
||||
|
||||
void Cache_AddEffect(CImmEffect *pImmEffect);
|
||||
void Cache_RemoveEffect(const CImmEffect *pImmEffect);
|
||||
void Cache_SwapOutEffect();
|
||||
|
||||
protected:
|
||||
|
||||
void Cache_LoadEffectSuite(CImmEffectSuite *pSuite, BOOL bCreateOnDevice);
|
||||
void Cache_UnloadEffectSuite(CImmEffectSuite *pSuite, BOOL bUnloadFromDevice);
|
||||
|
||||
CEffectList m_Cache; // List of all effects created on device
|
||||
#endif
|
||||
|
||||
//
|
||||
// HELPERS
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
// Performs device preparation by setting the device's parameters
|
||||
virtual BOOL
|
||||
prepare_device();
|
||||
|
||||
virtual void
|
||||
reset()
|
||||
= 0; // pure virtual function
|
||||
|
||||
static BOOL CALLBACK
|
||||
enum_didevices_proc(
|
||||
LPDIDEVICEINSTANCE pImmDevInst,
|
||||
LPVOID pv
|
||||
);
|
||||
|
||||
static BOOL CALLBACK
|
||||
enum_devices_proc(
|
||||
LPIMM_DEVICEINSTANCE pImmDevInst,
|
||||
LPVOID pv
|
||||
);
|
||||
|
||||
void
|
||||
detach_effects();
|
||||
|
||||
//
|
||||
// INTERNAL DATA
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
BOOL m_bInitialized;
|
||||
DWORD m_dwDeviceType;
|
||||
GUID m_guidDevice;
|
||||
BOOL m_bGuidValid;
|
||||
DWORD m_dwProductType;
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif // !defined(AFX_FORCEDEVICE_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
156
code/ff/IFC/ImmDevices.h
Normal file
156
code/ff/IFC/ImmDevices.h
Normal file
@@ -0,0 +1,156 @@
|
||||
/**********************************************************************
|
||||
Copyright (c) 2000 Immersion Corporation
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this
|
||||
software and its documentation may be granted without fee;
|
||||
interested parties are encouraged to request permission from
|
||||
Immersion Corporation
|
||||
801 Fox Lane
|
||||
San Jose, CA 95131
|
||||
408-467-1900
|
||||
|
||||
IMMERSION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
|
||||
IN NO EVENT SHALL IMMERSION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
FILE: ImmDevices.h
|
||||
|
||||
PURPOSE: Abstract Base Device Class for Immersion Foundation Classes
|
||||
|
||||
STARTED: 3/29/00
|
||||
|
||||
NOTES/REVISIONS:
|
||||
3/29/00 jrm (Jeff Mallett): Started
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
#if !defined(AFX_FORCEDEVICES_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
#define AFX_FORCEDEVICES_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
|
||||
#ifndef _IFCDLL_
|
||||
#define DLLIFC __declspec(dllimport)
|
||||
#else
|
||||
#define DLLIFC __declspec(dllexport)
|
||||
#endif
|
||||
|
||||
#include "ImmBaseTypes.h"
|
||||
|
||||
|
||||
|
||||
typedef enum {
|
||||
IMM_ENUMERATE_IMM_DEVICES = 0x00000001,
|
||||
IMM_ENUMERATE_DX_DEVICES = 0x00000002,
|
||||
IMM_ENUMERATE_ALL = 0xFFFFFFFF
|
||||
} IMM_ENUMERATE;
|
||||
|
||||
typedef enum {
|
||||
IMM_NO_PREFERENCE = 0x00000000,
|
||||
IMM_PREFER_IMM_DEVICES = 0x00000001,
|
||||
IMM_PREFER_DX_DEVICES = 0x00000002
|
||||
} IMM_ENUMERATE_PREFERENCE;
|
||||
|
||||
class CImmDevices;
|
||||
class CInitializeEnum {
|
||||
public:
|
||||
HANDLE m_hinstApp;
|
||||
HANDLE m_hwndApp;
|
||||
DWORD m_dwCooperativeFlag;
|
||||
CImmDevices *m_pDevices;
|
||||
long m_lMaximumDevices;
|
||||
};
|
||||
|
||||
//================================================================
|
||||
// CImmDevices
|
||||
//================================================================
|
||||
|
||||
typedef class CImmDevice * IMM_DEVICE_PTR;
|
||||
|
||||
|
||||
//
|
||||
// ------ PUBLIC INTERFACE ------
|
||||
//
|
||||
|
||||
class DLLIFC CImmDevices {
|
||||
|
||||
//
|
||||
// CONSTRUCTOR/DESCTRUCTOR
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
CImmDevices();
|
||||
~CImmDevices();
|
||||
|
||||
|
||||
//
|
||||
// ATTRIBUTES
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
long
|
||||
GetNumDevices()
|
||||
{ return m_lNumDevices; }
|
||||
|
||||
IMM_DEVICE_PTR
|
||||
GetDevice(long lIndex);
|
||||
|
||||
|
||||
//
|
||||
// OPERATIONS
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
void
|
||||
AddDevice(IMM_DEVICE_PTR pDevice);
|
||||
|
||||
long
|
||||
CreateDevices(
|
||||
HINSTANCE hinstApp,
|
||||
HWND hwndApp,
|
||||
long lMaximumDevices = -1, // means "all"
|
||||
IMM_ENUMERATE type = IMM_ENUMERATE_ALL,
|
||||
IMM_ENUMERATE_PREFERENCE preference = IMM_NO_PREFERENCE
|
||||
);
|
||||
|
||||
|
||||
//
|
||||
// ------ PRIVATE INTERFACE ------
|
||||
//
|
||||
|
||||
//
|
||||
// HELPERS
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
BOOL
|
||||
enumerate_dx_devices(CInitializeEnum *pIE);
|
||||
|
||||
BOOL
|
||||
enumerate_imm_devices(CInitializeEnum *pIE);
|
||||
|
||||
void
|
||||
clean_up();
|
||||
|
||||
//
|
||||
// INTERNAL DATA
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
long m_lNumDevices;
|
||||
IMM_DEVICE_PTR *m_DeviceArray;
|
||||
};
|
||||
|
||||
#endif // !defined(AFX_FORCEDEVICE_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
|
||||
440
code/ff/IFC/ImmEffect.h
Normal file
440
code/ff/IFC/ImmEffect.h
Normal file
@@ -0,0 +1,440 @@
|
||||
/**********************************************************************
|
||||
Copyright (c) 1997 - 2000 Immersion Corporation
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this
|
||||
software and its documentation may be granted without fee;
|
||||
interested parties are encouraged to request permission from
|
||||
Immersion Corporation
|
||||
801 Fox Lane
|
||||
San Jose, CA 95131
|
||||
408-467-1900
|
||||
|
||||
IMMERSION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
|
||||
IN NO EVENT SHALL IMMERSION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
FILE: ImmEffect.h
|
||||
|
||||
PURPOSE: Immersion Foundation Classes Base Effect
|
||||
|
||||
STARTED: Oct.10.97
|
||||
|
||||
NOTES/REVISIONS:
|
||||
Mar.02.99 jrm (Jeff Mallett): Force-->Feel renaming
|
||||
Mar.02.99 jrm: Added GetIsCompatibleGUID and feel_to_DI_GUID
|
||||
Mar.15.99 jrm: __declspec(dllimport/dllexport) the whole class
|
||||
Nov.15.99 efw (Evan Wies): Converted to IFC
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
||||
#if !defined(AFX_IMMEffect_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
#define AFX_IMMEffect_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
|
||||
#ifndef _IFCDLL_
|
||||
#define DLLIFC __declspec(dllimport)
|
||||
#else
|
||||
#define DLLIFC __declspec(dllexport)
|
||||
#endif
|
||||
|
||||
#include "ImmBaseTypes.h"
|
||||
#include "ImmDevice.h"
|
||||
class CImmProject;
|
||||
|
||||
//================================================================
|
||||
// Constants
|
||||
//================================================================
|
||||
|
||||
#define IMM_EFFECT_AXIS_X 1
|
||||
#define IMM_EFFECT_AXIS_Y 2
|
||||
#define IMM_EFFECT_AXIS_BOTH 3
|
||||
#define IMM_EFFECT_AXIS_DIRECTIONAL 4
|
||||
#define IMM_EFFECT_DONT_CHANGE MINLONG
|
||||
#define IMM_EFFECT_DONT_CHANGE_PTR MAXDWORD
|
||||
const POINT IMM_EFFECT_DONT_CHANGE_POINT = { 0xFFFFFFFF, 0xFFFFFFFF };
|
||||
const POINT IMM_EFFECT_MOUSE_POS_AT_START = { MAXLONG, MAXLONG };
|
||||
|
||||
#define IMM_EFFECT_DEFAULT_ENVELOPE NULL
|
||||
#define IMM_EFFECT_DEFAULT_DIRECTION_X 1
|
||||
#define IMM_EFFECT_DEFAULT_DIRECTION_Y 1
|
||||
#define IMM_EFFECT_DEFAULT_ANGLE 0
|
||||
|
||||
// GENERIC_EFFECT_PTR
|
||||
// This is really a pointer to a child of CImmEffect.
|
||||
typedef class CImmEffect * GENERIC_EFFECT_PTR;
|
||||
|
||||
|
||||
//================================================================
|
||||
// CImmEffect
|
||||
//================================================================
|
||||
|
||||
//
|
||||
// ------ PUBLIC INTERFACE ------
|
||||
//
|
||||
|
||||
class DLLIFC CImmEffect
|
||||
{
|
||||
//
|
||||
// CONSTRUCTOR/DESTRUCTOR
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
// Constructor
|
||||
CImmEffect(
|
||||
const GUID& rguidEffect
|
||||
);
|
||||
|
||||
// Destructor
|
||||
virtual
|
||||
~CImmEffect();
|
||||
|
||||
//
|
||||
// ATTRIBUTES
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
LPIIMM_EFFECT
|
||||
GetEffect()
|
||||
{ return m_piImmEffect; }
|
||||
|
||||
CImmDevice*
|
||||
GetDevice()
|
||||
{ return m_pImmDevice; }
|
||||
|
||||
BOOL
|
||||
GetStatus(
|
||||
DWORD* pdwStatus
|
||||
);
|
||||
|
||||
void
|
||||
GetParameters(IMM_EFFECT &Effect);
|
||||
BOOL GetEnvelope( LPIMM_ENVELOPE pEnvelope );
|
||||
|
||||
BOOL GetDuration( DWORD &dwDuration );
|
||||
BOOL GetGain( DWORD &dwGain );
|
||||
BOOL GetStartDelay( DWORD &dwStartDelay );
|
||||
BOOL GetTriggerButton( DWORD &dwTriggerButton );
|
||||
BOOL GetTriggerRepeatInterval( DWORD &dwTriggerRepeatInterval );
|
||||
BOOL GetDirection( LONG &lDirectionX, LONG &lDirectionY );
|
||||
BOOL GetDirection( LONG &lAngle );
|
||||
|
||||
BOOL GetIterations( DWORD &dwIterations );
|
||||
|
||||
GUID
|
||||
GetGUID()
|
||||
{ return m_guidEffect; }
|
||||
|
||||
virtual BOOL
|
||||
GetIsCompatibleGUID(
|
||||
GUID & /* guid */
|
||||
)
|
||||
{ return true; }
|
||||
|
||||
virtual DWORD GetEffectType()
|
||||
{ return 0; }
|
||||
|
||||
LPCSTR
|
||||
GetName()
|
||||
{ return m_lpszName; }
|
||||
|
||||
// Allocates an object of the correct IFC class from the given GUID
|
||||
static GENERIC_EFFECT_PTR
|
||||
NewObjectFromGUID(
|
||||
GUID &guid
|
||||
);
|
||||
|
||||
BOOL
|
||||
ChangeBaseParams(
|
||||
LONG lDirectionX,
|
||||
LONG lDirectionY,
|
||||
DWORD dwDuration = IMM_EFFECT_DONT_CHANGE,
|
||||
LPIMM_ENVELOPE pEnvelope = (LPIMM_ENVELOPE) IMM_EFFECT_DONT_CHANGE_PTR,
|
||||
DWORD dwSamplePeriod = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwGain = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwTriggerButton = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwTriggerRepeatInterval = IMM_EFFECT_DONT_CHANGE
|
||||
#ifdef IFC_START_DELAY
|
||||
,DWORD dwStartDelay = IMM_EFFECT_DONT_CHANGE // milliseconds
|
||||
#endif
|
||||
);
|
||||
|
||||
BOOL
|
||||
ChangeBaseParamsPolar(
|
||||
LONG lAngle,
|
||||
DWORD dwDuration = IMM_EFFECT_DONT_CHANGE, // milliseconds
|
||||
LPIMM_ENVELOPE pEnvelope = (LPIMM_ENVELOPE) IMM_EFFECT_DONT_CHANGE_PTR,
|
||||
DWORD dwSamplePeriod = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwGain = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwTriggerButton = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwTriggerRepeatInterval = IMM_EFFECT_DONT_CHANGE
|
||||
#ifdef IFC_START_DELAY
|
||||
,DWORD dwStartDelay = IMM_EFFECT_DONT_CHANGE // milliseconds
|
||||
#endif
|
||||
);
|
||||
|
||||
BOOL
|
||||
ChangeDirection(
|
||||
LONG lDirectionX,
|
||||
LONG lDirectionY
|
||||
);
|
||||
|
||||
BOOL
|
||||
ChangeDirection(
|
||||
LONG lAngle
|
||||
);
|
||||
|
||||
BOOL
|
||||
ChangeDuration(
|
||||
DWORD dwDuration
|
||||
);
|
||||
|
||||
BOOL
|
||||
ChangeGain(
|
||||
DWORD dwGain
|
||||
);
|
||||
|
||||
BOOL
|
||||
ChangeStartDelay(
|
||||
DWORD dwStartDelay
|
||||
);
|
||||
|
||||
BOOL
|
||||
ChangeTriggerButton(
|
||||
DWORD dwTriggerButton
|
||||
);
|
||||
|
||||
BOOL
|
||||
ChangeTriggerRepeatInterval(
|
||||
DWORD dwTriggerRepeatInterval
|
||||
);
|
||||
|
||||
BOOL
|
||||
ChangeIterations(
|
||||
DWORD dwIterations
|
||||
);
|
||||
|
||||
BOOL
|
||||
ChangeEnvelope(
|
||||
DWORD dwAttackLevel,
|
||||
DWORD dwAttackTime, // microseconds
|
||||
DWORD dwFadeLevel,
|
||||
DWORD dwFadeTime // microseconds
|
||||
);
|
||||
|
||||
BOOL
|
||||
ChangeEnvelope(
|
||||
LPIMM_ENVELOPE pEnvelope
|
||||
);
|
||||
|
||||
|
||||
//
|
||||
// OPERATIONS
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
virtual BOOL
|
||||
Initialize(
|
||||
CImmDevice* pDevice,
|
||||
const IMM_EFFECT &effect,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
virtual BOOL
|
||||
InitializeFromProject(
|
||||
CImmProject &project,
|
||||
LPCSTR lpszEffectName,
|
||||
CImmDevice* pDevice = NULL,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
virtual BOOL
|
||||
Start(
|
||||
DWORD dwIterations = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwFlags = 0
|
||||
#ifdef IFC_START_DELAY
|
||||
, BOOL bAllowStartDelayEmulation = true
|
||||
#endif
|
||||
);
|
||||
|
||||
virtual BOOL
|
||||
Stop();
|
||||
|
||||
|
||||
//
|
||||
// ------ PRIVATE INTERFACE ------
|
||||
//
|
||||
|
||||
//
|
||||
// CACHING
|
||||
//
|
||||
|
||||
#ifdef IFC_EFFECT_CACHING
|
||||
|
||||
public:
|
||||
|
||||
friend class CEffectList;
|
||||
friend class CImmCompoundEffect;
|
||||
|
||||
BOOL GetIsPlaying();
|
||||
BOOL GetIsTriggered() const;
|
||||
short GetPriority() const { return m_Priority; }
|
||||
void SetPriority(short priority) { m_Priority = priority; }
|
||||
virtual HRESULT Unload();
|
||||
virtual void Reload();
|
||||
|
||||
//Althought public, this should only be used internally.
|
||||
BOOL
|
||||
set_outside_effect(
|
||||
CImmEffect* pImmOutsideEffect
|
||||
);
|
||||
|
||||
BOOL
|
||||
get_is_inside_effect()
|
||||
{ return m_bIsInsideEffect; }
|
||||
|
||||
public:
|
||||
|
||||
ECacheState m_CacheState; // effect's status in the cache
|
||||
BOOL m_bInCurrentSuite; // is the effect in the currently loaded suite?
|
||||
short m_Priority; // Priority within suite: higher number is higher priority
|
||||
DWORD m_dwLastStarted; // when last started (0 = never) or when param change made on device
|
||||
DWORD m_dwLastStopped; // when last stopped (0 = not since last start)
|
||||
DWORD m_dwLastLoaded; // when last loaded with CImmEffectSuite::Load or Create
|
||||
|
||||
protected:
|
||||
|
||||
CImmDevice *m_pImmDevice; // ### Use instead of m_piImmDevice
|
||||
#endif
|
||||
|
||||
//
|
||||
// HELPERS
|
||||
//
|
||||
protected:
|
||||
|
||||
#ifdef IFC_START_DELAY
|
||||
void EmulateStartDelay(
|
||||
DWORD dwIterations,
|
||||
DWORD dwNoDownload
|
||||
);
|
||||
#endif
|
||||
|
||||
#ifdef IFC_EFFECT_CACHING
|
||||
public: // initalize needs to be called by CImmDevice
|
||||
#endif
|
||||
BOOL
|
||||
initialize(
|
||||
CImmDevice* pDevice,
|
||||
DWORD dwNoDownload
|
||||
);
|
||||
#ifdef IFC_EFFECT_CACHING
|
||||
protected:
|
||||
#endif
|
||||
|
||||
HRESULT
|
||||
set_parameters_on_device(
|
||||
DWORD dwFlags
|
||||
);
|
||||
|
||||
BOOL
|
||||
set_name(
|
||||
const char *lpszName
|
||||
);
|
||||
|
||||
void
|
||||
imm_to_DI_GUID(
|
||||
GUID &guid
|
||||
);
|
||||
|
||||
void
|
||||
DI_to_imm_GUID(
|
||||
GUID &guid
|
||||
);
|
||||
|
||||
void
|
||||
reset();
|
||||
|
||||
void
|
||||
reset_effect_struct();
|
||||
|
||||
void
|
||||
reset_device();
|
||||
|
||||
void
|
||||
buffer_direction(
|
||||
TCHAR** pData
|
||||
);
|
||||
|
||||
void
|
||||
buffer_long_param(
|
||||
TCHAR** pData,
|
||||
LPCSTR lpszKey,
|
||||
long lDefault,
|
||||
long lValue
|
||||
);
|
||||
|
||||
void
|
||||
buffer_dword_param(
|
||||
TCHAR** pData,
|
||||
LPCSTR lpszKey,
|
||||
DWORD dwDefault,
|
||||
DWORD dwValue
|
||||
);
|
||||
|
||||
virtual int
|
||||
buffer_ifr_data(
|
||||
TCHAR* pData
|
||||
);
|
||||
|
||||
virtual BOOL
|
||||
get_ffe_data(
|
||||
LPDIEFFECT pdiEffect
|
||||
);
|
||||
|
||||
|
||||
//
|
||||
// INTERNAL DATA
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
IMM_EFFECT m_Effect;
|
||||
DWORD m_dwaAxes[2];
|
||||
LONG m_laDirections[2];
|
||||
IMM_ENVELOPE m_Envelope;
|
||||
|
||||
GUID m_guidEffect;
|
||||
BOOL m_bIsPlaying;
|
||||
DWORD m_dwDeviceType;
|
||||
LPIIMM_DEVICE m_piImmDevice; // Might also be holding LPDIRECTINPUTDEVICE2
|
||||
LPIIMM_EFFECT m_piImmEffect;
|
||||
DWORD m_cAxes; // Number of axes
|
||||
DWORD m_dwNoDownload;
|
||||
DWORD m_dwIterations;
|
||||
char *m_lpszName; // Name of this effect primative
|
||||
|
||||
// Needed for co-ordinating events for Enclosures/Ellipes and the inside effects.
|
||||
BOOL m_bIsInsideEffect;
|
||||
CImmEffect* m_pOutsideEffect;
|
||||
|
||||
#ifdef IFC_START_DELAY
|
||||
public:
|
||||
// Prevents access to dangling pointer when this is deleted
|
||||
// All relevent code may be removed when all hardware and drivers support start delay
|
||||
CImmEffect **m_ppTimerRef; // pointer to pointer to this.
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
#endif // !defined(AFX_ImmEffect_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
|
||||
103
code/ff/IFC/ImmEffectSuite.h
Normal file
103
code/ff/IFC/ImmEffectSuite.h
Normal file
@@ -0,0 +1,103 @@
|
||||
|
||||
/**********************************************************************
|
||||
Copyright (c) 1999 - 2000 Immersion Corporation
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this
|
||||
software and its documentation may be granted without fee;
|
||||
interested parties are encouraged to request permission from
|
||||
Immersion Corporation
|
||||
801 Fox Lane
|
||||
San Jose, CA 95131
|
||||
408-467-1900
|
||||
|
||||
IMMERSION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
|
||||
IN NO EVENT SHALL IMMERSION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
FILE: ImmEffectSuite.h
|
||||
|
||||
PURPOSE: Caching of effects
|
||||
|
||||
STARTED: 6/16/99 Jeff Mallett
|
||||
|
||||
NOTES/REVISIONS:
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
#if !defined(AFX_FEELEFFECTSUITE_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
#define AFX_FEELEFFECTSUITE_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
|
||||
#ifndef _IFCDLL_
|
||||
#define DLLIFC __declspec(dllimport)
|
||||
#else
|
||||
#define DLLIFC __declspec(dllexport)
|
||||
#endif
|
||||
|
||||
#include "ImmBaseTypes.h"
|
||||
|
||||
#ifdef IFC_EFFECT_CACHING
|
||||
|
||||
class CImmDevice; //#include "ImmDevice.h"
|
||||
class CImmEffect; //#include "ImmEffect.h"
|
||||
|
||||
typedef enum {
|
||||
IMMCACHE_NOT_ON_DEVICE,
|
||||
IMMCACHE_ON_DEVICE,
|
||||
IMMCACHE_SWAPPED_OUT
|
||||
} ECacheState;
|
||||
|
||||
|
||||
//================================================================
|
||||
// CEffectList, CEffectListElement
|
||||
//================================================================
|
||||
|
||||
class DLLIFC CEffectListElement
|
||||
{
|
||||
public:
|
||||
CEffectListElement() : m_pImmEffect(NULL), m_pNext(NULL) { }
|
||||
|
||||
CImmEffect *m_pImmEffect;
|
||||
CEffectListElement *m_pNext;
|
||||
};
|
||||
|
||||
class DLLIFC CEffectList
|
||||
{
|
||||
public:
|
||||
CEffectList() : m_pFirstEffect(NULL) { }
|
||||
~CEffectList();
|
||||
BOOL AddEffect(CImmEffect *pImmEffect);
|
||||
BOOL RemoveEffect(const CImmEffect *pImmEffect);
|
||||
void ClearDevice(CImmDevice *pImmDevice);
|
||||
|
||||
CEffectListElement *m_pFirstEffect;
|
||||
};
|
||||
|
||||
|
||||
//================================================================
|
||||
// CImmEffectSuite
|
||||
//================================================================
|
||||
|
||||
class CImmEffectSuite
|
||||
{
|
||||
public:
|
||||
CImmEffectSuite() : m_bCurrentSuite(false) { }
|
||||
CEffectListElement *GetFirstEffect();
|
||||
void AddEffect(CImmEffect *pImmEffect);
|
||||
void RemoveEffect(CImmEffect *pImmEffect);
|
||||
void SetPriorities(short priority);
|
||||
|
||||
BOOL m_bCurrentSuite; // Is the suite the "current suite"?
|
||||
private:
|
||||
CEffectList m_EffectList; // List of effects in suite
|
||||
};
|
||||
|
||||
#endif // IFC_EFFECT_CACHING
|
||||
#endif // !defined(AFX_FEELEFFECTSUITE_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
295
code/ff/IFC/ImmEllipse.h
Normal file
295
code/ff/IFC/ImmEllipse.h
Normal file
@@ -0,0 +1,295 @@
|
||||
/**********************************************************************
|
||||
Copyright (c) 1997 - 2000 Immersion Corporation
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this
|
||||
software and its documentation may be granted without fee;
|
||||
interested parties are encouraged to request permission from
|
||||
Immersion Corporation
|
||||
801 Fox Lane
|
||||
San Jose, CA 95131
|
||||
408-467-1900
|
||||
|
||||
IMMERSION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
|
||||
IN NO EVENT SHALL IMMERSION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
FILE: ImmEllipse.h
|
||||
|
||||
PURPOSE: Base Ellipse Class for Immersion Foundation Classes
|
||||
|
||||
STARTED: 10/29/97
|
||||
|
||||
NOTES/REVISIONS:
|
||||
3/2/99 jrm (Jeff Mallett): Force-->Feel renaming
|
||||
3/2/99 jrm: Added GetIsCompatibleGUID
|
||||
3/15/99 jrm: __declspec(dllimport/dllexport) the whole class
|
||||
11/15/99 sdr (Steve Rank): Converted to IFC
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
||||
#if !defined(AFX_IMMELLIPSE_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
#define AFX_IMMELLIPSE_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
|
||||
#ifndef _IFCDLL_
|
||||
#define DLLIFC __declspec(dllimport)
|
||||
#else
|
||||
#define DLLIFC __declspec(dllexport)
|
||||
#endif
|
||||
|
||||
#include "ImmBaseTypes.h"
|
||||
#include "ImmEffect.h"
|
||||
|
||||
|
||||
|
||||
//================================================================
|
||||
// Constants
|
||||
//================================================================
|
||||
|
||||
#define IMM_ELLIPSE_DEFAULT_STIFFNESS 5000
|
||||
#define IMM_ELLIPSE_DEFAULT_SATURATION 10000
|
||||
#define IMM_ELLIPSE_DEFAULT_WIDTH 10
|
||||
#define IMM_ELLIPSE_HEIGHT_AUTO MAXDWORD
|
||||
#define IMM_ELLIPSE_DEFAULT_HEIGHT IMM_ELLIPSE_HEIGHT_AUTO
|
||||
#define IMM_ELLIPSE_WALL_WIDTH_AUTO MAXDWORD
|
||||
#define IMM_ELLIPSE_DEFAULT_WALL_WIDTH IMM_ELLIPSE_WALL_WIDTH_AUTO
|
||||
#define IMM_ELLIPSE_DEFAULT_STIFFNESS_MASK IMM_STIFF_ANYWALL
|
||||
#define IMM_ELLIPSE_DEFAULT_CLIPPING_MASK IMM_CLIP_NONE
|
||||
|
||||
#define IMM_ELLIPSE_DEFAULT_CENTER_POINT IMM_EFFECT_MOUSE_POS_AT_START
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//================================================================
|
||||
// CImmEllipse
|
||||
//================================================================
|
||||
|
||||
//
|
||||
// ------ PUBLIC INTERFACE ------
|
||||
//
|
||||
|
||||
class DLLIFC CImmEllipse : public CImmEffect
|
||||
{
|
||||
//
|
||||
// CONSTRUCTOR/DESCTRUCTOR
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
// Constructor
|
||||
CImmEllipse();
|
||||
|
||||
// Destructor
|
||||
virtual
|
||||
~CImmEllipse();
|
||||
|
||||
|
||||
//
|
||||
// ATTRIBUTES
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
virtual BOOL
|
||||
GetIsCompatibleGUID(
|
||||
GUID &guid
|
||||
);
|
||||
|
||||
virtual DWORD GetEffectType()
|
||||
{ return IMM_EFFECTTYPE_ELLIPSE; }
|
||||
|
||||
BOOL
|
||||
ChangeParameters(
|
||||
POINT pntCenter,
|
||||
DWORD dwWidth = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwHeight = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lStiffness = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwWallThickness = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwSaturation = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwStiffnessMask = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwClippingMask = IMM_EFFECT_DONT_CHANGE,
|
||||
CImmEffect* pInsideEffect = (CImmEffect*) IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lAngle = IMM_EFFECT_DONT_CHANGE
|
||||
);
|
||||
|
||||
BOOL
|
||||
ChangeParameters(
|
||||
LPCRECT pRectOutside,
|
||||
LONG lStiffness = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwWallThickness = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwSaturation = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwStiffnessMask = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwClippingMask = IMM_EFFECT_DONT_CHANGE,
|
||||
CImmEffect* pInsideEffect = (CImmEffect*) IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lAngle = IMM_EFFECT_DONT_CHANGE
|
||||
);
|
||||
|
||||
|
||||
BOOL ChangeStiffness ( LONG lStiffness );
|
||||
BOOL ChangeWallThickness( DWORD dwThickness );
|
||||
BOOL ChangeSaturation ( DWORD dwSaturation );
|
||||
BOOL ChangeStiffnessMask( DWORD dwStiffnessMask );
|
||||
BOOL ChangeClippingMask ( DWORD dwClippingMask );
|
||||
BOOL ChangeInsideEffect ( CImmEffect* pInsideEffect );
|
||||
|
||||
BOOL
|
||||
ChangeRect(
|
||||
LPCRECT pRect
|
||||
);
|
||||
|
||||
|
||||
BOOL
|
||||
ChangeCenter(
|
||||
POINT pntCenter
|
||||
);
|
||||
|
||||
|
||||
BOOL
|
||||
ChangeCenter(
|
||||
LONG x,
|
||||
LONG y
|
||||
);
|
||||
|
||||
BOOL GetStiffness ( LONG &lStiffness );
|
||||
BOOL GetWallThickness( DWORD &dwThickness );
|
||||
BOOL GetSaturation ( DWORD &dwSaturation );
|
||||
BOOL GetStiffnessMask( DWORD &dwStiffnessMask );
|
||||
BOOL GetClippingMask ( DWORD &dwClippingMask );
|
||||
|
||||
BOOL GetRect( RECT* pRect );
|
||||
BOOL GetCenter( POINT &pntCenter );
|
||||
BOOL GetCenter( LONG &x, LONG &y);
|
||||
|
||||
CImmEffect* GetInsideEffect();
|
||||
|
||||
//
|
||||
// OPERATIONS
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
virtual BOOL
|
||||
Initialize(
|
||||
CImmDevice* pDevice,
|
||||
const IMM_EFFECT &effect,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
BOOL
|
||||
Initialize(
|
||||
CImmDevice* pDevice,
|
||||
DWORD dwWidth = IMM_ELLIPSE_DEFAULT_WIDTH,
|
||||
DWORD dwHeight = IMM_ELLIPSE_DEFAULT_HEIGHT,
|
||||
LONG lStiffness = IMM_ELLIPSE_DEFAULT_STIFFNESS,
|
||||
DWORD dwWallWidth = IMM_ELLIPSE_DEFAULT_WALL_WIDTH,
|
||||
DWORD dwSaturation = IMM_ELLIPSE_DEFAULT_SATURATION,
|
||||
DWORD dwStiffnessMask = IMM_ELLIPSE_DEFAULT_STIFFNESS_MASK,
|
||||
DWORD dwClippingMask = IMM_ELLIPSE_DEFAULT_CLIPPING_MASK,
|
||||
POINT pntCenter = IMM_ELLIPSE_DEFAULT_CENTER_POINT,
|
||||
CImmEffect* pInsideEffect = NULL,
|
||||
LONG lAngle = IMM_EFFECT_DEFAULT_ANGLE,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
|
||||
BOOL
|
||||
Initialize(
|
||||
CImmDevice* pDevice,
|
||||
LPCRECT pRectOutside,
|
||||
LONG lStiffness = IMM_ELLIPSE_DEFAULT_STIFFNESS,
|
||||
DWORD dwWallWidth = IMM_ELLIPSE_DEFAULT_WALL_WIDTH,
|
||||
DWORD dwSaturation = IMM_ELLIPSE_DEFAULT_SATURATION,
|
||||
DWORD dwStiffnessMask = IMM_ELLIPSE_DEFAULT_STIFFNESS_MASK,
|
||||
DWORD dwClippingMask = IMM_ELLIPSE_DEFAULT_CLIPPING_MASK,
|
||||
CImmEffect* pInsideEffect = NULL,
|
||||
LONG lAngle = IMM_EFFECT_DEFAULT_ANGLE,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
|
||||
virtual BOOL
|
||||
Start(
|
||||
DWORD dwIterations = 1,
|
||||
DWORD dwFlags = 0,
|
||||
BOOL bAllowStartDelayEmulation = true
|
||||
);
|
||||
|
||||
HRESULT Unload();
|
||||
void Reload();
|
||||
|
||||
|
||||
//
|
||||
// ------ PRIVATE INTERFACE ------
|
||||
//
|
||||
|
||||
//
|
||||
// HELPERS
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
BOOL
|
||||
set_parameters(
|
||||
LPCRECT pRectOutside,
|
||||
LONG lStiffness,
|
||||
DWORD dwWallWidth,
|
||||
DWORD dwSaturation,
|
||||
DWORD dwStiffnessMask,
|
||||
DWORD dwClippingMask,
|
||||
CImmEffect* pInsideEffect,
|
||||
LONG lAngle
|
||||
);
|
||||
|
||||
DWORD
|
||||
change_parameters(
|
||||
LPCRECT prectBoundary,
|
||||
LONG lStiffness,
|
||||
DWORD dwWallThickness,
|
||||
DWORD dwSaturation,
|
||||
DWORD dwStiffnessMask,
|
||||
DWORD dwClippingMask,
|
||||
CImmEffect* pInsideEffect,
|
||||
LONG lAngle
|
||||
);
|
||||
|
||||
int
|
||||
buffer_ifr_data(
|
||||
TCHAR* pData
|
||||
);
|
||||
|
||||
//
|
||||
// INTERNAL DATA
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
IMM_ELLIPSE m_ellipse;
|
||||
BOOL m_bUseMousePosAtStart;
|
||||
|
||||
// Needed for co-ordinating events for Enclosures/Ellipes and the inside effects.
|
||||
CImmEffect* m_pInsideEffect;
|
||||
};
|
||||
|
||||
|
||||
|
||||
//
|
||||
// INLINES
|
||||
//
|
||||
|
||||
inline BOOL
|
||||
CImmEllipse::GetIsCompatibleGUID(GUID &guid)
|
||||
{
|
||||
return IsEqualGUID(guid, GUID_Imm_Ellipse);
|
||||
}
|
||||
|
||||
#endif // !defined(AFX_IMMELLIPSE_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
325
code/ff/IFC/ImmEnclosure.h
Normal file
325
code/ff/IFC/ImmEnclosure.h
Normal file
@@ -0,0 +1,325 @@
|
||||
/**********************************************************************
|
||||
Copyright (c) 1997 - 2000 Immersion Corporation
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this
|
||||
software and its documentation may be granted without fee;
|
||||
interested parties are encouraged to request permission from
|
||||
Immersion Corporation
|
||||
801 Fox Lane
|
||||
San Jose, CA 95131
|
||||
408-467-1900
|
||||
|
||||
IMMERSION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
|
||||
IN NO EVENT SHALL IMMERSION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
FILE: ImmEnclosure.h
|
||||
|
||||
PURPOSE: Base Enclosure Class for Immersion Foundation Classes
|
||||
|
||||
STARTED: 10/29/97
|
||||
|
||||
NOTES/REVISIONS:
|
||||
3/2/99 jrm (Jeff Mallett): Force-->Feel renaming
|
||||
3/2/99 jrm: Added GetIsCompatibleGUID
|
||||
3/15/99 jrm: __declspec(dllimport/dllexport) the whole class
|
||||
11/15/99 sdr (Steve Rank): Converted to IFC
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
||||
#if !defined(AFX_IMMENCLOSURE_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
#define AFX_IMMENCLOSURE_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
|
||||
#ifndef _IFCDLL_
|
||||
#define DLLIFC __declspec(dllimport)
|
||||
#else
|
||||
#define DLLIFC __declspec(dllexport)
|
||||
#endif
|
||||
|
||||
#include "ImmBaseTypes.h"
|
||||
#include "ImmEffect.h"
|
||||
|
||||
|
||||
//================================================================
|
||||
// Constants
|
||||
//================================================================
|
||||
|
||||
|
||||
#define IMM_ENCLOSURE_DEFAULT_STIFFNESS 5000
|
||||
#define IMM_ENCLOSURE_DEFAULT_SATURATION 10000
|
||||
#define IMM_ENCLOSURE_DEFAULT_WIDTH 10
|
||||
#define IMM_ENCLOSURE_HEIGHT_AUTO MAXDWORD
|
||||
#define IMM_ENCLOSURE_DEFAULT_HEIGHT IMM_ENCLOSURE_HEIGHT_AUTO
|
||||
#define IMM_ENCLOSURE_WALL_WIDTH_AUTO MAXDWORD
|
||||
#define IMM_ENCLOSURE_DEFAULT_WALL_WIDTH IMM_ENCLOSURE_WALL_WIDTH_AUTO
|
||||
#define IMM_ENCLOSURE_DEFAULT_STIFFNESS_MASK IMM_STIFF_ANYWALL
|
||||
#define IMM_ENCLOSURE_DEFAULT_CLIPPING_MASK IMM_CLIP_NONE
|
||||
|
||||
#define IMM_ENCLOSURE_DEFAULT_CENTER_POINT IMM_EFFECT_MOUSE_POS_AT_START
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//================================================================
|
||||
// CImmEnclosure
|
||||
//================================================================
|
||||
|
||||
//
|
||||
// ------ PUBLIC INTERFACE ------
|
||||
//
|
||||
|
||||
class DLLIFC CImmEnclosure : public CImmEffect
|
||||
{
|
||||
//
|
||||
// CONSTRUCTOR/DESCTRUCTOR
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
// Constructor
|
||||
CImmEnclosure();
|
||||
|
||||
// Destructor
|
||||
virtual
|
||||
~CImmEnclosure();
|
||||
|
||||
|
||||
//
|
||||
// ATTRIBUTES
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
virtual BOOL
|
||||
GetIsCompatibleGUID(
|
||||
GUID &guid
|
||||
);
|
||||
|
||||
virtual DWORD GetEffectType()
|
||||
{ return IMM_EFFECTTYPE_ENCLOSURE; }
|
||||
|
||||
BOOL
|
||||
ChangeParameters(
|
||||
POINT pntCenter,
|
||||
DWORD dwWidth = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwHeight = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lTopAndBottomWallStiffness = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lLeftAndRightWallStiffness = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwTopAndBottomWallWallWidth = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwLeftAndRightWallWallWidth = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwTopAndBottomWallSaturation = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwLeftAndRightWallSaturation = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwStiffnessMask = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwClippingMask = IMM_EFFECT_DONT_CHANGE,
|
||||
CImmEffect* pInsideEffect = (CImmEffect*) IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lAngle = IMM_EFFECT_DONT_CHANGE
|
||||
);
|
||||
|
||||
BOOL
|
||||
ChangeParameters(
|
||||
LPCRECT pRectOutside,
|
||||
LONG lTopAndBottomWallStiffness = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lLeftAndRightWallStiffness = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwTopAndBottomWallWallThickness = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwLeftAndRightWallWallThickness = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwTopAndBottomWallSaturation = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwLeftAndRightWallSaturation = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwStiffnessMask = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwClippingMask = IMM_EFFECT_DONT_CHANGE,
|
||||
CImmEffect* pInsideEffect = (CImmEffect*) IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lAngle = IMM_EFFECT_DONT_CHANGE
|
||||
);
|
||||
|
||||
BOOL ChangeTopAndBottomWallStiffness ( LONG lTopAndBottomWallStiffness );
|
||||
BOOL ChangeLeftAndRightWallStiffness ( LONG lLeftAndRightWallStiffness );
|
||||
BOOL ChangeTopAndBottomWallThickness ( DWORD dwTopAndBottomWallThickness );
|
||||
BOOL ChangeLeftAndRightWallThickness ( DWORD dwLeftAndRightWallThickness );
|
||||
BOOL ChangeTopAndBottomWallSaturation( DWORD dwTopAndBottomWallSaturation );
|
||||
BOOL ChangeLeftAndRightWallSaturation( DWORD dwLeftAndRightWallSaturation );
|
||||
BOOL ChangeStiffnessMask ( DWORD dwStiffnessMask );
|
||||
BOOL ChangeClippingMask ( DWORD dwClippingMask );
|
||||
BOOL ChangeInsideEffect ( CImmEffect* pInsideEffect );
|
||||
|
||||
BOOL
|
||||
ChangeRect(
|
||||
LPCRECT pRect
|
||||
);
|
||||
|
||||
|
||||
BOOL
|
||||
ChangeCenter(
|
||||
POINT pntCenter
|
||||
);
|
||||
|
||||
|
||||
BOOL
|
||||
ChangeCenter(
|
||||
LONG x,
|
||||
LONG y
|
||||
);
|
||||
|
||||
BOOL
|
||||
ShowRect(
|
||||
BOOL bRectOn
|
||||
);
|
||||
|
||||
BOOL GetTopAndBottomWallStiffness ( LONG &lTopAndBottomWallStiffness );
|
||||
BOOL GetLeftAndRightWallStiffness ( LONG &lLeftAndRightWallStiffness );
|
||||
BOOL GetTopAndBottomWallThickness ( DWORD &dwTopAndBottomWallThickness );
|
||||
BOOL GetLeftAndRightWallThickness ( DWORD &dwLeftAndRightWallThickness );
|
||||
BOOL GetTopAndBottomWallSaturation ( DWORD &dwTopAndBottomWallSaturation );
|
||||
BOOL GetLeftAndRightWallSaturation ( DWORD &dwLeftAndRightWallSaturation );
|
||||
BOOL GetStiffnessMask ( DWORD &dwStiffnessMask );
|
||||
BOOL GetClippingMask ( DWORD &dwClippingMask );
|
||||
|
||||
BOOL GetRect( RECT* pRect );
|
||||
BOOL GetCenter( POINT &pntCenter );
|
||||
BOOL GetCenter( LONG &x, LONG &y);
|
||||
|
||||
CImmEffect* GetInsideEffect ();
|
||||
|
||||
//
|
||||
// OPERATIONS
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
virtual BOOL
|
||||
Initialize(
|
||||
CImmDevice* pDevice,
|
||||
const IMM_EFFECT &effect,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
BOOL
|
||||
Initialize(
|
||||
CImmDevice* pDevice,
|
||||
DWORD dwWidth = IMM_ENCLOSURE_DEFAULT_WIDTH,
|
||||
DWORD dwHeight = IMM_ENCLOSURE_DEFAULT_HEIGHT,
|
||||
LONG lTopAndBottomWallStiffness = IMM_ENCLOSURE_DEFAULT_STIFFNESS,
|
||||
LONG lLeftAndRightWallStiffness = IMM_ENCLOSURE_DEFAULT_STIFFNESS,
|
||||
DWORD dwTopAndBottomWallWallWidth = IMM_ENCLOSURE_DEFAULT_WALL_WIDTH,
|
||||
DWORD dwLeftAndRightWallWallWidth = IMM_ENCLOSURE_DEFAULT_WALL_WIDTH,
|
||||
DWORD dwTopAndBottomWallSaturation = IMM_ENCLOSURE_DEFAULT_SATURATION,
|
||||
DWORD dwLeftAndRightWallSaturation = IMM_ENCLOSURE_DEFAULT_SATURATION,
|
||||
DWORD dwStiffnessMask = IMM_ENCLOSURE_DEFAULT_STIFFNESS_MASK,
|
||||
DWORD dwClippingMask = IMM_ENCLOSURE_DEFAULT_CLIPPING_MASK,
|
||||
POINT pntCenter = IMM_ENCLOSURE_DEFAULT_CENTER_POINT,
|
||||
CImmEffect* pInsideEffect = NULL,
|
||||
LONG lAngle = IMM_EFFECT_DEFAULT_ANGLE,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
|
||||
BOOL
|
||||
Initialize(
|
||||
CImmDevice* pDevice,
|
||||
LPCRECT pRectOutside,
|
||||
LONG lTopAndBottomWallStiffness = IMM_ENCLOSURE_DEFAULT_STIFFNESS,
|
||||
LONG lLeftAndRightWallStiffness = IMM_ENCLOSURE_DEFAULT_STIFFNESS,
|
||||
DWORD dwTopAndBottomWallWallWidth = IMM_ENCLOSURE_DEFAULT_WALL_WIDTH,
|
||||
DWORD dwLeftAndRightWallWallWidth = IMM_ENCLOSURE_DEFAULT_WALL_WIDTH,
|
||||
DWORD dwTopAndBottomWallSaturation = IMM_ENCLOSURE_DEFAULT_SATURATION,
|
||||
DWORD dwLeftAndRightWallSaturation = IMM_ENCLOSURE_DEFAULT_SATURATION,
|
||||
DWORD dwStiffnessMask = IMM_ENCLOSURE_DEFAULT_STIFFNESS_MASK,
|
||||
DWORD dwClippingMask = IMM_ENCLOSURE_DEFAULT_CLIPPING_MASK,
|
||||
CImmEffect* pInsideEffect = NULL,
|
||||
LONG lAngle = IMM_EFFECT_DEFAULT_ANGLE,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
|
||||
virtual BOOL
|
||||
Start(
|
||||
DWORD dwIterations = 1,
|
||||
DWORD dwFlags = 0,
|
||||
BOOL bAllowStartDelayEmulation = true
|
||||
);
|
||||
|
||||
virtual BOOL
|
||||
Stop();
|
||||
|
||||
HRESULT Unload();
|
||||
void Reload();
|
||||
|
||||
//
|
||||
// ------ PRIVATE INTERFACE ------
|
||||
//
|
||||
|
||||
//
|
||||
// HELPERS
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
BOOL
|
||||
set_parameters(
|
||||
LPCRECT pRectOutside,
|
||||
LONG lTopAndBottomWallStiffness,
|
||||
LONG lLeftAndRightWallStiffness,
|
||||
DWORD dwTopAndBottomWallWallWidth,
|
||||
DWORD dwLeftAndRightWallWallWidth,
|
||||
DWORD dwTopAndBottomWallSaturation,
|
||||
DWORD dwLeftAndRightWallSaturation,
|
||||
DWORD dwStiffnessMask,
|
||||
DWORD dwClippingMask,
|
||||
CImmEffect* pInsideEffect,
|
||||
LONG lAngle
|
||||
);
|
||||
|
||||
DWORD
|
||||
change_parameters(
|
||||
LPCRECT prectBoundary,
|
||||
LONG lTopAndBottomWallStiffness,
|
||||
LONG lLeftAndRightWallStiffness,
|
||||
DWORD dwTopAndBottomWallThickness,
|
||||
DWORD dwLeftAndRightWallThickness,
|
||||
DWORD dwTopAndBottomWallSaturation,
|
||||
DWORD dwLeftAndRightWallSaturation,
|
||||
DWORD dwStiffnessMask,
|
||||
DWORD dwClippingMask,
|
||||
CImmEffect* pInsideEffect,
|
||||
LONG lAngle
|
||||
);
|
||||
|
||||
int
|
||||
buffer_ifr_data(
|
||||
TCHAR* pData
|
||||
);
|
||||
|
||||
//
|
||||
// INTERNAL DATA
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
IMM_ENCLOSURE m_enclosure;
|
||||
BOOL m_bUseMousePosAtStart;
|
||||
|
||||
// Needed for co-ordinating events for Enclosures/Ellipes and the inside effects.
|
||||
CImmEffect* m_pInsideEffect;
|
||||
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// INLINES
|
||||
//
|
||||
|
||||
inline BOOL
|
||||
CImmEnclosure::GetIsCompatibleGUID(GUID &guid)
|
||||
{
|
||||
return IsEqualGUID(guid, GUID_Imm_Enclosure);
|
||||
}
|
||||
|
||||
#endif // !defined(AFX_IMMENCLOSURE_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
176
code/ff/IFC/ImmFriction.h
Normal file
176
code/ff/IFC/ImmFriction.h
Normal file
@@ -0,0 +1,176 @@
|
||||
/**********************************************************************
|
||||
Copyright (c) 1997 - 2000 Immersion Corporation
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this
|
||||
software and its documentation may be granted without fee;
|
||||
interested parties are encouraged to request permission from
|
||||
Immersion Corporation
|
||||
801 Fox Lane
|
||||
San Jose, CA 95131
|
||||
408-467-1900
|
||||
|
||||
IMMERSION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
|
||||
IN NO EVENT SHALL IMMERSION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
FILE: ImmFriction.h
|
||||
|
||||
PURPOSE: Immersion Foundation Classes Friction Effect
|
||||
|
||||
STARTED: Dec.29.97
|
||||
|
||||
NOTES/REVISIONS:
|
||||
Mar.02.99 jrm (Jeff Mallett): Force-->Feel renaming
|
||||
Mar.02.99 jrm: Added GetIsCompatibleGUID
|
||||
Mar.15.99 jrm: __declspec(dllimport/dllexport) the whole class
|
||||
Nov.15.99 efw (Evan Wies): Converted to IFC
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
||||
#if !defined(AFX_ImmFriction_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
#define AFX_ImmFriction_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
|
||||
#ifndef _IFCDLL_
|
||||
#define DLLIFC __declspec(dllimport)
|
||||
#else
|
||||
#define DLLIFC __declspec(dllexport)
|
||||
#endif
|
||||
|
||||
#include <windows.h>
|
||||
#include "ImmCondition.h"
|
||||
|
||||
|
||||
//================================================================
|
||||
// Constants
|
||||
//================================================================
|
||||
|
||||
#define IMM_FRICTION_DEFAULT_COEFFICIENT 2500
|
||||
#define IMM_FRICTION_DEFAULT_MIN_VELOCITY 0
|
||||
|
||||
|
||||
//================================================================
|
||||
// CImmFriction
|
||||
//================================================================
|
||||
|
||||
//
|
||||
// ------ PUBLIC INTERFACE ------
|
||||
//
|
||||
|
||||
class DLLIFC CImmFriction : public CImmCondition
|
||||
{
|
||||
//
|
||||
// CONSTRUCTOR/DESTRUCTOR
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
// Constructor
|
||||
CImmFriction();
|
||||
|
||||
// Destructor
|
||||
virtual
|
||||
~CImmFriction();
|
||||
|
||||
|
||||
//
|
||||
// ATTRIBUTES
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
virtual BOOL
|
||||
GetIsCompatibleGUID(
|
||||
GUID &guid
|
||||
);
|
||||
|
||||
BOOL
|
||||
ChangeParameters(
|
||||
DWORD dwCoefficient,
|
||||
DWORD dwMinVelocity = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lDirectionX = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lDirectionY = IMM_EFFECT_DONT_CHANGE
|
||||
);
|
||||
|
||||
BOOL
|
||||
ChangeParametersPolar(
|
||||
DWORD dwCoefficient,
|
||||
DWORD dwMinVelocity,
|
||||
LONG lAngle
|
||||
);
|
||||
|
||||
BOOL ChangeMinVelocityX( DWORD dwMinVelocity );
|
||||
BOOL ChangeMinVelocityY( DWORD dwMinVelocity );
|
||||
//For setting both axes to the same value
|
||||
BOOL ChangeMinVelocity( DWORD dwMinVelocity );
|
||||
|
||||
BOOL GetMinVelocityX( DWORD &dwMinVelocity );
|
||||
BOOL GetMinVelocityY( DWORD &dwMinVelocity );
|
||||
|
||||
//
|
||||
// OPERATIONS
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
virtual BOOL
|
||||
Initialize(
|
||||
CImmDevice* pDevice,
|
||||
DWORD dwCoefficient = IMM_FRICTION_DEFAULT_COEFFICIENT,
|
||||
DWORD dwMinVelocity = IMM_FRICTION_DEFAULT_MIN_VELOCITY,
|
||||
DWORD dwfAxis = IMM_EFFECT_AXIS_BOTH,
|
||||
LONG lDirectionX = IMM_EFFECT_DEFAULT_DIRECTION_X,
|
||||
LONG lDirectionY = IMM_EFFECT_DEFAULT_DIRECTION_Y,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
virtual BOOL
|
||||
InitializePolar(
|
||||
CImmDevice* pDevice,
|
||||
DWORD dwCoefficient,
|
||||
DWORD dwMinVelocity,
|
||||
LONG lAngle,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
|
||||
//
|
||||
// ------ PRIVATE INTERFACE ------
|
||||
//
|
||||
|
||||
//
|
||||
// HELPERS
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
//
|
||||
// INTERNAL DATA
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
//
|
||||
// INLINES
|
||||
//
|
||||
|
||||
inline BOOL
|
||||
CImmFriction::GetIsCompatibleGUID(GUID &guid)
|
||||
{
|
||||
return IsEqualGUID(guid, GUID_Imm_Friction);
|
||||
}
|
||||
|
||||
|
||||
#endif // !defined(AFX_ImmFriction_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
179
code/ff/IFC/ImmGrid.h
Normal file
179
code/ff/IFC/ImmGrid.h
Normal file
@@ -0,0 +1,179 @@
|
||||
/**********************************************************************
|
||||
Copyright (c) 1997 - 2000 Immersion Corporation
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this
|
||||
software and its documentation may be granted without fee;
|
||||
interested parties are encouraged to request permission from
|
||||
Immersion Corporation
|
||||
801 Fox Lane
|
||||
San Jose, CA 95131
|
||||
408-467-1900
|
||||
|
||||
IMMERSION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
|
||||
IN NO EVENT SHALL IMMERSION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
FILE: ImmGrid.h
|
||||
|
||||
PURPOSE: Immersion Foundation Classes Grid Effect
|
||||
|
||||
STARTED: Dec.11.97
|
||||
|
||||
NOTES/REVISIONS:
|
||||
Mar.02.99 jrm (Jeff Mallett): Force-->Feel renaming
|
||||
Mar.02.99 jrm: Added GetIsCompatibleGUID
|
||||
Mar.02.99 jrm: __declspec(dllimport/dllexport) the whole class
|
||||
Nov.15.99 efw (Evan Wies): Converted to IFC
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
||||
#if !defined(AFX_IMMGrid_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
#define AFX_IMMGrid_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
|
||||
#ifndef _IFCDLL_
|
||||
#define DLLIFC __declspec(dllimport)
|
||||
#else
|
||||
#define DLLIFC __declspec(dllexport)
|
||||
#endif
|
||||
|
||||
#include <windows.h>
|
||||
#include "ImmCondition.h"
|
||||
|
||||
|
||||
//================================================================
|
||||
// Constants
|
||||
//================================================================
|
||||
|
||||
#define IMM_GRID_DEFAULT_HORIZ_OFFSET 0
|
||||
#define IMM_GRID_DEFAULT_VERT_OFFSET 0
|
||||
#define IMM_GRID_DEFAULT_HORIZ_SPACING 100
|
||||
#define IMM_GRID_DEFAULT_VERT_SPACING 100
|
||||
#define IMM_GRID_DEFAULT_NODE_STRENGTH 5000
|
||||
#define IMM_GRID_DEFAULT_NODE_SATURATION 10000
|
||||
|
||||
|
||||
|
||||
//================================================================
|
||||
// CImmGrid
|
||||
//================================================================
|
||||
|
||||
//
|
||||
// ------ PUBLIC INTERFACE ------
|
||||
//
|
||||
|
||||
class DLLIFC CImmGrid : public CImmCondition
|
||||
{
|
||||
//
|
||||
// CONSTRUCTOR/DESTRUCTOR
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
// Constructor
|
||||
CImmGrid();
|
||||
|
||||
// Destructor
|
||||
virtual
|
||||
~CImmGrid();
|
||||
|
||||
|
||||
//
|
||||
// ATTRIBUTES
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
virtual BOOL
|
||||
GetIsCompatibleGUID(
|
||||
GUID &guid
|
||||
);
|
||||
|
||||
BOOL
|
||||
ChangeParameters(
|
||||
DWORD dwHorizSpacing,
|
||||
DWORD dwVertSpacing = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lHorizNodeStrength = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lVertNodeStrength = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lHorizOffset = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lVertOffset = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwHorizNodeSaturation = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwVertNodeSaturation = IMM_EFFECT_DONT_CHANGE
|
||||
);
|
||||
|
||||
BOOL ChangeHSpacing( DWORD dwHorizSpacing );
|
||||
BOOL ChangeVSpacing( DWORD dwVertSpacing );
|
||||
BOOL ChangeHNodeStrength( LONG lHorizNodeStrength );
|
||||
BOOL ChangeVNodeStrength( LONG lVertNodeStrength );
|
||||
BOOL ChangeOffset( POINT pntOffset );
|
||||
BOOL ChangeHNodeSaturation( DWORD dwHorizNodeSaturation );
|
||||
BOOL ChangeVNodeSaturation( DWORD dwVertNodeSaturation );
|
||||
|
||||
BOOL GetHSpacing( DWORD &dwHorizSpacing );
|
||||
BOOL GetVSpacing( DWORD &dwVertSpacing );
|
||||
BOOL GetHNodeStrength( LONG &lHorizNodeStrength );
|
||||
BOOL GetVNodeStrength( LONG &lVertNodeStrength );
|
||||
BOOL GetOffset( POINT &pntOffset );
|
||||
BOOL GetHNodeSaturation( DWORD &dwHorizNodeSaturation );
|
||||
BOOL GetVNodeSaturation( DWORD &dwVertNodeSaturation );
|
||||
|
||||
//
|
||||
// OPERATIONS
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
virtual BOOL
|
||||
Initialize(
|
||||
CImmDevice* pDevice,
|
||||
DWORD dwHorizSpacing = IMM_GRID_DEFAULT_HORIZ_SPACING,
|
||||
DWORD dwVertSpacing = IMM_GRID_DEFAULT_VERT_SPACING,
|
||||
LONG lHorizNodeStrength = IMM_GRID_DEFAULT_NODE_STRENGTH,
|
||||
LONG lVertNodeStrength = IMM_GRID_DEFAULT_NODE_STRENGTH,
|
||||
DWORD dwHorizOffset = IMM_GRID_DEFAULT_HORIZ_OFFSET,
|
||||
DWORD dwVertOffset = IMM_GRID_DEFAULT_VERT_OFFSET,
|
||||
DWORD dwHorizNodeSaturation = IMM_GRID_DEFAULT_NODE_SATURATION,
|
||||
DWORD dwVertNodeSaturation = IMM_GRID_DEFAULT_NODE_SATURATION,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
|
||||
//
|
||||
// ------ PRIVATE INTERFACE ------
|
||||
//
|
||||
|
||||
//
|
||||
// HELPERS
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
//
|
||||
// INTERNAL DATA
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
//
|
||||
// INLINES
|
||||
//
|
||||
|
||||
inline BOOL
|
||||
CImmGrid::GetIsCompatibleGUID(GUID &guid)
|
||||
{
|
||||
return IsEqualGUID(guid, GUID_Imm_Grid);
|
||||
}
|
||||
|
||||
#endif // !defined(AFX_IMMGrid_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
308
code/ff/IFC/ImmIFR.h
Normal file
308
code/ff/IFC/ImmIFR.h
Normal file
@@ -0,0 +1,308 @@
|
||||
/**********************************************************************
|
||||
Copyright (c) 1999 - 2000 Immersion Corporation
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this
|
||||
software and its documentation may be granted without fee;
|
||||
interested parties are encouraged to request permission from
|
||||
Immersion Corporation
|
||||
801 Fox Lane
|
||||
San Jose, CA 95131
|
||||
408-467-1900
|
||||
|
||||
IMMERSION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
|
||||
IN NO EVENT SHALL IMMERSION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
FILE: FEELitIFR.h
|
||||
|
||||
PURPOSE: Input/Output for IFR Files, FEELit version
|
||||
|
||||
STARTED:
|
||||
|
||||
NOTES/REVISIONS:
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
#if !defined( _IMMIFR_H_)
|
||||
#define _IMMIFR_H_
|
||||
|
||||
#ifndef __FEELITAPI_INCLUDED__
|
||||
#error include 'dinput.h' before including this file for structures.
|
||||
#endif /* !__DINPUT_INCLUDED__ */
|
||||
|
||||
#define IFRAPI __stdcall
|
||||
|
||||
#if !defined(_IFCDLL_)
|
||||
#define DLLAPI __declspec(dllimport)
|
||||
#else
|
||||
#define DLLAPI __declspec(dllexport)
|
||||
#endif
|
||||
|
||||
#if defined __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/*
|
||||
** CONSTANTS
|
||||
*/
|
||||
|
||||
/*
|
||||
** RT_IMMERSION - Resource type for IFR projects stored as resources.
|
||||
** This is the resource type looked for by IFLoadProjectResource().
|
||||
*/
|
||||
#define RT_IMMERSION ((LPCSTR)"IMMERSION")
|
||||
|
||||
|
||||
/*
|
||||
** TYPES/STRUCTURES
|
||||
*/
|
||||
|
||||
/*
|
||||
** HIFRPROJECT - used to identify a loaded project as a whole.
|
||||
** individual objects within a project are uniquely referenced by name.
|
||||
** Created by the IFLoadProject*() functions and released by IFReleaseProject().
|
||||
*/
|
||||
typedef LPVOID HIFRPROJECT;
|
||||
|
||||
/*
|
||||
** IFREffect - contains the information needed to create a DI effect
|
||||
** using IDirectInputEffect::CreateEffect(). An array of pointers to these
|
||||
** structures is allocated and returned by IFCreateEffectStructs().
|
||||
*/
|
||||
typedef struct {
|
||||
GUID guid;
|
||||
DWORD dwIterations;
|
||||
char *effectName;
|
||||
LPIMM_EFFECT lpDIEffect;
|
||||
} IFREffect;
|
||||
|
||||
|
||||
/*
|
||||
** FUNCTION DECLARATIONS
|
||||
*/
|
||||
|
||||
/*
|
||||
** IFLoadProjectResource() - Load a project from a resource.
|
||||
** hRsrcModule - handle of the module containing the project definition resource.
|
||||
** pRsrcName - name or MAKEINTRESOURCE(id) identifier of resource to load.
|
||||
** pDevice - device for which the project is being loaded. If NULL,
|
||||
** effects will be created generically, and IFCreateEffects() will fail.
|
||||
** Returns an identifier for the loaded project, or NULL if unsuccessful.
|
||||
*/
|
||||
DLLAPI
|
||||
HIFRPROJECT
|
||||
IFRAPI
|
||||
IFRLoadProjectResource(
|
||||
HMODULE hRsrcModule,
|
||||
LPCSTR pRsrcName,
|
||||
LPIIMM_DEVICE pDevice );
|
||||
|
||||
/*
|
||||
** IFLoadProjectPointer() - Load a project from a pointer.
|
||||
** pProject - points to a project definition.
|
||||
** pDevice - device for which the project is being loaded. If NULL,
|
||||
** effects will be created generically, and IFCreateEffects() will fail.
|
||||
** Returns an identifier for the loaded project, or NULL if unsuccessful.
|
||||
*/
|
||||
DLLAPI
|
||||
HIFRPROJECT
|
||||
IFRAPI
|
||||
IFRLoadProjectPointer(
|
||||
LPVOID pProject,
|
||||
LPIIMM_DEVICE pDevice );
|
||||
|
||||
/*
|
||||
** IFLoadProjectFile() - Load a project from a file.
|
||||
** pProjectFileName - points to a project file name.
|
||||
** pDevice - device for which the project is being loaded. If NULL,
|
||||
** effects will be created generically, and IFCreateEffects() will fail.
|
||||
** Returns an identifier for the loaded project, or NULL if unsuccessful.
|
||||
*/
|
||||
DLLAPI
|
||||
HIFRPROJECT
|
||||
IFRAPI
|
||||
IFRLoadProjectFile(
|
||||
LPCSTR pProjectFileName,
|
||||
LPIIMM_DEVICE pDevice );
|
||||
|
||||
/*
|
||||
** IFRLoadProjectFromMemory() - Load a project from memory.
|
||||
**
|
||||
** In cases where a file or resource is readily accessible, it may
|
||||
** be necessary to pass IFR formated information through memory.
|
||||
**
|
||||
** pProjectDef - memory addres that contains information from an IFR file.
|
||||
** pDevice - device for which the project is being loaded. If NULL,
|
||||
** effects will be created generically, and IFRCreateEffects() will fail.
|
||||
** Returns an identifier for the loaded project, or NULL if unsuccessful.
|
||||
*/
|
||||
DLLAPI
|
||||
HIFRPROJECT
|
||||
IFRAPI
|
||||
IFRLoadProjectFromMemory(
|
||||
LPVOID pProjectDef,
|
||||
LPIIMM_DEVICE pDevice );
|
||||
|
||||
/*
|
||||
** IFLoadProjectObjectPointer() - Load a project from a pointer to a single
|
||||
** object definition (usually used only by the editor).
|
||||
** pObject - points to an object definition.
|
||||
** pDevice - device for which the project is being loaded. If NULL,
|
||||
** effects will be created generically, and IFCreateEffects() will fail.
|
||||
** Returns an identifier for the loaded project, or NULL if unsuccessful.
|
||||
*/
|
||||
DLLAPI
|
||||
HIFRPROJECT
|
||||
IFRAPI
|
||||
IFRLoadProjectObjectPointer(
|
||||
LPVOID pObject,
|
||||
LPIIMM_DEVICE pDevice );
|
||||
|
||||
/*
|
||||
** IFReleaseProject() - Release a loaded project.
|
||||
** hProject - identifies the project to be released.
|
||||
** Returns TRUE if the project is released, FALSE if it is an invalid project.
|
||||
*/
|
||||
DLLAPI
|
||||
BOOL
|
||||
IFRAPI
|
||||
IFRReleaseProject(
|
||||
HIFRPROJECT hProject );
|
||||
|
||||
/*
|
||||
** IFCreateEffectStructs() - Create IFREffects for a named effect.
|
||||
** hProject - identifies the project containing the object.
|
||||
** pObjectName - name of the object for which to create structures.
|
||||
** pNumEffects - if not NULL will be set to a count of the IFREffect
|
||||
** structures in the array (not including the terminating NULL pointer.)
|
||||
** Returns a pointer to the allocated array of pointers to IFREffect
|
||||
** structures. The array is terminated with a NULL pointer. If the
|
||||
** function fails, a NULL pointer is returned.
|
||||
*/
|
||||
DLLAPI
|
||||
IFREffect **
|
||||
IFRAPI
|
||||
IFRCreateEffectStructs(
|
||||
HIFRPROJECT hProject,
|
||||
LPCSTR pObjectName,
|
||||
int *pNumEffects );
|
||||
|
||||
DLLAPI
|
||||
IFREffect **
|
||||
IFRAPI
|
||||
IFRCreateEffectStructsByIndex(
|
||||
HIFRPROJECT hProject,
|
||||
int nObjectIndex,
|
||||
int *pNumEffects );
|
||||
|
||||
DLLAPI
|
||||
int
|
||||
IFRAPI
|
||||
IFRGetNumEffects(
|
||||
HIFRPROJECT hProject
|
||||
);
|
||||
|
||||
DLLAPI
|
||||
LPCSTR
|
||||
IFRAPI
|
||||
IFRGetObjectNameByIndex(
|
||||
HIFRPROJECT hProject,
|
||||
int nObjectIndex );
|
||||
|
||||
DLLAPI
|
||||
LPCSTR
|
||||
IFRAPI
|
||||
IFRGetObjectSoundPath(
|
||||
HIFRPROJECT hProject,
|
||||
LPCSTR pObjectName );
|
||||
|
||||
DLLAPI
|
||||
DWORD
|
||||
IFRAPI
|
||||
IFRGetObjectType(
|
||||
HIFRPROJECT hProject,
|
||||
LPCSTR pObjectName );
|
||||
|
||||
DLLAPI
|
||||
DWORD
|
||||
IFRAPI
|
||||
IFRGetObjectTypeByIndex(
|
||||
HIFRPROJECT hProject,
|
||||
int nObjectIndex );
|
||||
|
||||
DLLAPI
|
||||
LPCSTR
|
||||
IFRAPI
|
||||
IFRGetObjectNameByGUID(
|
||||
HIFRPROJECT hProject,
|
||||
GUID *pGUID );
|
||||
|
||||
DLLAPI
|
||||
GUID
|
||||
IFRAPI
|
||||
IFRGetObjectID(
|
||||
HIFRPROJECT hProject,
|
||||
LPCSTR pObjectName);
|
||||
|
||||
DLLAPI
|
||||
GUID*
|
||||
IFRAPI
|
||||
IFRGetContainedObjIDs(
|
||||
HIFRPROJECT hProject,
|
||||
LPCSTR pCompoundObjName);
|
||||
|
||||
|
||||
/*
|
||||
** IFReleaseEffectStructs() - Release an array of IFREffects.
|
||||
** hProject - identifies the project for which the effects were created.
|
||||
** pEffects - points to the array of IFREffect pointers to be released.
|
||||
** Returns TRUE if the array is released, FALSE if it is an invalid array.
|
||||
*/
|
||||
DLLAPI
|
||||
BOOL
|
||||
IFRAPI
|
||||
IFRReleaseEffectStructs(
|
||||
HIFRPROJECT hProject,
|
||||
IFREffect **pEffects );
|
||||
|
||||
/*
|
||||
** IFCreateEffects() - Creates the DirectInput effects using
|
||||
** IDirectInput::CreateEffect().
|
||||
** hProject - identifies the project containing the object.
|
||||
** pObjectName - name of the object for which to create effects.
|
||||
** pNumEffects - if not NULL will be set to a count of the IDirectInputEffect
|
||||
** pointers in the array (not including the terminating NULL pointer.)
|
||||
** Returns a pointer to the allocated array of pointers to IDirectInputEffects.
|
||||
** The array is terminated with a NULL pointer. If the function fails,
|
||||
** a NULL pointer is returned.
|
||||
*/
|
||||
DLLAPI
|
||||
LPIIMM_EFFECT *
|
||||
IFRAPI
|
||||
IFRCreateEffects(
|
||||
HIFRPROJECT hProject,
|
||||
LPCSTR pObjectName,
|
||||
int *pNumEffects );
|
||||
|
||||
/*
|
||||
** IFReleaseEffects() - Releases an array of IDirectInputEffect structures.
|
||||
** hProject - identifies the project for which the effects were created.
|
||||
** pEffects - points to the array if IDirectInputEffect pointers to be released.
|
||||
** Returns TRUE if the array is released, FALSE if it is an invalid array.
|
||||
*/
|
||||
DLLAPI
|
||||
BOOL
|
||||
IFRAPI
|
||||
IFRReleaseEffects(
|
||||
HIFRPROJECT hProject,
|
||||
LPIIMM_EFFECT *pEffects );
|
||||
|
||||
#if defined __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* !IMMIFR_h */
|
||||
183
code/ff/IFC/ImmInertia.h
Normal file
183
code/ff/IFC/ImmInertia.h
Normal file
@@ -0,0 +1,183 @@
|
||||
/**********************************************************************
|
||||
Copyright (c) 1997 - 2000 Immersion Corporation
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this
|
||||
software and its documentation may be granted without fee;
|
||||
interested parties are encouraged to request permission from
|
||||
Immersion Corporation
|
||||
801 Fox Lane
|
||||
San Jose, CA 95131
|
||||
408-467-1900
|
||||
|
||||
IMMERSION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
|
||||
IN NO EVENT SHALL IMMERSION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
FILE: ImmInertia.h
|
||||
|
||||
PURPOSE: Immersion Foundation Classes Inertia Effect
|
||||
|
||||
STARTED: Dec.29.97
|
||||
|
||||
NOTES/REVISIONS:
|
||||
Mar.02.99 jrm (Jeff Mallett): Force-->Feel renaming
|
||||
Mar.02.99 jrm: Added GetIsCompatibleGUID
|
||||
Mar.15.99 jrm: __declspec(dllimport/dllexport) the whole class
|
||||
Nov.15.99 efw (Evan Wies): Converted to IFC
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
||||
#if !defined(AFX_IMMInertia_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
#define AFX_IMMInertia_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
|
||||
#ifndef _IFCDLL_
|
||||
#define DLLIFC __declspec(dllimport)
|
||||
#else
|
||||
#define DLLIFC __declspec(dllexport)
|
||||
#endif
|
||||
|
||||
#include <windows.h>
|
||||
#include "ImmCondition.h"
|
||||
|
||||
|
||||
//================================================================
|
||||
// Constants
|
||||
//================================================================
|
||||
|
||||
#define IMM_INERTIA_DEFAULT_COEFFICIENT 2500
|
||||
#define IMM_INERTIA_DEFAULT_SATURATION 10000
|
||||
#define IMM_INERTIA_DEFAULT_MIN_ACCELERATION 0
|
||||
|
||||
|
||||
|
||||
//================================================================
|
||||
// CImmInertia
|
||||
//================================================================
|
||||
|
||||
//
|
||||
// ------ PUBLIC INTERFACE ------
|
||||
//
|
||||
|
||||
class DLLIFC CImmInertia : public CImmCondition
|
||||
{
|
||||
//
|
||||
// CONSTRUCTOR/DESTRUCTOR
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
// Constructor
|
||||
CImmInertia();
|
||||
|
||||
// Destructor
|
||||
virtual
|
||||
~CImmInertia();
|
||||
|
||||
|
||||
//
|
||||
// ATTRIBUTES
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
virtual BOOL
|
||||
GetIsCompatibleGUID(
|
||||
GUID &guid
|
||||
);
|
||||
|
||||
BOOL
|
||||
ChangeParameters(
|
||||
DWORD dwCoefficient,
|
||||
DWORD dwSaturation = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwMinAcceleration = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lDirectionX = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lDirectionY = IMM_EFFECT_DONT_CHANGE
|
||||
);
|
||||
|
||||
BOOL
|
||||
ChangeParametersPolar(
|
||||
DWORD dwCoefficient,
|
||||
DWORD dwSaturation,
|
||||
DWORD dwMinAcceleration,
|
||||
LONG lAngle
|
||||
);
|
||||
|
||||
|
||||
BOOL ChangeMinAccelerationX( DWORD dwMinAcceleration );
|
||||
BOOL ChangeMinAccelerationY( DWORD dwMinAcceleration );
|
||||
BOOL ChangeMinAcceleration( DWORD dwMinAcceleration );
|
||||
|
||||
BOOL GetMinAccelerationX( DWORD &dwMinAcceleration );
|
||||
BOOL GetMinAccelerationY( DWORD &dwMinAcceleration );
|
||||
|
||||
//
|
||||
// OPERATIONS
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
virtual BOOL
|
||||
Initialize(
|
||||
CImmDevice* pDevice,
|
||||
DWORD dwCoefficient = IMM_INERTIA_DEFAULT_COEFFICIENT,
|
||||
DWORD dwSaturation = IMM_INERTIA_DEFAULT_SATURATION,
|
||||
DWORD dwMinAcceleration = IMM_INERTIA_DEFAULT_MIN_ACCELERATION,
|
||||
DWORD dwfAxis = IMM_EFFECT_AXIS_BOTH,
|
||||
LONG lDirectionX = IMM_EFFECT_DEFAULT_DIRECTION_X,
|
||||
LONG lDirectionY = IMM_EFFECT_DEFAULT_DIRECTION_Y,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
virtual BOOL
|
||||
InitializePolar(
|
||||
CImmDevice* pDevice,
|
||||
DWORD dwCoefficient,
|
||||
DWORD dwSaturation,
|
||||
DWORD dwMinAcceleration,
|
||||
LONG lAngle,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
|
||||
//
|
||||
// ------ PRIVATE INTERFACE ------
|
||||
//
|
||||
|
||||
//
|
||||
// HELPERS
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
//
|
||||
// INTERNAL DATA
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
//
|
||||
// INLINES
|
||||
//
|
||||
|
||||
inline BOOL
|
||||
CImmInertia::GetIsCompatibleGUID(GUID &guid)
|
||||
{
|
||||
return IsEqualGUID(guid, GUID_Imm_Inertia);
|
||||
}
|
||||
|
||||
|
||||
#endif // !defined(AFX_IMMInertia_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
|
||||
164
code/ff/IFC/ImmMouse.h
Normal file
164
code/ff/IFC/ImmMouse.h
Normal file
@@ -0,0 +1,164 @@
|
||||
/**********************************************************************
|
||||
Copyright (c) 1997 - 2000 Immersion Corporation
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this
|
||||
software and its documentation may be granted without fee;
|
||||
interested parties are encouraged to request permission from
|
||||
Immersion Corporation
|
||||
801 Fox Lane
|
||||
San Jose, CA 95131
|
||||
408-467-1900
|
||||
|
||||
IMMERSION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
|
||||
IN NO EVENT SHALL IMMERSION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
FILE: ImmMouse.h
|
||||
|
||||
PURPOSE: Abstraction of Feelit mouse device
|
||||
|
||||
STARTED: 10/10/97
|
||||
|
||||
NOTES/REVISIONS:
|
||||
3/2/99 jrm (Jeff Mallett): Force-->Feel renaming
|
||||
3/15/99 jrm: __declspec(dllimport/dllexport) the whole class
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
#ifndef ImmMouse_h
|
||||
#define ImmMouse_h
|
||||
|
||||
#ifndef _IFCDLL_
|
||||
#define DLLIFC __declspec(dllimport)
|
||||
#else
|
||||
#define DLLIFC __declspec(dllexport)
|
||||
#endif
|
||||
|
||||
#include "ImmDevice.h"
|
||||
|
||||
|
||||
//================================================================
|
||||
// CImmMouse
|
||||
//================================================================
|
||||
|
||||
//
|
||||
// ------ PUBLIC INTERFACE ------
|
||||
//
|
||||
|
||||
class DLLIFC CImmMouse : public CImmDevice
|
||||
{
|
||||
|
||||
//
|
||||
// CONSTRUCTOR/DESCTRUCTOR
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
// Constructor
|
||||
CImmMouse();
|
||||
|
||||
// Destructor
|
||||
virtual
|
||||
~CImmMouse();
|
||||
|
||||
|
||||
//
|
||||
// ATTRIBUTES
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
virtual LPIIMM_API
|
||||
GetAPI()
|
||||
{ return m_piApi; }
|
||||
|
||||
virtual LPIIMM_DEVICE
|
||||
GetDevice()
|
||||
{ return m_piDevice; }
|
||||
|
||||
virtual DWORD GetProductType();
|
||||
|
||||
virtual BOOL GetDriverVersion(
|
||||
DWORD &dwFFDriverVersion,
|
||||
DWORD &dwFirmwareRevision,
|
||||
DWORD &dwHardwareRevision);
|
||||
|
||||
virtual int GetProductName(LPTSTR lpszProductName, int nMaxCount);
|
||||
virtual int GetProductGUIDString(LPTSTR lpszGUID, int nMaxCount);
|
||||
virtual GUID GetProductGUID();
|
||||
|
||||
BOOL
|
||||
HaveImmMouse()
|
||||
{ return m_piDevice != NULL; }
|
||||
|
||||
|
||||
//
|
||||
// OPERATIONS
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
BOOL
|
||||
Initialize(
|
||||
HANDLE hinstApp,
|
||||
HANDLE hwndApp,
|
||||
DWORD dwCooperativeFlag = IMM_COOPLEVEL_FOREGROUND,
|
||||
BOOL bEnumerate = TRUE
|
||||
);
|
||||
|
||||
virtual BOOL
|
||||
ChangeScreenResolution(
|
||||
BOOL bAutoSet,
|
||||
DWORD dwXScreenSize = 0,
|
||||
DWORD dwYScreenSize = 0
|
||||
);
|
||||
|
||||
// Another syntax for SwitchToAbsoluteMode.
|
||||
// The default is Absolute mode. Call only to switch to Relative mode or
|
||||
// to switch back to Absolute mode.
|
||||
virtual BOOL
|
||||
SwitchToAbsoluteMode(
|
||||
BOOL bAbsMode
|
||||
);
|
||||
|
||||
virtual BOOL
|
||||
GetCurrentPosition( long &lXPos, long &lYPos );
|
||||
|
||||
//
|
||||
// ------ PRIVATE INTERFACE ------
|
||||
//
|
||||
|
||||
//
|
||||
// HELPERS
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
virtual void
|
||||
reset();
|
||||
|
||||
virtual BOOL
|
||||
prepare_device();
|
||||
|
||||
friend class CImmDevices;
|
||||
static BOOL CALLBACK
|
||||
devices_enum_proc(
|
||||
LPIMM_DEVICEINSTANCE pImmDevInst,
|
||||
LPVOID pv
|
||||
);
|
||||
|
||||
//
|
||||
// INTERNAL DATA
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
LPIIMM_API m_piApi;
|
||||
LPIIMM_DEVICE m_piDevice;
|
||||
};
|
||||
|
||||
#endif // ImmMouse_h
|
||||
259
code/ff/IFC/ImmPeriodic.h
Normal file
259
code/ff/IFC/ImmPeriodic.h
Normal file
@@ -0,0 +1,259 @@
|
||||
/**********************************************************************
|
||||
Copyright (c) 1997 - 2000 Immersion Corporation
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this
|
||||
software and its documentation may be granted without fee;
|
||||
interested parties are encouraged to request permission from
|
||||
Immersion Corporation
|
||||
801 Fox Lane
|
||||
San Jose, CA 95131
|
||||
408-467-1900
|
||||
|
||||
IMMERSION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
|
||||
IN NO EVENT SHALL IMMERSION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
FILE: ImmPeriodic.h
|
||||
|
||||
PURPOSE: Base Periodic Class for Immersion Foundation Classes
|
||||
|
||||
STARTED: 11/03/97
|
||||
|
||||
NOTES/REVISIONS:
|
||||
3/2/99 jrm (Jeff Mallett): Force-->Feel renaming
|
||||
3/2/99 jrm: Added GetIsCompatibleGUID
|
||||
3/15/99 jrm: __declspec(dllimport/dllexport) the whole class
|
||||
11/15/99 sdr (Steve Rank): Converted to IFC
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
||||
#if !defined(AFX_IMMPERIODIC_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
#define AFX_IMMPERIODIC_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
|
||||
#ifndef _IFCDLL_
|
||||
#define DLLIFC __declspec(dllimport)
|
||||
#else
|
||||
#define DLLIFC __declspec(dllexport)
|
||||
#endif
|
||||
|
||||
#include "ImmBaseTypes.h"
|
||||
#include "ImmEffect.h"
|
||||
|
||||
|
||||
|
||||
//================================================================
|
||||
// Constants
|
||||
//================================================================
|
||||
|
||||
#define IMM_PERIODIC_DEFAULT_DURATION 1000 // Milliseconds
|
||||
#define IMM_PERIODIC_DEFAULT_MAGNITUDE 5000
|
||||
#define IMM_PERIODIC_DEFAULT_PERIOD 100 // Milliseconds
|
||||
#define IMM_PERIODIC_DEFAULT_OFFSET 0
|
||||
#define IMM_PERIODIC_DEFAULT_PHASE 0 // Degrees
|
||||
#define IMM_PERIODIC_DEFAULT_DIRECTION_X 1 // Pixels
|
||||
#define IMM_PERIODIC_DEFAULT_DIRECTION_Y 0 // Pixels
|
||||
#define IMM_PERIODIC_DEFAULT_ANGLE 9000 // 100ths of degrees
|
||||
|
||||
|
||||
|
||||
|
||||
//================================================================
|
||||
// CImmPeriodic
|
||||
//================================================================
|
||||
|
||||
//
|
||||
// ------ PUBLIC INTERFACE ------
|
||||
//
|
||||
|
||||
class DLLIFC CImmPeriodic : public CImmEffect
|
||||
{
|
||||
//
|
||||
// CONSTRUCTOR/DESTRUCTOR
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
// Constructors
|
||||
|
||||
// You may use this form if you will immediately initialize it
|
||||
// from an IFR file...
|
||||
CImmPeriodic();
|
||||
|
||||
// Otherwise use this form...
|
||||
CImmPeriodic(
|
||||
const GUID& rguidEffect
|
||||
);
|
||||
|
||||
// Destructor
|
||||
virtual
|
||||
~CImmPeriodic();
|
||||
|
||||
|
||||
//
|
||||
// ATTRIBUTES
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
virtual BOOL
|
||||
GetIsCompatibleGUID(
|
||||
GUID &guid
|
||||
);
|
||||
|
||||
virtual DWORD GetEffectType()
|
||||
{ return IMM_EFFECTTYPE_PERIODIC; }
|
||||
|
||||
BOOL
|
||||
ChangeParameters(
|
||||
DWORD dwMagnitude,
|
||||
DWORD dwPeriod = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwDuration = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lDirectionX = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lDirectionY = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lOffset = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwPhase = IMM_EFFECT_DONT_CHANGE,
|
||||
LPIMM_ENVELOPE pEnvelope = (LPIMM_ENVELOPE) IMM_EFFECT_DONT_CHANGE_PTR
|
||||
);
|
||||
|
||||
BOOL
|
||||
ChangeParametersPolar(
|
||||
DWORD dwMagnitude,
|
||||
DWORD dwPeriod = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwDuration = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lAngle = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lOffset = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwPhase = IMM_EFFECT_DONT_CHANGE,
|
||||
LPIMM_ENVELOPE pEnvelope = (LPIMM_ENVELOPE) IMM_EFFECT_DONT_CHANGE_PTR
|
||||
);
|
||||
|
||||
BOOL ChangeMagnitude( DWORD dwMagnitude );
|
||||
BOOL ChangePeriod( DWORD dwPeriod );
|
||||
BOOL ChangeOffset( LONG lOffset );
|
||||
BOOL ChangePhase( DWORD dwPhase );
|
||||
|
||||
BOOL GetMagnitude( DWORD &dwMagnitude );
|
||||
BOOL GetPeriod( DWORD &dwPeriod );
|
||||
BOOL GetOffset( LONG &lOffset );
|
||||
BOOL GetPhase( DWORD &dwPhase );
|
||||
|
||||
//
|
||||
// OPERATIONS
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
virtual BOOL
|
||||
Initialize(
|
||||
CImmDevice* pDevice,
|
||||
const IMM_EFFECT &effect,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
virtual BOOL
|
||||
Initialize(
|
||||
CImmDevice* pDevice,
|
||||
DWORD dwMagnitude = IMM_PERIODIC_DEFAULT_MAGNITUDE,
|
||||
DWORD dwPeriod = IMM_PERIODIC_DEFAULT_PERIOD,
|
||||
DWORD dwDuration = IMM_PERIODIC_DEFAULT_DURATION,
|
||||
LONG lDirectionX = IMM_PERIODIC_DEFAULT_DIRECTION_X,
|
||||
LONG lDirectionY = IMM_PERIODIC_DEFAULT_DIRECTION_Y,
|
||||
LONG lOffset = IMM_PERIODIC_DEFAULT_OFFSET,
|
||||
DWORD dwPhase = IMM_PERIODIC_DEFAULT_PHASE,
|
||||
LPIMM_ENVELOPE pEnvelope = NULL,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
virtual BOOL
|
||||
InitializePolar(
|
||||
CImmDevice* pDevice,
|
||||
DWORD dwMagnitude = IMM_PERIODIC_DEFAULT_MAGNITUDE,
|
||||
DWORD dwPeriod = IMM_PERIODIC_DEFAULT_PERIOD,
|
||||
DWORD dwDuration = IMM_PERIODIC_DEFAULT_DURATION,
|
||||
LONG lAngle = IMM_PERIODIC_DEFAULT_ANGLE,
|
||||
LONG lOffset = IMM_PERIODIC_DEFAULT_OFFSET,
|
||||
DWORD dwPhase = IMM_PERIODIC_DEFAULT_PHASE,
|
||||
LPIMM_ENVELOPE pEnvelope = NULL,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
|
||||
//
|
||||
// ------ PRIVATE INTERFACE ------
|
||||
//
|
||||
|
||||
//
|
||||
// HELPERS
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
BOOL
|
||||
set_parameters(
|
||||
DWORD dwfCoordinates,
|
||||
LONG lDirection0,
|
||||
LONG lDirection1,
|
||||
DWORD dwDuration,
|
||||
DWORD dwMagnitude,
|
||||
DWORD dwPeriod,
|
||||
LONG lOffset,
|
||||
DWORD dwPhase,
|
||||
LPIMM_ENVELOPE pEnvelope
|
||||
);
|
||||
|
||||
DWORD
|
||||
change_parameters(
|
||||
LONG lDirection0,
|
||||
LONG lDirection1,
|
||||
DWORD dwDuration,
|
||||
DWORD dwMagnitude,
|
||||
DWORD dwPeriod,
|
||||
LONG lOffset,
|
||||
DWORD dwPhase,
|
||||
LPIMM_ENVELOPE pEnvelope
|
||||
);
|
||||
|
||||
int
|
||||
buffer_ifr_data(
|
||||
TCHAR* pData
|
||||
);
|
||||
|
||||
BOOL
|
||||
get_ffe_data(
|
||||
LPDIEFFECT pdiEffect
|
||||
);
|
||||
|
||||
//
|
||||
// INTERNAL DATA
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
IMM_PERIODIC m_Periodic;
|
||||
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// INLINES
|
||||
//
|
||||
|
||||
inline BOOL
|
||||
CImmPeriodic::GetIsCompatibleGUID(GUID &guid)
|
||||
{
|
||||
return IsEqualGUID(guid, GUID_Imm_Sine) ||
|
||||
IsEqualGUID(guid, GUID_Imm_Square) ||
|
||||
IsEqualGUID(guid, GUID_Imm_Triangle) ||
|
||||
IsEqualGUID(guid, GUID_Imm_SawtoothUp) ||
|
||||
IsEqualGUID(guid, GUID_Imm_SawtoothDown);
|
||||
}
|
||||
|
||||
#endif // !defined(AFX_IMMPERIODIC_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
392
code/ff/IFC/ImmProjects.h
Normal file
392
code/ff/IFC/ImmProjects.h
Normal file
@@ -0,0 +1,392 @@
|
||||
/**********************************************************************
|
||||
Copyright (c) 1999 - 2000 Immersion Corporation
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this
|
||||
software and its documentation may be granted without fee;
|
||||
interested parties are encouraged to request permission from
|
||||
Immersion Corporation
|
||||
801 Fox Lane
|
||||
San Jose, CA 95131
|
||||
408-467-1900
|
||||
|
||||
IMMERSION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
|
||||
IN NO EVENT SHALL IMMERSION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
FILE: ImmProjects.h
|
||||
|
||||
PURPOSE: CImmProject
|
||||
Manages a set of forces in a project.
|
||||
There will be a project for each opened IFR file.
|
||||
CImmProjects
|
||||
Manages a set of projects
|
||||
|
||||
STARTED: 2/22/99 by Jeff Mallett
|
||||
|
||||
|
||||
NOTES/REVISIONS:
|
||||
3/2/99 jrm (Jeff Mallett): Force-->Feel renaming
|
||||
3/15/99 jrm: __declspec(dllimport/dllexport) the whole class
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
#ifndef __IMM_PROJECTS_H
|
||||
#define __IMM_PROJECTS_H
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
|
||||
#ifndef _IFCDLL_
|
||||
#define DLLIFC __declspec(dllimport)
|
||||
#else
|
||||
#define DLLIFC __declspec(dllexport)
|
||||
#endif
|
||||
|
||||
|
||||
#include "IFCErrors.h"
|
||||
#include "ImmBaseTypes.h"
|
||||
#include "ImmDevice.h"
|
||||
#include "ImmCompoundEffect.h"
|
||||
|
||||
class CImmProjects;
|
||||
|
||||
|
||||
//================================================================
|
||||
// CImmProject
|
||||
//================================================================
|
||||
|
||||
//
|
||||
// ------ PUBLIC INTERFACE ------
|
||||
//
|
||||
|
||||
class DLLIFC CImmProject
|
||||
{
|
||||
//
|
||||
// CONSTRUCTOR/DESTRUCTOR
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
CImmProject();
|
||||
|
||||
~CImmProject();
|
||||
|
||||
void
|
||||
Close();
|
||||
|
||||
|
||||
//
|
||||
// ATTRIBUTES
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
CImmDevice*
|
||||
GetDevice() const
|
||||
{ return m_pDevice; }
|
||||
|
||||
BOOL
|
||||
GetIsOpen() const
|
||||
{ return m_hProj != NULL; }
|
||||
|
||||
CImmCompoundEffect *
|
||||
GetCreatedEffect(
|
||||
LPCSTR lpszEffectName
|
||||
);
|
||||
|
||||
CImmCompoundEffect *
|
||||
GetCreatedEffect(
|
||||
int nIndex
|
||||
);
|
||||
|
||||
int
|
||||
GetNumEffectsFromIFR();
|
||||
|
||||
LPCSTR
|
||||
GetEffectNameFromIFRbyIndex(
|
||||
int nEffectIndex
|
||||
);
|
||||
|
||||
LPCSTR
|
||||
GetEffectSoundPathFromIFR(
|
||||
LPCSTR lpszEffectName
|
||||
);
|
||||
|
||||
DWORD
|
||||
GetEffectType(
|
||||
LPCSTR lpszEffectName
|
||||
);
|
||||
|
||||
DWORD
|
||||
GetEffectTypeFromIFR(
|
||||
LPCSTR lpszEffectName
|
||||
);
|
||||
|
||||
DWORD
|
||||
GetEffectTypeFromIFR(
|
||||
int nEffectIndex
|
||||
);
|
||||
|
||||
int
|
||||
GetNumCreatedEffects()
|
||||
{ return m_nCreatedEffects;}
|
||||
|
||||
//
|
||||
// OPERATIONS
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
BOOL
|
||||
Start(
|
||||
LPCSTR lpszEffectName = NULL,
|
||||
DWORD dwIterations = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwFlags = 0,
|
||||
CImmDevice* pDevice = NULL
|
||||
);
|
||||
|
||||
BOOL
|
||||
Stop(
|
||||
LPCSTR lpszEffectName = NULL
|
||||
);
|
||||
|
||||
BOOL
|
||||
OpenFile(
|
||||
LPCSTR lpszFilePath,
|
||||
CImmDevice *pDevice
|
||||
);
|
||||
|
||||
BOOL
|
||||
LoadProjectFromResource(
|
||||
HMODULE hRsrcModule,
|
||||
LPCSTR pRsrcName,
|
||||
CImmDevice *pDevice
|
||||
);
|
||||
|
||||
BOOL
|
||||
LoadProjectFromMemory(
|
||||
LPVOID pProjectDef,
|
||||
CImmDevice *pDevice
|
||||
);
|
||||
|
||||
BOOL
|
||||
LoadProjectObjectPointer(
|
||||
BYTE *pMem,
|
||||
CImmDevice *pDevice
|
||||
);
|
||||
|
||||
BOOL
|
||||
WriteToFile(
|
||||
LPCSTR lpszFilename
|
||||
);
|
||||
|
||||
CImmCompoundEffect *
|
||||
CreateEffect(
|
||||
LPCSTR lpszEffectName,
|
||||
CImmDevice* pDevice = NULL,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
CImmCompoundEffect *
|
||||
CreateEffectByIndex(
|
||||
int nEffectIndex,
|
||||
CImmDevice* pDevice = NULL,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
CImmCompoundEffect *
|
||||
AddEffect(
|
||||
LPCSTR lpszEffectName,
|
||||
GENERIC_EFFECT_PTR pObject
|
||||
);
|
||||
|
||||
#if (IFC_VERSION >= 0x0101)
|
||||
void
|
||||
DestroyEffect(
|
||||
CImmCompoundEffect *pCompoundEffect
|
||||
);
|
||||
#endif
|
||||
|
||||
//
|
||||
// ------ PRIVATE INTERFACE ------
|
||||
//
|
||||
|
||||
//
|
||||
// HELPERS
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
void
|
||||
set_next(
|
||||
CImmProject *pNext
|
||||
)
|
||||
{ m_pNext = pNext; }
|
||||
|
||||
CImmProject *
|
||||
get_next() const
|
||||
{ return m_pNext; }
|
||||
|
||||
void
|
||||
append_effect_to_list(
|
||||
CImmCompoundEffect* pEffect
|
||||
);
|
||||
#if (IFC_VERSION >= 0x0101)
|
||||
BOOL
|
||||
remove_effect_from_list(
|
||||
CImmCompoundEffect* pEffect
|
||||
);
|
||||
#endif
|
||||
|
||||
IFREffect **
|
||||
create_effect_structs(
|
||||
LPCSTR lpszEffectName,
|
||||
int &nEff
|
||||
);
|
||||
|
||||
IFREffect **
|
||||
create_effect_structs_by_index(
|
||||
int nEffectIndex,
|
||||
int &nEff
|
||||
);
|
||||
|
||||
BOOL
|
||||
release_effect_structs(
|
||||
IFREffect **hEffects
|
||||
);
|
||||
|
||||
//
|
||||
// FRIENDS
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
friend BOOL
|
||||
CImmEffect::InitializeFromProject(
|
||||
CImmProject &project,
|
||||
LPCSTR lpszEffectName,
|
||||
CImmDevice* pDevice, /* = NULL */
|
||||
DWORD dwNoDownload // = 0
|
||||
);
|
||||
|
||||
#ifdef PROTECT_AGAINST_DELETION
|
||||
friend CImmCompoundEffect::~CImmCompoundEffect();
|
||||
#endif
|
||||
|
||||
friend class CImmProjects;
|
||||
|
||||
//
|
||||
// INTERNAL DATA
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
HIFRPROJECT m_hProj;
|
||||
DWORD m_dwProjectFileType;
|
||||
CImmCompoundEffect* m_pCreatedEffects;
|
||||
CImmDevice* m_pDevice;
|
||||
LPDIRECTINPUT m_piDI7;
|
||||
LPDIRECTINPUTDEVICE2 m_piDIDevice7;
|
||||
TCHAR m_szProjectFileName[MAX_PATH];
|
||||
|
||||
int m_nCreatedEffects;
|
||||
|
||||
private:
|
||||
|
||||
CImmProject* m_pNext;
|
||||
};
|
||||
|
||||
|
||||
|
||||
//================================================================
|
||||
// CImmProjects
|
||||
//================================================================
|
||||
|
||||
//
|
||||
// ------ PUBLIC INTERFACE ------
|
||||
//
|
||||
|
||||
class DLLIFC CImmProjects
|
||||
{
|
||||
//
|
||||
// CONSTRUCTOR/DESTRUCTOR
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
CImmProjects() : m_pProjects(NULL) { }
|
||||
|
||||
~CImmProjects();
|
||||
|
||||
void
|
||||
Close();
|
||||
|
||||
|
||||
//
|
||||
// ATTRIBUTES
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
CImmProject *
|
||||
GetProject(
|
||||
int index = 0
|
||||
);
|
||||
|
||||
|
||||
//
|
||||
// OPERATIONS
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
BOOL
|
||||
Stop();
|
||||
|
||||
long
|
||||
OpenFile(
|
||||
LPCSTR lpszFilePath,
|
||||
CImmDevice *pDevice
|
||||
);
|
||||
|
||||
long
|
||||
LoadProjectFromResource(
|
||||
HMODULE hRsrcModule,
|
||||
LPCSTR pRsrcName,
|
||||
CImmDevice *pDevice
|
||||
);
|
||||
|
||||
long
|
||||
LoadProjectFromMemory(
|
||||
LPVOID pProjectDef,
|
||||
CImmDevice *pDevice
|
||||
);
|
||||
|
||||
|
||||
//
|
||||
// ------ PRIVATE INTERFACE ------
|
||||
//
|
||||
|
||||
//
|
||||
// HELPERS
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
//
|
||||
// INTERNAL DATA
|
||||
//
|
||||
protected:
|
||||
|
||||
CImmProject *m_pProjects;
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif // __IMM_PROJECTS_H
|
||||
225
code/ff/IFC/ImmRamp.h
Normal file
225
code/ff/IFC/ImmRamp.h
Normal file
@@ -0,0 +1,225 @@
|
||||
/**********************************************************************
|
||||
Copyright (c) 1997 - 2000 Immersion Corporation
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this
|
||||
software and its documentation may be granted without fee;
|
||||
interested parties are encouraged to request permission from
|
||||
Immersion Corporation
|
||||
801 Fox Lane
|
||||
San Jose, CA 95131
|
||||
408-467-1900
|
||||
|
||||
IMMERSION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
|
||||
IN NO EVENT SHALL IMMERSION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
FILE: ImmRamp.h
|
||||
|
||||
PURPOSE: Base Ramp Force Class for Immersion Foundation Classes
|
||||
|
||||
STARTED: 12/11/97
|
||||
|
||||
NOTES/REVISIONS:
|
||||
3/2/99 jrm (Jeff Mallett): Force-->Feel renaming
|
||||
3/2/99 jrm: Added GetIsCompatibleGUID
|
||||
3/15/99 jrm: __declspec(dllimport/dllexport) the whole class
|
||||
11/15/99 sdr (Steve Rank): Converted to IFC
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
||||
#if !defined(AFX_IMMRAMP_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
#define AFX_IMMRAMP_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
|
||||
#ifndef _IFCDLL_
|
||||
#define DLLIFC __declspec(dllimport)
|
||||
#else
|
||||
#define DLLIFC __declspec(dllexport)
|
||||
#endif
|
||||
|
||||
#include "ImmBaseTypes.h"
|
||||
#include "ImmEffect.h"
|
||||
|
||||
|
||||
|
||||
//================================================================
|
||||
// Constants
|
||||
//================================================================
|
||||
|
||||
#define IMM_RAMP_DEFAULT_DURATION 1000 // Milliseconds
|
||||
#define IMM_RAMP_DEFAULT_MAGNITUDE_START 0
|
||||
#define IMM_RAMP_DEFAULT_MAGNITUDE_END 10000
|
||||
|
||||
|
||||
|
||||
//================================================================
|
||||
// CImmRamp
|
||||
//================================================================
|
||||
|
||||
//
|
||||
// ------ PUBLIC INTERFACE ------
|
||||
//
|
||||
|
||||
class DLLIFC CImmRamp : public CImmEffect
|
||||
{
|
||||
//
|
||||
// CONSTRUCTOR/DESTRUCTOR
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
// Constructor
|
||||
CImmRamp();
|
||||
|
||||
// Destructor
|
||||
virtual
|
||||
~CImmRamp();
|
||||
|
||||
|
||||
//
|
||||
// ATTRIBUTES
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
virtual BOOL
|
||||
GetIsCompatibleGUID(
|
||||
GUID &guid
|
||||
);
|
||||
|
||||
virtual DWORD GetEffectType()
|
||||
{ return IMM_EFFECTTYPE_RAMPFORCE; }
|
||||
|
||||
BOOL
|
||||
ChangeParameters(
|
||||
LONG lDirectionX,
|
||||
LONG lDirectionY,
|
||||
DWORD dwDuration = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lMagStart = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lMagEnd = IMM_EFFECT_DONT_CHANGE,
|
||||
LPIMM_ENVELOPE pEnvelope = (LPIMM_ENVELOPE) IMM_EFFECT_DONT_CHANGE_PTR
|
||||
);
|
||||
|
||||
BOOL
|
||||
ChangeParametersPolar(
|
||||
LONG lAngle,
|
||||
DWORD dwDuration = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lMagStart = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lMagEnd = IMM_EFFECT_DONT_CHANGE,
|
||||
LPIMM_ENVELOPE pEnvelope = (LPIMM_ENVELOPE) IMM_EFFECT_DONT_CHANGE_PTR
|
||||
);
|
||||
|
||||
BOOL ChangeStartMagnitude( LONG lMagStart );
|
||||
BOOL ChangeEndMagnitude( LONG lMagEnd );
|
||||
|
||||
BOOL GetStartMagnitude( LONG &lMagStart );
|
||||
BOOL GetEndMagnitude( LONG &lMagEnd );
|
||||
|
||||
//
|
||||
// OPERATIONS
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
virtual BOOL
|
||||
Initialize(
|
||||
CImmDevice* pDevice,
|
||||
const IMM_EFFECT &effect,
|
||||
DWORD dwFlags = 0
|
||||
);
|
||||
|
||||
virtual BOOL
|
||||
Initialize(
|
||||
CImmDevice* pDevice,
|
||||
LONG lDirectionX = IMM_EFFECT_DEFAULT_DIRECTION_X,
|
||||
LONG lDirectionY = IMM_EFFECT_DEFAULT_DIRECTION_Y,
|
||||
DWORD dwDuration = IMM_RAMP_DEFAULT_DURATION,
|
||||
LONG lMagStart = IMM_RAMP_DEFAULT_MAGNITUDE_START,
|
||||
LONG lMagEnd = IMM_RAMP_DEFAULT_MAGNITUDE_END,
|
||||
LPIMM_ENVELOPE pEnvelope = NULL,
|
||||
DWORD dwFlags = 0
|
||||
);
|
||||
|
||||
virtual BOOL
|
||||
InitializePolar(
|
||||
CImmDevice* pDevice,
|
||||
LONG lAngle = IMM_EFFECT_DEFAULT_ANGLE,
|
||||
DWORD dwDuration = IMM_RAMP_DEFAULT_DURATION,
|
||||
LONG lMagStart = IMM_RAMP_DEFAULT_MAGNITUDE_START,
|
||||
LONG lMagEnd = IMM_RAMP_DEFAULT_MAGNITUDE_END,
|
||||
LPIMM_ENVELOPE pEnvelope = NULL,
|
||||
DWORD dwFlags = 0
|
||||
);
|
||||
|
||||
|
||||
//
|
||||
// ------ PRIVATE INTERFACE ------
|
||||
//
|
||||
|
||||
//
|
||||
// HELPERS
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
BOOL
|
||||
set_parameters(
|
||||
DWORD dwfCoordinates,
|
||||
LONG lDirection0,
|
||||
LONG lDirection1,
|
||||
DWORD dwDuration,
|
||||
LONG lMagStart,
|
||||
LONG lMagEnd,
|
||||
LPIMM_ENVELOPE pEnvelope
|
||||
);
|
||||
|
||||
DWORD
|
||||
change_parameters(
|
||||
LONG lDirection0,
|
||||
LONG lDirection1,
|
||||
DWORD dwDuration,
|
||||
LONG lMagStart,
|
||||
LONG lMagEnd,
|
||||
LPIMM_ENVELOPE pEnvelope
|
||||
);
|
||||
|
||||
int
|
||||
buffer_ifr_data(
|
||||
TCHAR* pData
|
||||
);
|
||||
|
||||
BOOL
|
||||
get_ffe_data(
|
||||
LPDIEFFECT pdiEffect
|
||||
);
|
||||
|
||||
//
|
||||
// INTERNAL DATA
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
IMM_RAMPFORCE m_RampForce;
|
||||
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// INLINES
|
||||
//
|
||||
|
||||
inline BOOL
|
||||
CImmRamp::GetIsCompatibleGUID(GUID &guid)
|
||||
{
|
||||
return IsEqualGUID(guid, GUID_Imm_RampForce);
|
||||
}
|
||||
|
||||
#endif // !defined(AFX_IMMRAMP_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
183
code/ff/IFC/ImmSpring.h
Normal file
183
code/ff/IFC/ImmSpring.h
Normal file
@@ -0,0 +1,183 @@
|
||||
/**********************************************************************
|
||||
Copyright (c) 1997 - 2000 Immersion Corporation
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this
|
||||
software and its documentation may be granted without fee;
|
||||
interested parties are encouraged to request permission from
|
||||
Immersion Corporation
|
||||
801 Fox Lane
|
||||
San Jose, CA 95131
|
||||
408-467-1900
|
||||
|
||||
IMMERSION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
|
||||
IN NO EVENT SHALL IMMERSION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
FILE: ImmSpring.h
|
||||
|
||||
PURPOSE: Immersion Foundation Classes Spring Effect
|
||||
|
||||
STARTED: Oct.10.97
|
||||
|
||||
NOTES/REVISIONS:
|
||||
Mar.02.99 jrm (Jeff Mallett): Force-->Feel renaming
|
||||
Mar.02.99 jrm: Added GetIsCompatibleGUID
|
||||
Mar.15.99 jrm: __declspec(dllimport/dllexport) the whole class
|
||||
Nov.15.99 efw (Evan Wies): Converted to IFC
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
||||
#if !defined(AFX_IMMSpring_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
#define AFX_IMMSpring_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
|
||||
#ifndef _IFCDLL_
|
||||
#define DLLIFC __declspec(dllimport)
|
||||
#else
|
||||
#define DLLIFC __declspec(dllexport)
|
||||
#endif
|
||||
|
||||
#include <windows.h>
|
||||
#include "ImmCondition.h"
|
||||
|
||||
|
||||
//================================================================
|
||||
// Constants
|
||||
//================================================================
|
||||
|
||||
#define IMM_SPRING_DEFAULT_STIFFNESS 2500
|
||||
#define IMM_SPRING_DEFAULT_SATURATION 10000
|
||||
#define IMM_SPRING_DEFAULT_DEADBAND 100
|
||||
#define IMM_SPRING_DEFAULT_CENTER_POINT IMM_EFFECT_MOUSE_POS_AT_START
|
||||
#define IMM_SPRING_DEFAULT_DIRECTION_X 1
|
||||
#define IMM_SPRING_DEFAULT_DIRECTION_Y 0
|
||||
#define IMM_SPRING_DEFAULT_ANGLE 0
|
||||
|
||||
|
||||
//================================================================
|
||||
// CImmSpring
|
||||
//================================================================
|
||||
|
||||
//
|
||||
// ------ PUBLIC INTERFACE ------
|
||||
//
|
||||
|
||||
class DLLIFC CImmSpring : public CImmCondition
|
||||
{
|
||||
//
|
||||
// CONSTRUCTOR/DESTRUCTOR
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
// Constructor
|
||||
CImmSpring();
|
||||
|
||||
// Destructor
|
||||
virtual
|
||||
~CImmSpring();
|
||||
|
||||
|
||||
//
|
||||
// ATTRIBUTES
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
virtual BOOL
|
||||
GetIsCompatibleGUID(
|
||||
GUID &guid
|
||||
);
|
||||
|
||||
BOOL
|
||||
ChangeParameters(
|
||||
POINT pntCenter,
|
||||
LONG lStiffness = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwSaturation = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwDeadband = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lDirectionX = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lDirectionY = IMM_EFFECT_DONT_CHANGE
|
||||
);
|
||||
|
||||
BOOL
|
||||
ChangeParametersPolar(
|
||||
POINT pntCenter,
|
||||
LONG lStiffness,
|
||||
DWORD dwSaturation,
|
||||
DWORD dwDeadband,
|
||||
LONG lAngle
|
||||
);
|
||||
|
||||
//
|
||||
// OPERATIONS
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
virtual BOOL
|
||||
Initialize(
|
||||
CImmDevice* pDevice,
|
||||
LONG lStiffness = IMM_SPRING_DEFAULT_STIFFNESS,
|
||||
DWORD dwSaturation = IMM_SPRING_DEFAULT_SATURATION,
|
||||
DWORD dwDeadband = IMM_SPRING_DEFAULT_DEADBAND,
|
||||
DWORD dwfAxis = IMM_EFFECT_AXIS_BOTH,
|
||||
POINT pntCenter = IMM_SPRING_DEFAULT_CENTER_POINT,
|
||||
LONG lDirectionX = IMM_SPRING_DEFAULT_DIRECTION_X,
|
||||
LONG lDirectionY = IMM_SPRING_DEFAULT_DIRECTION_Y,
|
||||
BOOL bUseDeviceCoordinates = FALSE,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
virtual BOOL
|
||||
InitializePolar(
|
||||
CImmDevice* pDevice,
|
||||
LONG lStiffness,
|
||||
DWORD dwSaturation,
|
||||
DWORD dwDeadband,
|
||||
POINT pntCenter,
|
||||
LONG lAngle,
|
||||
BOOL bUseDeviceCoordinates = FALSE,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
|
||||
//
|
||||
// ------ PRIVATE INTERFACE ------
|
||||
//
|
||||
|
||||
//
|
||||
// HELPERS
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
//
|
||||
// INTERNAL DATA
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
//
|
||||
// INLINES
|
||||
//
|
||||
|
||||
inline BOOL
|
||||
CImmSpring::GetIsCompatibleGUID(GUID &guid)
|
||||
{
|
||||
return IsEqualGUID(guid, GUID_Imm_Spring);
|
||||
}
|
||||
|
||||
#endif // !defined(AFX_IMMSpring_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
|
||||
407
code/ff/IFC/ImmTexture.h
Normal file
407
code/ff/IFC/ImmTexture.h
Normal file
@@ -0,0 +1,407 @@
|
||||
/**********************************************************************
|
||||
Copyright (c) 1997 - 2000 Immersion Corporation
|
||||
|
||||
Permission to use, copy, modify, distribute, and sell this
|
||||
software and its documentation may be granted without fee;
|
||||
interested parties are encouraged to request permission from
|
||||
Immersion Corporation
|
||||
801 Fox Lane
|
||||
San Jose, CA 95131
|
||||
408-467-1900
|
||||
|
||||
IMMERSION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
|
||||
IN NO EVENT SHALL IMMERSION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
FILE: ImmTexture.h
|
||||
|
||||
PURPOSE: Texture Class for Feelit API Foundation Classes
|
||||
|
||||
STARTED: 2/27/98
|
||||
|
||||
NOTES/REVISIONS:
|
||||
3/2/99 jrm (Jeff Mallett): Force-->Feel renaming
|
||||
3/2/99 jrm: Added GetIsCompatibleGUID
|
||||
3/15/99 jrm: __declspec(dllimport/dllexport) the whole class
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
||||
#if !defined(AFX_ImmTexture_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
#define AFX_ImmTexture_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_
|
||||
|
||||
#if _MSC_VER >= 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER >= 1000
|
||||
|
||||
#ifndef _IFCDLL_
|
||||
#define DLLIFC __declspec(dllimport)
|
||||
#else
|
||||
#define DLLIFC __declspec(dllexport)
|
||||
#endif
|
||||
|
||||
#include <windows.h>
|
||||
#include "ImmBaseTypes.h"
|
||||
#include "ImmEffect.h"
|
||||
|
||||
|
||||
|
||||
//================================================================
|
||||
// Constants
|
||||
//================================================================
|
||||
|
||||
const POINT IMM_TEXTURE_PT_NULL = { 0, 0 };
|
||||
const POINT IMM_TEXTURE_DEFAULT_OFFSET_POINT = { 0, 0};
|
||||
|
||||
#define IMM_TEXTURE_DEFAULT_MAGNITUDE 5000
|
||||
#define IMM_TEXTURE_DEFAULT_WIDTH 10
|
||||
#define IMM_TEXTURE_DEFAULT_SPACING 20
|
||||
|
||||
|
||||
//================================================================
|
||||
// CImmTexture
|
||||
//================================================================
|
||||
|
||||
//
|
||||
// ------ PUBLIC INTERFACE ------
|
||||
//
|
||||
|
||||
class DLLIFC CImmTexture : public CImmEffect
|
||||
{
|
||||
//
|
||||
// CONSTRUCTOR/DESTRUCTOR
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
// Constructor
|
||||
CImmTexture();
|
||||
|
||||
// Destructor
|
||||
virtual
|
||||
~CImmTexture();
|
||||
|
||||
|
||||
//
|
||||
// ATTRIBUTES
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
virtual BOOL
|
||||
GetIsCompatibleGUID(
|
||||
GUID &guid
|
||||
);
|
||||
|
||||
virtual DWORD GetEffectType()
|
||||
{ return IMM_EFFECTTYPE_TEXTURE; }
|
||||
|
||||
// Use this form for single-axis and dual-axis effects
|
||||
BOOL
|
||||
ChangeTextureParams(
|
||||
LPCIMM_TEXTURE pTextureX,
|
||||
LPCIMM_TEXTURE pTextureY
|
||||
);
|
||||
|
||||
// Use this form for directional effects
|
||||
BOOL
|
||||
ChangeTextureParams(
|
||||
LPCIMM_TEXTURE pTexture,
|
||||
LONG lDirectionX,
|
||||
LONG lDirectionY
|
||||
);
|
||||
|
||||
// Use this form for directional effects
|
||||
BOOL
|
||||
ChangeTextureParamsPolar(
|
||||
LPCIMM_TEXTURE pTexture,
|
||||
LONG lAngle
|
||||
);
|
||||
|
||||
// Use this form for single-axis, dual-axis symetrical, or directional effects
|
||||
BOOL
|
||||
ChangeTextureParams(
|
||||
LONG lPosBumpMag = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwPosBumpWidth = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwPosBumpSpacing = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lNegBumpMag = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwNegBumpWidth = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwNegBumpSpacing = IMM_EFFECT_DONT_CHANGE,
|
||||
POINT pntOffset = IMM_EFFECT_DONT_CHANGE_POINT,
|
||||
LONG lDirectionX = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lDirectionY = IMM_EFFECT_DONT_CHANGE
|
||||
);
|
||||
|
||||
// Use this form for single-axis, dual-axis, or directional effects
|
||||
BOOL
|
||||
ChangeTextureParamsX(
|
||||
LONG lPosBumpMag = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwPosBumpWidth = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwPosBumpSpacing = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lNegBumpMag = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwNegBumpWidth = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwNegBumpSpacing = IMM_EFFECT_DONT_CHANGE,
|
||||
POINT pntOffset = IMM_EFFECT_DONT_CHANGE_POINT,
|
||||
LONG lDirectionX = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lDirectionY = IMM_EFFECT_DONT_CHANGE
|
||||
);
|
||||
|
||||
BOOL
|
||||
ChangeTextureParamsY(
|
||||
LONG lPosBumpMag = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwPosBumpWidth = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwPosBumpSpacing = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lNegBumpMag = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwNegBumpWidth = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwNegBumpSpacing = IMM_EFFECT_DONT_CHANGE,
|
||||
POINT pntOffset = IMM_EFFECT_DONT_CHANGE_POINT,
|
||||
LONG lDirectionX = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lDirectionY = IMM_EFFECT_DONT_CHANGE
|
||||
);
|
||||
|
||||
// Use this form for single-axis, dual-axis symetrical, or directional effects
|
||||
BOOL
|
||||
ChangeTextureParamsPolar(
|
||||
LONG lPosBumpMag = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwPosBumpWidth = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwPosBumpSpacing = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lNegBumpMag = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwNegBumpWidth = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwNegBumpSpacing = IMM_EFFECT_DONT_CHANGE,
|
||||
POINT pntOffset = IMM_EFFECT_DONT_CHANGE_POINT,
|
||||
LONG lAngle = IMM_EFFECT_DONT_CHANGE
|
||||
);
|
||||
|
||||
// Use this form for single-axis, dual-axis, or directional effects
|
||||
BOOL
|
||||
ChangeTextureParamsPolarX(
|
||||
LONG lPosBumpMag = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwPosBumpWidth = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwPosBumpSpacing = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lNegBumpMag = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwNegBumpWidth = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwNegBumpSpacing = IMM_EFFECT_DONT_CHANGE,
|
||||
POINT pntOffset = IMM_EFFECT_DONT_CHANGE_POINT,
|
||||
LONG lAngle = IMM_EFFECT_DONT_CHANGE
|
||||
);
|
||||
|
||||
BOOL
|
||||
ChangeTextureParamsPolarY(
|
||||
LONG lPosBumpMag = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwPosBumpWidth = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwPosBumpSpacing = IMM_EFFECT_DONT_CHANGE,
|
||||
LONG lNegBumpMag = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwNegBumpWidth = IMM_EFFECT_DONT_CHANGE,
|
||||
DWORD dwNegBumpSpacing = IMM_EFFECT_DONT_CHANGE,
|
||||
POINT pntOffset = IMM_EFFECT_DONT_CHANGE_POINT,
|
||||
LONG lAngle = IMM_EFFECT_DONT_CHANGE
|
||||
);
|
||||
|
||||
// Use these to change the the X Axis parameters for a dual-axis effect
|
||||
BOOL ChangePositiveBumpMagX( LONG lPosBumpMag );
|
||||
BOOL ChangeNegativeBumpMagX( LONG lNegBumpMag );
|
||||
BOOL ChangePositiveBumpSpacingX( DWORD dwPosBumpSpacing );
|
||||
BOOL ChangeNegativeBumpSpacingX( DWORD dwNegBumpSpacing );
|
||||
BOOL ChangePositiveBumpWidthX( DWORD dwPosBumpWidth );
|
||||
BOOL ChangeNegativeBumpWidthX( DWORD dwNegBumpWidth );
|
||||
|
||||
// Use these to change the the Y Axis parameters for a dual-axis effect
|
||||
BOOL ChangePositiveBumpMagY( LONG lPosBumpMag );
|
||||
BOOL ChangeNegativeBumpMagY( LONG lNegBumpMag );
|
||||
BOOL ChangePositiveBumpSpacingY( DWORD dwPosBumpSpacing );
|
||||
BOOL ChangeNegativeBumpSpacingY( DWORD dwNegBumpSpacing );
|
||||
BOOL ChangePositiveBumpWidthY( DWORD dwPosBumpWidth );
|
||||
BOOL ChangeNegativeBumpWidthY( DWORD dwNegBumpWidth );
|
||||
|
||||
// Use these to change the the parameters for a single-axis or
|
||||
// dual-axis symetrical effect
|
||||
BOOL ChangePositiveBumpMag( LONG lPosBumpMag );
|
||||
BOOL ChangeNegativeBumpMag( LONG lNegBumpMag );
|
||||
BOOL ChangePositiveBumpSpacing( DWORD dwPosBumpSpacing );
|
||||
BOOL ChangeNegativeBumpSpacing( DWORD dwNegBumpSpacing );
|
||||
BOOL ChangePositiveBumpWidth( DWORD dwPosBumpWidth );
|
||||
BOOL ChangeNegativeBumpWidth( DWORD dwNegBumpWidth );
|
||||
|
||||
BOOL ChangeOffset( POINT pntOffset );
|
||||
|
||||
BOOL GetPositiveBumpMagX( LONG &lPosBumpMag );
|
||||
BOOL GetNegativeBumpMagX( LONG &lNegBumpMag );
|
||||
BOOL GetPositiveBumpSpacingX( DWORD &dwPosBumpSpacing );
|
||||
BOOL GetNegativeBumpSpacingX( DWORD &dwNegBumpSpacing );
|
||||
BOOL GetPositiveBumpWidthX( DWORD &dwPosBumpWidth );
|
||||
BOOL GetNegativeBumpWidthX( DWORD &dwNegBumpWidth );
|
||||
BOOL GetPositiveBumpMagY( LONG &lPosBumpMag );
|
||||
BOOL GetNegativeBumpMagY( LONG &lNegBumpMag );
|
||||
BOOL GetPositiveBumpSpacingY( DWORD &dwPosBumpSpacing );
|
||||
BOOL GetNegativeBumpSpacingY( DWORD &dwNegBumpSpacing );
|
||||
BOOL GetPositiveBumpWidthY( DWORD &dwPosBumpWidth );
|
||||
BOOL GetNegativeBumpWidthY( DWORD &dwNegBumpWidth );
|
||||
BOOL GetOffset( POINT &pntOffset );
|
||||
|
||||
//
|
||||
// OPERATIONS
|
||||
//
|
||||
|
||||
public:
|
||||
|
||||
virtual BOOL
|
||||
Initialize(
|
||||
CImmDevice* pDevice,
|
||||
const IMM_EFFECT &effect,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
// Use this form for single-axis and dual-axis effects
|
||||
BOOL
|
||||
InitTexture(
|
||||
CImmDevice* pDevice,
|
||||
LPCIMM_TEXTURE pTextureX,
|
||||
LPCIMM_TEXTURE pTextureY,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
|
||||
// Use this form for directional effects
|
||||
BOOL
|
||||
InitTexture(
|
||||
CImmDevice* pDevice,
|
||||
LPCIMM_TEXTURE pTexture,
|
||||
LONG lDirectionX,
|
||||
LONG lDirectionY,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
|
||||
// Use this form for directional effects
|
||||
BOOL
|
||||
InitTexturePolar(
|
||||
CImmDevice* pDevice,
|
||||
LPCIMM_TEXTURE pTexture,
|
||||
LONG lAngle,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
|
||||
// Use this form for single-axis, dual-axis symetrical, or directional effects
|
||||
BOOL
|
||||
InitTexture(
|
||||
CImmDevice* pDevice,
|
||||
LONG lPosBumpMag = IMM_TEXTURE_DEFAULT_MAGNITUDE,
|
||||
DWORD dwPosBumpWidth = IMM_TEXTURE_DEFAULT_WIDTH,
|
||||
DWORD dwPosBumpSpacing = IMM_TEXTURE_DEFAULT_SPACING,
|
||||
LONG lNegBumpMag = IMM_TEXTURE_DEFAULT_MAGNITUDE,
|
||||
DWORD dwNegBumpWidth = IMM_TEXTURE_DEFAULT_WIDTH,
|
||||
DWORD dwNegBumpSpacing = IMM_TEXTURE_DEFAULT_SPACING,
|
||||
DWORD dwfAxis = IMM_EFFECT_AXIS_BOTH,
|
||||
POINT pntOffset = IMM_TEXTURE_DEFAULT_OFFSET_POINT,
|
||||
LONG lDirectionX = IMM_EFFECT_DEFAULT_DIRECTION_X,
|
||||
LONG lDirectionY = IMM_EFFECT_DEFAULT_DIRECTION_Y,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
// Use this form for directional effects
|
||||
BOOL
|
||||
InitTexturePolar(
|
||||
CImmDevice* pDevice,
|
||||
LONG lPosBumpMag = IMM_TEXTURE_DEFAULT_MAGNITUDE,
|
||||
DWORD dwPosBumpWidth = IMM_TEXTURE_DEFAULT_WIDTH,
|
||||
DWORD dwPosBumpSpacing = IMM_TEXTURE_DEFAULT_SPACING,
|
||||
LONG lNegBumpMag = IMM_TEXTURE_DEFAULT_MAGNITUDE,
|
||||
DWORD dwNegBumpWidth = IMM_TEXTURE_DEFAULT_WIDTH,
|
||||
DWORD dwNegBumpSpacing = IMM_TEXTURE_DEFAULT_SPACING,
|
||||
POINT pntOffset = IMM_TEXTURE_DEFAULT_OFFSET_POINT,
|
||||
LONG lAngle = IMM_EFFECT_DEFAULT_ANGLE,
|
||||
DWORD dwNoDownload = 0
|
||||
);
|
||||
|
||||
|
||||
//
|
||||
// ------ PRIVATE INTERFACE ------
|
||||
//
|
||||
|
||||
//
|
||||
// HELPERS
|
||||
//
|
||||
|
||||
protected:
|
||||
|
||||
BOOL
|
||||
set_parameters(
|
||||
DWORD dwfAxis,
|
||||
DWORD dwfCoordinates,
|
||||
LONG lDirection0,
|
||||
LONG lDirection1,
|
||||
LPCIMM_TEXTURE pTextureX,
|
||||
LPCIMM_TEXTURE pTextureY
|
||||
);
|
||||
|
||||
BOOL
|
||||
set_parameters(
|
||||
DWORD dwfAxis,
|
||||
DWORD dwfCoordinates,
|
||||
LONG lDirection0,
|
||||
LONG lDirection1,
|
||||
LONG lPosBumpMag,
|
||||
DWORD dwPosBumpWidth,
|
||||
DWORD dwPosBumpSpacing,
|
||||
LONG lNegBumpMag,
|
||||
DWORD dwNegBumpWidth,
|
||||
DWORD dwNegBumpSpacing,
|
||||
POINT pntOffset
|
||||
);
|
||||
|
||||
DWORD
|
||||
change_parameters(
|
||||
LONG lDirection0,
|
||||
LONG lDirection1,
|
||||
LPCIMM_TEXTURE pTextureX,
|
||||
LPCIMM_TEXTURE pTextureY
|
||||
);
|
||||
|
||||
DWORD
|
||||
change_parameters(
|
||||
LONG lDirection0,
|
||||
LONG lDirection1,
|
||||
LONG lPosBumpMag,
|
||||
DWORD dwPosBumpWidth,
|
||||
DWORD dwPosBumpSpacing,
|
||||
LONG lNegBumpMag,
|
||||
DWORD dwNegBumpWidth,
|
||||
DWORD dwNegBumpSpacing,
|
||||
POINT pntOffset,
|
||||
int fAxis
|
||||
);
|
||||
|
||||
int
|
||||
buffer_ifr_data(
|
||||
TCHAR* pData
|
||||
);
|
||||
|
||||
//
|
||||
// INTERNAL DATA
|
||||
//
|
||||
|
||||
IMM_TEXTURE m_aTexture[2];
|
||||
DWORD m_dwfAxis;
|
||||
|
||||
protected:
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
//
|
||||
// INLINES
|
||||
//
|
||||
|
||||
inline BOOL
|
||||
CImmTexture::GetIsCompatibleGUID(GUID &guid)
|
||||
{
|
||||
return IsEqualGUID(guid, GUID_Imm_Texture);
|
||||
}
|
||||
|
||||
#endif // !defined(AFX_ImmTexture_H__135B88C4_4175_11D1_B049_0020AF30269A__INCLUDED_)
|
||||
Reference in New Issue
Block a user