diff --git a/annotated.html b/annotated.html index 1756114..058ffe4 100644 --- a/annotated.html +++ b/annotated.html @@ -34,7 +34,7 @@
libcvautomation -  1.2 +  1.3
@@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classes.html b/classes.html index ba0b2c2..f593c61 100644 --- a/classes.html +++ b/classes.html @@ -34,7 +34,7 @@
libcvautomation -  1.2 +  1.3
@@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/cva-input.html b/cva-input.html deleted file mode 100644 index deab035..0000000 --- a/cva-input.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - -libcvautomation: $title - - - - - - - - - - - - -
- - -
- - - - - - - - - - - -
-
libcvautomation -  1.2 -
- -
-
- - - - -
-
-
Author:
Bradlee Speice <bspeice@uncc.edu>
-
Date:
7/18/2012
-

-Usage:

-

This program works kind of like a mini-language. All options are parsed left-to-right, and executed right there. Thus, specifying "--display" at different places in the options will cause this program to use the most recent given display.

-

-Example Usage:

-

Click the mouse:

-

cva-input -s 'click 1'

-

Press key 'a':

-

cva-input -s 'keyclick a'

-

-Full Options:

-

-h, --help: Display this usage message.

-

-u, --usage: Display this usage message.

-

-d, --display: Specify the X display to use.

-

-m, --search-method: Specify a method to search by. See cva-match --help for more information on this.

-

-t, --tolerance: Specify how strict the match is.

-

-b, --button: Specify the mouse button to press (default 1).

-

-c, --center: Instead of matching the top-left corner of an image, match the center of the image.

-

-o, --sane-tolerance: Set the tolerance using a scale of 1-100, rather than INT_MIN to INT_MAX (100 ~= INT_MAX)

-

-s, --string: Command string - see below.

-

-Full Command List:

-

mouseclick: Click the mouse in-place.

-

imouseclick: Click the mouse at an image's top-left corner.

-

icmouseclick: Click the mouse at an image's center.

-

mousexy: Move the mouse to the given coordinate.

-

mouserxy: Move the mouse by the given x and y values (relative motion).

-

mouseimage: Move the mouse to an image's top-left corner.

-

cmouseimage: Move the mouse to an image's center.

-

mousedown: Push and leave down a mouse button.

-

mouseup: Release a mouse button.

-

mousejiggle: Jiggle the mouse (helps to activate some widgets).

-

mousescrollu: Scroll the mouse wheel up

-

mousescrolld: Scroll the mouse wheel down

-

keyclick: Click a keyboard button.

-

keydown: Push and leave down a keyboard button.

-

keyup: Release a keyboard button.

-

keystring: Input a string of keys to X11.

-

-Contact Information:

-

Questions? Comments? Concerns? Suggestions? Send all feedback to Bradlee Speice at <bspeice@uncc.edu>

-
- -
- All Classes Files Functions Defines
- - -
- -
- - - - - - - diff --git a/cva-input_8c-source.html b/cva-input_8c-source.html deleted file mode 100644 index 1618f1e..0000000 --- a/cva-input_8c-source.html +++ /dev/null @@ -1,250 +0,0 @@ - - -libcvautomation: cva-input.c Source File - - - - -
-
-
-
-

cva-input.c

Go to the documentation of this file.
00001 /*
-00002  * =====================================================================================
-00003  *
-00004  *       Filename:  cva-input.c
-00005  *
-00006  *    Description:  This is an example program to demonstrate the XTest and XInput
-00007  *                  functionality in libcvautomation
-00008  *
-00009  *        Created:  06/26/2012 09:20:20 AM
-00010  *       Revision:  none
-00011  *       Compiler:  gcc
-00012  *
-00013  *         Author:  Bradlee Speice (), bspeice.nc@gmail.com
-00014  *   Organization:  
-00015  *
-00016  * =====================================================================================
-00017  */
-00018 #include <stdlib.h>
-00019 #include <stdio.h>
-00020 #include <unistd.h>
-00021 #include <getopt.h>
-00022 #include <limits.h>
-00023 #include <math.h>
-00024 
-00025 #include <libcvautomation/libcvautomation.h>
-00026 
-00027 void usage ();
-00028 void checkXTEEnabled (Display *display);
-00029 
-00030 int main( int argc, char** argv )
-00031 {
-00032     /* Set up for getopt */
-00033     int mouseButton;
-00034         mouseButton = 1;
-00035     char *separator;
-00036         separator = ",";
-00037     char *xDisplayLocation;
-00038         xDisplayLocation = "";
-00039     Display *display;
-00040         display = NULL;
-00041 
-00042     int searchMethod, tolerance;
-00043     searchMethod = 0;
-00044     tolerance = INT_MAX;
-00045 
-00046     /* Start getopt */
-00047     while (1)
-00048     {
-00049         static struct option long_options[] =
-00050         {
-00051                 {"help",        no_argument,        0,  'h'},
-00052                 {"usage",       no_argument,        0,  'u'},
-00053                 {"version",     no_argument,        0,  'v'},
-00054                 {"display",     required_argument,  0,  'd'},
-00055                 {"search-method",required_argument, 0,  'm'},
-00056                 {"tolerance",   required_argument,  0,  't'},
-00057                 {"button",      required_argument,  0,  'b'},
-00058                 {"string",      required_argument,  0,  's'},
-00059                 {"sane-tolerance", required_argument, 0,'o'},
-00060                 {"print-format",required_argument,  0,  'p'},
-00061                 /* Other valid values are "optional_argument"
-00062                  * and "required_argument" */
-00063                 {0, 0, 0, 0}
-00064         };
-00065 
-00066         int option_index = 0;
-00067         opterr = 0;
-00068 
-00069         int c = getopt_long (argc, argv, "hud:m:t:b:cs:", /* Use a single colon for required_argument,
-00070                                                            * double colon for optional_argument */
-00071                             long_options, &option_index);
-00072 
-00073         /* We're done with parsing options */
-00074         if (c == -1)
-00075             break;
-00076 
-00077         switch (c)
-00078         {
-00079             case 0:
-00080                 break;
-00081 
-00082             case 'h':
-00083                 usage();
-00084                 break;
-00085 
-00086             case 'u':
-00087                 usage();
-00088                 break;
-00089 
-00090             case 'v':
-00091                 usage();
-00092                 break;
-00093 
-00094             case 'd':
-00095                 if (display == NULL)
-00096                     display = XOpenDisplay( optarg );
-00097                 else
-00098                 {
-00099                     XCloseDisplay( display );
-00100                     XOpenDisplay( optarg );
-00101                 }
-00102 
-00103             case 'm':
-00104                 searchMethod = atoi(optarg);
-00105                 break;
-00106 
-00107             case 't':
-00108                 tolerance = atoi(optarg);
-00109                 break;
-00110 
-00111             case 'b':
-00112                 mouseButton = atoi(optarg);
-00113                 break;
-00114 
-00115             case 's':
-00116                 if (display == NULL)
-00117                     display = XOpenDisplay( xDisplayLocation );
-00118                 cvaPoint returnPoint;
-00119                 returnPoint = xte_commandString( display, optarg, mouseButton, searchMethod, tolerance );
-00120 
-00121                 if (returnPoint.x != -1 && returnPoint.y != -1)
-00122                     printf("%s%s%i%s%i\n", optarg, separator, returnPoint.x, separator, returnPoint.y);
-00123                 else
-00124                     printf("%s\n", optarg);
-00125                 break;
-00126 
-00127             case 'o':
-00128                 tolerance = atoi(optarg);
-00129                 /* Provide a more sane way to configure tolerance:
-00130                  * --sane-tolerance=100 ~= INT_MAX */
-00131                 tolerance = pow(1.2397076, tolerance);
-00132                 break;
-00133     
-00134             case '?':
-00135                 /* Error routine */
-00136                 break;
-00137 
-00138             default:
-00139                 fprintf( stderr, "Unknown option..." );
-00140                 exit(0);
-00141         };
-00142     }
-00143 
-00144     if ( display != NULL )
-00145         XCloseDisplay( display );
-00146 
-00147     return 0;
-00148 }
-00149 
-00150 /* 
-00151  * ===  FUNCTION  ======================================================================
-00152  *         Name:  usage
-00153  *  Description:  I really shouldn't need to write this
-00154  * =====================================================================================
-00155  */
-00156 void usage ( )
-00157 {
-00158     fprintf( stderr, "\
-00159 Libcvautomation version: %s\n\
-00160 cva-input -s <command_string>\n\
-00161 \n\
-00162 The cva-input program demonstrates the XTest section of libcvautomation.\n\
-00163 \n\
-00164 Usage: \n\
-00165 \n\
-00166 \t-h, --help:\t\tDisplay this usage message.\n\
-00167 \t-u, --usage:\t\tDisplay this usage message.\n\
-00168 \t-d, --display:\t\tSpecify the X display to use.\n\
-00169 \t-m, --search-method:\tSpecify a method to search by. See `cva-match --help\'\n\
-00170 \t\t\t\tfor more information on this.\n\
-00171 \t-t, --tolerance:\tSpecify how strict the match is.\n\
-00172 \t-b, --button:\t\tSpecify the mouse button to press (default 1).\n\
-00173 \t-c, --center:\t\tInstead of matching the top-left corner of an image,\n\
-00174 \t\t\t\tmatch the center of the image.\n\
-00175 \t-o, --sane-tolerance:\tSet the tolerance using a scale of 1-100,\n\
-00176 \t-s, --string:\t\tCommand string - see below.\n\
-00177 \n\
-00178 This program works kind of like a mini-language. All options\n\
-00179 are parsed left-to-right, and executed right there. Thus, specifying \"--display\"\n\
-00180 at different places in the options will cause this program to use the most recent\n\
-00181 given display.\n\
-00182 Available commands:\n\
-00183 \tmouseclick:\tClick the mouse in-place.\n\
-00184 \timouseclick:\tClick the mouse at an image's top-left corner.\n\
-00185 \ticmouseclick:\tClick the mouse at an image's center.\n\
-00186 \tmousexy:\tMove the mouse to the given coordinate.\n\
-00187 \tmouserxy:\tMove the mouse by the given x and y values (relative motion).\n\
-00188 \tmouseimage:\tMove the mouse to an image's top-left corner.\n\
-00189 \tcmouseimage:\tMove the mouse to an image's center.\n\
-00190 \tmousedown:\tPush and leave down a mouse button.\n\
-00191 \tmouseup:\tRelease a mouse button.\n\
-00192 \tmousejiggle:\tJiggle the mouse (helps to activate some widgets).\n\
-00193 \tkeyclick:\tClick a keyboard button.\n\
-00194 \tkeydown:\tPush and leave down a keyboard button.\n\
-00195 \tkeyup:\tRelease a keyboard button.\n\
-00196 \tkeystring:\tInput a string of keys to X11.\n\
-00197 \n\
-00198 If you have any questions, comments, concerns, email <%s>.\n\n", LIBCVAUTOMATION_VERSION, LIBCVAUTOMATION_BUGREPORT );
-00199 
-00200     exit (0);
-00201 
-00202 }       /* -----  end of function usage  ----- */
-00203 
-00204 void checkXTEEnabled ( Display *display )
-00205 {
-00206     /* Make sure we have the XTest Extensions enabled.
-00207      * This is a quick wrapper. */
-00208     if (! xte_XTestSupported( display ))
-00209     {
-00210         printf("The XTest extension is not supported! Aborting...");
-00211         exit(255);
-00212     }
-00213 }
-00214 
-00215 /* Doxygen Information */
-00222 /* The biggest purpose of documenting this code is to trick doxygen into making a man page for it. */
-

Generated on Tue Jul 17 12:19:00 2012 for libcvautomation by  - -doxygen 1.4.7
- - diff --git a/cva-input_8c.html b/cva-input_8c.html deleted file mode 100644 index 8695449..0000000 --- a/cva-input_8c.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - -libcvautomation: cva-input.c File Reference - - - - - - - - - - - - -
- - -
- - - - - - - - - - - -
-
libcvautomation -  1.2 -
- -
-
- - - - - -
-
-
-Functions
-
-
cva-input.c File Reference
-
-
- -

The cva-input program to demonstrate Libcvautomation's XTest functionality. -More...

-
#include <stdlib.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <getopt.h>
-#include <limits.h>
-#include <math.h>
-#include <libcvautomation/libcvautomation.h>
-
-

Go to the source code of this file.

- - - - - -

-Functions

-void usage ()
-void checkXTEEnabled (Display *display)
-int main (int argc, char **argv)
-

Detailed Description

-

The cva-input program to demonstrate Libcvautomation's XTest functionality.

-
Author:
Bradlee Speice <bspeice@uncc.edu>
-
Date:
7/18/2012
- -

Definition in file cva-input.c.

-
- -
- All Classes Files Functions Defines
- - -
- -
- - - - - - - diff --git a/cva-input_8c_source.html b/cva-input_8c_source.html deleted file mode 100644 index 67c3e53..0000000 --- a/cva-input_8c_source.html +++ /dev/null @@ -1,331 +0,0 @@ - - - - - -libcvautomation: cva-input.c Source File - - - - - - - - - - - - -
- - -
- - - - - - - - - - - -
-
libcvautomation -  1.2 -
- -
-
- - - - - -
-
-
-
cva-input.c
-
-
-Go to the documentation of this file.
00001 /*
-00002  * =====================================================================================
-00003  *
-00004  *       Filename:  cva-input.c
-00005  *
-00006  *    Description:  This is an example program to demonstrate the XTest and XInput
-00007  *                  functionality in libcvautomation
-00008  *
-00009  *        Created:  06/26/2012 09:20:20 AM
-00010  *       Revision:  none
-00011  *       Compiler:  gcc
-00012  *
-00013  *         Author:  Bradlee Speice (), bspeice.nc@gmail.com
-00014  *   Organization:  
-00015  *
-00016  * =====================================================================================
-00017  */
-00018 #include <stdlib.h>
-00019 #include <stdio.h>
-00020 #include <unistd.h>
-00021 #include <getopt.h>
-00022 #include <limits.h>
-00023 #include <math.h>
-00024 
-00025 #include <libcvautomation/libcvautomation.h>
-00026 
-00027 void usage ();
-00028 void checkXTEEnabled (Display *display);
-00029 
-00030 int main( int argc, char** argv )
-00031 {
-00032     /* Set up for getopt */
-00033     int mouseButton;
-00034         mouseButton = 1;
-00035     char *separator;
-00036         separator = ",";
-00037     char *xDisplayLocation;
-00038         xDisplayLocation = "";
-00039     Display *display;
-00040         display = NULL;
-00041 
-00042     int searchMethod, tolerance;
-00043     searchMethod = 0;
-00044     tolerance = INT_MAX;
-00045 
-00046     /* Start getopt */
-00047     while (1)
-00048     {
-00049         static struct option long_options[] =
-00050         {
-00051                 {"help",        no_argument,        0,  'h'},
-00052                 {"usage",       no_argument,        0,  'u'},
-00053                 {"version",     no_argument,        0,  'v'},
-00054                 {"display",     required_argument,  0,  'd'},
-00055                 {"search-method",required_argument, 0,  'm'},
-00056                 {"tolerance",   required_argument,  0,  't'},
-00057                 {"button",      required_argument,  0,  'b'},
-00058                 {"string",      required_argument,  0,  's'},
-00059                 {"sane-tolerance", required_argument, 0,'o'},
-00060                 {"print-format",required_argument,  0,  'p'},
-00061                 /* Other valid values are "optional_argument"
-00062                  * and "required_argument" */
-00063                 {0, 0, 0, 0}
-00064         };
-00065 
-00066         int option_index = 0;
-00067         opterr = 0;
-00068 
-00069         int c = getopt_long (argc, argv, "hud:m:t:b:cs:", /* Use a single colon for required_argument,
-00070                                                            * double colon for optional_argument */
-00071                             long_options, &option_index);
-00072 
-00073         /* We're done with parsing options */
-00074         if (c == -1)
-00075             break;
-00076 
-00077         switch (c)
-00078         {
-00079             case 0:
-00080                 break;
-00081 
-00082             case 'h':
-00083                 usage();
-00084                 break;
-00085 
-00086             case 'u':
-00087                 usage();
-00088                 break;
-00089 
-00090             case 'v':
-00091                 usage();
-00092                 break;
-00093 
-00094             case 'd':
-00095                 if (display == NULL)
-00096                     display = XOpenDisplay( optarg );
-00097                 else
-00098                 {
-00099                     XCloseDisplay( display );
-00100                     XOpenDisplay( optarg );
-00101                 }
-00102 
-00103             case 'm':
-00104                 searchMethod = atoi(optarg);
-00105                 break;
-00106 
-00107             case 't':
-00108                 tolerance = atoi(optarg);
-00109                 break;
-00110 
-00111             case 'b':
-00112                 mouseButton = atoi(optarg);
-00113                 break;
-00114 
-00115             case 's':
-00116                 if (display == NULL)
-00117                     display = XOpenDisplay( xDisplayLocation );
-00118                 cvaPoint returnPoint;
-00119                 returnPoint = xte_commandString( display, optarg, mouseButton, searchMethod, tolerance );
-00120 
-00121                 if (returnPoint.x != -1 && returnPoint.y != -1)
-00122                     printf("%s%s%i%s%i\n", optarg, separator, returnPoint.x, separator, returnPoint.y);
-00123                 else
-00124                     printf("%s\n", optarg);
-00125                 break;
-00126 
-00127             case 'o':
-00128                 tolerance = atoi(optarg);
-00129                 /* Provide a more sane way to configure tolerance:
-00130                  * --sane-tolerance=100 ~= INT_MAX */
-00131                 tolerance = pow(1.2397076, tolerance);
-00132                 break;
-00133     
-00134             case '?':
-00135                 /* Error routine */
-00136                 break;
-00137 
-00138             default:
-00139                 fprintf( stderr, "Unknown option..." );
-00140                 exit(0);
-00141         };
-00142     }
-00143 
-00144     if ( display != NULL )
-00145         XCloseDisplay( display );
-00146 
-00147     return 0;
-00148 }
-00149 
-00150 /* 
-00151  * ===  FUNCTION  ======================================================================
-00152  *         Name:  usage
-00153  *  Description:  I really shouldn't need to write this
-00154  * =====================================================================================
-00155  */
-00156 void usage ( )
-00157 {
-00158     fprintf( stderr, "\
-00159 Libcvautomation version: %s\n\
-00160 cva-input -s <command_string>\n\
-00161 \n\
-00162 The cva-input program demonstrates the XTest section of libcvautomation.\n\
-00163 \n\
-00164 Usage: \n\
-00165 \n\
-00166 \t-h, --help:\t\tDisplay this usage message.\n\
-00167 \t-u, --usage:\t\tDisplay this usage message.\n\
-00168 \t-d, --display:\t\tSpecify the X display to use.\n\
-00169 \t-m, --search-method:\tSpecify a method to search by. See `cva-match --help\'\n\
-00170 \t\t\t\tfor more information on this.\n\
-00171 \t-t, --tolerance:\tSpecify how strict the match is.\n\
-00172 \t-b, --button:\t\tSpecify the mouse button to press (default 1).\n\
-00173 \t-c, --center:\t\tInstead of matching the top-left corner of an image,\n\
-00174 \t\t\t\tmatch the center of the image.\n\
-00175 \t-o, --sane-tolerance:\tSet the tolerance using a scale of 1-100,\n\
-00176 \t-s, --string:\t\tCommand string - see below.\n\
-00177 \n\
-00178 This program works kind of like a mini-language. All options\n\
-00179 are parsed left-to-right, and executed right there. Thus, specifying \"--display\"\n\
-00180 at different places in the options will cause this program to use the most recent\n\
-00181 given display.\n\
-00182 Available commands:\n\
-00183 \tmouseclick:\tClick the mouse in-place.\n\
-00184 \timouseclick:\tClick the mouse at an image's top-left corner.\n\
-00185 \ticmouseclick:\tClick the mouse at an image's center.\n\
-00186 \tmousexy:\tMove the mouse to the given coordinate.\n\
-00187 \tmouserxy:\tMove the mouse by the given x and y values (relative motion).\n\
-00188 \tmouseimage:\tMove the mouse to an image's top-left corner.\n\
-00189 \tcmouseimage:\tMove the mouse to an image's center.\n\
-00190 \tmousedown:\tPush and leave down a mouse button.\n\
-00191 \tmouseup:\tRelease a mouse button.\n\
-00192 \tmousejiggle:\tJiggle the mouse (helps to activate some widgets).\n\
-00193 \tmousescrollu:\tScroll the mouse wheel up.\n\
-00194 \tmousescrolld:\tScroll the mouse wheel down.\n\
-00195 \tkeyclick:\tClick a keyboard button.\n\
-00196 \tkeydown:\tPush and leave down a keyboard button.\n\
-00197 \tkeyup:\tRelease a keyboard button.\n\
-00198 \tkeystring:\tInput a string of keys to X11.\n\
-00199 \n\
-00200 If you have any questions, comments, concerns, email <%s>.\n\n", LIBCVAUTOMATION_VERSION, LIBCVAUTOMATION_BUGREPORT );
-00201 
-00202     exit (0);
-00203 
-00204 }       /* -----  end of function usage  ----- */
-00205 
-00206 void checkXTEEnabled ( Display *display )
-00207 {
-00208     /* Make sure we have the XTest Extensions enabled.
-00209      * This is a quick wrapper. */
-00210     if (! xte_XTestSupported( display ))
-00211     {
-00212         printf("The XTest extension is not supported! Aborting...");
-00213         exit(255);
-00214     }
-00215 }
-00216 
-00217 /* Doxygen Information */
-00224 /* The biggest purpose of documenting this code is to trick doxygen into making a man page for it. */
-
- -
- All Classes Files Functions Defines
- - -
- -
- - - - - - - diff --git a/cva-match.html b/cva-match.html deleted file mode 100644 index 02e258b..0000000 --- a/cva-match.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - -libcvautomation: $title - - - - - - - - - - - - -
- - -
- - - - - - - - - - - -
-
libcvautomation -  1.2 -
- -
-
- - - - -
-
-
Author:
Bradlee Speice <bspeice@uncc.edu>
-
Date:
7/18/2012
-

-Usage:

-

This program uses OpenCV in order to recognize an image within an image. The return code is how many matches were found - return 0 for no matches, 1 for one match, etc.

-

-Example Usage:

-

Match two images against the root X11 window:

-

cva-match --x-root -s "<image_name>" -s "<image_name_2>"

-

Match a root and sub image with a custom tolerance and search method

-

cva-match -r "<root_image>" -s "<image_name>" -o 75 -m 1

-

-Full Options:

-

-h, --help: Display this usage message.

-

-u, --usage: Display this usage message.

-

-r, --root-image: Location of the root image to compare against.

-

-s, --sub-image: Location of the sub-image to find in root.

-

-p, --separator: Separator of the X and Y coordinates.

-

-t, --tolerance: Set how strict the match is - 100 is recommended lowest value.

-
Note:
When using CCORR or CCOEFF tolerance works in opposite direction, so -50 is recommended highest value.
-

-m, --search-method: Set which method is used to search for sub-images.

-
Note:
Search Methods: CV_TM_SQDIFF = 0, CV_TM_SQDIFF_NORMED = 1, CV_TM_CCORR = 2, CV_TM_CCORR_NORMED = 3, CV_TM_CCOEFF = 4, CV_TM_COEFF_NORMED = 5
-

-x, --x-root[=DISPLAY]: Set the root image to come from X11

-
Note:
The DISPLAY variable is optional, not specifying it will cause X to use the default display (not specifically :0.0)
-

-c, --center: The output points should be centered on the sub-image, rather than the top-left corner.

-

-o, --sane-tolerance: Set the tolerance using a scale of 1-100, rather than INT_MIN to INT_MAX (100 ~= INT_MAX)

-

-Contact Information:

-

Questions? Comments? Concerns? Suggestions? Send all feedback to Bradlee Speice at <bspeice@uncc.edu>

-
- -
- All Classes Files Functions Defines
- - -
- -
- - - - - - - diff --git a/cva-match_8c-source.html b/cva-match_8c-source.html deleted file mode 100644 index 68aca67..0000000 --- a/cva-match_8c-source.html +++ /dev/null @@ -1,294 +0,0 @@ - - -libcvautomation: cva-match.c Source File - - - - -
-
-
-
-

cva-match.c

