diff options
Diffstat (limited to 'demos/csharp/api/ghostapi.cs')
-rw-r--r-- | demos/csharp/api/ghostapi.cs | 199 |
1 files changed, 199 insertions, 0 deletions
diff --git a/demos/csharp/api/ghostapi.cs b/demos/csharp/api/ghostapi.cs new file mode 100644 index 00000000..b65aac9e --- /dev/null +++ b/demos/csharp/api/ghostapi.cs @@ -0,0 +1,199 @@ +using System; /* IntPtr */ +using System.Runtime.InteropServices; /* DLLImport */ + +namespace GhostAPI +{ + public struct gsapi_revision_t + { + public IntPtr product; + public IntPtr copyright; + public int revision; + public int revisiondate; + } + + public enum gs_set_param_type + { + gs_spt_invalid = -1, + gs_spt_null = 0, /* void * is NULL */ + gs_spt_bool = 1, /* void * is NULL (false) or non-NULL (true) */ + gs_spt_int = 2, /* void * is a pointer to an int */ + gs_spt_float = 3, /* void * is a float * */ + gs_spt_name = 4, /* void * is a char * */ + gs_spt_string = 5, /* void * is a char * */ + gs_spt_long = 6, /* void * is a long * */ + gs_spt_i64 = 7, /* void * is a int64_t * */ + gs_spt_size_t = 8 /* void * is a size_t * */ + }; + + public enum gsEncoding + { + GS_ARG_ENCODING_LOCAL = 0, + GS_ARG_ENCODING_UTF8 = 1, + GS_ARG_ENCODING_UTF16LE = 2 + }; + + static class gsConstants + { + public const int E_QUIT = -101; + public const int GS_READ_BUFFER = 32768; + public const int DISPLAY_UNUSED_LAST = (1 << 7); + public const int DISPLAY_COLORS_RGB = (1 << 2); + public const int DISPLAY_DEPTH_8 = (1 << 11); + public const int DISPLAY_LITTLEENDIAN = (1 << 16); + public const int DISPLAY_BIGENDIAN = (0 << 16); + } + + class ghostapi + { +#if MONO + private const string lib_dll = "libgpdl.so"; +#else +#if WIN64 +#if !GHOSTPDL + private const string lib_dll = "gsdll64.dll"; +#else + private const string lib_dll = "gpdldll64.dll"; +#endif +#else +#if !GHOSTPDL + private const string lib_dll = "gsdll32.dll"; +#else + private const string lib_dll = "gpdldll32.dll"; +#endif +#endif +#endif + /* Callback proto for stdio */ + public delegate int gsStdIOHandler(IntPtr caller_handle, IntPtr buffer, int len); + + /* Callback proto for poll function */ + public delegate int gsPollHandler(IntPtr caller_handle); + + /* Callout proto */ + public delegate int gsCallOut(IntPtr callout_handle, IntPtr device_name, int id, int size, IntPtr data); + + [DllImport(lib_dll, EntryPoint = "gsapi_revision", CharSet = CharSet.Ansi, + CallingConvention = CallingConvention.StdCall)] + public static extern int gsapi_revision(ref gsapi_revision_t vers, int size); + + [DllImport(lib_dll, EntryPoint = "gsapi_new_instance", CharSet = CharSet.Ansi, + CallingConvention = CallingConvention.StdCall)] + public static extern int gsapi_new_instance(out IntPtr pinstance, + IntPtr caller_handle); + + [DllImport(lib_dll, EntryPoint = "gsapi_delete_instance", CharSet = CharSet.Ansi, + CallingConvention = CallingConvention.StdCall)] + public static extern void gsapi_delete_instance(IntPtr instance); + + [DllImport(lib_dll, EntryPoint = "gsapi_init_with_args", CharSet = CharSet.Ansi, + CallingConvention = CallingConvention.StdCall)] + public static extern int gsapi_init_with_args(IntPtr instance, int argc, + IntPtr argv); + + [DllImport(lib_dll, EntryPoint = "gsapi_exit", CharSet = CharSet.Ansi, + CallingConvention = CallingConvention.StdCall)] + public static extern int gsapi_exit(IntPtr instance); + + [DllImport(lib_dll, EntryPoint = "gsapi_set_arg_encoding", CharSet = CharSet.Ansi, + CallingConvention = CallingConvention.StdCall)] + public static extern int gsapi_set_arg_encoding(IntPtr instance, + int encoding); + + [DllImport(lib_dll, EntryPoint = "gsapi_set_stdio", CharSet = CharSet.Ansi, + CallingConvention = CallingConvention.StdCall)] + public static extern int gsapi_set_stdio(IntPtr instance, + gsStdIOHandler stdin, gsStdIOHandler stdout, gsStdIOHandler stderr); + + [DllImport(lib_dll, EntryPoint = "gsapi_set_stdio_with_handle", CharSet = CharSet.Ansi, + CallingConvention = CallingConvention.StdCall)] + public static extern int gsapi_set_stdio_with_handle(IntPtr instance, + gsStdIOHandler stdin, gsStdIOHandler stdout, gsStdIOHandler stderr, IntPtr caller_handle); + + [DllImport(lib_dll, EntryPoint = "gsapi_set_poll", CharSet = CharSet.Ansi, + CallingConvention = CallingConvention.StdCall)] + public static extern int gsapi_set_poll(IntPtr instance, gsPollHandler pollfn); + + [DllImport(lib_dll, EntryPoint = "gsapi_set_poll_with_handle", CharSet = CharSet.Ansi, + CallingConvention = CallingConvention.StdCall)] + public static extern int gsapi_set_poll_with_handle(IntPtr instance, gsPollHandler pollfn, + IntPtr caller_handle); + + [DllImport(lib_dll, EntryPoint = "gsapi_get_default_device_list", CharSet = CharSet.Ansi, + CallingConvention = CallingConvention.StdCall)] + public static extern int gsapi_get_default_device_list(IntPtr instance, + ref IntPtr list, ref int listlen); + + [DllImport(lib_dll, EntryPoint = "gsapi_set_default_device_list", CharSet = CharSet.Ansi, + CallingConvention = CallingConvention.StdCall)] + public static extern int gsapi_set_default_device_list(IntPtr instance, + IntPtr list, ref int listlen); + + [DllImport(lib_dll, EntryPoint = "gsapi_run_string", CharSet = CharSet.Ansi, + CallingConvention = CallingConvention.StdCall)] + public static extern int gsapi_run_string(IntPtr instance, IntPtr command, + int usererr, ref int exitcode); + + [DllImport(lib_dll, EntryPoint = "gsapi_run_string_with_length", CharSet = CharSet.Ansi, + CallingConvention = CallingConvention.StdCall)] + public static extern int gsapi_run_string_with_length(IntPtr instance, IntPtr command, + uint length, int usererr, ref int exitcode); + + [DllImport(lib_dll, EntryPoint = "gsapi_run_file", CharSet = CharSet.Ansi, + CallingConvention = CallingConvention.StdCall)] + public static extern int gsapi_run_file(IntPtr instance, IntPtr filename, + int usererr, ref int exitcode); + + [DllImport(lib_dll, EntryPoint = "gsapi_run_string_begin", CharSet = CharSet.Ansi, + CallingConvention = CallingConvention.StdCall)] + public static extern int gsapi_run_string_begin(IntPtr instance, + int usererr, ref int exitcode); + + [DllImport(lib_dll, EntryPoint = "gsapi_run_string_continue", CharSet = CharSet.Ansi, + CallingConvention = CallingConvention.StdCall)] + public static extern int gsapi_run_string_continue(IntPtr instance, + IntPtr command, int count, int usererr, ref int exitcode); + + [DllImport(lib_dll, EntryPoint = "gsapi_run_string_end", CharSet = CharSet.Ansi, + CallingConvention = CallingConvention.StdCall)] + public static extern int gsapi_run_string_end(IntPtr instance, + int usererr, ref int exitcode); + + [DllImport(lib_dll, EntryPoint = "gsapi_set_display_callback", CharSet = CharSet.Ansi, + CallingConvention = CallingConvention.StdCall)] + public static extern int gsapi_set_display_callback(IntPtr pinstance, IntPtr caller_handle); + + [DllImport(lib_dll, EntryPoint = "gsapi_add_control_path", CharSet = CharSet.Ansi, + CallingConvention = CallingConvention.StdCall)] + public static extern int gsapi_add_control_path(IntPtr instance, int type, IntPtr path); + + [DllImport(lib_dll, EntryPoint = "gsapi_remove_control_path", CharSet = CharSet.Ansi, + CallingConvention = CallingConvention.StdCall)] + public static extern int gsapi_remove_control_path(IntPtr instance, int type, IntPtr path); + + [DllImport(lib_dll, EntryPoint = "gsapi_purge_control_paths", CharSet = CharSet.Ansi, + CallingConvention = CallingConvention.StdCall)] + public static extern void gsapi_purge_control_paths(IntPtr instance, int type); + + [DllImport(lib_dll, EntryPoint = "gsapi_activate_path_control", CharSet = CharSet.Ansi, + CallingConvention = CallingConvention.StdCall)] + public static extern void gsapi_activate_path_control(IntPtr instance, int enable); + + [DllImport(lib_dll, EntryPoint = "gsapi_is_path_control_active", CharSet = CharSet.Ansi, + CallingConvention = CallingConvention.StdCall)] + public static extern int gsapi_is_path_control_active(IntPtr instance); + + [DllImport(lib_dll, EntryPoint = "gsapi_set_param", CharSet = CharSet.Ansi, + CallingConvention = CallingConvention.StdCall)] + public static extern int gsapi_set_param(IntPtr instance, gs_set_param_type type, + IntPtr param, IntPtr value); + + [DllImport(lib_dll, EntryPoint = "gsapi_register_callout", CharSet = CharSet.Ansi, + CallingConvention = CallingConvention.StdCall)] + public static extern int gsapi_register_callout(IntPtr instance, gsCallOut callout, + IntPtr callout_handle); + + [DllImport(lib_dll, EntryPoint = "gsapi_deregister_callout", CharSet = CharSet.Ansi, + CallingConvention = CallingConvention.StdCall)] + public static extern int gsapi_deregister_callout(IntPtr instance, gsCallOut callout, + IntPtr callout_handle); + } +} |