summaryrefslogtreecommitdiff
path: root/wrapper/wrapper.hpp
blob: 24bcadb67e785c48e02876a33e16b8236ba2362d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#pragma once

#include "..\common\rawaccel.hpp";
#include "..\common\rawaccel-userspace.hpp";
#include <iostream>
using namespace rawaccel;
using namespace System;

public ref class ManagedAccel
{
protected:
	accel_function* accel_instance;
public:
	ManagedAccel(accel_function* accel)
		: accel_instance(accel)
	{
	}

    ManagedAccel(double mode, double offset, double accel, double lim_exp, double midpoint)
    {
        accel_function::args_t args{};
        args.accel = accel;
        args.lim_exp = lim_exp;
        args.midpoint = midpoint;
        args.accel_mode = (rawaccel::mode)mode;
        args.offset = offset;

		accel_instance = new accel_function(args);
	}

    virtual ~ManagedAccel()
    {
        if (accel_instance != nullptr)
        {
            delete accel_instance;
        }
    }
    !ManagedAccel()
    {
        if (accel_instance != nullptr)
        {
            delete accel_instance;
        }
    }

    accel_function* GetInstance()
    {
        return accel_instance;
    }

    Tuple<double, double>^ Accelerate(int x, int y, double time, double mode);
};