Go to the documentation of this file.
00001 /*
-00002  * =====================================================================================
-00003  *
-00004  *       Filename:  cva-match.c
-00005  *
-00006  *    Description:  Match an image to its parent image, and return the coordinates
-00007  *
-00008  *        Version:  0.1
-00009  *        Created:  06/20/2012
-00010  *       Revision:  none
-00011  *       Compiler:  gcc
-00012  *
-00013  *         Author:  Bradlee Speice, bspeice@uncc.edu
-00014  *   Organization:  MOSAIC at University of North Carolina at Charlotte
-00015  *
-00016  * =====================================================================================
-00017  */
-00018 #include <stdlib.h>
-00019 #include <stdio.h>
-00020 #include <unistd.h>
-00021 #include <getopt.h>
-00022 #include <limits.h>
-00023 
-00024 #include <libcvautomation/libcvautomation.h>
-00025 
-00026 void usage ();
-00027 
-00028 struct list {
-00029     char *fileName;
-00030     struct list *next;
-00031 };
-00032 
-00033 typedef struct list basic_list; 
-00034 
-00035 int main( int argc, char** argv )
-00036 {
-00037     CvPoint result_point;
-00038     result_point.x = result_point.y = 0;
-00039 
-00040     /* Set up everything for getopt */
-00041     char *separator = ",";
-00042     char *root_location = "root.png";
-00043     char *sub_location = "sub.png";
-00044     int tolerance = INT_MAX;
-00045     int search_method = CV_TM_SQDIFF;
-00046     int useX = 0; /* bool useX = false; */
-00047     int useCenter = 0;
-00048     char *xDisplayLocation;
-00049     Display *display;
-00050     /* This line to suppress a compiler warning */
-00051     display = NULL;
-00052 
-00053     /* Set the default display */
-00054     xDisplayLocation = "";
-00055 
-00056     /* Set up the linked list for slave images */
-00057     basic_list *list_head = NULL, *list_curr = NULL, *list_prev = NULL;
-00058 
-00059     /* Start getopt */
-00060     while (1)
-00061     {
-00062         static struct option long_options[] =
-00063         {
-00064                 {"help",        no_argument,        0,  'h'},
-00065                 {"usage",       no_argument,        0,  'u'},
-00066                 {"version",     no_argument,        0,  'v'},
-00067                 {"root-image",  required_argument,  0,  'r'},
-00068                 {"sub-image",   required_argument,  0,  's'},
-00069                 {"separator",   required_argument,  0,  'p'},
-00070                 {"search-method",required_argument, 0,  'm'},
-00071                 {"tolerance",   required_argument,  0,  't'},
-00072                 {"x-root",      optional_argument,  0,  'x'},
-00073                 {"center",      no_argument,        0,  'c'},
-00074                 {"sane-tolerance", required_argument, 0, 'o'},
-00075                 {0, 0, 0, 0}
-00076         };
-00077 
-00078         int option_index = 0;
-00079         opterr = 0;
-00080 
-00081         int c = getopt_long (argc, argv, "hur:s:p:m:t:x::c",
-00082                             long_options, &option_index);
-00083 
-00084         /* We're done with parsing options */
-00085         if (c == -1)
-00086             break;
-00087 
-00088         switch (c)
-00089         {
-00090             case 0:
-00091                 break;
-00092 
-00093             case 'h':
-00094                 usage();
-00095                 break;
-00096 
-00097             case 'u':
-00098                 usage();
-00099                 break;
-00100 
-00101             case 'v':
-00102                 usage();
-00103                 break;
-00104 
-00105             case 'r':
-00106                 root_location = optarg;
-00107                 break;
-00108 
-00109             case 's':
-00110                 if ( list_head == NULL )
-00111                 {
-00112                     list_head = (basic_list *) malloc (sizeof(basic_list));
-00113                     list_curr = list_head;
-00114                 }
-00115                 list_curr->fileName = optarg;
-00116                 list_curr->next = (basic_list *) malloc (sizeof(basic_list));
-00117                 list_curr = list_curr->next;
-00118                 break;
-00119 
-00120             case 'p':
-00121                 separator = optarg;
-00122                 break;
-00123 
-00124             case 'm':
-00125                 search_method = atoi(optarg);
-00126                 break;
-00127 
-00128             case 't':
-00129                 tolerance = atoi(optarg);
-00130                 break;
-00131 
-00132             case 'x':
-00133                 if ( optarg != NULL ) {
-00134                     useX = 1;
-00135                     xDisplayLocation = optarg;
-00136                     display = XOpenDisplay(xDisplayLocation);
-00137                 } else {
-00138                     useX = 1;
-00139                     xDisplayLocation = "";
-00140                     display = XOpenDisplay(xDisplayLocation);
-00141                 }
-00142                 break;
-00143 
-00144             case 'c':
-00145                 useCenter = 1;
-00146 
-00147             case 'o':
-00148                 tolerance = atoi(optarg);
-00149                 /* Provide a more sane way to configure tolerance:
-00150                  * --sane-tolerance=100 ~= INT_MAX */
-00151                 tolerance = pow(1.2397076, tolerance);
-00152                 break;
-00153 
-00154             case '?':
-00155                 /* Error routine */
-00156                 break;
-00157 
-00158             default:
-00159                 fprintf( stderr, "Unknown option..." );
-00160                 exit(0);
-00161         };
-00162     }
-00163 
-00164     /* Make sure we have a linked list, 
-00165      * and reset the linked list to go back through from the top */
-00166     if ( list_head == NULL )
-00167         return 1;
-00168     else
-00169         list_curr = list_head;
-00170 
-00171     do
-00172     {
-00173         sub_location = list_curr->fileName;
-00174 
-00175         if (useX && useCenter)
-00176             result_point = matchSubImage_X11_location_center( display, sub_location, search_method, tolerance );
-00177         else if (useX && !useCenter)
-00178             result_point = matchSubImage_X11_location( display, sub_location, search_method, tolerance );
-00179         else if (!useX && useCenter)
-00180             result_point = matchSubImage_location_center( root_location, sub_location, search_method, tolerance );
-00181         else /* if (!useX && !useCenter) */
-00182             result_point = matchSubImage_location( root_location, sub_location, search_method, tolerance );
-00183 
-00184         if ( result_point.x != -1 && result_point.y != -1 )
-00185             /* Output the match location */
-00186             printf ("%s%s%i%s%i\n", list_curr->fileName, separator,
-00187                     result_point.x, separator, result_point.y );
-00188 
-00189         /* With the way we allocate the list, we ensure that we always
-00190          * have at least one element past the end of the list.
-00191          * Also, deconstruct the list as we go. */
-00192         list_prev = list_curr;
-00193         list_curr = list_curr->next;
-00194         free(list_prev);
-00195 
-00196     } while ( list_curr->fileName != NULL );
-00197 
-00198     /* And free the final element */
-00199     free(list_curr);
-00200 
-00201     /* Clean up X */
-00202     if (useX)
-00203         XCloseDisplay(display);
-00204 
-00205     return 0;
-00206 }
-00207 
-00208 /* 
-00209  * ===  FUNCTION  ======================================================================
-00210  *         Name:  usage
-00211  *  Description:  I really shouldn't need to write this
-00212  * =====================================================================================
-00213  */
-00214 void usage ( )
-00215 {
-00216     fprintf( stderr, "\
-00217 Libcvautomation version: %s\n\
-00218 cva-match -r <root_image> -s <sub_image> \n\
-00219 cva-match -s <sub_image> -x \n\
-00220 \n\
-00221 This program uses OpenCV in order to recognize an image within an image.\n\
-00222 The return code is how many matches were found - return 0 for no matches,\n\
-00223 1 for one match, etc.\n\
-00224 \n\
-00225 Usage: \n\
-00226 \n\
-00227 \t-h, --help:\t\tDisplay this usage message.\n\
-00228 \t-u, --usage:\t\tDisplay this usage message.\n\
-00229 \t-r, --root-image:\tLocation of the root image to compare against.\n\
-00230 \t-s, --sub-image:\tLocation of the sub-image to find in root.\n\
-00231 \t-p, --separator:\tSeparator of the X and Y coordinates.\n\
-00232 \t-t, --tolerance:\tSet how strict the match is - 100 is recommended lowest value.\n\
-00233 \t\t\t\tNote: When using CCORR or CCOEFF tolerance works in opposite direction,\n\
-00234 \t\t\t\tso -50 is recommended highest value.\n\
-00235 \t-m, --search-method:\tSet which method is used to search for sub-images.\n\
-00236 \t\t\t\tMethods:\n\
-00237 \t\t\t\t\tCV_TM_SQDIFF = 0\n\
-00238 \t\t\t\t\tCV_TM_SQDIFF_NORMED = 1\n\
-00239 \t\t\t\t\tCV_TM_CCORR = 2\n\
-00240 \t\t\t\t\tCV_TM_CCORR_NORMED = 3\n\
-00241 \t\t\t\t\tCV_TM_CCOEFF = 4\n\
-00242 \t\t\t\t\tCV_TM_COEFF_NORMED = 5\n\
-00243 \t-x, --x-root[=DISPLAY]:\tSet the root image to come from X11\n\
-00244 \t\t\t\tThe DISPLAY variable is optional, not specifying it will cause X\n\
-00245 \t\t\t\tto use the default display (not specifically :0.0)\n\
-00246 \t\t\t\tPlease note also that the '-x' must come at the end\n\
-00247 \t\t\t\tsince it is an optional argument.\n\
-00248 \t-c, --center:\t\tThe output points should be centered on the sub-image, rather\n\
-00249 \t\t\t\tthan the top-left corner.\n\
-00250 \t-o, --sane-tolerance:\tSet the tolerance using a scale of 1-100,\n\
-00251 \t\t\t\trather than INT_MIN to INT_MAX (100 ~= INT_MAX)\n\
-00252 \n\
-00253 If you have any questions, comments, concerns, email <%s>\n", LIBCVAUTOMATION_VERSION, LIBCVAUTOMATION_BUGREPORT );
-00254 
-00255     exit (0);
-00256 
-00257 }       /* -----  end of function usage  ----- */
-00258 
-00259 /* Doxygen Information */
-00266 /* The biggest purpose of documenting this code is to trick doxygen into making a man page for it. */
-

Generated on Tue Jul 17 12:19:00 2012 for libcvautomation by  - -doxygen 1.4.7
- - diff --git a/cva-match_8c.html b/cva-match_8c.html deleted file mode 100644 index ce04aa9..0000000 --- a/cva-match_8c.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - -libcvautomation: cva-match.c File Reference - - - - - - - - - - - - -
- - -
- - - - - - - - - - - -
-
libcvautomation -  1.2 -
- -
-
- - - - - -
-
-
-Functions
-
-
cva-match.c File Reference
-
-
- -

The cva-input program to demonstrate Libcvautomation's XTest functionality. -More...

-
#include <stdlib.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <getopt.h>
-#include <limits.h>
-#include <libcvautomation/libcvautomation.h>
-
-

Go to the source code of this file.

- - - - -

-Functions

-void usage ()
-int main (int argc, char **argv)
-

Detailed Description

-

The cva-input program to demonstrate Libcvautomation's XTest functionality.

-
Author:
Bradlee Speice <bspeice@uncc.edu>
-
Date:
7/18/2012
- -

Definition in file cva-match.c.

-
- -
- All Classes Files Functions Defines
- - -
- -
- - - - - - - diff --git a/cva-match_8c_source.html b/cva-match_8c_source.html deleted file mode 100644 index 44e4e9e..0000000 --- a/cva-match_8c_source.html +++ /dev/null @@ -1,376 +0,0 @@ - - - - - -libcvautomation: cva-match.c Source File - - - - - - - - - - - - -
- - -
- - - - - - - - - - - -
-
libcvautomation -  1.2 -
- -
-
- - - - - -
-
-
-
cva-match.c
-
-
-Go to the documentation of this file.
00001 /*
-00002  * =====================================================================================
-00003  *
-00004  *       Filename:  cva-match.c
-00005  *
-00006  *    Description:  Match an image to its parent image, and return the coordinates
-00007  *
-00008  *        Version:  0.1
-00009  *        Created:  06/20/2012
-00010  *       Revision:  none
-00011  *       Compiler:  gcc
-00012  *
-00013  *         Author:  Bradlee Speice, bspeice@uncc.edu
-00014  *   Organization:  MOSAIC at University of North Carolina at Charlotte
-00015  *
-00016  * =====================================================================================
-00017  */
-00018 #include <stdlib.h>
-00019 #include <stdio.h>
-00020 #include <unistd.h>
-00021 #include <getopt.h>
-00022 #include <limits.h>
-00023 
-00024 #include <libcvautomation/libcvautomation.h>
-00025 
-00026 void usage ();
-00027 
-00029 struct list {
-00030     char *fileName;
-00031     struct list *next;
-00032 };
-00033 
-00034 typedef struct list basic_list; 
-00036 
-00037 int main( int argc, char** argv )
-00038 {
-00039     CvPoint result_point;
-00040     result_point.x = result_point.y = 0;
-00041 
-00042     /* Set up everything for getopt */
-00043     char *separator = ",";
-00044     char *root_location = "root.png";
-00045     char *sub_location = "sub.png";
-00046     int tolerance = INT_MAX;
-00047     int search_method = CV_TM_SQDIFF;
-00048     int useX = 0; /* bool useX = false; */
-00049     Bool useCenter = False;
-00050     char *xDisplayLocation;
-00051     Display *display;
-00052     /* This line to suppress a compiler warning */
-00053     display = NULL;
-00054 
-00055     /* Set the default display */
-00056     xDisplayLocation = "";
-00057 
-00058     /* Set up the linked list for slave images */
-00059     basic_list *list_head, *list_curr, *list_prev;
-00060     list_head = list_curr = list_prev = NULL;
-00061 
-00062     /* Start getopt */
-00063     while (1)
-00064     {
-00065         static struct option long_options[] =
-00066         {
-00067                 {"help",        no_argument,        0,  'h'},
-00068                 {"usage",       no_argument,        0,  'u'},
-00069                 {"version",     no_argument,        0,  'v'},
-00070                 {"root-image",  required_argument,  0,  'r'},
-00071                 {"sub-image",   required_argument,  0,  's'},
-00072                 {"separator",   required_argument,  0,  'p'},
-00073                 {"search-method",required_argument, 0,  'm'},
-00074                 {"tolerance",   required_argument,  0,  't'},
-00075                 {"x-root",      optional_argument,  0,  'x'},
-00076                 {"center",      no_argument,        0,  'c'},
-00077                 {"sane-tolerance", required_argument, 0, 'o'},
-00078                 {0, 0, 0, 0}
-00079         };
-00080 
-00081         int option_index = 0;
-00082         opterr = 0;
-00083 
-00084         int c = getopt_long (argc, argv, "hur:s:p:m:t:x::c",
-00085                             long_options, &option_index);
-00086 
-00087         /* We're done with parsing options */
-00088         if (c == -1)
-00089             break;
-00090 
-00091         switch (c)
-00092         {
-00093             case 0:
-00094                 break;
-00095 
-00096             case 'h':
-00097                 usage();
-00098                 break;
-00099 
-00100             case 'u':
-00101                 usage();
-00102                 break;
-00103 
-00104             case 'v':
-00105                 usage();
-00106                 break;
-00107 
-00108             case 'r':
-00109                 root_location = optarg;
-00110                 break;
-00111 
-00112             case 's':
-00113                 if ( list_head == NULL )
-00114                 {
-00115                     list_head = (basic_list *) malloc (sizeof(basic_list));
-00116                     list_curr = list_head;
-00117                 }
-00118                 list_curr->fileName = optarg;
-00119                 list_curr->next = (basic_list *) malloc (sizeof(basic_list));
-00120                 list_curr->next->fileName = NULL;
-00121                 list_curr = list_curr->next;
-00122                 break;
-00123 
-00124             case 'p':
-00125                 separator = optarg;
-00126                 break;
-00127 
-00128             case 'm':
-00129                 search_method = atoi(optarg);
-00130                 break;
-00131 
-00132             case 't':
-00133                 tolerance = atoi(optarg);
-00134                 break;
-00135 
-00136             case 'x':
-00137                 if ( optarg != NULL ) {
-00138                     useX = 1;
-00139                     xDisplayLocation = optarg;
-00140                     display = XOpenDisplay(xDisplayLocation);
-00141                 } else {
-00142                     useX = 1;
-00143                     xDisplayLocation = "";
-00144                     display = XOpenDisplay(xDisplayLocation);
-00145                 }
-00146                 break;
-00147 
-00148             case 'c':
-00149                 useCenter = True;
-00150                 break;
-00151 
-00152             case 'o':
-00153                 tolerance = atoi(optarg);
-00154                 /* Provide a more sane way to configure tolerance:
-00155                  * --sane-tolerance=100 ~= INT_MAX */
-00156                 tolerance = pow(1.2397076, tolerance);
-00157                 break;
-00158 
-00159             case '?':
-00160                 /* Error routine */
-00161                 break;
-00162 
-00163             default:
-00164                 fprintf( stderr, "Unknown option..." );
-00165                 exit(0);
-00166         };
-00167     }
-00168 
-00169     /* Make sure we have a linked list, 
-00170      * and reset the linked list to go back through from the top */
-00171     if ( list_head == NULL )
-00172         return 1;
-00173     else
-00174         list_curr = list_head;
-00175 
-00176     do
-00177     {
-00178         sub_location = list_curr->fileName;
-00179 
-00180         if (useX && useCenter)
-00181             result_point = matchSubImage_X11_location_center( display, sub_location, search_method, tolerance );
-00182         else if (useX && !useCenter)
-00183             result_point = matchSubImage_X11_location( display, sub_location, search_method, tolerance );
-00184         else if (!useX && useCenter)
-00185             result_point = matchSubImage_location_center( root_location, sub_location, search_method, tolerance );
-00186         else /* if (!useX && !useCenter) */
-00187             result_point = matchSubImage_location( root_location, sub_location, search_method, tolerance );
-00188 
-00189         if ( result_point.x != -1 && result_point.y != -1 )
-00190             /* Output the match location */
-00191             printf ("%s%s%i%s%i\n", list_curr->fileName, separator,
-00192                     result_point.x, separator, result_point.y );
-00193 
-00194         /* With the way we allocate the list, we ensure that we always
-00195          * have at least one element past the end of the list.
-00196          * Also, deconstruct the list as we go. */
-00197         list_prev = list_curr;
-00198         list_curr = list_curr->next;
-00199         free(list_prev);
-00200 
-00201     } while ( list_curr->fileName != NULL );
-00202 
-00203     /* And free the final element */
-00204     free(list_curr);
-00205 
-00206     /* Clean up X */
-00207     if (useX)
-00208         XCloseDisplay(display);
-00209 
-00210     return 0;
-00211 }
-00212 
-00213 /* 
-00214  * ===  FUNCTION  ======================================================================
-00215  *         Name:  usage
-00216  *  Description:  I really shouldn't need to write this
-00217  * =====================================================================================
-00218  */
-00219 void usage ( )
-00220 {
-00221     fprintf( stderr, "\
-00222 Libcvautomation version: %s\n\
-00223 cva-match -r <root_image> -s <sub_image> \n\
-00224 cva-match -s <sub_image> -x \n\
-00225 \n\
-00226 This program uses OpenCV in order to recognize an image within an image.\n\
-00227 The return code is how many matches were found - return 0 for no matches,\n\
-00228 1 for one match, etc.\n\
-00229 \n\
-00230 Usage: \n\
-00231 \n\
-00232 \t-h, --help:\t\tDisplay this usage message.\n\
-00233 \t-u, --usage:\t\tDisplay this usage message.\n\
-00234 \t-r, --root-image:\tLocation of the root image to compare against.\n\
-00235 \t-s, --sub-image:\tLocation of the sub-image to find in root.\n\
-00236 \t-p, --separator:\tSeparator of the X and Y coordinates.\n\
-00237 \t-t, --tolerance:\tSet how strict the match is - 100 is recommended lowest value.\n\
-00238 \t\t\t\tNote: When using CCORR or CCOEFF tolerance works in opposite direction,\n\
-00239 \t\t\t\tso -50 is recommended highest value.\n\
-00240 \t-m, --search-method:\tSet which method is used to search for sub-images.\n\
-00241 \t\t\t\tMethods:\n\
-00242 \t\t\t\t\tCV_TM_SQDIFF = 0\n\
-00243 \t\t\t\t\tCV_TM_SQDIFF_NORMED = 1\n\
-00244 \t\t\t\t\tCV_TM_CCORR = 2\n\
-00245 \t\t\t\t\tCV_TM_CCORR_NORMED = 3\n\
-00246 \t\t\t\t\tCV_TM_CCOEFF = 4\n\
-00247 \t\t\t\t\tCV_TM_COEFF_NORMED = 5\n\
-00248 \t-x, --x-root[=DISPLAY]:\tSet the root image to come from X11\n\
-00249 \t\t\t\tThe DISPLAY variable is optional, not specifying it will cause X\n\
-00250 \t\t\t\tto use the default display (not specifically :0.0)\n\
-00251 \t\t\t\tPlease note also that the '-x' must come at the end\n\
-00252 \t\t\t\tsince it is an optional argument.\n\
-00253 \t-c, --center:\t\tThe output points should be centered on the sub-image, rather\n\
-00254 \t\t\t\tthan the top-left corner.\n\
-00255 \t-o, --sane-tolerance:\tSet the tolerance using a scale of 1-100,\n\
-00256 \t\t\t\trather than INT_MIN to INT_MAX (100 ~= INT_MAX)\n\
-00257 \n\
-00258 If you have any questions, comments, concerns, email <%s>\n", LIBCVAUTOMATION_VERSION, LIBCVAUTOMATION_BUGREPORT );
-00259 
-00260     exit (0);
-00261 
-00262 }       /* -----  end of function usage  ----- */
-00263 
-00264 /* Doxygen Information */
-00271 /* The biggest purpose of documenting this code is to trick doxygen into making a man page for it. */
-
- -
- All Classes Files Functions Defines
- - -
- -
- - - - - - - diff --git a/files.html b/files.html index f52a4a6..4b527df 100644 --- a/files.html +++ b/files.html @@ -34,7 +34,7 @@
libcvautomation -  1.2 +  1.3
@@ -87,8 +87,6 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
Here is a list of all documented files with brief descriptions:
- - @@ -112,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/form_0.png b/form_0.png deleted file mode 100644 index 1528092..0000000 Binary files a/form_0.png and /dev/null differ diff --git a/form_1.png b/form_1.png deleted file mode 100644 index fb1fec8..0000000 Binary files a/form_1.png and /dev/null differ diff --git a/form_10.png b/form_10.png deleted file mode 100644 index 95499a4..0000000 Binary files a/form_10.png and /dev/null differ diff --git a/form_2.png b/form_2.png deleted file mode 100644 index d6cf092..0000000 Binary files a/form_2.png and /dev/null differ diff --git a/form_3.png b/form_3.png deleted file mode 100644 index e920710..0000000 Binary files a/form_3.png and /dev/null differ diff --git a/form_4.png b/form_4.png deleted file mode 100644 index 981b4f7..0000000 Binary files a/form_4.png and /dev/null differ diff --git a/form_5.png b/form_5.png deleted file mode 100644 index 465dab6..0000000 Binary files a/form_5.png and /dev/null differ diff --git a/form_6.png b/form_6.png deleted file mode 100644 index c73da0b..0000000 Binary files a/form_6.png and /dev/null differ diff --git a/form_7.png b/form_7.png deleted file mode 100644 index 5f529c1..0000000 Binary files a/form_7.png and /dev/null differ diff --git a/form_8.png b/form_8.png deleted file mode 100644 index c189fcf..0000000 Binary files a/form_8.png and /dev/null differ diff --git a/form_9.png b/form_9.png deleted file mode 100644 index 3f95bf9..0000000 Binary files a/form_9.png and /dev/null differ diff --git a/formula.repository b/formula.repository deleted file mode 100644 index 812d56b..0000000 --- a/formula.repository +++ /dev/null @@ -1,11 +0,0 @@ -\form#0:$ T(x) = (10^{\frac{\log{INT\_MAX}}{\lambda}})^x $ -\form#1:$ \lambda $ -\form#2:$R(x,y) = \sum_{x',y'} (T(x',y') - I(x + x', y+y'))^2 $ -\form#3:$ R(x,y) = \frac{\sum_{x',y'}(T(x',y') - I(x + x', y + y'))^2}{ \sqrt{\sum_{x',y'}T(x',y')^2 \cdot \sum_{x',y'}I(x + x', y + y')^2}} $ -\form#4:$ R(x,y)= \sum _{x',y'} (T(x',y') \cdot I(x+x',y+y')) $ -\form#5:$ R(x,y)= \frac{\sum_{x',y'} (T(x',y') \cdot I'(x+x',y+y'))}{\sqrt{\sum_{x',y'}T(x',y')^2 \cdot \sum_{x',y'} I(x+x',y+y')^2}} $ -\form#6:$ R(x,y)= \sum _{x',y'} (T'(x',y') \cdot I(x+x',y+y')) $ -\form#7:$ \begin{array}{l} T'(x',y')=T(x',y') - 1/(w \cdot h) \cdot \sum _{x'',y''} T(x'',y'') \\ I'(x+x',y+y')=I(x+x',y+y') - 1/(w \cdot h) \cdot \sum _{x'',y''} I(x+x'',y+y'') \end{array} $ -\form#8:$ R(x,y)= \frac{ \sum_{x',y'} (T'(x',y') \cdot I'(x+x',y+y')) }{ \sqrt{\sum_{x',y'}T'(x',y')^2 \cdot \sum_{x',y'} I'(x+x',y+y')^2} } $ -\form#9:$ 1 \approx 0 $ -\form#10:$ 100 \approx \c INT_MAX $ diff --git a/functions.html b/functions.html deleted file mode 100644 index 7c6ce14..0000000 --- a/functions.html +++ /dev/null @@ -1,52 +0,0 @@ - - -libcvautomation: Class Members - - - - -
-
cva-input.c [code]The cva-input program to demonstrate Libcvautomation's XTest functionality
cva-match.c [code]The cva-input program to demonstrate Libcvautomation's XTest functionality
libcvautomation-opencv.h [code]The source code to access libcv from inside libcvautomation
libcvautomation-xlib.h [code]The source code to access Xlib from inside libcvautomation
libcvautomation-xtest.h [code]The source code to access the XTest extension inside libcvautomation
- - - - -
- - -
-
-
-
- -
-Here is a list of all documented class members with links to the class documentation for each member: -

-

-
Generated on Tue Jul 17 12:19:00 2012 for libcvautomation by  - -doxygen 1.4.7
- - diff --git a/functions_vars.html b/functions_vars.html deleted file mode 100644 index 89619bf..0000000 --- a/functions_vars.html +++ /dev/null @@ -1,52 +0,0 @@ - - -libcvautomation: Class Members - Variables - - - - -
-
-
-
-
- -
-  -

-

