Move the sources to trunk
[opencv] / interfaces / ch / c / handmade / highgui / cvSetMouseCallback_chdl.c
1 /* Copyright (c) 2001-2002 by SoftIntegration, Inc. All Rights Reserved */
2 #include <cv.h>
3 #include <highgui.h>
4 #include <ch.h>
5
6 static ChInterp_t interp;
7 static void* cvSetMouseCallback_chdl_callback_ptr[8] = { 0, 0, 0, 0, 0, 0, 0, 0 };
8
9 static void cvSetMouseCallback_chdl_callback0(int event, int x, int y, int flags) {
10   Ch_CallFuncByAddr(interp,cvSetMouseCallback_chdl_callback_ptr[0],NULL, event, x, y, flags);
11 }
12
13
14 static void cvSetMouseCallback_chdl_callback1(int event, int x, int y, int flags) {
15   Ch_CallFuncByAddr(interp,cvSetMouseCallback_chdl_callback_ptr[1],NULL, event, x, y, flags);
16 }
17
18 static void cvSetMouseCallback_chdl_callback2(int event, int x, int y, int flags) {
19   Ch_CallFuncByAddr(interp,cvSetMouseCallback_chdl_callback_ptr[2],NULL, event, x, y, flags);
20 }
21
22 static void cvSetMouseCallback_chdl_callback3(int event, int x, int y, int flags) {
23   Ch_CallFuncByAddr(interp,cvSetMouseCallback_chdl_callback_ptr[3],NULL, event, x, y, flags);
24 }
25 static void cvSetMouseCallback_chdl_callback4(int event, int x, int y, int flags) {
26   Ch_CallFuncByAddr(interp,cvSetMouseCallback_chdl_callback_ptr[4],NULL, event, x, y, flags);
27 }
28
29 static void cvSetMouseCallback_chdl_callback5(int event, int x, int y, int flags) {
30   Ch_CallFuncByAddr(interp,cvSetMouseCallback_chdl_callback_ptr[5],NULL, event, x, y, flags);
31 }
32
33 static void cvSetMouseCallback_chdl_callback6(int event, int x, int y, int flags) {
34   Ch_CallFuncByAddr(interp,cvSetMouseCallback_chdl_callback_ptr[6],NULL, event, x, y, flags);
35 }
36
37 static void cvSetMouseCallback_chdl_callback7(int event, int x, int y, int flags) {
38   Ch_CallFuncByAddr(interp,cvSetMouseCallback_chdl_callback_ptr[7],NULL, event, x, y, flags);
39 }
40
41
42
43 EXPORTCH void cvSetMouseCallback_chdl(void *varg) {
44     static int idx = 0;
45     va_list ap;
46     char* window_name;
47     CvMouseCallback on_mouse_ch = NULL, on_mouse_c = NULL;
48
49     Ch_VaStart(interp, ap, varg);
50     window_name = Ch_VaArg(interp, ap, char*);
51     on_mouse_ch = Ch_VaArg(interp, ap, CvMouseCallback);
52     if (on_mouse_ch != NULL)  {
53         switch( idx )
54         {
55         case 0: on_mouse_c = cvSetMouseCallback_chdl_callback0; break;
56         case 1: on_mouse_c = cvSetMouseCallback_chdl_callback1; break;
57         case 2: on_mouse_c = cvSetMouseCallback_chdl_callback2; break;
58         case 3: on_mouse_c = cvSetMouseCallback_chdl_callback3; break;
59         case 4: on_mouse_c = cvSetMouseCallback_chdl_callback4; break;
60         case 5: on_mouse_c = cvSetMouseCallback_chdl_callback5; break;
61         case 6: on_mouse_c = cvSetMouseCallback_chdl_callback6; break;
62         case 7: on_mouse_c = cvSetMouseCallback_chdl_callback7; break;
63         }
64         cvSetMouseCallback_chdl_callback_ptr[idx] = (void*)on_mouse_ch;
65         idx = (idx + 1) % 8;
66     }
67     cvSetMouseCallback(window_name, on_mouse_c);
68     Ch_VaEnd(interp, ap);
69     return;
70 }