Files
evilsatellites/EvilSatellites/Tolk.cs
T
2021-04-10 14:08:20 +02:00

76 lines
3.9 KiB
C#

/**
* Product: Tolk
* File: Tolk.cs
* Description: .NET wrapper class (in C#).
* Copyright: (c) 2014, Davy Kager <mail@davykager.nl>
* License: LGPLv3
*/
using System;
using System.Runtime.InteropServices;
namespace DavyKager {
public sealed class Tolk {
[DllImport("Tolk.dll", CharSet=CharSet.Unicode, CallingConvention=CallingConvention.Cdecl)]
private static extern void Tolk_Load();
[DllImport("Tolk.dll", CharSet=CharSet.Unicode, CallingConvention=CallingConvention.Cdecl)]
[return: MarshalAs(UnmanagedType.I1)]
private static extern bool Tolk_IsLoaded();
[DllImport("Tolk.dll", CharSet=CharSet.Unicode, CallingConvention=CallingConvention.Cdecl)]
private static extern void Tolk_Unload();
[DllImport("Tolk.dll", CharSet=CharSet.Unicode, CallingConvention=CallingConvention.Cdecl)]
private static extern void Tolk_TrySAPI(
[MarshalAs(UnmanagedType.I1)]bool trySAPI);
[DllImport("Tolk.dll", CharSet=CharSet.Unicode, CallingConvention=CallingConvention.Cdecl)]
private static extern void Tolk_PreferSAPI(
[MarshalAs(UnmanagedType.I1)]bool preferSAPI);
[DllImport("Tolk.dll", CharSet=CharSet.Unicode, CallingConvention=CallingConvention.Cdecl)]
private static extern IntPtr Tolk_DetectScreenReader();
[DllImport("Tolk.dll", CharSet=CharSet.Unicode, CallingConvention=CallingConvention.Cdecl)]
[return: MarshalAs(UnmanagedType.I1)]
private static extern bool Tolk_HasSpeech();
[DllImport("Tolk.dll", CharSet=CharSet.Unicode, CallingConvention=CallingConvention.Cdecl)]
[return: MarshalAs(UnmanagedType.I1)]
private static extern bool Tolk_HasBraille();
[DllImport("Tolk.dll", CharSet=CharSet.Unicode, CallingConvention=CallingConvention.Cdecl)]
[return: MarshalAs(UnmanagedType.I1)]
private static extern bool Tolk_Output(
[MarshalAs(UnmanagedType.LPWStr)]String str,
[MarshalAs(UnmanagedType.I1)]bool interrupt);
[DllImport("Tolk.dll", CharSet=CharSet.Unicode, CallingConvention=CallingConvention.Cdecl)]
[return: MarshalAs(UnmanagedType.I1)]
private static extern bool Tolk_Speak(
[MarshalAs(UnmanagedType.LPWStr)]String str,
[MarshalAs(UnmanagedType.I1)]bool interrupt);
[DllImport("Tolk.dll", CharSet=CharSet.Unicode, CallingConvention=CallingConvention.Cdecl)]
[return: MarshalAs(UnmanagedType.I1)]
private static extern bool Tolk_Braille(
[MarshalAs(UnmanagedType.LPWStr)]String str);
[DllImport("Tolk.dll", CharSet=CharSet.Unicode, CallingConvention=CallingConvention.Cdecl)]
[return: MarshalAs(UnmanagedType.I1)]
private static extern bool Tolk_IsSpeaking();
[DllImport("Tolk.dll", CharSet=CharSet.Unicode, CallingConvention=CallingConvention.Cdecl)]
[return: MarshalAs(UnmanagedType.I1)]
private static extern bool Tolk_Silence();
// Prevent construction
private Tolk() {}
public static void Load() { Tolk_Load(); }
public static bool IsLoaded() { return Tolk_IsLoaded(); }
public static void Unload() { Tolk_Unload(); }
public static void TrySAPI(bool trySAPI) { Tolk_TrySAPI(trySAPI); }
public static void PreferSAPI(bool preferSAPI) { Tolk_PreferSAPI(preferSAPI); }
// Prevent the marshaller from freeing the unmanaged string
public static String DetectScreenReader() { return Marshal.PtrToStringUni(Tolk_DetectScreenReader()); }
public static bool HasSpeech() { return Tolk_HasSpeech(); }
public static bool HasBraille() { return Tolk_HasBraille(); }
public static bool Output(String str, bool interrupt = false) { return Tolk_Output(str, interrupt); }
public static bool Speak(String str, bool interrupt = false) { return Tolk_Speak(str, interrupt); }
public static bool Braille(String str) { return Tolk_Braille(str); }
public static bool IsSpeaking() { return Tolk_IsSpeaking(); }
public static bool Silence() { return Tolk_Silence(); }
}
}