-
Generated on Tue Jul 17 12:19:00 2012 for libcvautomation by  - -doxygen 1.4.7
- - diff --git a/globals.html b/globals.html index 9133f03..b69e481 100644 --- a/globals.html +++ b/globals.html @@ -34,7 +34,7 @@
libcvautomation -  1.2 +  1.3
@@ -156,16 +156,16 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : libcvautomation-opencv.h
  • matchSubImage_X11() -: libcvautomation-xlib.h +: libcvautomation-xlib.h
  • matchSubImage_X11_center() -: libcvautomation-xlib.h +: libcvautomation-xlib.h
  • matchSubImage_X11_location() -: libcvautomation-xlib.h +: libcvautomation-xlib.h
  • matchSubImage_X11_location_center() -: libcvautomation-xlib.h +: libcvautomation-xlib.h
  • @@ -199,7 +199,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : libcvautomation-xtest.h
  • xte_commandString() -: libcvautomation-xtest.h +: libcvautomation-xtest.h
  • xte_hoverMouseImage() : libcvautomation-xtest.h @@ -243,6 +243,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • xte_pointerLocation() : libcvautomation-xtest.h
  • +
  • xte_waitForImage() +: libcvautomation-xtest.h +
  • +
  • xte_waitForImage_location() +: libcvautomation-xtest.h +
  • xte_XTestSupported() : libcvautomation-xtest.h
  • @@ -265,7 +271,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/globals_defs.html b/globals_defs.html index b578ea1..b7615b6 100644 --- a/globals_defs.html +++ b/globals_defs.html @@ -34,7 +34,7 @@
    libcvautomation -  1.2 +  1.3
    @@ -121,7 +121,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/globals_func.html b/globals_func.html index 0a09bae..904731f 100644 --- a/globals_func.html +++ b/globals_func.html @@ -34,7 +34,7 @@
    libcvautomation -  1.2 +  1.3
    @@ -134,16 +134,16 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : libcvautomation-opencv.h
  • matchSubImage_X11() -: libcvautomation-xlib.h +: libcvautomation-xlib.h
  • matchSubImage_X11_center() -: libcvautomation-xlib.h +: libcvautomation-xlib.h
  • matchSubImage_X11_location() -: libcvautomation-xlib.h +: libcvautomation-xlib.h
  • matchSubImage_X11_location_center() -: libcvautomation-xlib.h +: libcvautomation-xlib.h
  • @@ -177,7 +177,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : libcvautomation-xtest.h
  • xte_commandString() -: libcvautomation-xtest.h +: libcvautomation-xtest.h
  • xte_hoverMouseImage() : libcvautomation-xtest.h @@ -221,6 +221,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • xte_pointerLocation() : libcvautomation-xtest.h
  • +
  • xte_waitForImage() +: libcvautomation-xtest.h +
  • +
  • xte_waitForImage_location() +: libcvautomation-xtest.h +
  • xte_XTestSupported() : libcvautomation-xtest.h
  • @@ -243,7 +249,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/globals_type.html b/globals_type.html deleted file mode 100644 index c3d47ae..0000000 --- a/globals_type.html +++ /dev/null @@ -1,47 +0,0 @@ - - -libcvautomation: Class Members - - - - -
    -
    -
    -
    -
    - -
    -  -

    -

    -
    Generated on Tue Jul 17 12:19:00 2012 for libcvautomation by  - -doxygen 1.4.7
    - - diff --git a/index.html b/index.html index 35015e2..30e4de3 100644 --- a/index.html +++ b/index.html @@ -34,7 +34,7 @@
    libcvautomation -  1.2 +  1.3
    @@ -88,11 +88,11 @@ Introduction

    How Libcvautomation Works

    Libcvautomation represents two software products coming together - OpenCV and the XTest extension to the X11 server. OpenCV is used for image recognition, and XTest is used to actually drive the X server. You can dig into libcvautomation-xtest.h to get an idea of what all this library is capable of.
    - Basically what happens is that for whenever you need to do image recognition, OpenCV is used to find the images, and XTest is used to generate any events needed. Libcvautomation is mostly a wrapper to integrate both of these products, but also adds some functions like matchSubImage_X11() that allow you to match an image against the X11 root window in place. This means no more 'xwd | convert "<out_name>"'.

    + Basically what happens is that for whenever you need to do image recognition, OpenCV is used to find the images, and XTest is used to generate any events needed. Libcvautomation is mostly a wrapper to integrate both of these products, but also adds some functions like matchSubImage_X11() that allow you to match an image against the X11 root window in place. This means no more 'xwd | convert "<out_name>"'.

    Using Libcvautomation And Writing Application Tests

    So how does one go about using libcvautomation?
    - I'm so glad you asked! I've provided a few reference programs - cva-match and cva-input - that can be used to demonstrate most of libcvautomation's capabilities. I've even provided a BASH wrapper to make it incredibly easy to use BASH with libcvautomation as well (requires that cva-match and cva-input are installed). Python bindings are on their way too.
    + I'm so glad you asked! I've provided a few reference programs - cva-match and cva-input - that can be used to demonstrate most of libcvautomation's capabilities. I've even provided a BASH wrapper to make it incredibly easy to use BASH with libcvautomation as well (requires that cva-match and cva-input are installed). Python bindings are on their way too.
    Finally, if you want to know how to write your own application tests, please see Writing Application Tests for more information on that. I've provided code to give you a basic idea of how they work.

    Questions? Comments? Concerns?

    @@ -115,7 +115,7 @@ Questions? Comments? Concerns? diff --git a/libcvautomation-opencv_8h-source.html b/libcvautomation-opencv_8h-source.html deleted file mode 100644 index 4b4618e..0000000 --- a/libcvautomation-opencv_8h-source.html +++ /dev/null @@ -1,91 +0,0 @@ - - -libcvautomation: libcvautomation-opencv.h Source File - - - - -
    -
    -
    -
    -

    libcvautomation-opencv.h

    Go to the documentation of this file.
    00001 /*
    -00002  * =====================================================================================
    -00003  *
    -00004  *       Filename:  libcvautomation-opencv.h
    -00005  *
    -00006  *    Description:  Function definitions for opencv functionality
    -00007  *
    -00008  *        Created:  06/21/2012 08:34:21 AM
    -00009  *       Revision:  none
    -00010  *       Compiler:  gcc
    -00011  *
    -00012  *         Author:  Bradlee Speice, bspeice@uncc.edu
    -00013  *   Organization:  MOSAIC at University of North Carolina at Charlotte
    -00014  *
    -00015  * =====================================================================================
    -00016  */
    -00017 #ifndef LIBCVAUTOMATION_OPENCV_H
    -00018 #define LIBCVAUTOMATION_OPENCV_H
    -00019 
    -00020 #include <libcvautomation/libcvautomation.h>
    -00021 
    -00022 /* It should be noted that the following are the macros for template matching:
    -00023  *  CV_TM_SQDIFF (default)
    -00024  *  CV_TM_SQDIFF_NORMED
    -00025  *  CV_TM_CCORR
    -00026  *  CV_TM_CCORR_NORMED
    -00027  *  CV_TM_CCOEFF
    -00028  *  CV_TM_CCOEFF_NORMED
    -00029  */
    -00030 
    -00031 /* Match a root image and sub image */
    -00032 CvPoint matchSubImage ( IplImage *rootImage, IplImage *subImage, int searchMethod, double tolerance );
    -00033 
    -00034 /* Match a root image and sub image, return the center */
    -00035 CvPoint matchSubImage_center ( IplImage *rootImage, IplImage *subImage, int searchMethod, double tolerance );
    -00036 
    -00037 /* Match a root image and sub image from filename */
    -00038 CvPoint matchSubImage_location ( const char *rootImage_location, const char *subImage_location, int searchMethod, double tolerance );
    -00039 
    -00040 /* Match a root image and sub image from filename, return the center */
    -00041 CvPoint matchSubImage_location_center ( const char *rootImage_location, const char *subImage_location, int searchMethod, double tolerance );
    -00042 
    -00043 /* Match a root image and sub images from an array of images */
    -00044 void matchSubImage_a ( IplImage *rootImage, cvautomationList *subImageArray, int listSize );
    -00045 
    -00046 /* Match a root image and sub images from an array of images, return the center */
    -00047 void matchSubImage_a_center ( IplImage *rootImage, cvautomationList *subImageArray, int listSize );
    -00048 
    -00049 /* Match a root image and sub images from an array of images */
    -00050 void matchSubImage_a_location ( const char *rootImageFileName, cvautomationList *subImageArray, int listSize );
    -00051 
    -00052 /* Match a root image and sub images from an array of images, return the center */
    -00053 void matchSubImage_a_location_center ( const char *rootImageFileName, cvautomationList *subImageArray, int listSize );
    -00054 
    -00055 #endif /* LIBCVAUTOMATION_OPENCV_H */
    -00056 
    -00057 /* Doxygen information */
    -

    Generated on Tue Jul 17 12:19:00 2012 for libcvautomation by  - -doxygen 1.4.7
    - - diff --git a/libcvautomation-opencv_8h.html b/libcvautomation-opencv_8h.html index 2fcd3e8..7de82f1 100644 --- a/libcvautomation-opencv_8h.html +++ b/libcvautomation-opencv_8h.html @@ -34,7 +34,7 @@
    libcvautomation -  1.2 +  1.3
    @@ -97,13 +97,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); - + - + - + - + @@ -169,7 +169,7 @@ Functions

    Functions

    CvPoint matchSubImage (IplImage *rootImage, IplImage *subImage, int searchMethod, double tolerance)
    cvaPoint matchSubImage (IplImage *rootImage, IplImage *subImage, int searchMethod, double tolerance)
     Return the location of a sub image in its root image.
    CvPoint matchSubImage_center (IplImage *rootImage, IplImage *subImage, int searchMethod, double tolerance)
    cvaPoint matchSubImage_center (IplImage *rootImage, IplImage *subImage, int searchMethod, double tolerance)
     Return the center of a sub image in its root image, rather than the top-left corner.
    CvPoint matchSubImage_location (const char *rootImage_location, const char *subImage_location, int searchMethod, double tolerance)
    cvaPoint matchSubImage_location (const char *rootImage_location, const char *subImage_location, int searchMethod, double tolerance)
     Return the location of a sub image in its root image.
    CvPoint matchSubImage_location_center (const char *rootImage_location, const char *subImage_location, int searchMethod, double tolerance)
    cvaPoint matchSubImage_location_center (const char *rootImage_location, const char *subImage_location, int searchMethod, double tolerance)
     Return the center of a sub image in its root image, rather than the top-left corner.
    void matchSubImage_a (IplImage *rootImage, cvautomationList *subImageArray, int listSize)
     Parse an array of sub images and send them to matchSubImage()
    -
    See also:
    Libcv Search Methods
    +
    See also:
    Libcv Search Methods
    Returns:
    The location of the sub image in root image
    @@ -221,7 +221,7 @@ Functions -
    See also:
    Libcv Search Methods
    +
    See also:
    Libcv Search Methods
    Returns:
    The center location of the sub image in root image
    @@ -274,7 +274,7 @@ Functions -
    See also:
    Libcv Search Methods
    +
    See also:
    Libcv Search Methods
    Returns:
    The location of the sub image in root image
    @@ -327,7 +327,7 @@ Functions -
    See also:
    Libcv Search Methods
    +
    See also:
    Libcv Search Methods
    Returns:
    The center location of the sub image in root image
    @@ -533,7 +533,7 @@ Functions diff --git a/libcvautomation-opencv_8h_source.html b/libcvautomation-opencv_8h_source.html index f64aecd..7d58d86 100644 --- a/libcvautomation-opencv_8h_source.html +++ b/libcvautomation-opencv_8h_source.html @@ -34,7 +34,7 @@
    libcvautomation -  1.2 +  1.3
    @@ -117,16 +117,16 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); 00029 */ 00030 00031 /* Match a root image and sub image */ -00032 CvPoint matchSubImage ( IplImage *rootImage, IplImage *subImage, int searchMethod, double tolerance ); +00032 cvaPoint matchSubImage ( IplImage *rootImage, IplImage *subImage, int searchMethod, double tolerance ); 00033 00034 /* Match a root image and sub image, return the center */ -00035 CvPoint matchSubImage_center ( IplImage *rootImage, IplImage *subImage, int searchMethod, double tolerance ); +00035 cvaPoint matchSubImage_center ( IplImage *rootImage, IplImage *subImage, int searchMethod, double tolerance ); 00036 00037 /* Match a root image and sub image from filename */ -00038 CvPoint matchSubImage_location ( const char *rootImage_location, const char *subImage_location, int searchMethod, double tolerance ); +00038 cvaPoint matchSubImage_location ( const char *rootImage_location, const char *subImage_location, int searchMethod, double tolerance ); 00039 00040 /* Match a root image and sub image from filename, return the center */ -00041 CvPoint matchSubImage_location_center ( const char *rootImage_location, const char *subImage_location, int searchMethod, double tolerance ); +00041 cvaPoint matchSubImage_location_center ( const char *rootImage_location, const char *subImage_location, int searchMethod, double tolerance ); 00042 00043 /* Match a root image and sub images from an array of images */ 00044 void matchSubImage_a ( IplImage *rootImage, cvautomationList *subImageArray, int listSize ); @@ -161,7 +161,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/libcvautomation-xlib_8h-source.html b/libcvautomation-xlib_8h-source.html deleted file mode 100644 index c7cf3bf..0000000 --- a/libcvautomation-xlib_8h-source.html +++ /dev/null @@ -1,77 +0,0 @@ - - -libcvautomation: libcvautomation-xlib.h Source File - - - - -
    -
    -
    -
    -

    libcvautomation-xlib.h

    Go to the documentation of this file.
    00001 /*
    -00002  * =====================================================================================
    -00003  *
    -00004  *       Filename:  libcvautomation-xlib.h
    -00005  *
    -00006  *    Description:  Function definitions for X11 operations
    -00007  *
    -00008  *        Created:  06/21/2012 08:34:21 AM
    -00009  *       Revision:  none
    -00010  *       Compiler:  gcc
    -00011  *
    -00012  *         Author:  Bradlee Speice, bspeice@uncc.edu
    -00013  *   Organization:  MOSAIC at University of North Carolina at Charlotte
    -00014  *
    -00015  * =====================================================================================
    -00016  */
    -00017 
    -00018 #ifndef LIBCVAUTOMATION_XLIB_H
    -00019 #define LIBCVAUTOMATION_XLIB_H
    -00020 
    -00021 #include <libcvautomation/libcvautomation.h>
    -00022 
    -00023 /* Custom wrapper for XOpenDisplay function */
    -00024 Display* cvaOpenDisplay ( char *displayName );
    -00025 
    -00026 /* Custom wrapper for XCloseDisplay funtion */
    -00027 void cvaCloseDisplay ( Display *displayLocation );
    -00028 
    -00029 /* Match a sub image using the X11 root window as root */
    -00030 CvPoint matchSubImage_X11( Display *displayLocation, IplImage *subImage, int searchMethod, int tolerance ); 
    -00031 
    -00032 /* Match a sub image using the X11 root window as root, return the center */
    -00033 CvPoint matchSubImage_X11_center( Display *displayLocation, IplImage *subImage, int searchMethod, int tolerance ); 
    -00034 
    -00035 /* Match a sub image using X11 as root, from filename */
    -00036 CvPoint matchSubImage_X11_location( Display *displayLocation, const char *subImage_location, int search_method, int tolerance ); 
    -00037 
    -00038 /* Match a sub image using X11 as root, from filename, return the center */
    -00039 CvPoint matchSubImage_X11_location_center( Display *displayLocation, const char *subImage_location, int search_method, int tolerance ); 
    -00040 
    -00041 #endif /* LIBCVAUTOMATION_XLIB_H */
    -00042 
    -00043 /* Doxygen information */
    -

    Generated on Tue Jul 17 12:19:00 2012 for libcvautomation by  - -doxygen 1.4.7
    - - diff --git a/libcvautomation-xlib_8h.html b/libcvautomation-xlib_8h.html index 875452d..1efeb00 100644 --- a/libcvautomation-xlib_8h.html +++ b/libcvautomation-xlib_8h.html @@ -34,7 +34,7 @@
    libcvautomation -  1.2 +  1.3
    @@ -101,14 +101,14 @@ Functions  Simple wrapper for XOpenDisplay.
    void cvaCloseDisplay (Display *displayLocation)  Simple wrapper for XCloseDisplay.
    -CvPoint matchSubImage_X11 (Display *displayLocation, IplImage *subImage, int searchMethod, int tolerance) - Return the location of a sub image in the X11 root window.
    -CvPoint matchSubImage_X11_center (Display *displayLocation, IplImage *subImage, int searchMethod, int tolerance) - Return the center of a sub image in root X11 window, rather than the top-left corner.
    -CvPoint matchSubImage_X11_location (Display *displayLocation, const char *subImage_location, int search_method, int tolerance) - Return the location of a sub image in the X11 root window.
    -CvPoint matchSubImage_X11_location_center (Display *displayLocation, const char *subImage_location, int search_method, int tolerance) - Return the center of a sub image in the root X11 window, rather than the top-left corner.
    +cvaPoint matchSubImage_X11 (Display *displayLocation, IplImage *subImage, int searchMethod, int tolerance) + Return the location of a sub image in the X11 root window.
    +cvaPoint matchSubImage_X11_center (Display *displayLocation, IplImage *subImage, int searchMethod, int tolerance) + Return the center of a sub image in root X11 window, rather than the top-left corner.
    +cvaPoint matchSubImage_X11_location (Display *displayLocation, const char *subImage_location, int search_method, int tolerance) + Return the location of a sub image in the X11 root window.
    +cvaPoint matchSubImage_X11_location_center (Display *displayLocation, const char *subImage_location, int search_method, int tolerance) + Return the center of a sub image in the root X11 window, rather than the top-left corner.

    Detailed Description

    The source code to access Xlib from inside libcvautomation.

    @@ -175,12 +175,12 @@ The program using this library is responsible to close the display as well.
    - +
    - + @@ -223,17 +223,17 @@ The program using this library is responsible to close the display as well. -
    See also:
    Libcv Search Methods
    +
    See also:
    Libcv Search Methods
    Returns:
    The location of the sub image in root X11 window
    - +
    CvPoint matchSubImage_X11 cvaPoint matchSubImage_X11 ( Display *  displayLocation,
    - + @@ -276,17 +276,17 @@ The program using this library is responsible to close the display as well. -
    See also:
    Libcv Search Methods
    +
    See also:
    Libcv Search Methods
    Returns:
    The center location of the sub image in the root X11 window
    - +
    CvPoint matchSubImage_X11_center cvaPoint matchSubImage_X11_center ( Display *  displayLocation,
    - + @@ -329,17 +329,17 @@ The program using this library is responsible to close the display as well. -
    See also:
    Libcv Search Methods
    +
    See also:
    Libcv Search Methods
    Returns:
    The center location of the sub image in the root X11 window
    - +
    CvPoint matchSubImage_X11_location cvaPoint matchSubImage_X11_location ( Display *  displayLocation,
    - + @@ -382,7 +382,7 @@ The program using this library is responsible to close the display as well. -
    See also:
    Libcv Search Methods
    +
    See also:
    Libcv Search Methods
    Returns:
    The center location of the sub image in the root X11 window
    @@ -405,7 +405,7 @@ The program using this library is responsible to close the display as well. diff --git a/libcvautomation-xlib_8h_source.html b/libcvautomation-xlib_8h_source.html index 5d26012..5872e14 100644 --- a/libcvautomation-xlib_8h_source.html +++ b/libcvautomation-xlib_8h_source.html @@ -34,7 +34,7 @@ @@ -115,16 +115,16 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); 00027 voidcvaCloseDisplay ( Display *displayLocation ); 00028 00029 /* Match a sub image using the X11 root window as root */ -00030 CvPoint matchSubImage_X11( Display *displayLocation, IplImage *subImage, int searchMethod, int tolerance ); +00030 cvaPointmatchSubImage_X11( Display *displayLocation, IplImage *subImage, int searchMethod, int tolerance ); 00031 00032 /* Match a sub image using the X11 root window as root, return the center */ -00033 CvPoint matchSubImage_X11_center( Display *displayLocation, IplImage *subImage, int searchMethod, int tolerance ); +00033 cvaPointmatchSubImage_X11_center( Display *displayLocation, IplImage *subImage, int searchMethod, int tolerance ); 00034 00035 /* Match a sub image using X11 as root, from filename */ -00036 CvPoint matchSubImage_X11_location( Display *displayLocation, constchar *subImage_location, int search_method, int tolerance ); +00036 cvaPointmatchSubImage_X11_location( Display *displayLocation, constchar *subImage_location, int search_method, int tolerance ); 00037 00038 /* Match a sub image using X11 as root, from filename, return the center */ -00039 CvPoint matchSubImage_X11_location_center( Display *displayLocation, constchar *subImage_location, int search_method, int tolerance ); +00039 cvaPointmatchSubImage_X11_location_center( Display *displayLocation, constchar *subImage_location, int search_method, int tolerance ); 00040 00041 #endif /* LIBCVAUTOMATION_XLIB_H */00042 @@ -147,7 +147,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/libcvautomation-xtest_8h-source.html b/libcvautomation-xtest_8h-source.html deleted file mode 100644 index e17cc82..0000000 --- a/libcvautomation-xtest_8h-source.html +++ /dev/null @@ -1,145 +0,0 @@ - - -libcvautomation: libcvautomation-xtest.h Source File - - - - -
    CvPoint matchSubImage_X11_location_center cvaPoint matchSubImage_X11_location_center ( Display *  displayLocation,
    libcvautomation -  1.2 +  1.3
    - - - - -
    - - -
    -
    -
    -

    libcvautomation-xtest.h

    Go to the documentation of this file.
    00001 /*
    -00002  * =====================================================================================
    -00003  *
    -00004  *       Filename:  libcvautomation-xinput.h
    -00005  *
    -00006  *    Description:  
    -00007  *
    -00008  *        Created:  06/26/2012 09:08:41 AM
    -00009  *       Revision:  none
    -00010  *       Compiler:  gcc
    -00011  *
    -00012  *         Author:  Bradlee Speice (), bspeice.nc@gmail.com
    -00013  *   Organization:  
    -00014  *
    -00015  * =====================================================================================
    -00016  */
    -00017 
    -00018 #ifndef LIBCVAUTOMATION_XTEST_H
    -00019 #define LIBCVAUTOMATION_XTEST_H
    -00020 
    -00021 #include <libcvautomation/libcvautomation.h>
    -00022 
    -00023 #define IS_CMD( x, y ) strncmp( x, y, strlen( y ) ) == 0
    -00024 #define COMMAND_STR_LEN 512
    -00025 
    -00026 /* Make sure that the XTest extension is supported.
    -00027  * If it's not, return 0 (false) */
    -00028 Bool xte_XTestSupported ( Display *displayLocation );
    -00029 
    -00030 /* Get the current location of the pointer */
    -00031 cvaPoint xte_pointerLocation ( Display *displayLocation );
    -00032 
    -00033 /* Click the mouse where it is currently at */
    -00034 void xte_clickMouse ( Display *displayLocation, int mouseButton );
    -00035 
    -00036 /* Click the mouse on an absolute screen location */
    -00037 void xte_clickMouseXY ( Display *displayLocation, int xLocation, int yLocation, int mouseButton );
    -00038 
    -00039 /* Click the mouse on a screen location relative to where it currently is */
    -00040 void xte_clickMouseRXY ( Display *displayLocation, int xIncrement, int yIncrement, int mouseButton );
    -00041 
    -00042 /* Click the mouse at the top-left corner of an image on the specified display */
    -00043 cvaPoint xte_clickMouseImage ( Display *displayLocation, IplImage *subImage, int mouseButton, int searchMethod, int tolerance );
    -00044 
    -00045 /* Click the mouse at the top-left corner of an image on the specified display
    -00046  * where the subImage is a file location */
    -00047 cvaPoint xte_clickMouseImage_location ( Display *displayLocation, const char *fileName, int mouseButton, int searchMethod, int tolerance );
    -00048 
    -00049 /* Click the mouse at the center of an image on the specified display */
    -00050 cvaPoint xte_clickMouseImage_center ( Display *displayLocation, IplImage *subImage, int mouseButton, int searchMethod, int tolerance );
    -00051 
    -00052 /* Click the mouse at the center of an image on the specified display
    -00053  * where the subImage is a file location */
    -00054 cvaPoint xte_clickMouseImage_location_center ( Display *displayLocation, const char *fileName, int mouseButton, int searchMethod, int tolerance );
    -00055 
    -00056 /* Move the mouse to a location and leave it there */
    -00057 void xte_hoverMouseXY ( Display *displayLocation, int xLocation, int yLocation );
    -00058 
    -00059 /* Move the mouse to a location relative to where it currently is and leave it there */
    -00060 void xte_hoverMouseRXY ( Display *displayLocation, int xIncrement, int yIncrement );
    -00061 
    -00062 /* Move the mouse to a location at the top-left corner of an image on the specified display
    -00063  * but don't click the mouse */
    -00064 cvaPoint xte_hoverMouseImage ( Display *displayLocation, IplImage *subImage, int searchMethod, int tolerance );
    -00065 
    -00066 /* Move the mouse to a location at the top-left corner of an image from file on the specified display
    -00067  * but don't click the mouse */
    -00068 cvaPoint xte_hoverMouseImage_location ( Display *displayLocation, const char *filename, int searchMethod, int tolerance );
    -00069 
    -00070 /* Move the mouse to a location at the center of an image on the specified display
    -00071  * but don't click the mouse */
    -00072 cvaPoint xte_hoverMouseImage_center ( Display *displayLocation, IplImage *subImage, int searchMethod, int tolerance );
    -00073 
    -00074 /* Move the mouse to a location at the center of an image from file on the specified display
    -00075  * but don't click the mouse */
    -00076 cvaPoint xte_hoverMouseImage_location_center ( Display *displayLocation, const char *fileName, int searchMethod, int tolerance );
    -00077 
    -00078 /* Push a mouse button down, but don't release it */
    -00079 void xte_mouseDown ( Display *displayLocation, int mouseButton );
    -00080 
    -00081 /* Let a mouse button up */
    -00082 void xte_mouseUp ( Display *displayLocation, int mouseButton );
    -00083 
    -00084 /* Move the mouse a little bit */
    -00085 void xte_mouseJiggle ( Display *displayLocation );
    -00086 
    -00087 /* Scroll the mouse up */
    -00088 void xte_mouseScrollUp ( Display *displayLocation );
    -00089 
    -00090 /* Scroll the mouse down */
    -00091 void xte_mouseScrollDown ( Display *displayLocation );
    -00092 
    -00093 /* Press and release a key 
    -00094  * Note that we use a string for *key, since keys like "space" are still valid. */
    -00095 void xte_clickKey ( Display *displayLocation, char *key );
    -00096 
    -00097 /* Press and release keys in a string */
    -00098 void xte_clickKeyStr ( Display *displayLocation, char *string );
    -00099 
    -00100 /* Press a key down */
    -00101 void xte_keyDown ( Display *displayLocation, char *key );
    -00102 
    -00103 /* Release a key */
    -00104 void xte_keyUp ( Display *displayLocation, char *key );
    -00105 
    -00106 /* Use one of the functions by command name */
    -00107 cvaPoint xte_commandString ( Display *displayLocation, char *commandString, int mouseButton, int searchMethod, int tolerance );
    -00108 
    -00109 #endif /* LIBCVAUTOMATION_XTEST_H */
    -00110 
    -00111 /* Doxygen information */
    -

    Generated on Tue Jul 17 12:19:00 2012 for libcvautomation by  - -doxygen 1.4.7
    - - diff --git a/libcvautomation-xtest_8h.html b/libcvautomation-xtest_8h.html index 673c921..38bd971 100644 --- a/libcvautomation-xtest_8h.html +++ b/libcvautomation-xtest_8h.html @@ -34,7 +34,7 @@
    libcvautomation -  1.2 +  1.3
    @@ -153,8 +153,12 @@ Functions  Press a key down, but do not release it.
    void xte_keyUp (Display *displayLocation, char *key)  Release a key.
    -cvaPoint xte_commandString (Display *displayLocation, char *commandString, int mouseButton, int searchMethod, int tolerance) - Execute a command where the command is coming from a string.
    +cvaPoint xte_waitForImage (Display *displayLocation, IplImage *subImage, int searchMethod, int tolerance, int timeout) + Wait for an image to show up on screen.
    +cvaPoint xte_waitForImage_location (Display *displayLocation, const char *fileName, int searchMethod, int tolerance, int timeout) + Wait for an image from file to show up on screen.
    +cvaPoint xte_commandString (Display *displayLocation, char *commandString, int mouseButton, int searchMethod, int tolerance, int timeout) + Execute a command where the command is coming from a string.

    Detailed Description

    The source code to access the XTest extension inside libcvautomation.

    @@ -442,7 +446,7 @@ Functions -
    See also:
    Libcv Search Methods
    +
    See also:
    Libcv Search Methods
    Returns:
    The location of where the mouse was clicked. This will be (-1,-1) if there was an error, in which case the mouse will not have been clicked.
    @@ -502,7 +506,7 @@ Functions -
    See also:
    Libcv Search Methods
    +
    See also:
    Libcv Search Methods
    Returns:
    The location of where the mouse was clicked. This will be (-1,-1) if there was an error, in which case the mouse will not have been clicked.
    @@ -562,7 +566,7 @@ Functions -
    See also:
    Libcv Search Methods
    +
    See also:
    Libcv Search Methods
    Returns:
    The location of where the mouse was clicked. This will be (-1,-1) if there was an error, in which case the mouse will not have been clicked.
    @@ -622,7 +626,7 @@ Functions -
    See also:
    Libcv Search Methods
    +
    See also:
    Libcv Search Methods
    Returns:
    The location of where the mouse was clicked. This will be (-1,-1) if there was an error, in which case the mouse will not have been clicked.
    @@ -761,7 +765,7 @@ Functions -
    See also:
    Libcv Search Methods
    +
    See also:
    Libcv Search Methods
    Returns:
    The location of where the mouse was moved. This will be (-1,-1) if there was an error, in which case the mouse will not have been moved.
    @@ -814,7 +818,7 @@ Functions -
    See also:
    Libcv Search Methods
    +
    See also:
    Libcv Search Methods
    Returns:
    The location of where the mouse was moved. This will be (-1,-1) if there was an error, in which case the mouse will not have been moved.
    @@ -867,7 +871,7 @@ Functions -
    See also:
    Libcv Search Methods
    +
    See also:
    Libcv Search Methods
    Returns:
    The location of where the mouse was moved. This will be (-1,-1) if there was an error, in which case the mouse will not have been moved.
    @@ -920,7 +924,7 @@ Functions -
    See also:
    Libcv Search Methods
    +
    See also:
    Libcv Search Methods
    Returns:
    The location of where the mouse was moved. This will be (-1,-1) if there was an error, in which case the mouse will not have been moved.
    @@ -1101,7 +1105,7 @@ Functions

    Press and release a keyboard key.

    -

    This method allows you to press and release a key, where the key may be 'a', 'b', or maybe something fancy like 'space'. Please see XTest Key Strings for a full list of keys.

    +

    This method allows you to press and release a key, where the key may be 'a', 'b', or maybe something fancy like 'space'. Please see XTest Key Strings for a full list of keys.

    Parameters:
    @@ -1109,7 +1113,7 @@ Functions
    displayLocationThe Display of which to click a key
    -
    See also:
    XTest Key Strings
    +
    See also:
    XTest Key Strings
    @@ -1176,7 +1180,7 @@ Functions

    Press a key down, but do not release it.

    -

    This method allows you to push down a key, where the key may be 'a', 'b', or maybe something fancy like 'space'. Please see XTest Key Strings for a full list of keys.

    +

    This method allows you to push down a key, where the key may be 'a', 'b', or maybe something fancy like 'space'. Please see XTest Key Strings for a full list of keys.

    Parameters:
    @@ -1184,7 +1188,7 @@ Functions
    displayLocationThe Display of which to push down a key
    -
    See also:
    XTest Key Strings
    +
    See also:
    XTest Key Strings
    @@ -1214,7 +1218,7 @@ Functions

    Release a key.

    -

    This method allows you to release a key, where the key may be 'a', 'b', or maybe something fancy like 'space'. Please see XTest Key Strings for a full list of keys.

    +

    This method allows you to release a key, where the key may be 'a', 'b', or maybe something fancy like 'space'. Please see XTest Key Strings for a full list of keys.

    Parameters:
    @@ -1222,16 +1226,134 @@ Functions
    displayLocationThe Display of which to release a key
    -
    See also:
    XTest Key Strings
    +
    See also:
    XTest Key Strings
    - +
    - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    cvaPoint xte_commandString cvaPoint xte_waitForImage (Display * displayLocation,
    IplImage * subImage,
    int searchMethod,
    int tolerance,
    int timeout 
    )
    +
    +
    + +

    Wait for an image to show up on screen.

    +

    This method allows you to search for an image on screen and wait for it to show up - this way you can make sure an image exists, and then respond to it. Also makes error checking easy.

    +
    Parameters:
    + + + + + + +
    displayLocationThe Display of which to search for an image
    subImageThe sub image to search for
    searchMethodThe search method to use when searching for subImage
    toleranceThe tolerance to use when searching for tolerance
    timeoutThe time (in seconds) to search for the image
    +
    +
    +
    See also:
    Libcv Search Methods
    + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    cvaPoint xte_waitForImage_location (Display * displayLocation,
    const char * fileName,
    int searchMethod,
    int tolerance,
    int timeout 
    )
    +
    +
    + +

    Wait for an image from file to show up on screen.

    +

    This method allows you to search for an image on screen and wait for it to show up - this way you can make sure an image exists, and then respond to it. Also makes error checking easy.

    +
    Parameters:
    + + + + + + +
    displayLocationThe Display of which to search for an image
    fileNameThe file to load an image from before searching
    searchMethodThe search method to use when searching for subImage
    toleranceThe tolerance to use when searching for tolerance
    timeoutThe time (in seconds) to search for the image
    +
    +
    +
    See also:
    Libcv Search Methods
    + +
    +
    + +
    +
    + + + @@ -1258,7 +1380,13 @@ Functions - + + + + + + + @@ -1270,7 +1398,7 @@ Functions

    Execute a command where the command is coming from a string.

    -

    This function allows you to input a command to libcvautomation from a string. For example, to click a mouse button, you would use the command 'mouseclick'. Please note that some commands may need arguments to the string, and some may use function arguments. See xte_commandString() Command Strings for a full list of command and arguments

    +

    This function allows you to input a command to libcvautomation from a string. For example, to click a mouse button, you would use the command 'mouseclick'. Please note that some commands may need arguments to the string, and some may use function arguments. See xte_commandString() Command Strings for a full list of command and arguments

    Parameters:
    cvaPoint xte_commandString ( Display *  displayLocation,
    int tolerance tolerance,
    int timeout 
    @@ -1278,12 +1406,13 @@ Functions +
    displayLocationThe Display of which to operate on
    mouseButtonThe mouse button to click if it is needed by the command being executed
    searchMethodThe search method to use if it is needed by the command being executed
    toleranceThe tolerance to use if it is needed by the command being executed
    timeoutThe time in seconds to wait for an image to be displayed when using the waitfor command.
    -
    See also:
    xte_commandString() Command Strings
    +
    See also:
    xte_commandString() Command Strings
    -Libcv Search Methods
    +Libcv Search Methods
    @@ -1305,7 +1434,7 @@ Functions diff --git a/libcvautomation-xtest_8h_source.html b/libcvautomation-xtest_8h_source.html index b93c452..ff3c470 100644 --- a/libcvautomation-xtest_8h_source.html +++ b/libcvautomation-xtest_8h_source.html @@ -34,7 +34,7 @@
    libcvautomation -  1.2 +  1.3
    @@ -191,12 +191,18 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); 00103 /* Release a key */ 00104 void xte_keyUp ( Display *displayLocation, char *key ); 00105 -00106 /* Use one of the functions by command name */ -00107 cvaPoint xte_commandString ( Display *displayLocation, char *commandString, int mouseButton, int searchMethod, int tolerance ); +00106 /* Wait for an image to show up on screen */ +00107 cvaPoint xte_waitForImage ( Display *displayLocation, IplImage *subImage, int searchMethod, int tolerance, int timeout ); 00108 -00109 #endif /* LIBCVAUTOMATION_XTEST_H */ -00110 -00111 /* Doxygen information */ +00109 /* Wait for an image from file to show up on screen */ +00110 cvaPoint xte_waitForImage_location ( Display *displayLocation, const char *fileName, int searchMethod, int tolerance, int timeout ); +00111 +00112 /* Use one of the functions by command name */ +00113 cvaPoint xte_commandString ( Display *displayLocation, char *commandString, int mouseButton, int searchMethod, int tolerance, int timeout ); +00114 +00115 #endif /* LIBCVAUTOMATION_XTEST_H */ +00116 +00117 /* Doxygen information */

    This is the normalized version of the Correlation Coefficient search method.

    For this method, setting a high tolerance value results in a more strict match.

    Formula: \( R(x,y)= \frac{ \sum_{x',y'} (T'(x',y') \cdot I'(x+x',y+y')) }{ \sqrt{\sum_{x',y'}T'(x',y')^2 \cdot \sum_{x',y'} I'(x+x',y+y')^2} } \)

    @@ -141,7 +141,7 @@ Correlation Coefficient (Normalized) diff --git a/pages.html b/pages.html index 9fb2c00..662d50d 100644 --- a/pages.html +++ b/pages.html @@ -34,7 +34,7 @@
    libcvautomation -  1.2 +  1.3
    @@ -81,21 +81,17 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    Here is a list of all related documentation pages:
    @@ -116,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/search.idx b/search.idx deleted file mode 100644 index 7a07e30..0000000 Binary files a/search.idx and /dev/null differ diff --git a/search.php b/search.php deleted file mode 100644 index 93ac9ee..0000000 --- a/search.php +++ /dev/null @@ -1,382 +0,0 @@ - - -Search - - - - -
    - \n
    \n"; -} - -function readInt($file) -{ - $b1 = ord(fgetc($file)); $b2 = ord(fgetc($file)); - $b3 = ord(fgetc($file)); $b4 = ord(fgetc($file)); - return ($b1<<24)|($b2<<16)|($b3<<8)|$b4; -} - -function readString($file) -{ - $result=""; - while (ord($c=fgetc($file))) $result.=$c; - return $result; -} - -function readHeader($file) -{ - $header =fgetc($file); $header.=fgetc($file); - $header.=fgetc($file); $header.=fgetc($file); - return $header; -} - -function computeIndex($word) -{ - // Fast string hashing - //$lword = strtolower($word); - //$l = strlen($lword); - //for ($i=0;$i<$l;$i++) - //{ - // $c = ord($lword{$i}); - // $v = (($v & 0xfc00) ^ ($v << 6) ^ $c) & 0xffff; - //} - //return $v; - - // Simple hashing that allows for substring search - if (strlen($word)<2) return -1; - // high char of the index - $hi = ord($word{0}); - if ($hi==0) return -1; - // low char of the index - $lo = ord($word{1}); - if ($lo==0) return -1; - // return index - return $hi*256+$lo; -} - -function search($file,$word,&$statsList) -{ - $index = computeIndex($word); - if ($index!=-1) // found a valid index - { - fseek($file,$index*4+4); // 4 bytes per entry, skip header - $index = readInt($file); - if ($index) // found words matching the hash key - { - $start=sizeof($statsList); - $count=$start; - fseek($file,$index); - $w = readString($file); - while ($w) - { - $statIdx = readInt($file); - if ($word==substr($w,0,strlen($word))) - { // found word that matches (as substring) - $statsList[$count++]=array( - "word"=>$word, - "match"=>$w, - "index"=>$statIdx, - "full"=>strlen($w)==strlen($word), - "docs"=>array() - ); - } - $w = readString($file); - } - $totalHi=0; - $totalFreqHi=0; - $totalFreqLo=0; - for ($count=$start;$count $idx, - "freq" => $freq>>1, - "rank" => 0.0, - "hi" => $freq&1 - ); - if ($freq&1) // word occurs in high priority doc - { - $totalHi++; - $totalFreqHi+=$freq*$multiplier; - } - else // word occurs in low priority doc - { - $totalFreqLo+=$freq*$multiplier; - } - } - // read name and url info for the doc - for ($i=0;$i<$numDocs;$i++) - { - fseek($file,$docInfo[$i]["idx"]); - $docInfo[$i]["name"]=readString($file); - $docInfo[$i]["url"]=readString($file); - } - $statInfo["docs"]=$docInfo; - } - $totalFreq=($totalHi+1)*$totalFreqLo + $totalFreqHi; - for ($count=$start;$count$key, - "name"=>$di["name"], - "rank"=>$rank - ); - } - $docs[$key]["words"][] = array( - "word"=>$wordInfo["word"], - "match"=>$wordInfo["match"], - "freq"=>$di["freq"] - ); - } - } - return $docs; -} - -function filter_results($docs,&$requiredWords,&$forbiddenWords) -{ - $filteredDocs=array(); - while (list ($key, $val) = each ($docs)) - { - $words = &$docs[$key]["words"]; - $copy=1; // copy entry by default - if (sizeof($requiredWords)>0) - { - foreach ($requiredWords as $reqWord) - { - $found=0; - foreach ($words as $wordInfo) - { - $found = $wordInfo["word"]==$reqWord; - if ($found) break; - } - if (!$found) - { - $copy=0; // document contains none of the required words - break; - } - } - } - if (sizeof($forbiddenWords)>0) - { - foreach ($words as $wordInfo) - { - if (in_array($wordInfo["word"],$forbiddenWords)) - { - $copy=0; // document contains a forbidden word - break; - } - } - } - if ($copy) $filteredDocs[$key]=$docs[$key]; - } - return $filteredDocs; -} - -function compare_rank($a,$b) -{ - if ($a["rank"] == $b["rank"]) - { - return 0; - } - return ($a["rank"]>$b["rank"]) ? -1 : 1; -} - -function sort_results($docs,&$sorted) -{ - $sorted = $docs; - usort($sorted,"compare_rank"); - return $sorted; -} - -function report_results(&$docs) -{ - echo "\n"; - echo " \n"; - echo " \n"; - echo " \n"; - $numDocs = sizeof($docs); - if ($numDocs==0) - { - echo " \n"; - echo " \n"; - echo " \n"; - } - else - { - echo " \n"; - echo " \n"; - echo " \n"; - $num=1; - foreach ($docs as $doc) - { - echo " \n"; - echo " "; - echo "\n"; - echo " \n"; - echo " \n"; - echo " \n"; - $num++; - } - } - echo "

    ".search_results()."

    ".matches_text(0)."
    ".matches_text($numDocs); - echo "\n"; - echo "
    $num.".$doc["name"]."
    ".report_matches()." "; - foreach ($doc["words"] as $wordInfo) - { - $word = $wordInfo["word"]; - $matchRight = substr($wordInfo["match"],strlen($word)); - echo "$word$matchRight(".$wordInfo["freq"].") "; - } - echo "
    \n"; -} - -function main() -{ - if(strcmp('4.1.0', phpversion()) > 0) - { - die("Error: PHP version 4.1.0 or above required!"); - } - if (!($file=fopen("search.idx","rb"))) - { - die("Error: Search index file could NOT be opened!"); - } - if (readHeader($file)!="DOXS") - { - die("Error: Header of index file is invalid!"); - } - $query=""; - if (array_key_exists("query", $_GET)) - { - $query=$_GET["query"]; - } - end_form($query); - echo " \n
    \n"; - $results = array(); - $requiredWords = array(); - $forbiddenWords = array(); - $foundWords = array(); - $word=strtok($query," "); - while ($word) // for each word in the search query - { - if (($word{0}=='+')) { $word=substr($word,1); $requiredWords[]=$word; } - if (($word{0}=='-')) { $word=substr($word,1); $forbiddenWords[]=$word; } - if (!in_array($word,$foundWords)) - { - $foundWords[]=$word; - search($file,strtolower($word),$results); - } - $word=strtok(" "); - } - $docs = array(); - combine_results($results,$docs); - // filter out documents with forbidden word or that do not contain - // required words - $filteredDocs = filter_results($docs,$requiredWords,$forbiddenWords); - // sort the results based on rank - $sorted = array(); - sort_results($filteredDocs,$sorted); - // report results to the user - report_results($sorted); - echo "
    \n"; - fclose($file); -} - -main(); - - -?> -
    Generated on Tue Jul 17 12:19:03 2012 for libcvautomation by  - -doxygen 1.4.7
    - - diff --git a/search/all_63.js b/search/all_63.js index c69a46e..5ce9b9b 100644 --- a/search/all_63.js +++ b/search/all_63.js @@ -1,8 +1,6 @@ var searchData= [ ['command_5fstr_5flen',['COMMAND_STR_LEN',['../libcvautomation-xtest_8h.html#a17af6c2b164a04cae831df5fb93836f6',1,'libcvautomation-xtest.h']]], - ['cva_2dinput_2ec',['cva-input.c',['../cva-input_8c.html',1,'']]], - ['cva_2dmatch_2ec',['cva-match.c',['../cva-match_8c.html',1,'']]], ['cvaclosedisplay',['cvaCloseDisplay',['../libcvautomation-xlib_8h.html#a65ab3bc56b956970a6b3d31c624d464a',1,'libcvautomation-xlib.h']]], ['cvaopendisplay',['cvaOpenDisplay',['../libcvautomation-xlib_8h.html#a575e80fc9cf076026e127a57888423d4',1,'libcvautomation-xlib.h']]], ['cvapoint',['cvaPoint',['../structcvaPoint.html',1,'']]], diff --git a/search/all_6d.js b/search/all_6d.js index 541509e..0e707f4 100644 --- a/search/all_6d.js +++ b/search/all_6d.js @@ -8,8 +8,8 @@ var searchData= ['matchsubimage_5fcenter',['matchSubImage_center',['../libcvautomation-opencv_8h.html#a0f847f63a736bddcc78ebf857be0813f',1,'libcvautomation-opencv.h']]], ['matchsubimage_5flocation',['matchSubImage_location',['../libcvautomation-opencv_8h.html#a938c40be84667f64b51c8f1fa3725b43',1,'libcvautomation-opencv.h']]], ['matchsubimage_5flocation_5fcenter',['matchSubImage_location_center',['../libcvautomation-opencv_8h.html#a0403ac35c77946e86f6436fd891fa6ac',1,'libcvautomation-opencv.h']]], - ['matchsubimage_5fx11',['matchSubImage_X11',['../libcvautomation-xlib_8h.html#ad2932b004e600388764778f2b837e6ae',1,'libcvautomation-xlib.h']]], - ['matchsubimage_5fx11_5fcenter',['matchSubImage_X11_center',['../libcvautomation-xlib_8h.html#a1f113520b4793114d4d6da026ab98f68',1,'libcvautomation-xlib.h']]], - ['matchsubimage_5fx11_5flocation',['matchSubImage_X11_location',['../libcvautomation-xlib_8h.html#a96fa86aa56f5e9c88c0ba4bc3c26130a',1,'libcvautomation-xlib.h']]], - ['matchsubimage_5fx11_5flocation_5fcenter',['matchSubImage_X11_location_center',['../libcvautomation-xlib_8h.html#af334e78266661ac4d38d5a48f98e8e6e',1,'libcvautomation-xlib.h']]] + ['matchsubimage_5fx11',['matchSubImage_X11',['../libcvautomation-xlib_8h.html#abdedf5cd2aceeda00f665747bf1eeece',1,'libcvautomation-xlib.h']]], + ['matchsubimage_5fx11_5fcenter',['matchSubImage_X11_center',['../libcvautomation-xlib_8h.html#a1d5dfa1885ffb3cc5c4f91309e9ca777',1,'libcvautomation-xlib.h']]], + ['matchsubimage_5fx11_5flocation',['matchSubImage_X11_location',['../libcvautomation-xlib_8h.html#ad67a5c4cc8b4708c8c6bb28135df92dc',1,'libcvautomation-xlib.h']]], + ['matchsubimage_5fx11_5flocation_5fcenter',['matchSubImage_X11_location_center',['../libcvautomation-xlib_8h.html#ac5fbc2afb3b53bd4788c53e16523995a',1,'libcvautomation-xlib.h']]] ]; diff --git a/search/all_78.js b/search/all_78.js index fe696ea..a87849d 100644 --- a/search/all_78.js +++ b/search/all_78.js @@ -9,7 +9,7 @@ var searchData= ['xte_5fclickmouseimage_5flocation_5fcenter',['xte_clickMouseImage_location_center',['../libcvautomation-xtest_8h.html#a40ca9d0d71b8f7cc513c27a9b0171995',1,'libcvautomation-xtest.h']]], ['xte_5fclickmouserxy',['xte_clickMouseRXY',['../libcvautomation-xtest_8h.html#a54df9f6d2278b6c840299f1f8ff94576',1,'libcvautomation-xtest.h']]], ['xte_5fclickmousexy',['xte_clickMouseXY',['../libcvautomation-xtest_8h.html#a808386f36914966032aa2e15fd5ef60b',1,'libcvautomation-xtest.h']]], - ['xte_5fcommandstring',['xte_commandString',['../libcvautomation-xtest_8h.html#a8c3574a6eff4b080840806dca53aa5b8',1,'libcvautomation-xtest.h']]], + ['xte_5fcommandstring',['xte_commandString',['../libcvautomation-xtest_8h.html#a7ea1430ed90d3166f8d9fbb4e240a28f',1,'libcvautomation-xtest.h']]], ['xte_5fhovermouseimage',['xte_hoverMouseImage',['../libcvautomation-xtest_8h.html#a657631e704e31818b42587ef50724930',1,'libcvautomation-xtest.h']]], ['xte_5fhovermouseimage_5fcenter',['xte_hoverMouseImage_center',['../libcvautomation-xtest_8h.html#a72f049ae7ade76344e47d01ba451e8f1',1,'libcvautomation-xtest.h']]], ['xte_5fhovermouseimage_5flocation',['xte_hoverMouseImage_location',['../libcvautomation-xtest_8h.html#ad274843eaaed7af192f09310caa9e5b2',1,'libcvautomation-xtest.h']]], @@ -24,5 +24,7 @@ var searchData= ['xte_5fmousescrollup',['xte_mouseScrollUp',['../libcvautomation-xtest_8h.html#a18f5cc7307329ce2e13ceb25b274822b',1,'libcvautomation-xtest.h']]], ['xte_5fmouseup',['xte_mouseUp',['../libcvautomation-xtest_8h.html#a317610586ac31c5c501290099b7ebf63',1,'libcvautomation-xtest.h']]], ['xte_5fpointerlocation',['xte_pointerLocation',['../libcvautomation-xtest_8h.html#afe460d54f6977c431d1c37d42b0264be',1,'libcvautomation-xtest.h']]], + ['xte_5fwaitforimage',['xte_waitForImage',['../libcvautomation-xtest_8h.html#abfbad79445cce59c95940649210f1b31',1,'libcvautomation-xtest.h']]], + ['xte_5fwaitforimage_5flocation',['xte_waitForImage_location',['../libcvautomation-xtest_8h.html#a3f474b9f3ae44e2fcf8997a2a806139e',1,'libcvautomation-xtest.h']]], ['xte_5fxtestsupported',['xte_XTestSupported',['../libcvautomation-xtest_8h.html#af5b751f28a87f6ca4c1b3969c2ddb7f4',1,'libcvautomation-xtest.h']]] ]; diff --git a/search/files_63.html b/search/files_63.html deleted file mode 100644 index 6611a5b..0000000 --- a/search/files_63.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/search/files_63.js b/search/files_63.js deleted file mode 100644 index b301bb3..0000000 --- a/search/files_63.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['cva_2dinput_2ec',['cva-input.c',['../cva-input_8c.html',1,'']]], - ['cva_2dmatch_2ec',['cva-match.c',['../cva-match_8c.html',1,'']]] -]; diff --git a/search/functions_6d.js b/search/functions_6d.js index 541509e..0e707f4 100644 --- a/search/functions_6d.js +++ b/search/functions_6d.js @@ -8,8 +8,8 @@ var searchData= ['matchsubimage_5fcenter',['matchSubImage_center',['../libcvautomation-opencv_8h.html#a0f847f63a736bddcc78ebf857be0813f',1,'libcvautomation-opencv.h']]], ['matchsubimage_5flocation',['matchSubImage_location',['../libcvautomation-opencv_8h.html#a938c40be84667f64b51c8f1fa3725b43',1,'libcvautomation-opencv.h']]], ['matchsubimage_5flocation_5fcenter',['matchSubImage_location_center',['../libcvautomation-opencv_8h.html#a0403ac35c77946e86f6436fd891fa6ac',1,'libcvautomation-opencv.h']]], - ['matchsubimage_5fx11',['matchSubImage_X11',['../libcvautomation-xlib_8h.html#ad2932b004e600388764778f2b837e6ae',1,'libcvautomation-xlib.h']]], - ['matchsubimage_5fx11_5fcenter',['matchSubImage_X11_center',['../libcvautomation-xlib_8h.html#a1f113520b4793114d4d6da026ab98f68',1,'libcvautomation-xlib.h']]], - ['matchsubimage_5fx11_5flocation',['matchSubImage_X11_location',['../libcvautomation-xlib_8h.html#a96fa86aa56f5e9c88c0ba4bc3c26130a',1,'libcvautomation-xlib.h']]], - ['matchsubimage_5fx11_5flocation_5fcenter',['matchSubImage_X11_location_center',['../libcvautomation-xlib_8h.html#af334e78266661ac4d38d5a48f98e8e6e',1,'libcvautomation-xlib.h']]] + ['matchsubimage_5fx11',['matchSubImage_X11',['../libcvautomation-xlib_8h.html#abdedf5cd2aceeda00f665747bf1eeece',1,'libcvautomation-xlib.h']]], + ['matchsubimage_5fx11_5fcenter',['matchSubImage_X11_center',['../libcvautomation-xlib_8h.html#a1d5dfa1885ffb3cc5c4f91309e9ca777',1,'libcvautomation-xlib.h']]], + ['matchsubimage_5fx11_5flocation',['matchSubImage_X11_location',['../libcvautomation-xlib_8h.html#ad67a5c4cc8b4708c8c6bb28135df92dc',1,'libcvautomation-xlib.h']]], + ['matchsubimage_5fx11_5flocation_5fcenter',['matchSubImage_X11_location_center',['../libcvautomation-xlib_8h.html#ac5fbc2afb3b53bd4788c53e16523995a',1,'libcvautomation-xlib.h']]] ]; diff --git a/search/functions_78.js b/search/functions_78.js index fe696ea..a87849d 100644 --- a/search/functions_78.js +++ b/search/functions_78.js @@ -9,7 +9,7 @@ var searchData= ['xte_5fclickmouseimage_5flocation_5fcenter',['xte_clickMouseImage_location_center',['../libcvautomation-xtest_8h.html#a40ca9d0d71b8f7cc513c27a9b0171995',1,'libcvautomation-xtest.h']]], ['xte_5fclickmouserxy',['xte_clickMouseRXY',['../libcvautomation-xtest_8h.html#a54df9f6d2278b6c840299f1f8ff94576',1,'libcvautomation-xtest.h']]], ['xte_5fclickmousexy',['xte_clickMouseXY',['../libcvautomation-xtest_8h.html#a808386f36914966032aa2e15fd5ef60b',1,'libcvautomation-xtest.h']]], - ['xte_5fcommandstring',['xte_commandString',['../libcvautomation-xtest_8h.html#a8c3574a6eff4b080840806dca53aa5b8',1,'libcvautomation-xtest.h']]], + ['xte_5fcommandstring',['xte_commandString',['../libcvautomation-xtest_8h.html#a7ea1430ed90d3166f8d9fbb4e240a28f',1,'libcvautomation-xtest.h']]], ['xte_5fhovermouseimage',['xte_hoverMouseImage',['../libcvautomation-xtest_8h.html#a657631e704e31818b42587ef50724930',1,'libcvautomation-xtest.h']]], ['xte_5fhovermouseimage_5fcenter',['xte_hoverMouseImage_center',['../libcvautomation-xtest_8h.html#a72f049ae7ade76344e47d01ba451e8f1',1,'libcvautomation-xtest.h']]], ['xte_5fhovermouseimage_5flocation',['xte_hoverMouseImage_location',['../libcvautomation-xtest_8h.html#ad274843eaaed7af192f09310caa9e5b2',1,'libcvautomation-xtest.h']]], @@ -24,5 +24,7 @@ var searchData= ['xte_5fmousescrollup',['xte_mouseScrollUp',['../libcvautomation-xtest_8h.html#a18f5cc7307329ce2e13ceb25b274822b',1,'libcvautomation-xtest.h']]], ['xte_5fmouseup',['xte_mouseUp',['../libcvautomation-xtest_8h.html#a317610586ac31c5c501290099b7ebf63',1,'libcvautomation-xtest.h']]], ['xte_5fpointerlocation',['xte_pointerLocation',['../libcvautomation-xtest_8h.html#afe460d54f6977c431d1c37d42b0264be',1,'libcvautomation-xtest.h']]], + ['xte_5fwaitforimage',['xte_waitForImage',['../libcvautomation-xtest_8h.html#abfbad79445cce59c95940649210f1b31',1,'libcvautomation-xtest.h']]], + ['xte_5fwaitforimage_5flocation',['xte_waitForImage_location',['../libcvautomation-xtest_8h.html#a3f474b9f3ae44e2fcf8997a2a806139e',1,'libcvautomation-xtest.h']]], ['xte_5fxtestsupported',['xte_XTestSupported',['../libcvautomation-xtest_8h.html#af5b751f28a87f6ca4c1b3969c2ddb7f4',1,'libcvautomation-xtest.h']]] ]; diff --git a/search/search.js b/search/search.js index 00010d5..c9555c7 100644 --- a/search/search.js +++ b/search/search.js @@ -9,7 +9,7 @@ var indexSectionsWithContent = { 0: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001001100000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", 1: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - 2: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 2: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", 3: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000100000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", 4: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" }; diff --git a/structcvaPoint-members.html b/structcvaPoint-members.html index 718fdcd..54c2383 100644 --- a/structcvaPoint-members.html +++ b/structcvaPoint-members.html @@ -34,7 +34,7 @@
    libcvautomation -  1.2 +  1.3
    @@ -106,7 +106,7 @@ This is the complete list of members for diff --git a/structcvaPoint.html b/structcvaPoint.html index 431c5e3..044a31a 100644 --- a/structcvaPoint.html +++ b/structcvaPoint.html @@ -34,7 +34,7 @@
    libcvautomation -  1.2 +  1.3
    @@ -112,7 +112,7 @@ int y -

    Definition at line 52 of file libcvautomation.h.

    +

    Definition at line 42 of file libcvautomation.h.


    The documentation for this struct was generated from the following file: @@ -134,7 +134,7 @@ int y diff --git a/structcvautomationList-members.html b/structcvautomationList-members.html index 98bb696..604e53e 100644 --- a/structcvautomationList-members.html +++ b/structcvautomationList-members.html @@ -34,7 +34,7 @@
    libcvautomation -  1.2 +  1.3
    @@ -109,7 +109,7 @@ This is the complete list of members for diff --git a/structcvautomationList.html b/structcvautomationList.html index e752ae4..213f7e7 100644 --- a/structcvautomationList.html +++ b/structcvautomationList.html @@ -34,7 +34,7 @@
    libcvautomation -  1.2 +  1.3
    @@ -101,8 +101,8 @@ Public Attributes IplImage * cvaImage char * fileName - -CvPoint resultPoint + +cvaPoint resultPoint int searchMethod @@ -121,9 +121,9 @@ int tolerance -
    See also:
    Libcv Search Methods
    +
    See also:
    Libcv Search Methods
    -

    Definition at line 40 of file libcvautomation.h.

    +

    Definition at line 48 of file libcvautomation.h.


    The documentation for this struct was generated from the following file: @@ -145,7 +145,7 @@ int tolerance diff --git a/structlist-members.html b/structlist-members.html deleted file mode 100644 index fc538d4..0000000 --- a/structlist-members.html +++ /dev/null @@ -1,37 +0,0 @@ - - -libcvautomation: Member List - - - - -
    -
    - -

    list Member List

    This is the complete list of members for list, including all inherited members.

    - - -
    fileNamelist
    nextlist


    Generated on Tue Jul 17 12:19:00 2012 for libcvautomation by  - -doxygen 1.4.7
    - - diff --git a/structlist.html b/structlist.html deleted file mode 100644 index d8742a2..0000000 --- a/structlist.html +++ /dev/null @@ -1,51 +0,0 @@ - - -libcvautomation: list Struct Reference - - - - -
    -
    - -

    list Struct Reference

    List of all members. - - - - - - -

    Public Attributes

    -char * fileName
    -listnext
    -

    Detailed Description

    - -

    - -

    -Definition at line 28 of file cva-match.c.


    The documentation for this struct was generated from the following file: -
    Generated on Tue Jul 17 12:19:00 2012 for libcvautomation by  - -doxygen 1.4.7
    - - diff --git a/tab_b.gif b/tab_b.gif deleted file mode 100644 index 0d62348..0000000 Binary files a/tab_b.gif and /dev/null differ diff --git a/tab_l.gif b/tab_l.gif deleted file mode 100644 index 9b1e633..0000000 Binary files a/tab_l.gif and /dev/null differ diff --git a/tab_r.gif b/tab_r.gif deleted file mode 100644 index ce9dd9f..0000000 Binary files a/tab_r.gif and /dev/null differ diff --git a/wrapper_functions.html b/wrapper_functions.html index f819582..af39faf 100644 --- a/wrapper_functions.html +++ b/wrapper_functions.html @@ -3,7 +3,7 @@ -libcvautomation: Appendix of Wrapper Functions +libcvautomation: Appendix of Wrapper Functions and Environment Variables @@ -34,7 +34,7 @@
    libcvautomation -  1.2 +  1.3
    @@ -77,11 +77,45 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    -
    Appendix of Wrapper Functions
    +
    Appendix of Wrapper Functions and Environment Variables
    -

    -Click the mouse

    +

    +Environment Variables

    +

    +Search Method

    +
     SEARCH_METHOD 
    +

    This controls how each of the functions searches for an image. See Libcv Search Methods for more instruction on how to use this option.

    +

    +Tolerance

    +
     TOLERANCE
    + USE_SANE_TOLERANCE 
    +

    These control how tolerant each function is when searching for an image. Acceptable values are anywhere between INT_MIN to INT_MAX. See Libcv Search Methods for more information on how the tolerance values work. Additionally, the cva-input and cva-match programs (which this wrapper depends on) implement a "sane-tolerance" option. This allows you to set a tolerance between 1 - 100, where: \( 1 \approx 0 \), and \( 100 \approx INT\_MAX \) By default, functions will not use sane tolerance. To make the functions search using sane tolerance, set

    +
     USE_SANE_TOLERANCE="yes" 
    +

    +Center

    +
     USE_CENTER 
    +

    This controls whether each function will return a value based on the center of the sub-image, rather than the top-left corner. By default, functions will use center-based matching. To make the functions use the top-left corner, set

    +
     USE_CENTER="" 
    +

    +Wait

    +
     USE_WAIT
    + TIMEOUT 
    +

    These control how the "waitfor" function is used. By default, all image-matching functions will wait for an image to appear, and then click on it. This way, it won't click randomly if it can or can't find an image, and provides very easy error recognition. The functions will wait for a period of TIMEOUT seconds before complaining. To disable waiting before performing an action, set

    +
     USE_WAIT="" 
    +
    Warning:
    Without setting a tolerance value, the waitfor function becomes totally useless, as the first search will always find an image. Make sure to set the tolerance (or just leave it as the default value in the wrapper).
    +

    +Output and Debugging

    +
     OUTFILE
    + ERRFILE 
    +

    These files control the reporting of libcvautomation_funcs. The wrapper generates a decent amount of output to help in debugging application tests, and by default these get redirected to /dev/null. To instead redirect them to a file, you can do something like this:

    +
     OUTFILE=`mktemp`; echo "Logfile: " $OUTFILE
    + ERRFILE=`mktemp`; echo "Error file: " $ERR_FILE 
    +

    This will redirect the output and error output to a file you own, and inform you of what that file is.

    +

    +Functions

    +

    +Click the mouse

     click 
     

    Click the mouse where it is currently located

    @@ -100,11 +134,11 @@ Also, note that a positive x-increment moves the mouse to the right

     click_i <filename> 
     

    Click the mouse on a screenshot from filename

    -
    Note:
    This is affected by the CENTER, TOLERANCE, and SEARCH_METHOD variables. See Testing the Testing Wrapper for more information on these.
    +
    Note:
    This is affected by the CENTER, TOLERANCE, and SEARCH_METHOD variables. See Environment Variables for more information on these.

    -

    -Move the mouse

    +

    +Move the mouse

     hover_xy <x-coordinate> <y-increment> 
     

    Move the mouse to a location on screen using absolute positioning

    @@ -116,22 +150,25 @@ Move the mouse

     hover_i <filename> 
     

    Move the mouse to a location on screen based on screenshot

    -
    Note:
    This is affected by the CENTER, TOLERANCE, and SEARCH_METHOD variables. See Testing the Testing Wrapper for more information on these.
    +
    Note:
    This is affected by the CENTER, TOLERANCE, and SEARCH_METHOD variables. See Environment Variables for more information on these.

     mouse_scrollu 
     

    Scroll the mouse wheel up one

     mouse_scrolld 
     

    Scroll the mouse wheel down one

    -

    -Find an Image

    +

    +Find an Image

     image_location <filename> 
     

    Get the location of an image on screen

    -
    Note:
    This is affected by the CENTER, TOLERANCE, and SEARCH_METHOD variables. See Testing the Testing Wrapper for more information on these.
    +
    Note:
    This is affected by the CENTER, TOLERANCE, and SEARCH_METHOD variables. See Environment Variables for more information on these.

    -

    -Click the keyboard

    +
     waitfor <filename> 
    +

    Wait for an image to display on screen

    +
    Note:
    This is affected by the TOLERANCE, SEARCH_METHOD, and TIMEOUT variables. See Environment Variables for more information on these.
    +

    +Click the keyboard

     key_str "<string>" 
     

    Enter a string of characters on the keyboard rather than a single character at a time.

    Warning:
    This function does not accept key strings like "Space" as key_down, key_up, and key_click do. If you pass in "Space", that is exactly what will be typed.
    @@ -139,21 +176,21 @@ Click the keyboard
     key_down "<key-name>" 
     

    Press a key down and leave it down

    -
    Note:
    This function accepts special keys like "Space" - see XTest Key Strings for a full list of characters allowed.
    +
    Note:
    This function accepts special keys like "Space" - see XTest Key Strings for a full list of characters allowed.

     key_up "<key-name>" 
     

    Release a key

    -
    Note:
    This function accepts special keys like "Space" - see XTest Key Strings for a full list of characters allowed.
    +
    Note:
    This function accepts special keys like "Space" - see XTest Key Strings for a full list of characters allowed.

     key_click "<key-name>" 
     

    Press a key down and then release it immediately after

    -
    Note:
    This function accepts special keys like "Space" - see XTest Key Strings for a full list of characters allowed.
    +
    Note:
    This function accepts special keys like "Space" - see XTest Key Strings for a full list of characters allowed.

    -

    -Useful extras

    +

    +Useful extras

     run_process "<process-name>" 
     

    Start a process on the system, background it, and return the PID of the created process.

    @@ -182,7 +219,7 @@ Useful extras

    diff --git a/writing_app_tests.html b/writing_app_tests.html index e7b41dd..585f481 100644 --- a/writing_app_tests.html +++ b/writing_app_tests.html @@ -34,7 +34,7 @@
    libcvautomation -  1.2 +  1.3
    @@ -208,15 +208,16 @@ This is where the BASH knowledge comes into play. We are going to write a script
  • The following is the (strongly) recommended process, but is not strictly necessary to follow this. The way I'm going to explain this is by giving an example test I wrote, and explain what is going on:
     #!/bin/bash
      #This is an application test involving libcvautomation and libreoffice
    - . /usr/local/etc/libcvautomation_funcs
    + . /etc/libcvautomation_funcs
    + set -o errexit
     
      #Changing any wrapper parameters should go here
     
     
      start_libreoffice_writer ()
      {
    -    click_i "screens/gnome-1_menu.png" "screens/kde-1_menu.png" && sleep 1
    -    click_i "screens/gnome-2_officeMenu.png" "screens/kde-2_officeMenu.png" && sleep 1
    +    click_i "screens/gnome-1_menu.png" "screens/kde-1_menu.png"
    +    click_i "screens/gnome-2_officeMenu.png" "screens/kde-2_officeMenu.png"
         hover_i "screens/gnome-3_LibreOfficeWriter.png" "screens/kde-3_LibreOfficeWriter.png"
         jiggle_mouse
         click
    @@ -225,9 +226,9 @@ The following is the (strongly) recommended process, but is not strictly necessa
     
      close_libreoffice_writer()
      {
    -    click_i "screens/gnome-4_fileMenu.png" "screens/kde-4_fileMenu.png" && sleep 1
    -    click_i "screens/gnome-5_fileExit.png" "screens/kde-5_fileExit.png" && sleep 1
    -    click_i "screens/gnome-6_discard.png" "screens/kde-6_discard.png" && sleep 1
    +    click_i "screens/gnome-4_fileMenu.png" "screens/kde-4_fileMenu.png"
    +    click_i "screens/gnome-5_fileExit.png" "screens/kde-5_fileExit.png"
    +    click_i "screens/gnome-6_discard.png" "screens/kde-6_discard.png"
      }
     
      start_libreoffice_writer
    @@ -235,18 +236,22 @@ The following is the (strongly) recommended process, but is not strictly necessa
     

     #!/bin/bash
      #This is an application test involving libcvautomation and libreoffice
    - . /usr/local/etc/libcvautomation_funcs
    + . /etc/libcvautomation_funcs
    + set -o errexit
    +
      #Changing any wrapper parameters should go here
     
  • The purpose of these lines is just the standard BASH header. Additionally, we import a wrapper created for libcvautomation to make our job easier. Please note that this is the default directory for the wrapper, your installation may be different. Use the command locate libcvautomation_funcs to find it on your computer. The wrapper itself is a handful of macros used to make our job easy.
  • -Changing any wrapper parameters should go after sourcing the wrapper functions. See below on Testing the Testing Wrapper for more information.
    +The set line will abort the test if an error is ever encountered - for example, no images are found.
  • +
  • +Changing any wrapper parameters should go after sourcing the wrapper functions. See Environment Variables for more information.

     start_libreoffice_writer ()
      {
    -    click_i "screens/gnome-1_menu.png" "screens/kde-1_menu.png" && sleep 1
    -    click_i "screens/gnome-2_officeMenu.png" "screens/kde-2_officeMenu.png" && sleep 1
    +    click_i "screens/gnome-1_menu.png" "screens/kde-1_menu.png"
    +    click_i "screens/gnome-2_officeMenu.png" "screens/kde-2_officeMenu.png"
         hover_i "screens/gnome-3_LibreOfficeWriter.png" "screens/kde-3_LibreOfficeWriter.png"
         jiggle_mouse
         click
    @@ -258,11 +263,13 @@ This is the actual body of work done by libcvautomation 
  • click_i is a function to click the mouse at an image - in this case, the gnome or kde menu.
    • -Because of how the cva-input program is designed, you can give it multiple images, and it will only select the one currently available. See Testing the Testing Wrapper for more information on how to use this (TOLERANCE specifically)
    • +Because of how the cva-input program is designed, you can give it multiple images, and it will only select the one currently available. See the Appendix of Wrapper Functions and Environment Variables for more information on how to use this (TOLERANCE specifically) +
    • +Additionally, the wrapper (by default) will wait for an image to appear before clicking on it. This way, you can string together click_i commands even when the program may need to wait a while on processing. Make sure to read up on the TIMEOUT option to learn how to use this.
    • By using the function click_i, we make things a bit more readable - the full command line is cva-input -s 'icmouseclick <filename>'
    • -See Appendix of Wrapper Functions for a list of all functions available in the wrapper.
    • +See the Appendix of Wrapper Functions and Environment Variables for a list of all functions available in the wrapper.
  • @@ -272,9 +279,9 @@ Then we jiggle the mouse to make sure that the item activates, click, and wait f
     close_libreoffice_writer()
      {
    -    click_i "screens/gnome-4_fileMenu.png" "screens/kde-4_fileMenu.png" && sleep 1
    -    click_i "screens/gnome-5_fileExit.png" "screens/kde-5_fileExit.png" && sleep 1
    -    click_i "screens/gnome-6_discard.png" "screens/kde-6_discard.png" && sleep 1
    +    click_i "screens/gnome-4_fileMenu.png" "screens/kde-4_fileMenu.png"
    +    click_i "screens/gnome-5_fileExit.png" "screens/kde-5_fileExit.png"
    +    click_i "screens/gnome-6_discard.png" "screens/kde-6_discard.png"
      }
     
  • @@ -288,7 +295,7 @@ Actually run the functions given.

  • -Please note that this is a fairly trivial example. The full list of commands available in the wrapper is given in Appendix of Wrapper Functions
  • +Please note that this is a fairly trivial example. The full list of commands available in the wrapper is given in Appendix of Wrapper Functions and Environment Variables

    Testing the Testing Wrapper

    @@ -296,61 +303,12 @@ Testing the Testing Wrapper
  • First things first, run through the testing wrapper to make sure that everything is O.K.
  • -

    If you need to, some things you can do to tune the application test are as follows:

    -
      +If you need to, there are a few environment variables you can set to change how the wrapper works. See Environment Variables for more information on how these work.
    • -Set the SEARCH_METHOD
        -
      • -This value adjusts how libcvautomation searches for sub-images. See Libcv Search Methods for more information on accepted values, and how each works.
      • -
      -
    • -
    • -Set the TOLERANCE
        -
      • -This value adjusts how strict libcvautomation is when trying to find a sub-image. See Libcv Search Methods for more information on how to control how libcvautomation searches for images.
      • -
      -
    • -
    • -Set USE_SANE_TOLERANCE
        -
      • -This value implements a more sane way of setting the tolerance value - Where normally the tolerance ranges from INT_MIN to INT_MAX, the sane tolerance accepts values of 1 - 100 ( \( 1 \approx 0 \), and \( 100 \approx INT\_MAX \))
      • -
      • -To enable sane tolerance, set:
         USE_SANE_TOLERANCE="<any_value>" 
        -
      • -
      • -To disable sane tolerance (the default) set:
         USE_SANE_TOLERANCE="" 
        -
      • -
      • -Set USE_CENTER
          -
        • -By default, the wrapper will use the center of an image as opposed to the upper-left corner to click on. To disable this behavior, set:
           USE_CENTER="" 
          -
        • -
        • -To set the behavior back to using center-based matching, set:
           USE_CENTER="<any_value>" 
          -
        • -
        -
      • -
      • -Set the OUTFILE and ERRFILE
          -
        • -The application wrapper logs a whole lot of information about what it does to make debugging easy. However, to make sure that you're not overwhelmed by the output, the wrapper also directs the output to /dev/null by default.
        • -
        • -To redirect the output of OUTFILE and ERRFILE, set them to any file you want. For example, the following code will create a temporary file for OUTFILE and ERRFILE, and notify you of what they are:
           OUTFILE=`mktemp`
          - ERRFILE=`mktemp`
          - echo "OUTFILE location: $OUTFILE"
          - echo "ERRFILE location: $ERRFILE"
          -
        • -
        -
      • -
      -
    • -
    • -A full list of commands provided by the wrapper is available at Appendix of Wrapper Functions
    • +A full list of commands provided by the wrapper is available at Functions
    Note:
    These options are controlled using the testing script as demonstrated above. Any modifications to the following values should be done at the line:
     #Changing any wrapper parameters should go here 
    -
    -
  • - +

    Wrapping Up

      @@ -381,7 +339,7 @@ If you have questions, comments, concerns, suggestions, or feedback in general, diff --git a/xautomation__kbd_8h-source.html b/xautomation__kbd_8h-source.html deleted file mode 100644 index 540110e..0000000 --- a/xautomation__kbd_8h-source.html +++ /dev/null @@ -1,64 +0,0 @@ - - -libcvautomation: xautomation_kbd.h Source File - - - - -
      -
      - -

      xautomation_kbd.h

      00001 /*
      -00002  *  
      -00003  *  Copyright (c) 2002 Steve Slaven, All Rights Reserved.
      -00004  *  
      -00005  *  This program is free software; you can redistribute it and/or
      -00006  *  modify it under the terms of the GNU General Public License as
      -00007  *  published by the Free Software Foundation; either version 2 of
      -00008  *  the License, or (at your option) any later version.
      -00009  *  
      -00010  *  This program is distributed in the hope that it will be useful,
      -00011  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
      -00012  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
      -00013  *  GNU General Public License for more details.
      -00014  *  
      -00015  *  You should have received a copy of the GNU General Public License
      -00016  *  along with this program; if not, write to the Free Software
      -00017  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston,
      -00018  *  MA 02111-1307 USA
      -00019  *  
      -00020 */
      -00021 
      -00022 #define NUM_KEY_MODIFIERS 3
      -00023 /* ISO_Level3_Shift = AltGr */
      -00024 char *key_modifiers[] = { NULL, "Mode_switch", "ISO_Level3_Shift" };
      -00025 char *shift_key = "Shift_L";
      -00026 
      -00027 #define MAX_KEYSYM 65536
      -00028 /* this maps what keysyms need a modifier pushed */
      -00029 int keysym_to_modifier_map[ MAX_KEYSYM ];
      -00030 KeyCode keysym_to_keycode_map[ MAX_KEYSYM ];
      -

      Generated on Tue Jul 17 12:19:00 2012 for libcvautomation by  - -doxygen 1.4.7
      - - diff --git a/xautomation__keysym__map_8h-source.html b/xautomation__keysym__map_8h-source.html deleted file mode 100644 index 09080b7..0000000 --- a/xautomation__keysym__map_8h-source.html +++ /dev/null @@ -1,840 +0,0 @@ - - -libcvautomation: xautomation_keysym_map.h Source File - - - - -
      -
      - -

      xautomation_keysym_map.h

      00001 /* keysym_map.h - Maps the unicode number of charactes to X11 keysym codes.
      -00002  *                The first element in the array is unicode number 0x0100.
      -00003  *                Latin-1 characters (keysym = unicode_number <= 0xff) and newer
      -00004  *                characters (keysym = unicode_number + 0x01000000) are not included.
      -00005  *
      -00006  * Marco Steinacher <marco@websource.ch> - 12.04.2009
      -00007  * 
      -00008  * The contents below have been created from /usr/include/X11/keysymdef.h with the following
      -00009  * perl script:
      -00010 ---------------
      -00011 #!/usr/bin/perl -w
      -00012 $max=0;
      -00013 while ($l = <>) {
      -00014     if ($l =~ m/^#define\s+\S+\s+0x([0-9a-f]{4})\s*\/\*[ (]*U\+([0-9a-f]{4})/i) {
      -00015         $shifted = hex($2) - hex("0x0100");
      -00016         if (($shifted >= 0) && !defined($map[$shifted])) {
      -00017             $map[$shifted] = $1;
      -00018             $max=$shifted if ($shifted>$max);
      -00019         }
      -00020     }
      -00021 }
      -00022 print "#define WCHAR_TO_KEYSYM_MAP_SIZE ".($max+1)."\n";
      -00023 print "uint16_t wchar_to_keysym_map[] = { ";
      -00024 for($u=0;$u<=$max;$u++) {
      -00025     print "," if ($u>0);
      -00026     print "\n" if ($u%16==0);
      -00027     if (defined($map[$u])) {
      -00028         print "0x".$map[$u];
      -00029     } else {
      -00030         print "0";
      -00031     }
      -00032 }
      -00033 print "\n};\n";
      -00034 ---------------
      -00035  */
      -00036 #define WCHAR_TO_KEYSYM_MAP_SIZE 12285
      -00037 uint16_t wchar_to_keysym_map[] = {
      -00038 0x03c0,0x03e0,0x01c3,0x01e3,0x01a1,0x01b1,0x01c6,0x01e6,0x02c6,0x02e6,0x02c5,0x02e5,0x01c8,0x01e8,0x01cf,0x01ef,
      -00039 0x01d0,0x01f0,0x03aa,0x03ba,0,0,0x03cc,0x03ec,0x01ca,0x01ea,0x01cc,0x01ec,0x02d8,0x02f8,0x02ab,0x02bb,
      -00040 0x02d5,0x02f5,0x03ab,0x03bb,0x02a6,0x02b6,0x02a1,0x02b1,0x03a5,0x03b5,0x03cf,0x03ef,0,0,0x03c7,0x03e7,
      -00041 0x02a9,0x02b9,0,0,0x02ac,0x02bc,0x03d3,0x03f3,0x03a2,0x01c5,0x01e5,0x03a6,0x03b6,0x01a5,0x01b5,0,
      -00042 0,0x01a3,0x01b3,0x01d1,0x01f1,0x03d1,0x03f1,0x01d2,0x01f2,0,0x03bd,0x03bf,0x03d2,0x03f2,0,0,
      -00043 0x01d5,0x01f5,0x13bc,0x13bd,0x01c0,0x01e0,0x03a3,0x03b3,0x01d8,0x01f8,0x01a6,0x01b6,0x02de,0x02fe,0x01aa,0x01ba,
      -00044 0x01a9,0x01b9,0x01de,0x01fe,0x01ab,0x01bb,0x03ac,0x03bc,0x03dd,0x03fd,0x03de,0x03fe,0x02dd,0x02fd,0x01d9,0x01f9,
      -00045 0x01db,0x01fb,0x03d9,0x03f9,0,0,0,0,0x13be,0x01ac,0x01bc,0x01af,0x01bf,0x01ae,0x01be,0,
      -00046 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00047 0,0,0x08f6,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00048 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00049 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00050 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00051 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00052 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00053 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00054 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00055 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00056 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00057 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00058 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00059 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00060 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00061 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00062 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00063 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00064 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00065 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00066 0,0,0,0,0,0,0,0x01b7,0,0,0,0,0,0,0,0,
      -00067 0,0,0,0,0,0,0,0,0x01a2,0x01ff,0,0x01b2,0,0x01bd,0,0,
      -00068 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00069 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00070 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00071 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00072 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00073 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00074 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00075 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00076 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00077 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00078 0,0,0,0,0,0x07ae,0x07a1,0,0x07a2,0x07a3,0x07a4,0,0x07a7,0,0x07a8,0x07ab,
      -00079 0x07b6,0x07c1,0x07c2,0x07c3,0x07c4,0x07c5,0x07c6,0x07c7,0x07c8,0x07c9,0x07ca,0x07cb,0x07cc,0x07cd,0x07ce,0x07cf,
      -00080 0x07d0,0x07d1,0,0x07d2,0x07d4,0x07d5,0x07d6,0x07d7,0x07d8,0x07d9,0x07a5,0x07a9,0x07b1,0x07b2,0x07b3,0x07b4,
      -00081 0x07ba,0x07e1,0x07e2,0x07e3,0x07e4,0x07e5,0x07e6,0x07e7,0x07e8,0x07e9,0x07ea,0x07eb,0x07ec,0x07ed,0x07ee,0x07ef,
      -00082 0x07f0,0x07f1,0x07f3,0x07f2,0x07f4,0x07f5,0x07f6,0x07f7,0x07f8,0x07f9,0x07b5,0x07b9,0x07b7,0x07b8,0x07bb,0,
      -00083 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00084 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00085 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00086 0,0x06b3,0x06b1,0x06b2,0x06b4,0x06b5,0x06b6,0x06b7,0x06b8,0x06b9,0x06ba,0x06bb,0x06bc,0,0x06be,0x06bf,
      -00087 0x06e1,0x06e2,0x06f7,0x06e7,0x06e4,0x06e5,0x06f6,0x06fa,0x06e9,0x06ea,0x06eb,0x06ec,0x06ed,0x06ee,0x06ef,0x06f0,
      -00088 0x06f2,0x06f3,0x06f4,0x06f5,0x06e6,0x06e8,0x06e3,0x06fe,0x06fb,0x06fd,0x06ff,0x06f9,0x06f8,0x06fc,0x06e0,0x06f1,
      -00089 0x06c1,0x06c2,0x06d7,0x06c7,0x06c4,0x06c5,0x06d6,0x06da,0x06c9,0x06ca,0x06cb,0x06cc,0x06cd,0x06ce,0x06cf,0x06d0,
      -00090 0x06d2,0x06d3,0x06d4,0x06d5,0x06c6,0x06c8,0x06c3,0x06de,0x06db,0x06dd,0x06df,0x06d9,0x06d8,0x06dc,0x06c0,0x06d1,
      -00091 0,0x06a3,0x06a1,0x06a2,0x06a4,0x06a5,0x06a6,0x06a7,0x06a8,0x06a9,0x06aa,0x06ab,0x06ac,0,0x06ae,0x06af,
      -00092 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00093 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00094 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00095 0x06bd,0x06ad,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00096 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00097 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00098 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00099 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00100 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00101 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00102 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00103 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00104 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00105 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00106 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00107 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00108 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00109 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00110 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00111 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00112 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00113 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00114 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00115 0x0ce0,0x0ce1,0x0ce2,0x0ce3,0x0ce4,0x0ce5,0x0ce6,0x0ce7,0x0ce8,0x0ce9,0x0cea,0x0ceb,0x0cec,0x0ced,0x0cee,0x0cef,
      -00116 0x0cf0,0x0cf1,0x0cf2,0x0cf3,0x0cf4,0x0cf5,0x0cf6,0x0cf7,0x0cf8,0x0cf9,0x0cfa,0,0,0,0,0,
      -00117 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00118 0,0,0,0,0,0,0,0,0,0,0,0,0x05ac,0,0,0,
      -00119 0,0,0,0,0,0,0,0,0,0,0,0x05bb,0,0,0,0x05bf,
      -00120 0,0x05c1,0x05c2,0x05c3,0x05c4,0x05c5,0x05c6,0x05c7,0x05c8,0x05c9,0x05ca,0x05cb,0x05cc,0x05cd,0x05ce,0x05cf,
      -00121 0x05d0,0x05d1,0x05d2,0x05d3,0x05d4,0x05d5,0x05d6,0x05d7,0x05d8,0x05d9,0x05da,0,0,0,0,0,
      -00122 0x05e0,0x05e1,0x05e2,0x05e3,0x05e4,0x05e5,0x05e6,0x05e7,0x05e8,0x05e9,0x05ea,0x05eb,0x05ec,0x05ed,0x05ee,0x05ef,
      -00123 0x05f0,0x05f1,0x05f2,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00124 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00125 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00126 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00127 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00128 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00129 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00130 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00131 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00132 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00133 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00134 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00135 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00136 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00137 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00138 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00139 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00140 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00141 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00142 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00143 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00144 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00145 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00146 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00147 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00148 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00149 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00150 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00151 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00152 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00153 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00154 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00155 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00156 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00157 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00158 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00159 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00160 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00161 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00162 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00163 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00164 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00165 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00166 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00167 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00168 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00169 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00170 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00171 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00172 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00173 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00174 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00175 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00176 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00177 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00178 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00179 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00180 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00181 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00182 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00183 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00184 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00185 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00186 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00187 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00188 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00189 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00190 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00191 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00192 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00193 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00194 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00195 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00196 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00197 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00198 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00199 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00200 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00201 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00202 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00203 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00204 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00205 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00206 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00207 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00208 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00209 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00210 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00211 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00212 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00213 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00214 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00215 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00216 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00217 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00218 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00219 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00220 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00221 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00222 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00223 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00224 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00225 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00226 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00227 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00228 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00229 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00230 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00231 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00232 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00233 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00234 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00235 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00236 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00237 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00238 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00239 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00240 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00241 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00242 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00243 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00244 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00245 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00246 0,0x0da1,0x0da2,0x0da3,0x0da4,0x0da5,0x0da6,0x0da7,0x0da8,0x0da9,0x0daa,0x0dab,0x0dac,0x0dad,0x0dae,0x0daf,
      -00247 0x0db0,0x0db1,0x0db2,0x0db3,0x0db4,0x0db5,0x0db6,0x0db7,0x0db8,0x0db9,0x0dba,0x0dbb,0x0dbc,0x0dbd,0x0dbe,0x0dbf,
      -00248 0x0dc0,0x0dc1,0x0dc2,0x0dc3,0x0dc4,0x0dc5,0x0dc6,0x0dc7,0x0dc8,0x0dc9,0x0dca,0x0dcb,0x0dcc,0x0dcd,0x0dce,0x0dcf,
      -00249 0x0dd0,0x0dd1,0x0dd2,0x0dd3,0x0dd4,0x0dd5,0x0dd6,0x0dd7,0x0dd8,0x0dd9,0x0dda,0,0,0,0,0x0ddf,
      -00250 0x0de0,0x0de1,0x0de2,0x0de3,0x0de4,0x0de5,0x0de6,0x0de7,0x0de8,0x0de9,0x0dea,0x0deb,0x0dec,0x0ded,0,0,
      -00251 0x0df0,0x0df1,0x0df2,0x0df3,0x0df4,0x0df5,0x0df6,0x0df7,0x0df8,0x0df9,0,0,0,0,0,0,
      -00252 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00253 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00254 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00255 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00256 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00257 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00258 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00259 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00260 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00261 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00262 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00263 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00264 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00265 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00266 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00267 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00268 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00269 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00270 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00271 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00272 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00273 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00274 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00275 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00276 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00277 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00278 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00279 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00280 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00281 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00282 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00283 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00284 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00285 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00286 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00287 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00288 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00289 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00290 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00291 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00292 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00293 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00294 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00295 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00296 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00297 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00298 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00299 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00300 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00301 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00302 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00303 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00304 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00305 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00306 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00307 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00308 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00309 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00310 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00311 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00312 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00313 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00314 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00315 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00316 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00317 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00318 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00319 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00320 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00321 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00322 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00323 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00324 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00325 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00326 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00327 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00328 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00329 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00330 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00331 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00332 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00333 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00334 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00335 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00336 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00337 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00338 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00339 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00340 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00341 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00342 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00343 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00344 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00345 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00346 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00347 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00348 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00349 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00350 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00351 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00352 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00353 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00354 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00355 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00356 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00357 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00358 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00359 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00360 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00361 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00362 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00363 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00364 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00365 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00366 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00367 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00368 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00369 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00370 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00371 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00372 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00373 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00374 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00375 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00376 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00377 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00378 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00379 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00380 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00381 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00382 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00383 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00384 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00385 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00386 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00387 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00388 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00389 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00390 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00391 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00392 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00393 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00394 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00395 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00396 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00397 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00398 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00399 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00400 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00401 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00402 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00403 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00404 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00405 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00406 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00407 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00408 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00409 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00410 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00411 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00412 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00413 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00414 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00415 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00416 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00417 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00418 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00419 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00420 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00421 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00422 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00423 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00424 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00425 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00426 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00427 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00428 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00429 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00430 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00431 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00432 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00433 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00434 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00435 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00436 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00437 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00438 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00439 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00440 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00441 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00442 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00443 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00444 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00445 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00446 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00447 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00448 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00449 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00450 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00451 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00452 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00453 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00454 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00455 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00456 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00457 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00458 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00459 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00460 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00461 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00462 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00463 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00464 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00465 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00466 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00467 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00468 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00469 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00470 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00471 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00472 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00473 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00474 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00475 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00476 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00477 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00478 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00479 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00480 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00481 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00482 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00483 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00484 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00485 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00486 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00487 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00488 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00489 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00490 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00491 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00492 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00493 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00494 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00495 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00496 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00497 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00498 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00499 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00500 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00501 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00502 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00503 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00504 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00505 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00506 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00507 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00508 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00509 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00510 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00511 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00512 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00513 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00514 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00515 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00516 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00517 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00518 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00519 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00520 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00521 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00522 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00523 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00524 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00525 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00526 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00527 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00528 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00529 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00530 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00531 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00532 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00533 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00534 0,0,0x0aa2,0x0aa1,0x0aa3,0x0aa4,0,0x0aa5,0x0aa6,0x0aa7,0x0aa8,0,0,0,0,0,
      -00535 0,0,0x0abb,0x0aaa,0x0aa9,0x07af,0,0x0cdf,0x0ad0,0x0ad1,0x0afd,0,0x0ad2,0x0ad3,0x0afe,0,
      -00536 0x0af1,0x0af2,0x0ae6,0,0,0x0aaf,0x0aae,0,0,0,0,0,0,0,0,0,
      -00537 0,0,0x0ad6,0x0ad7,0,0,0,0,0x0afc,0,0,0,0,0,0x047e,0,
      -00538 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00539 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00540 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00541 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00542 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00543 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00544 0,0,0,0,0,0,0,0,0,0x0eff,0,0,0x20ac,0,0,0,
      -00545 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00546 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00547 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00548 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00549 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00550 0,0,0,0,0,0x0ab8,0,0,0,0,0,0,0,0,0,0,
      -00551 0,0,0,0,0,0,0x06b0,0x0afb,0,0,0,0,0,0,0x0ad4,0,
      -00552 0,0,0x0ac9,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00553 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00554 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00555 0,0,0,0x0ab0,0x0ab1,0x0ab2,0x0ab3,0x0ab4,0x0ab5,0x0ab6,0x0ab7,0x0ac3,0x0ac4,0x0ac5,0x0ac6,0,
      -00556 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00557 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00558 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00559 0x08fb,0x08fc,0x08fd,0x08fe,0,0,0,0,0,0,0,0,0,0,0,0,
      -00560 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00561 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00562 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00563 0,0,0x08ce,0,0x08cd,0,0,0,0,0,0,0,0,0,0,0,
      -00564 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00565 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00566 0,0,0x08ef,0,0,0,0,0x08c5,0,0,0,0,0,0,0,0,
      -00567 0,0,0,0,0,0,0,0,0x0bca,0,0x08d6,0,0,0x08c1,0x08c2,0,
      -00568 0,0,0,0,0,0,0,0x08de,0x08df,0x08dc,0x08dd,0x08bf,0,0,0,0,
      -00569 0,0,0,0,0x08c0,0,0,0,0,0,0,0,0x08c8,0,0,0,
      -00570 0,0,0,0x08c9,0,0,0,0,0,0,0,0,0,0,0,0,
      -00571 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00572 0x08bd,0x08cf,0,0,0x08bc,0x08be,0,0,0,0,0,0,0,0,0,0,
      -00573 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00574 0,0,0x08da,0x08db,0,0,0,0,0,0,0,0,0,0,0,0,
      -00575 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00576 0,0,0x0bdc,0x0bfc,0x0bce,0x0bc2,0,0,0,0,0,0,0,0,0,0,
      -00577 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00578 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00579 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00580 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00581 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00582 0,0,0,0,0,0,0,0,0x0bd3,0,0x0bc4,0,0,0,0,0,
      -00583 0,0,0,0,0,0x0afa,0,0,0,0,0,0,0,0,0,0,
      -00584 0x08a4,0x08a5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00585 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00586 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00587 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00588 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00589 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00590 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00591 0,0,0,0,0,0x0bcc,0,0,0,0,0,0x08ab,0,0x08ac,0x08ad,0,
      -00592 0x08ae,0x08a7,0,0x08a8,0x08a9,0,0x08aa,0,0x08af,0,0,0,0x08b0,0,0,0,
      -00593 0,0,0,0,0,0,0,0x08a1,0,0,0x09ef,0x09f0,0x09f2,0x09f3,0,0,
      -00594 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00595 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00596 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00597 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00598 0,0,0,0,0,0,0,0,0,0x09e2,0x09e5,0x09e9,0x09e3,0x09e4,0,0,
      -00599 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00600 0,0,0,0x0aac,0x09e8,0,0,0,0,0,0,0,0,0,0,0,
      -00601 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00602 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00603 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00604 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00605 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00606 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00607 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00608 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00609 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00610 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00611 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00612 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00613 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00614 0x08a3,0,0x08a6,0,0,0,0,0,0,0,0,0,0x08a2,0,0,0,
      -00615 0x09eb,0,0,0,0x09ed,0,0,0,0x09ea,0,0,0,0x09f4,0,0,0,
      -00616 0,0,0,0,0x09f5,0,0,0,0,0,0,0,0x09f7,0,0,0,
      -00617 0,0,0,0,0x09f6,0,0,0,0,0,0,0,0x09ee,0,0,0,
      -00618 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00619 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00620 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00621 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00622 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00623 0,0,0x09e1,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00624 0,0,0,0,0,0,0,0,0,0,0x0ae7,0x0ae1,0x0adb,0x0ae2,0x0adf,0x0acf,
      -00625 0,0,0x0ae8,0x0ae3,0,0,0x0add,0x0acd,0,0,0,0,0x0ae9,0x0ae4,0,0,
      -00626 0x0adc,0x0acc,0,0,0,0,0x09e0,0,0,0,0,0x0ace,0,0,0,0x0ade,
      -00627 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00628 0,0,0,0,0,0,0x0ae0,0,0,0,0,0,0,0,0,0,
      -00629 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00630 0,0,0,0,0,0,0x0ae5,0,0,0,0,0,0,0,0x0af9,0,
      -00631 0,0,0,0x0aca,0,0,0,0,0,0,0,0,0x0aea,0,0x0aeb,0,
      -00632 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00633 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00634 0x0af8,0,0x0af7,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00635 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00636 0,0,0,0x0aec,0,0x0aee,0x0aed,0,0,0,0,0,0,0x0af6,0,0x0af5,
      -00637 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00638 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00639 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00640 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00641 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00642 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00643 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00644 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00645 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00646 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00647 0,0,0,0x0af3,0,0,0,0x0af4,0,0,0,0,0,0x0ad9,0,0,
      -00648 0x0af0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00649 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00650 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00651 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00652 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00653 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00654 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00655 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00656 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00657 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00658 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00659 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00660 0,0,0,0,0,0,0,0,0x0abc,0x0abe,0,0,0,0,0,0,
      -00661 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00662 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00663 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00664 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00665 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00666 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00667 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00668 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00669 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00670 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00671 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00672 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00673 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00674 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00675 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00676 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00677 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00678 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00679 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00680 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00681 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00682 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00683 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00684 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00685 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00686 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00687 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00688 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00689 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00690 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00691 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00692 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00693 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00694 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00695 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00696 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00697 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00698 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00699 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00700 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00701 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00702 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00703 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00704 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00705 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00706 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00707 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00708 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00709 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00710 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00711 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00712 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00713 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00714 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00715 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00716 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00717 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00718 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00719 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00720 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00721 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00722 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00723 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00724 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00725 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00726 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00727 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00728 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00729 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00730 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00731 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00732 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00733 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00734 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00735 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00736 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00737 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00738 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00739 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00740 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00741 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00742 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00743 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00744 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00745 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00746 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00747 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00748 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00749 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00750 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00751 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00752 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00753 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00754 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00755 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00756 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00757 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00758 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00759 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00760 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00761 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00762 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00763 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00764 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00765 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00766 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00767 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00768 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00769 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00770 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00771 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00772 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00773 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00774 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00775 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00776 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00777 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00778 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00779 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00780 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00781 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00782 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00783 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00784 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00785 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00786 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00787 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00788 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00789 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00790 0,0x04a4,0x04a1,0,0,0,0,0,0,0,0,0,0x04a2,0x04a3,0,0,
      -00791 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00792 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00793 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00794 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00795 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00796 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00797 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00798 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      -00799 0,0,0,0,0,0,0,0,0,0,0,0x04de,0x04df,0,0,0,
      -00800 0,0x04a7,0x04b1,0x04a8,0x04b2,0x04a9,0x04b3,0x04aa,0x04b4,0x04ab,0x04b5,0x04b6,0,0x04b7,0,0x04b8,
      -00801 0,0x04b9,0,0x04ba,0,0x04bb,0,0x04bc,0,0x04bd,0,0x04be,0,0x04bf,0,0x04c0,
      -00802 0,0x04c1,0,0x04af,0x04c2,0,0x04c3,0,0x04c4,0,0x04c5,0x04c6,0x04c7,0x04c8,0x04c9,0x04ca,
      -00803 0,0,0x04cb,0,0,0x04cc,0,0,0x04cd,0,0,0x04ce,0,0,0x04cf,0x04d0,
      -00804 0x04d1,0x04d2,0x04d3,0x04ac,0x04d4,0x04ad,0x04d5,0x04ae,0x04d6,0x04d7,0x04d8,0x04d9,0x04da,0x04db,0,0x04dc,
      -00805 0,0,0x04a6,0x04dd,0,0,0,0,0,0,0,0x04a5,0x04b0
      -00806 };
      -

      Generated on Tue Jul 17 12:19:00 2012 for libcvautomation by  - -doxygen 1.4.7
      - - diff --git a/xautomation__multikey__map_8h-source.html b/xautomation__multikey__map_8h-source.html deleted file mode 100644 index 336efab..0000000 --- a/xautomation__multikey__map_8h-source.html +++ /dev/null @@ -1,332 +0,0 @@ - - -libcvautomation: xautomation_multikey_map.h Source File - - - - -
      -
      - -

      xautomation_multikey_map.h

      00001 /* multikey_map.h - Multi_key combinations for some characters:
      -00002  *                  <Character> = Multi_key + <Fist> + <Second>
      -00003  *                  The unicode numbers of <Character>, <Fist>,
      -00004  *                  and <Second> are in the arrays below.
      -00005  *
      -00006  * Marco Steinacher <marco@websource.ch> - 12.04.2009
      -00007  *
      -00008  * Combinations that don't start with Multi_key or require more
      -00009  * than two characters are currently not supported.
      -00010  * 
      -00011  * The contents below have been created from /usr/share/X11/locale/en_US.UTF-8/Compose
      -00012  * and /usr/include/X11/keysymdef.h with the following (very slow) perl script:
      -00013 ---------------
      -00014 #!/usr/bin/perl -w
      -00015 $compose_file = "/usr/share/X11/locale/en_US.UTF-8/Compose";
      -00016 $keysym_file  = "/usr/include/X11/keysymdef.h";
      -00017 open(FH,"<:encoding(UTF-8)",$compose_file);
      -00018 while ($l = <FH>) {
      -00019     if ($l =~ m/^\s*<Multi_key>\s+<(\S+)>\s+<(\S+)>\s+:\s+"(.)"/) {
      -00020         $utf8 = sprintf("%x",ord($3));
      -00021         next if (length($utf8)>4);
      -00022         $first  = get_utf8($1);
      -00023         $second = get_utf8($2);
      -00024         if ($first && $second) {
      -00025             $map_first{$utf8} = $first;
      -00026             $map_second{$utf8} = $second;
      -00027         }
      -00028     }
      -00029 }
      -00030 close(FH);
      -00031 $char  = "uint16_t multikey_map_char[] = { ";
      -00032 $first = "uint16_t multikey_map_first[] = { ";
      -00033 $second = "uint16_t multikey_map_second[] = { ";
      -00034 $count=0;
      -00035 foreach $c (sort { hex($a) <=> hex($b)} keys %map_first) {
      -00036     if ($count != 0) {
      -00037         $char.=",";
      -00038         $first.=","; 
      -00039         $second.=",";
      -00040     }
      -00041     if ($count%16==0) {
      -00042         $char.="\n";
      -00043         $first.="\n"; 
      -00044         $second.="\n";
      -00045     }
      -00046     $char.="0x".$c;
      -00047     $first.="0x".$map_first{$c};
      -00048     $second.="0x".$map_second{$c};
      -00049     $count++;
      -00050 }
      -00051 $char.="\n};\n";
      -00052 $first.="\n};\n";
      -00053 $second.="\n};\n";
      -00054 print "#define MULTIKEY_MAP_SIZE ".$count."\n";
      -00055 print $char.$first.$second;
      -00056 
      -00057 sub get_utf8 {
      -00058     $sym = shift;
      -00059     return $1 if ($sym =~ m/^U([0-9a-f]{4})$/i);
      -00060     $cmd = "grep \"#define XK_".$sym." \" ".$keysym_file;
      -00061     $re = "^#define\\s+XK_".$sym."\\s+0x[0-9a-f]+\\s*\\/\\*[ (]*U\\+([0-9a-f]{4})";
      -00062     return $1 if (`$cmd` =~ m/$re/i);
      -00063     return 0;
      -00064 }
      -00065 ---------------
      -00066  */
      -00067 #define MULTIKEY_MAP_SIZE 1195
      -00068 uint16_t multikey_map_char[] = { 
      -00069 0x23,0x27,0x40,0x5b,0x5d,0x5e,0x60,0x7b,0x7c,0x7d,0x7e,0xa0,0xa1,0xa2,0xa3,0xa4,
      -00070 0xa5,0xa6,0xa7,0xa9,0xab,0xac,0xae,0xb0,0xb1,0xb2,0xb3,0xb5,0xb6,0xb7,0xb8,0xb9,
      -00071 0xbb,0xbc,0xbd,0xbe,0xbf,0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,
      -00072 0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,
      -00073 0xdb,0xdc,0xdd,0xde,0xdf,0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,
      -00074 0xeb,0xec,0xed,0xee,0xef,0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,
      -00075 0xfb,0xfc,0xfd,0xfe,0xff,0x100,0x101,0x102,0x103,0x104,0x105,0x106,0x107,0x108,0x109,0x10a,
      -00076 0x10b,0x10c,0x10d,0x10e,0x10f,0x110,0x111,0x112,0x113,0x114,0x115,0x116,0x117,0x118,0x119,0x11a,
      -00077 0x11b,0x11c,0x11d,0x11e,0x11f,0x120,0x121,0x122,0x123,0x124,0x125,0x126,0x127,0x128,0x129,0x12a,
      -00078 0x12b,0x12c,0x12d,0x12e,0x12f,0x130,0x131,0x134,0x135,0x136,0x137,0x138,0x139,0x13a,0x13b,0x13c,
      -00079 0x13d,0x13e,0x141,0x142,0x143,0x144,0x145,0x146,0x147,0x148,0x14a,0x14b,0x14c,0x14d,0x14e,0x14f,
      -00080 0x150,0x151,0x152,0x153,0x154,0x155,0x156,0x157,0x158,0x159,0x15a,0x15b,0x15c,0x15d,0x15e,0x15f,
      -00081 0x160,0x161,0x162,0x163,0x164,0x165,0x166,0x167,0x168,0x169,0x16a,0x16b,0x16c,0x16d,0x16e,0x16f,
      -00082 0x170,0x171,0x172,0x173,0x174,0x175,0x176,0x177,0x178,0x179,0x17a,0x17b,0x17c,0x17d,0x17e,0x17f,
      -00083 0x180,0x197,0x1a0,0x1a1,0x1af,0x1b0,0x1b5,0x1b6,0x1cd,0x1ce,0x1cf,0x1d0,0x1d1,0x1d2,0x1d3,0x1d4,
      -00084 0x1d5,0x1d6,0x1d7,0x1d8,0x1d9,0x1da,0x1db,0x1dc,0x1de,0x1df,0x1e0,0x1e1,0x1e2,0x1e3,0x1e4,0x1e5,
      -00085 0x1e6,0x1e7,0x1e8,0x1e9,0x1ea,0x1eb,0x1ec,0x1ed,0x1ee,0x1ef,0x1f0,0x1f4,0x1f5,0x1f8,0x1f9,0x1fa,
      -00086 0x1fb,0x1fc,0x1fd,0x1fe,0x1ff,0x21e,0x21f,0x226,0x227,0x228,0x229,0x22a,0x22b,0x22c,0x22d,0x22e,
      -00087 0x22f,0x230,0x231,0x232,0x233,0x259,0x268,0x2a1,0x344,0x385,0x386,0x388,0x389,0x38a,0x38c,0x38e,
      -00088 0x38f,0x390,0x3aa,0x3ab,0x3ac,0x3ad,0x3ae,0x3af,0x3b0,0x3ca,0x3cb,0x3cc,0x3cd,0x3ce,0x3d4,0x400,
      -00089 0x401,0x403,0x407,0x40c,0x40d,0x40e,0x419,0x439,0x450,0x451,0x453,0x457,0x45c,0x45d,0x45e,0x492,
      -00090 0x493,0x49e,0x49f,0x4b0,0x4b1,0x4c1,0x4c2,0x4d0,0x4d1,0x4d2,0x4d3,0x4d6,0x4d7,0x4da,0x4db,0x4dc,
      -00091 0x4dd,0x4de,0x4df,0x4e2,0x4e3,0x4e4,0x4e5,0x4e6,0x4e7,0x4ea,0x4eb,0x4ec,0x4ed,0x4ee,0x4ef,0x4f0,
      -00092 0x4f1,0x4f2,0x4f3,0x4f4,0x4f5,0x4f8,0x4f9,0x622,0x623,0x624,0x625,0x626,0x6c0,0x6c2,0x6d3,0x929,
      -00093 0x931,0x934,0x958,0x959,0x95a,0x95b,0x95c,0x95d,0x95e,0x95f,0x9cb,0x9cc,0x9dc,0x9dd,0x9df,0xa33,
      -00094 0xa36,0xa59,0xa5a,0xa5b,0xa5e,0xb48,0xb4b,0xb4c,0xb5c,0xb5d,0xb94,0xbca,0xbcb,0xbcc,0xc48,0xcc0,
      -00095 0xcc7,0xcc8,0xcca,0xccb,0xd4a,0xd4b,0xd4c,0xdda,0xddc,0xddd,0xdde,0xf43,0xf4d,0xf52,0xf57,0xf5c,
      -00096 0xf69,0xf73,0xf75,0xf76,0xf78,0xf81,0xf93,0xf9d,0xfa2,0xfa7,0xfac,0xfb9,0x1026,0x1101,0x1104,0x1108,
      -00097 0x110a,0x110d,0x1113,0x1114,0x1115,0x1116,0x1117,0x1118,0x1119,0x111a,0x111b,0x111c,0x111d,0x111e,0x111f,0x1120,
      -00098 0x1121,0x1122,0x1123,0x1124,0x1125,0x1126,0x1127,0x1128,0x1129,0x112a,0x112b,0x112c,0x112d,0x112e,0x112f,0x1130,
      -00099 0x1131,0x1132,0x1133,0x1134,0x1135,0x1136,0x1137,0x1138,0x1139,0x113a,0x113b,0x113d,0x113f,0x1141,0x1142,0x1143,
      -00100 0x1144,0x1145,0x1146,0x1147,0x1148,0x1149,0x114a,0x114b,0x114d,0x114f,0x1151,0x1152,0x1153,0x1156,0x1157,0x1158,
      -00101 0x1162,0x1164,0x1166,0x1168,0x116a,0x116b,0x116c,0x116f,0x1170,0x1171,0x1174,0x1176,0x1177,0x1178,0x1179,0x117a,
      -00102 0x117b,0x117c,0x117d,0x117e,0x117f,0x1180,0x1181,0x1182,0x1183,0x1184,0x1185,0x1186,0x1187,0x1188,0x1189,0x118a,
      -00103 0x118b,0x118c,0x118d,0x118e,0x118f,0x1190,0x1191,0x1192,0x1193,0x1194,0x1195,0x1196,0x1197,0x1198,0x1199,0x119a,
      -00104 0x119b,0x119c,0x119d,0x119f,0x11a0,0x11a1,0x11a2,0x11a9,0x11aa,0x11ac,0x11ad,0x11b0,0x11b1,0x11b2,0x11b3,0x11b4,
      -00105 0x11b5,0x11b6,0x11b9,0x11bb,0x11c3,0x11c4,0x11c5,0x11c6,0x11c7,0x11c8,0x11c9,0x11ca,0x11cb,0x11cc,0x11cd,0x11ce,
      -00106 0x11cf,0x11d0,0x11d1,0x11d2,0x11d3,0x11d4,0x11d5,0x11d6,0x11d7,0x11d8,0x11d9,0x11da,0x11db,0x11dc,0x11dd,0x11de,
      -00107 0x11df,0x11e0,0x11e1,0x11e2,0x11e3,0x11e4,0x11e5,0x11e6,0x11e7,0x11e8,0x11e9,0x11ea,0x11ec,0x11ed,0x11ee,0x11ef,
      -00108 0x11f1,0x11f2,0x11f3,0x11f4,0x11f5,0x11f6,0x11f7,0x11f8,0x1e02,0x1e03,0x1e04,0x1e05,0x1e08,0x1e09,0x1e0a,0x1e0b,
      -00109 0x1e0c,0x1e0d,0x1e10,0x1e11,0x1e14,0x1e15,0x1e16,0x1e17,0x1e1c,0x1e1d,0x1e1e,0x1e1f,0x1e20,0x1e21,0x1e22,0x1e23,
      -00110 0x1e24,0x1e25,0x1e26,0x1e27,0x1e28,0x1e29,0x1e2e,0x1e2f,0x1e30,0x1e31,0x1e32,0x1e33,0x1e36,0x1e37,0x1e38,0x1e39,
      -00111 0x1e3e,0x1e3f,0x1e40,0x1e41,0x1e42,0x1e43,0x1e44,0x1e45,0x1e46,0x1e47,0x1e4c,0x1e4d,0x1e4e,0x1e4f,0x1e50,0x1e51,
      -00112 0x1e52,0x1e53,0x1e54,0x1e55,0x1e56,0x1e57,0x1e58,0x1e59,0x1e5a,0x1e5b,0x1e5c,0x1e5d,0x1e60,0x1e61,0x1e62,0x1e63,
      -00113 0x1e64,0x1e65,0x1e66,0x1e67,0x1e68,0x1e69,0x1e6a,0x1e6b,0x1e6c,0x1e6d,0x1e78,0x1e79,0x1e7a,0x1e7b,0x1e7c,0x1e7d,
      -00114 0x1e7e,0x1e7f,0x1e80,0x1e81,0x1e82,0x1e83,0x1e84,0x1e85,0x1e86,0x1e87,0x1e88,0x1e89,0x1e8a,0x1e8b,0x1e8c,0x1e8d,
      -00115 0x1e8e,0x1e8f,0x1e90,0x1e91,0x1e92,0x1e93,0x1e97,0x1e98,0x1e99,0x1e9b,0x1ea0,0x1ea1,0x1ea2,0x1ea3,0x1ea4,0x1ea5,
      -00116 0x1ea6,0x1ea7,0x1ea8,0x1ea9,0x1eaa,0x1eab,0x1eac,0x1ead,0x1eae,0x1eaf,0x1eb0,0x1eb1,0x1eb2,0x1eb3,0x1eb4,0x1eb5,
      -00117 0x1eb6,0x1eb7,0x1eb8,0x1eb9,0x1eba,0x1ebb,0x1ebc,0x1ebd,0x1ebe,0x1ebf,0x1ec0,0x1ec1,0x1ec2,0x1ec3,0x1ec4,0x1ec5,
      -00118 0x1ec6,0x1ec7,0x1ec8,0x1ec9,0x1eca,0x1ecb,0x1ecc,0x1ecd,0x1ece,0x1ecf,0x1ed0,0x1ed1,0x1ed2,0x1ed3,0x1ed4,0x1ed5,
      -00119 0x1ed6,0x1ed7,0x1ed8,0x1ed9,0x1eda,0x1edb,0x1edc,0x1edd,0x1ede,0x1edf,0x1ee0,0x1ee1,0x1ee2,0x1ee3,0x1ee4,0x1ee5,
      -00120 0x1ee6,0x1ee7,0x1ee8,0x1ee9,0x1eea,0x1eeb,0x1eec,0x1eed,0x1eee,0x1eef,0x1ef0,0x1ef1,0x1ef2,0x1ef3,0x1ef4,0x1ef5,
      -00121 0x1ef6,0x1ef7,0x1ef8,0x1ef9,0x1f00,0x1f01,0x1f02,0x1f03,0x1f04,0x1f05,0x1f06,0x1f07,0x1f08,0x1f09,0x1f0a,0x1f0b,
      -00122 0x1f0c,0x1f0d,0x1f0e,0x1f0f,0x1f10,0x1f11,0x1f12,0x1f13,0x1f14,0x1f15,0x1f18,0x1f19,0x1f1a,0x1f1b,0x1f1c,0x1f1d,
      -00123 0x1f20,0x1f21,0x1f22,0x1f23,0x1f24,0x1f25,0x1f26,0x1f27,0x1f28,0x1f29,0x1f2a,0x1f2b,0x1f2c,0x1f2d,0x1f2e,0x1f2f,
      -00124 0x1f30,0x1f31,0x1f32,0x1f33,0x1f34,0x1f35,0x1f36,0x1f37,0x1f38,0x1f39,0x1f3a,0x1f3b,0x1f3c,0x1f3d,0x1f3e,0x1f3f,
      -00125 0x1f40,0x1f41,0x1f42,0x1f43,0x1f44,0x1f45,0x1f48,0x1f49,0x1f4a,0x1f4b,0x1f4c,0x1f4d,0x1f50,0x1f51,0x1f52,0x1f53,
      -00126 0x1f54,0x1f55,0x1f56,0x1f57,0x1f59,0x1f5b,0x1f5d,0x1f5f,0x1f60,0x1f61,0x1f62,0x1f63,0x1f64,0x1f65,0x1f66,0x1f67,
      -00127 0x1f68,0x1f69,0x1f6a,0x1f6b,0x1f6c,0x1f6d,0x1f6e,0x1f6f,0x1f70,0x1f72,0x1f74,0x1f76,0x1f78,0x1f7a,0x1f7c,0x1f80,
      -00128 0x1f81,0x1f82,0x1f83,0x1f84,0x1f85,0x1f86,0x1f87,0x1f88,0x1f89,0x1f8a,0x1f8b,0x1f8c,0x1f8d,0x1f8e,0x1f8f,0x1f90,
      -00129 0x1f91,0x1f92,0x1f93,0x1f94,0x1f95,0x1f96,0x1f97,0x1f98,0x1f99,0x1f9a,0x1f9b,0x1f9c,0x1f9d,0x1f9e,0x1f9f,0x1fa0,
      -00130 0x1fa1,0x1fa2,0x1fa3,0x1fa4,0x1fa5,0x1fa6,0x1fa7,0x1fa8,0x1fa9,0x1faa,0x1fab,0x1fac,0x1fad,0x1fae,0x1faf,0x1fb0,
      -00131 0x1fb1,0x1fb2,0x1fb3,0x1fb4,0x1fb6,0x1fb7,0x1fb8,0x1fb9,0x1fba,0x1fbc,0x1fc1,0x1fc2,0x1fc3,0x1fc4,0x1fc6,0x1fc7,
      -00132 0x1fc8,0x1fca,0x1fcc,0x1fcd,0x1fce,0x1fcf,0x1fd0,0x1fd1,0x1fd2,0x1fd6,0x1fd7,0x1fd8,0x1fd9,0x1fda,0x1fdd,0x1fde,
      -00133 0x1fdf,0x1fe0,0x1fe1,0x1fe2,0x1fe4,0x1fe5,0x1fe6,0x1fe7,0x1fe8,0x1fe9,0x1fea,0x1fec,0x1fed,0x1ff2,0x1ff3,0x1ff4,
      -00134 0x1ff6,0x1ff7,0x1ff8,0x1ffa,0x1ffc,0x2008,0x2018,0x2019,0x201a,0x201c,0x201d,0x201e,0x2022,0x2026,0x2030,0x2039,
      -00135 0x203a,0x203d,0x2070,0x2074,0x2075,0x2076,0x2077,0x2078,0x2079,0x207a,0x207b,0x207c,0x207d,0x207e,0x2080,0x2081,
      -00136 0x2082,0x2083,0x2084,0x2085,0x2086,0x2087,0x2088,0x2089,0x208a,0x208b,0x208c,0x208d,0x208e,0x20a0,0x20a1,0x20a2,
      -00137 0x20a3,0x20a4,0x20a5,0x20a6,0x20a7,0x20a8,0x20a9,0x20ab,0x20ac,0x2116,0x2120,0x2122,0x219a,0x219b,0x21ae,0x2204,
      -00138 0x2209,0x220c,0x2224,0x2226,0x2241,0x2244,0x2247,0x2249,0x2260,0x2262,0x226d,0x226e,0x226f,0x2270,0x2271,0x2274,
      -00139 0x2275,0x2278,0x2279,0x2280,0x2281,0x2284,0x2285,0x2288,0x2289,0x22ac,0x22ad,0x22ae,0x22af,0x22e0,0x22e1,0x22e2,
      -00140 0x22e3,0x22ea,0x22eb,0x22ec,0x22ed,0x266d,0x266e,0x266f,0x2adc,0x301d,0x301e,0x3192,0x3193,0x3194,0x3195,0x3196,
      -00141 0x3197,0x3198,0x3199,0x319a,0x319b,0x319c,0x319d,0x319e,0x319f,0xfb1d,0xfb1f,0xfb2a,0xfb2b,0xfb2c,0xfb2d,0xfb2e,
      -00142 0xfb2f,0xfb30,0xfb31,0xfb32,0xfb33,0xfb34,0xfb35,0xfb36,0xfb38,0xfb39,0xfb3a,0xfb3b,0xfb3c,0xfb3e,0xfb40,0xfb41,
      -00143 0xfb43,0xfb44,0xfb46,0xfb47,0xfb48,0xfb49,0xfb4a,0xfb4b,0xfb4c,0xfb4d,0xfb4e
      -00144 };
      -00145 uint16_t multikey_map_first[] = { 
      -00146 0x002B,0x0020,0x0041,0x0028,0x0029,0x0020,0x0020,0x002D,0x006C,0x002D,0x0020,0x0020,0x0021,0x002F,0x002D,0x0078,
      -00147 0x003D,0x0021,0x043F,0x004F,0x003C,0x002D,0x004F,0x006F,0x002B,0x005E,0x005E,0x006D,0x0050,0x002E,0x0020,0x005E,
      -00148 0x003E,0x0031,0x0031,0x0033,0x003F,0x0060,0x0027,0x005E,0x007E,0x0022,0x006F,0x0041,0x00B8,0x0060,0x0027,0x005E,
      -00149 0x0022,0x0060,0x0027,0x005E,0x0022,0x0044,0x007E,0x0060,0x0027,0x005E,0x007E,0x0022,0x0078,0x002F,0x0060,0x0027,
      -00150 0x005E,0x0022,0x0027,0x0054,0x0073,0x0060,0x0027,0x005E,0x007E,0x0022,0x006F,0x0061,0x00B8,0x0060,0x0027,0x005E,
      -00151 0x0022,0x0060,0x0027,0x005E,0x0022,0x0064,0x007E,0x0060,0x0027,0x005E,0x007E,0x0022,0x002D,0x002F,0x0060,0x0027,
      -00152 0x005E,0x0022,0x0027,0x0074,0x0022,0x005F,0x005F,0x0062,0x0062,0x003B,0x003B,0x0027,0x0027,0x005E,0x005E,0x002E,
      -00153 0x002E,0x0063,0x0063,0x0063,0x0063,0x002F,0x002F,0x005F,0x005F,0x0062,0x0062,0x002E,0x002E,0x003B,0x003B,0x0063,
      -00154 0x0063,0x005E,0x005E,0x0062,0x0062,0x002E,0x002E,0x00B8,0x00B8,0x005E,0x005E,0x002F,0x002F,0x007E,0x007E,0x005F,
      -00155 0x005F,0x0062,0x0062,0x003B,0x003B,0x002E,0x0069,0x005E,0x005E,0x00B8,0x00B8,0x006B,0x0027,0x0027,0x00B8,0x00B8,
      -00156 0x0063,0x0063,0x002F,0x002F,0x0027,0x0027,0x00B8,0x00B8,0x0063,0x0063,0x004E,0x006E,0x005F,0x005F,0x0062,0x0062,
      -00157 0x003D,0x003D,0x004F,0x006F,0x0027,0x0027,0x00B8,0x00B8,0x0063,0x0063,0x0027,0x0027,0x005E,0x005E,0x00B8,0x00B8,
      -00158 0x0063,0x0063,0x00B8,0x00B8,0x0063,0x0063,0x002F,0x002F,0x007E,0x007E,0x005F,0x005F,0x0062,0x0062,0x006F,0x006F,
      -00159 0x003D,0x003D,0x003B,0x003B,0x005E,0x005E,0x005E,0x005E,0x0022,0x0027,0x0027,0x002E,0x002E,0x0063,0x0063,0x0066,
      -00160 0x002F,0x002F,0x002B,0x002B,0x002B,0x002B,0x002F,0x002F,0x0063,0x0063,0x0063,0x0063,0x0063,0x0063,0x0063,0x0063,
      -00161 0x005F,0x005F,0x0027,0x0027,0x0063,0x0063,0x0060,0x0060,0x005F,0x005F,0x005F,0x005F,0x005F,0x005F,0x002F,0x002F,
      -00162 0x0063,0x0063,0x0063,0x0063,0x003B,0x003B,0x005F,0x005F,0x0063,0x0063,0x0063,0x0027,0x0027,0x0060,0x0060,0x0027,
      -00163 0x0027,0x0027,0x0027,0x0027,0x0027,0x0063,0x0063,0x002E,0x002E,0x00B8,0x00B8,0x005F,0x005F,0x005F,0x005F,0x002E,
      -00164 0x002E,0x005F,0x005F,0x005F,0x005F,0x0065,0x002F,0x002F,0x0022,0x00A8,0x0027,0x0027,0x0027,0x0027,0x0027,0x0027,
      -00165 0x0027,0x0027,0x0022,0x0022,0x0027,0x0027,0x0027,0x0027,0x0027,0x0022,0x0022,0x0027,0x0027,0x0027,0x0022,0x0060,
      -00166 0x0022,0x0027,0x0022,0x0027,0x0060,0x0062,0x0062,0x0062,0x0060,0x0022,0x0027,0x0022,0x0027,0x0060,0x0062,0x002F,
      -00167 0x002F,0x002F,0x002F,0x002F,0x002F,0x0062,0x0062,0x0062,0x0062,0x0022,0x0022,0x0062,0x0062,0x0022,0x0022,0x0022,
      -00168 0x0022,0x0022,0x0022,0x005F,0x005F,0x0022,0x0022,0x0022,0x0022,0x0022,0x0022,0x0022,0x0022,0x005F,0x005F,0x0022,
      -00169 0x0022,0x003D,0x003D,0x0022,0x0022,0x0022,0x0022,0x0653,0x0654,0x0654,0x0655,0x0654,0x0654,0x0654,0x0654,0x093C,
      -00170 0x093C,0x093C,0x093C,0x093C,0x093C,0x093C,0x093C,0x093C,0x093C,0x093C,0x09C7,0x09C7,0x09BC,0x09BC,0x09BC,0x0A3C,
      -00171 0x0A3C,0x0A3C,0x0A3C,0x0A3C,0x0A3C,0x0B47,0x0B47,0x0B47,0x0B3C,0x0B3C,0x0BD7,0x0BC6,0x0BC7,0x0BC6,0x0C46,0x0CBF,
      -00172 0x0CC6,0x0CC6,0x0CC6,0x0CCA,0x0D46,0x0D47,0x0D46,0x0DD9,0x0DD9,0x0DDC,0x0DD9,0x0FB7,0x0FB7,0x0FB7,0x0FB7,0x0FB7,
      -00173 0x0FB5,0x0F71,0x0F71,0x0FB2,0x0FB3,0x0F71,0x0F92,0x0F9C,0x0FA1,0x0FA6,0x0FAB,0x0F90,0x102E,0x1100,0x1103,0x1107,
      -00174 0x1109,0x110C,0x1102,0x1102,0x1102,0x1102,0x1103,0x1105,0x1105,0x1105,0x1105,0x1106,0x1106,0x1107,0x1107,0x1107,
      -00175 0x1107,0x1107,0x1107,0x1107,0x1107,0x1107,0x1107,0x1107,0x1107,0x1107,0x1107,0x1107,0x1109,0x1109,0x1109,0x1109,
      -00176 0x1109,0x1109,0x1109,0x1109,0x1109,0x1109,0x1109,0x1109,0x1109,0x1109,0x1109,0x113C,0x113E,0x110B,0x110B,0x110B,
      -00177 0x110B,0x110B,0x110B,0x110B,0x110B,0x110B,0x110B,0x110B,0x110C,0x114E,0x1150,0x110E,0x110E,0x1111,0x1111,0x1112,
      -00178 0x1161,0x1163,0x1165,0x1167,0x1169,0x1169,0x1169,0x116E,0x116E,0x116E,0x1173,0x1161,0x1161,0x1163,0x1163,0x1165,
      -00179 0x1165,0x1165,0x1167,0x1167,0x1169,0x1169,0x1169,0x1169,0x1169,0x116D,0x116D,0x116D,0x116D,0x116D,0x116E,0x116E,
      -00180 0x116E,0x116E,0x116E,0x1172,0x1172,0x1172,0x1172,0x1172,0x1172,0x1172,0x1173,0x1173,0x1174,0x1175,0x1175,0x1175,
      -00181 0x1175,0x1175,0x1175,0x119E,0x119E,0x119E,0x119E,0x11A8,0x11A8,0x11AB,0x11AB,0x11AF,0x11AF,0x11AF,0x11AF,0x11AF,
      -00182 0x11AF,0x11AF,0x11B8,0x11BA,0x11A8,0x11A8,0x11AB,0x11AB,0x11AB,0x11AB,0x11AB,0x11AE,0x11AE,0x11AF,0x11AF,0x11AF,
      -00183 0x11CE,0x11AF,0x11AF,0x11AF,0x11AF,0x11AF,0x11AF,0x11AF,0x11AF,0x11AF,0x11AF,0x11B7,0x11B7,0x11B7,0x11B7,0x11B7,
      -00184 0x11B7,0x11B7,0x11B7,0x11B7,0x11B8,0x11B8,0x11B8,0x11B8,0x11BA,0x11BA,0x11BA,0x11BA,0x11BC,0x11BC,0x11BC,0x11BC,
      -00185 0x11F0,0x11F0,0x11C1,0x11C1,0x11C2,0x11C2,0x11C2,0x11C2,0x002E,0x002E,0x0021,0x0021,0x0027,0x0027,0x002E,0x002E,
      -00186 0x0021,0x0021,0x00B8,0x00B8,0x0060,0x0060,0x0027,0x0027,0x0062,0x0062,0x002E,0x002E,0x005F,0x005F,0x002E,0x002E,
      -00187 0x0021,0x0021,0x0022,0x0022,0x00B8,0x00B8,0x0027,0x0027,0x0027,0x0027,0x0021,0x0021,0x0021,0x0021,0x005F,0x005F,
      -00188 0x0027,0x0027,0x002E,0x002E,0x0021,0x0021,0x002E,0x002E,0x0021,0x0021,0x0027,0x0027,0x0022,0x0022,0x0060,0x0060,
      -00189 0x0027,0x0027,0x0027,0x0027,0x002E,0x002E,0x002E,0x002E,0x0021,0x0021,0x005F,0x005F,0x002E,0x002E,0x0021,0x0021,
      -00190 0x002E,0x002E,0x002E,0x002E,0x002E,0x002E,0x002E,0x002E,0x0021,0x0021,0x0027,0x0027,0x0022,0x0022,0x007E,0x007E,
      -00191 0x0021,0x0021,0x0060,0x0060,0x0027,0x0027,0x0022,0x0022,0x002E,0x002E,0x0021,0x0021,0x002E,0x002E,0x0022,0x0022,
      -00192 0x002E,0x002E,0x005E,0x005E,0x0021,0x0021,0x0022,0x006F,0x006F,0x002E,0x0021,0x0021,0x003F,0x003F,0x0027,0x0027,
      -00193 0x0060,0x0060,0x003F,0x003F,0x007E,0x007E,0x005E,0x005E,0x0027,0x0027,0x0060,0x0060,0x003F,0x003F,0x007E,0x007E,
      -00194 0x0062,0x0062,0x0021,0x0021,0x003F,0x003F,0x007E,0x007E,0x0027,0x0027,0x0060,0x0060,0x003F,0x003F,0x007E,0x007E,
      -00195 0x005E,0x005E,0x003F,0x003F,0x0021,0x0021,0x0021,0x0021,0x003F,0x003F,0x0027,0x0027,0x0060,0x0060,0x003F,0x003F,
      -00196 0x007E,0x007E,0x005E,0x005E,0x0027,0x0027,0x0060,0x0060,0x003F,0x003F,0x007E,0x007E,0x0021,0x0021,0x0021,0x0021,
      -00197 0x003F,0x003F,0x0027,0x0027,0x0060,0x0060,0x003F,0x003F,0x007E,0x007E,0x0021,0x0021,0x0060,0x0060,0x0021,0x0021,
      -00198 0x003F,0x003F,0x007E,0x007E,0x0029,0x0028,0x0060,0x0060,0x0027,0x0027,0x007E,0x007E,0x0029,0x0028,0x0060,0x0060,
      -00199 0x0027,0x0027,0x007E,0x007E,0x0029,0x0028,0x0060,0x0060,0x0027,0x0027,0x0029,0x0028,0x0060,0x0060,0x0027,0x0027,
      -00200 0x0029,0x0028,0x0060,0x0060,0x0027,0x0027,0x007E,0x007E,0x0029,0x0028,0x0060,0x0060,0x0027,0x0027,0x007E,0x007E,
      -00201 0x0029,0x0028,0x0060,0x0060,0x0027,0x0027,0x007E,0x007E,0x0029,0x0028,0x0060,0x0060,0x0027,0x0027,0x007E,0x007E,
      -00202 0x0029,0x0028,0x0060,0x0060,0x0027,0x0027,0x0029,0x0028,0x0060,0x0060,0x0027,0x0027,0x0029,0x0028,0x0060,0x0060,
      -00203 0x0027,0x0027,0x007E,0x007E,0x0028,0x0060,0x0027,0x007E,0x0029,0x0028,0x0060,0x0060,0x0027,0x0027,0x007E,0x007E,
      -00204 0x0029,0x0028,0x0060,0x0060,0x0027,0x0027,0x007E,0x007E,0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,0x0060,0x03B9,
      -00205 0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,
      -00206 0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,
      -00207 0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x03B9,0x0062,
      -00208 0x005F,0x03B9,0x03B9,0x03B9,0x007E,0x03B9,0x0062,0x005F,0x0060,0x03B9,0x00A8,0x03B9,0x03B9,0x03B9,0x007E,0x03B9,
      -00209 0x0060,0x0060,0x03B9,0x1FBF,0x1FBF,0x1FBF,0x0062,0x005F,0x0060,0x007E,0x007E,0x0062,0x005F,0x0060,0x1FFE,0x1FFE,
      -00210 0x1FFE,0x0062,0x005F,0x0060,0x0029,0x0028,0x007E,0x007E,0x0062,0x005F,0x0060,0x0028,0x00A8,0x03B9,0x03B9,0x03B9,
      -00211 0x007E,0x03B9,0x0060,0x0060,0x03B9,0x0020,0x0027,0x0027,0x0027,0x0022,0x0022,0x0022,0x002E,0x002E,0x0025,0x002E,
      -00212 0x002E,0x0021,0x005E,0x005E,0x005E,0x005E,0x005E,0x005E,0x005E,0x005E,0x005E,0x005E,0x005E,0x005E,0x005F,0x005F,
      -00213 0x005F,0x005F,0x005F,0x005F,0x005F,0x005F,0x005F,0x005F,0x005F,0x005F,0x005F,0x005F,0x005F,0x0043,0x002F,0x0043,
      -00214 0x0046,0x003D,0x002F,0x003D,0x0050,0x0052,0x003D,0x0064,0x003D,0x041D,0x0073,0x0074,0x002F,0x002F,0x002F,0x2203,
      -00215 0x2208,0x220B,0x2223,0x2225,0x223C,0x2243,0x223C,0x2248,0x003D,0x2261,0x224D,0x003C,0x003E,0x2264,0x2265,0x2272,
      -00216 0x2273,0x2276,0x2277,0x227A,0x227B,0x2282,0x2283,0x2286,0x2287,0x22A3,0x22A8,0x22A9,0x22AB,0x227C,0x227D,0x2291,
      -00217 0x2292,0x22B2,0x22B3,0x22B4,0x22B5,0x0023,0x0023,0x0023,0x2ADD,0x0022,0x0022,0x005E,0x005E,0x005E,0x005E,0x005E,
      -00218 0x005E,0x005E,0x005E,0x005E,0x005E,0x005E,0x005E,0x005E,0x005E,0x05B4,0x05B7,0x05C1,0x05C2,0x05C1,0x05C2,0x05B7,
      -00219 0x05B8,0x05BC,0x05BC,0x05BC,0x05BC,0x05BC,0x05BC,0x05BC,0x05BC,0x05BC,0x05BC,0x05BC,0x05BC,0x05BC,0x05BC,0x05BC,
      -00220 0x05BC,0x05BC,0x05BC,0x05BC,0x05BC,0x05BC,0x05BC,0x05B9,0x05BF,0x05BF,0x05BF
      -00221 };
      -00222 uint16_t multikey_map_second[] = { 
      -00223 0x002B,0x0027,0x0054,0x0028,0x0029,0x003E,0x0060,0x0028,0x0076,0x0029,0x002D,0x0020,0x0021,0x0063,0x004C,0x006F,
      -00224 0x0059,0x005E,0x0430,0x0043,0x003C,0x002C,0x0052,0x006F,0x002D,0x0032,0x0033,0x0075,0x0050,0x002D,0x002C,0x0031,
      -00225 0x003E,0x0034,0x0032,0x0034,0x003F,0x0041,0x0041,0x0041,0x0041,0x0041,0x0041,0x0045,0x0043,0x0045,0x0045,0x0045,
      -00226 0x0045,0x0049,0x0049,0x0049,0x0049,0x0048,0x004E,0x004F,0x004F,0x004F,0x004F,0x004F,0x0078,0x004F,0x0055,0x0055,
      -00227 0x0055,0x0055,0x0059,0x0048,0x0073,0x0061,0x0061,0x0061,0x0061,0x0061,0x0061,0x0065,0x0063,0x0065,0x0065,0x0065,
      -00228 0x0065,0x0069,0x0069,0x0069,0x0069,0x0068,0x006E,0x006F,0x006F,0x006F,0x006F,0x006F,0x003A,0x006F,0x0075,0x0075,
      -00229 0x0075,0x0075,0x0079,0x0068,0x0079,0x0041,0x0061,0x0041,0x0061,0x0041,0x0061,0x0043,0x0063,0x0043,0x0063,0x0043,
      -00230 0x0063,0x0043,0x0063,0x0044,0x0064,0x0044,0x0064,0x0045,0x0065,0x0045,0x0065,0x0045,0x0065,0x0045,0x0065,0x0045,
      -00231 0x0065,0x0047,0x0067,0x0047,0x0067,0x0047,0x0067,0x0047,0x0067,0x0048,0x0068,0x0048,0x0068,0x0049,0x0069,0x0049,
      -00232 0x0069,0x0049,0x0069,0x0049,0x0069,0x0049,0x002E,0x004A,0x006A,0x004B,0x006B,0x006B,0x004C,0x006C,0x004C,0x006C,
      -00233 0x004C,0x006C,0x004C,0x006C,0x004E,0x006E,0x004E,0x006E,0x004E,0x006E,0x0047,0x0067,0x004F,0x006F,0x004F,0x006F,
      -00234 0x004F,0x006F,0x0045,0x0065,0x0052,0x0072,0x0052,0x0072,0x0052,0x0072,0x0053,0x0073,0x0053,0x0073,0x0053,0x0073,
      -00235 0x0053,0x0073,0x0054,0x0074,0x0054,0x0074,0x0054,0x0074,0x0055,0x0075,0x0055,0x0075,0x0055,0x0075,0x0055,0x0075,
      -00236 0x0055,0x0075,0x0055,0x0075,0x0057,0x0077,0x0059,0x0079,0x0059,0x005A,0x007A,0x005A,0x007A,0x005A,0x007A,0x0053,
      -00237 0x0062,0x0049,0x004F,0x006F,0x0055,0x0075,0x005A,0x007A,0x0041,0x0061,0x0049,0x0069,0x004F,0x006F,0x0055,0x0075,
      -00238 0x00DC,0x00FC,0x00DC,0x00FC,0x00DC,0x00FC,0x00DC,0x00FC,0x00C4,0x00E4,0x0226,0x0227,0x00C6,0x00E6,0x0047,0x0067,
      -00239 0x0047,0x0067,0x004B,0x006B,0x004F,0x006F,0x01EA,0x01EB,0x01B7,0x0292,0x006A,0x0047,0x0067,0x004E,0x006E,0x00C5,
      -00240 0x00E5,0x00C6,0x00E6,0x00D8,0x00F8,0x0048,0x0068,0x0041,0x0061,0x0045,0x0065,0x00D6,0x00F6,0x00D5,0x00F5,0x004F,
      -00241 0x006F,0x022E,0x022F,0x0059,0x0079,0x0065,0x0069,0x0294,0x0027,0x0027,0x0391,0x0395,0x0397,0x0399,0x039F,0x03A5,
      -00242 0x03A9,0x03CA,0x0399,0x03A5,0x03B1,0x03B5,0x03B7,0x03B9,0x03CB,0x03B9,0x03C5,0x03BF,0x03C5,0x03C9,0x03D2,0x0415,
      -00243 0x0415,0x0413,0x0406,0x041A,0x0418,0x0423,0x0418,0x0438,0x0435,0x0435,0x0433,0x0456,0x043A,0x0438,0x0443,0x0413,
      -00244 0x0433,0x041A,0x043A,0x04AE,0x04AF,0x0416,0x0436,0x0410,0x0430,0x0410,0x0430,0x0415,0x0435,0x04D8,0x04D9,0x0416,
      -00245 0x0436,0x0417,0x0437,0x0418,0x0438,0x0418,0x0438,0x041E,0x043E,0x04E8,0x04E9,0x042D,0x044D,0x0423,0x0443,0x0423,
      -00246 0x0443,0x0423,0x0443,0x0427,0x0447,0x042B,0x044B,0x0627,0x0627,0x0648,0x0627,0x064A,0x06D5,0x06C1,0x06D2,0x0928,
      -00247 0x0930,0x0933,0x0915,0x0916,0x0917,0x091C,0x0921,0x0922,0x092B,0x092F,0x09BE,0x09D7,0x09A1,0x09A2,0x09AF,0x0A32,
      -00248 0x0A38,0x0A16,0x0A17,0x0A1C,0x0A2B,0x0B56,0x0B3E,0x0B57,0x0B21,0x0B22,0x0B92,0x0BBE,0x0BBE,0x0BD7,0x0C56,0x0CD5,
      -00249 0x0CD5,0x0CD6,0x0CC2,0x0CD5,0x0D3E,0x0D3E,0x0D57,0x0DCA,0x0DCF,0x0DCA,0x0DDF,0x0F42,0x0F4C,0x0F51,0x0F56,0x0F5B,
      -00250 0x0F40,0x0F72,0x0F74,0x0F80,0x0F80,0x0F80,0x0FB7,0x0FB7,0x0FB7,0x0FB7,0x0FB7,0x0FB5,0x1025,0x1100,0x1103,0x1107,
      -00251 0x1109,0x110C,0x1100,0x1102,0x1103,0x1107,0x1100,0x1102,0x1105,0x1112,0x110B,0x1107,0x110B,0x1100,0x1102,0x1103,
      -00252 0x1109,0x112D,0x112F,0x1132,0x110A,0x1136,0x110C,0x110E,0x1110,0x1111,0x110B,0x112B,0x1100,0x1102,0x1103,0x1105,
      -00253 0x1106,0x1107,0x111E,0x110A,0x110B,0x110C,0x110E,0x110F,0x1110,0x1111,0x1112,0x113C,0x113E,0x1100,0x1103,0x1106,
      -00254 0x1107,0x1109,0x1140,0x110B,0x110C,0x110E,0x1110,0x1111,0x110B,0x114E,0x1150,0x110F,0x1112,0x1107,0x110B,0x1112,
      -00255 0x1175,0x1175,0x1175,0x1175,0x1161,0x1162,0x1175,0x1165,0x1166,0x1175,0x1175,0x1169,0x116E,0x1169,0x116D,0x1169,
      -00256 0x116E,0x1173,0x1169,0x116E,0x1165,0x1166,0x1168,0x1169,0x116E,0x1163,0x1164,0x1167,0x1169,0x1175,0x1161,0x1162,
      -00257 0x117C,0x1168,0x116E,0x1161,0x1165,0x1166,0x1167,0x1168,0x116E,0x1175,0x116E,0x1173,0x116E,0x1161,0x1163,0x1169,
      -00258 0x116E,0x1173,0x119E,0x1165,0x116E,0x1175,0x119E,0x11A8,0x11BA,0x11BD,0x11C2,0x11A8,0x11B7,0x11B8,0x11BA,0x11C0,
      -00259 0x11C1,0x11C2,0x11BA,0x11BA,0x11AF,0x11E7,0x11A8,0x11AE,0x11BA,0x11EB,0x11C0,0x11A8,0x11AF,0x11AA,0x11AB,0x11AE,
      -00260 0x11C2,0x11AF,0x11DA,0x11DD,0x11B9,0x11E5,0x11E6,0x11BB,0x11EB,0x11BF,0x11F9,0x11A8,0x11AF,0x11B8,0x11BA,0x11BB,
      -00261 0x11EB,0x11BE,0x11C2,0x11BC,0x11AF,0x11C1,0x11C2,0x11BC,0x11A8,0x11AE,0x11AF,0x11B8,0x11A8,0x11A9,0x11BC,0x11BF,
      -00262 0x11BA,0x11EB,0x11B8,0x11BC,0x11AB,0x11AF,0x11B7,0x11B8,0x0042,0x0062,0x0042,0x0062,0x00C7,0x00E7,0x0044,0x0064,
      -00263 0x0044,0x0064,0x0044,0x0064,0x0112,0x0113,0x0112,0x0113,0x0228,0x0229,0x0046,0x0066,0x0047,0x0067,0x0048,0x0068,
      -00264 0x0048,0x0068,0x0048,0x0068,0x0048,0x0068,0x00CF,0x00EF,0x004B,0x006B,0x004B,0x006B,0x004C,0x006C,0x1E36,0x1E37,
      -00265 0x004D,0x006D,0x004D,0x006D,0x004D,0x006D,0x004E,0x006E,0x004E,0x006E,0x00D5,0x00F5,0x00D5,0x00F5,0x014C,0x014D,
      -00266 0x014C,0x014D,0x0050,0x0070,0x0050,0x0070,0x0052,0x0072,0x0052,0x0072,0x1E5A,0x1E5B,0x0053,0x0073,0x0053,0x0073,
      -00267 0x015A,0x015B,0x0160,0x0161,0x1E62,0x1E63,0x0054,0x0074,0x0054,0x0074,0x0168,0x0169,0x016A,0x016B,0x0056,0x0076,
      -00268 0x0056,0x0076,0x0057,0x0077,0x0057,0x0077,0x0057,0x0077,0x0057,0x0077,0x0057,0x0077,0x0058,0x0078,0x0058,0x0078,
      -00269 0x0059,0x0079,0x005A,0x007A,0x005A,0x007A,0x0074,0x0077,0x0079,0x017F,0x0041,0x0061,0x0041,0x0061,0x00C2,0x00E2,
      -00270 0x00C2,0x00E2,0x00C2,0x00E2,0x00C2,0x00E2,0x1EA0,0x1EA1,0x0102,0x0103,0x0102,0x0103,0x0102,0x0103,0x0102,0x0103,
      -00271 0x1EA0,0x1EA1,0x0045,0x0065,0x0045,0x0065,0x0045,0x0065,0x00CA,0x00EA,0x00CA,0x00EA,0x00CA,0x00EA,0x00CA,0x00EA,
      -00272 0x1EB8,0x1EB9,0x0049,0x0069,0x0049,0x0069,0x004F,0x006F,0x004F,0x006F,0x00D4,0x00F4,0x00D4,0x00F4,0x00D4,0x00F4,
      -00273 0x00D4,0x00F4,0x1ECC,0x1ECD,0x01A0,0x01A1,0x01A0,0x01A1,0x01A0,0x01A1,0x01A0,0x01A1,0x01A0,0x01A1,0x0055,0x0075,
      -00274 0x0055,0x0075,0x01AF,0x01B0,0x01AF,0x01B0,0x01AF,0x01B0,0x01AF,0x01B0,0x01AF,0x01B0,0x0059,0x0079,0x0059,0x0079,
      -00275 0x0059,0x0079,0x0059,0x0079,0x03B1,0x03B1,0x1F00,0x1F01,0x1F00,0x1F01,0x1F00,0x1F01,0x0391,0x0391,0x1F08,0x1F09,
      -00276 0x1F08,0x1F09,0x1F08,0x1F09,0x03B5,0x03B5,0x1F10,0x1F11,0x1F10,0x1F11,0x0395,0x0395,0x1F18,0x1F19,0x1F18,0x1F19,
      -00277 0x03B7,0x03B7,0x1F20,0x1F21,0x1F20,0x1F21,0x1F20,0x1F21,0x0397,0x0397,0x1F28,0x1F29,0x1F28,0x1F29,0x1F28,0x1F29,
      -00278 0x03B9,0x03B9,0x1F30,0x1F31,0x1F30,0x1F31,0x1F30,0x1F31,0x0399,0x0399,0x1F38,0x1F39,0x1F38,0x1F39,0x1F38,0x1F39,
      -00279 0x03BF,0x03BF,0x1F40,0x1F41,0x1F40,0x1F41,0x039F,0x039F,0x1F48,0x1F49,0x1F48,0x1F49,0x03C5,0x03C5,0x1F50,0x1F51,
      -00280 0x1F50,0x1F51,0x1F50,0x1F51,0x03A5,0x1F59,0x1F59,0x1F59,0x03C9,0x03C9,0x1F60,0x1F61,0x1F60,0x1F61,0x1F60,0x1F61,
      -00281 0x03A9,0x03A9,0x1F68,0x1F69,0x1F68,0x1F69,0x1F68,0x1F69,0x03B1,0x03B5,0x03B7,0x03B9,0x03BF,0x03C5,0x03C9,0x1F00,
      -00282 0x1F01,0x1F02,0x1F03,0x1F04,0x1F05,0x1F06,0x1F07,0x1F08,0x1F09,0x1F0A,0x1F0B,0x1F0C,0x1F0D,0x1F0E,0x1F0F,0x1F20,
      -00283 0x1F21,0x1F22,0x1F23,0x1F24,0x1F25,0x1F26,0x1F27,0x1F28,0x1F29,0x1F2A,0x1F2B,0x1F2C,0x1F2D,0x1F2E,0x1F2F,0x1F60,
      -00284 0x1F61,0x1F62,0x1F63,0x1F64,0x1F65,0x1F66,0x1F67,0x1F68,0x1F69,0x1F6A,0x1F6B,0x1F6C,0x1F6D,0x1F6E,0x1F6F,0x03B1,
      -00285 0x03B1,0x1F70,0x03B1,0x03AC,0x03B1,0x1FB6,0x0391,0x0391,0x0391,0x0391,0x007E,0x1F74,0x03B7,0x03AE,0x03B7,0x1FC6,
      -00286 0x0395,0x0397,0x0397,0x0060,0x0027,0x007E,0x03B9,0x03B9,0x03CA,0x03B9,0x03CA,0x0399,0x0399,0x0399,0x0060,0x0027,
      -00287 0x007E,0x03C5,0x03C5,0x03CB,0x03C1,0x03C1,0x03C5,0x03CB,0x03A5,0x03A5,0x03A5,0x03A1,0x0060,0x1F7C,0x03C9,0x03CE,
      -00288 0x03C9,0x1FF6,0x039F,0x03A9,0x03A9,0x002E,0x003C,0x003E,0x002C,0x003C,0x003E,0x002C,0x003D,0x002E,0x006F,0x003C,
      -00289 0x003E,0x003F,0x0030,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x002B,0x2212,0x003D,0x0028,0x0029,0x0030,0x0031,
      -00290 0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x002B,0x2212,0x003D,0x0028,0x0029,0x0045,0x0043,0x0072,
      -00291 0x0072,0x004C,0x006D,0x004E,0x0074,0x0073,0x0057,0x002D,0x0415,0x041E,0x006D,0x006D,0x2190,0x2192,0x2194,0x0338,
      -00292 0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,
      -00293 0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,0x0338,
      -00294 0x0338,0x0338,0x0338,0x0338,0x0338,0x0062,0x0066,0x0023,0x0338,0x005C,0x002F,0x4E00,0x4E8C,0x4E09,0x56DB,0x4E0A,
      -00295 0x4E2D,0x4E0B,0x7532,0x4E59,0x4E19,0x4E01,0x5929,0x5730,0x4EBA,0x05D9,0x05F2,0x05E9,0x05E9,0xFB49,0xFB49,0x05D0,
      -00296 0x05D0,0x05D0,0x05D1,0x05D2,0x05D3,0x05D4,0x05D5,0x05D6,0x05D8,0x05D9,0x05DA,0x05DB,0x05DC,0x05DE,0x05E0,0x05E1,
      -00297 0x05E3,0x05E4,0x05E6,0x05E7,0x05E8,0x05E9,0x05EA,0x05D5,0x05D1,0x05DB,0x05E4
      -00298 };
      -

      Generated on Tue Jul 17 12:19:00 2012 for libcvautomation by  - -doxygen 1.4.7
      - - diff --git a/XTest_command_strings.html b/xtest_command_strings.html similarity index 91% rename from XTest_command_strings.html rename to xtest_command_strings.html index f6176a9..b32b370 100644 --- a/XTest_command_strings.html +++ b/xtest_command_strings.html @@ -34,7 +34,7 @@
      libcvautomation -  1.2 +  1.3
      @@ -77,10 +77,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    -
    xte_commandString() Command Strings
    +
    xte_commandString() Command Strings
    -

    This page describes the various command strings available for the xte_commandString() function.

    +

    This page describes the various command strings available for the xte_commandString() function.

    Mouse Click

     'mouseclick <button_number>' 
    @@ -137,20 +137,24 @@ Mouse Scroll Up
     

    Key Button Click

     'keyclick <key_name>' 
    -

    Push and release a keyboard key. This can be a key like 'a', 'b', or something fancy like 'space'. Please see XTest Key Strings for a full list of special keys.

    +

    Push and release a keyboard key. This can be a key like 'a', 'b', or something fancy like 'space'. Please see XTest Key Strings for a full list of special keys.

    Key Button Down

     'keydown <key_name>' 
    -

    Push down but do not release a keyboard key. This can be a key like 'a', 'b', or something fancy like 'space'. Please see XTest Key Strings for a full list of special keys.

    +

    Push down but do not release a keyboard key. This can be a key like 'a', 'b', or something fancy like 'space'. Please see XTest Key Strings for a full list of special keys.

    Key Button Up

     'keyup <key_name>' 
    -

    Release a keyboard key. This can be a key like 'a', 'b', or something fancy like 'space'. Please see XTest Key Strings for a full list of special keys.

    +

    Release a keyboard key. This can be a key like 'a', 'b', or something fancy like 'space'. Please see XTest Key Strings for a full list of special keys.

    Keyboard Input String

     'keystring <string>' 
     

    Input a string of text to the X11 server. For example, inputting 'Hello, world!" will act as if you typed 'Hello, world!' from the keyboard.

    -
    Warning:
    Unlike Key Button Down, Key Button Up, and Key Button Click, this function can not handle special keys like 'space'.
    +
    Warning:
    Unlike Key Button Down, Key Button Up, and Key Button Click, this function can not handle special keys like 'space'.
    +

    +Wait for Image

    +
     'waitfor <image_name>' 
    +

    Wait for an image to show up on screen. For example, this can be used to make sure a button exists before clicking it.

    diff --git a/XTest_key_strings.html b/xtest_key_strings.html similarity index 96% rename from XTest_key_strings.html rename to xtest_key_strings.html index a14e0b4..6dc1b67 100644 --- a/XTest_key_strings.html +++ b/xtest_key_strings.html @@ -34,7 +34,7 @@
    libcvautomation -  1.2 +  1.3
    @@ -322,7 +322,7 @@ XF86AudioLowerVolume XF86AudioRaiseVolume XF86KbdBrightnessDown XF86MonBrightnessDown -
    Warning:
    Please note that each key string above is first translated into a key code, and then into the actual key click. Thus, while you might intend to press "dollar", it will actually come out as "4". If you need a '$' to come out, use the 'keystring $' command to xte_commandString() or 'key_str $' function in the BASH wrapper - see the Appendix of Wrapper Functions.
    +
    Warning:
    Please note that each key string above is first translated into a key code, and then into the actual key click. Thus, while you might intend to press "dollar", it will actually come out as "4". If you need a '$' to come out, use the 'keystring $' command to xte_commandString() or 'key_str $' function in the BASH wrapper - see the Appendix of Wrapper Functions and Environment Variables.