Release version 1.3

This commit is contained in:
Bradlee Speice 2012-07-23 16:19:09 -04:00
parent 34b9da1832
commit 020d536376
46 changed files with 46105 additions and 157 deletions

View File

@ -1,4 +1,4 @@
libcvautomation (1.3-1) precise; urgency=low
libcvautomation (1.3-1) unstable; urgency=low
* Initial release of libcvautomation version 1.3-1

711
Makefile.in Normal file
View File

@ -0,0 +1,711 @@
# Makefile.in generated by automake 1.10.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = .
DIST_COMMON = README $(am__configure_deps) $(dist_sysconf_DATA) \
$(srcdir)/Makefile.am $(srcdir)/Makefile.in \
$(srcdir)/libcvautomation.pc.in $(top_srcdir)/configure \
$(top_srcdir)/debian/changelog.in \
$(top_srcdir)/debian/copyright.in \
$(top_srcdir)/include/libcvautomation/libcvautomation.h.in \
$(top_srcdir)/rpm/libcvautomation.spec.in AUTHORS COPYING \
ChangeLog INSTALL NEWS config.guess config.sub depcomp \
install-sh ltmain.sh missing
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno config.status.lineno
mkinstalldirs = $(install_sh) -d
CONFIG_CLEAN_FILES = libcvautomation.pc \
include/libcvautomation/libcvautomation.h \
rpm/libcvautomation.spec debian/copyright debian/changelog
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
html-recursive info-recursive install-data-recursive \
install-dvi-recursive install-exec-recursive \
install-html-recursive install-info-recursive \
install-pdf-recursive install-ps-recursive install-recursive \
installcheck-recursive installdirs-recursive pdf-recursive \
ps-recursive uninstall-recursive
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
am__installdirs = "$(DESTDIR)$(sysconfdir)" \
"$(DESTDIR)$(pkgconfigdir)"
dist_sysconfDATA_INSTALL = $(INSTALL_DATA)
pkgconfigDATA_INSTALL = $(INSTALL_DATA)
DATA = $(dist_sysconf_DATA) $(pkgconfig_DATA)
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = libcvautomation examples docs
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
{ test ! -d $(distdir) \
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
&& rm -fr $(distdir); }; }
DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = --best
distuninstallcheck_listfiles = find . -type f -print
distcleancheck_listfiles = find . -type f -print
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CV_CFLAGS = @CV_CFLAGS@
CV_LIBS = @CV_LIBS@
CV_VERSION = @CV_VERSION@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
Doxygen = @Doxygen@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLE_MAN = @ENABLE_MAN@
ENABLE_TEX = @ENABLE_TEX@
EXEEXT = @EXEEXT@
F77 = @F77@
FFLAGS = @FFLAGS@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIBTOOL_VERSION = @LIBTOOL_VERSION@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
OBJEXT = @OBJEXT@
OpenCV_CFLAGS = @OpenCV_CFLAGS@
OpenCV_LIBS = @OpenCV_LIBS@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
XMKMF = @XMKMF@
XTEST_CFLAGS = @XTEST_CFLAGS@
XTEST_LIBS = @XTEST_LIBS@
XTest_CFLAGS = @XTest_CFLAGS@
XTest_LIBS = @XTest_LIBS@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
@BUILD_DOXYGEN_FALSE@SUBDIRS = libcvautomation examples
@BUILD_DOXYGEN_TRUE@SUBDIRS = libcvautomation examples docs
#And the BASH macros
dist_sysconf_DATA = libcvautomation_funcs
#And the pkg-config files
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libcvautomation.pc
DISTCLEANFILES = libcvautomation.pc
#Make sure to distribute some special files we need for building
#the libcvautomation.h header
EXTRA_DIST = include/opencv1_includes include/opencv2_includes
all: all-recursive
.SUFFIXES:
am--refresh:
@:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
cd $(srcdir) && $(AUTOMAKE) --gnu \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
echo ' $(SHELL) ./config.status'; \
$(SHELL) ./config.status;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
$(top_srcdir)/configure: $(am__configure_deps)
cd $(srcdir) && $(AUTOCONF)
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
libcvautomation.pc: $(top_builddir)/config.status $(srcdir)/libcvautomation.pc.in
cd $(top_builddir) && $(SHELL) ./config.status $@
include/libcvautomation/libcvautomation.h: $(top_builddir)/config.status $(top_srcdir)/include/libcvautomation/libcvautomation.h.in
cd $(top_builddir) && $(SHELL) ./config.status $@
rpm/libcvautomation.spec: $(top_builddir)/config.status $(top_srcdir)/rpm/libcvautomation.spec.in
cd $(top_builddir) && $(SHELL) ./config.status $@
debian/copyright: $(top_builddir)/config.status $(top_srcdir)/debian/copyright.in
cd $(top_builddir) && $(SHELL) ./config.status $@
debian/changelog: $(top_builddir)/config.status $(top_srcdir)/debian/changelog.in
cd $(top_builddir) && $(SHELL) ./config.status $@
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool
install-dist_sysconfDATA: $(dist_sysconf_DATA)
@$(NORMAL_INSTALL)
test -z "$(sysconfdir)" || $(MKDIR_P) "$(DESTDIR)$(sysconfdir)"
@list='$(dist_sysconf_DATA)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f=$(am__strip_dir) \
echo " $(dist_sysconfDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(sysconfdir)/$$f'"; \
$(dist_sysconfDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(sysconfdir)/$$f"; \
done
uninstall-dist_sysconfDATA:
@$(NORMAL_UNINSTALL)
@list='$(dist_sysconf_DATA)'; for p in $$list; do \
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(sysconfdir)/$$f'"; \
rm -f "$(DESTDIR)$(sysconfdir)/$$f"; \
done
install-pkgconfigDATA: $(pkgconfig_DATA)
@$(NORMAL_INSTALL)
test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)"
@list='$(pkgconfig_DATA)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f=$(am__strip_dir) \
echo " $(pkgconfigDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
$(pkgconfigDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfigdir)/$$f"; \
done
uninstall-pkgconfigDATA:
@$(NORMAL_UNINSTALL)
@list='$(pkgconfig_DATA)'; for p in $$list; do \
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
rm -f "$(DESTDIR)$(pkgconfigdir)/$$f"; \
done
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
$(RECURSIVE_CLEAN_TARGETS):
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
rev=''; for subdir in $$list; do \
if test "$$subdir" = "."; then :; else \
rev="$$subdir $$rev"; \
fi; \
done; \
rev="$$rev ."; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
ctags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
empty_fix=.; \
else \
include_option=--include; \
empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
$(am__remove_distdir)
test -d $(distdir) || mkdir $(distdir)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -d "$(distdir)/$$subdir" \
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|| exit 1; \
distdir=`$(am__cd) $(distdir) && pwd`; \
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
(cd $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$top_distdir" \
distdir="$$distdir/$$subdir" \
am__remove_distdir=: \
am__skip_length_check=: \
distdir) \
|| exit 1; \
fi; \
done
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r $(distdir)
dist-gzip: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
dist-bzip2: distdir
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
$(am__remove_distdir)
dist-lzma: distdir
tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
$(am__remove_distdir)
dist-tarZ: distdir
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
$(am__remove_distdir)
dist-shar: distdir
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
$(am__remove_distdir)
dist-zip: distdir
-rm -f $(distdir).zip
zip -rq $(distdir).zip $(distdir)
$(am__remove_distdir)
dist dist-all: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.lzma*) \
unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
esac
chmod -R a-w $(distdir); chmod a+w $(distdir)
mkdir $(distdir)/_build
mkdir $(distdir)/_inst
chmod a-w $(distdir)
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
&& cd $(distdir)/_build \
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
$(DISTCHECK_CONFIGURE_FLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
distuninstallcheck \
&& chmod -R a-w "$$dc_install_base" \
&& ({ \
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
} || { rm -rf "$$dc_destdir"; exit 1; }) \
&& rm -rf "$$dc_destdir" \
&& $(MAKE) $(AM_MAKEFLAGS) dist \
&& rm -rf $(DIST_ARCHIVES) \
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
$(am__remove_distdir)
@(echo "$(distdir) archives ready for distribution: "; \
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
distuninstallcheck:
@cd $(distuninstallcheck_dir) \
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|| { echo "ERROR: files left after uninstall:" ; \
if test -n "$(DESTDIR)"; then \
echo " (check DESTDIR support)"; \
fi ; \
$(distuninstallcheck_listfiles) ; \
exit 1; } >&2
distcleancheck: distclean
@if test '$(srcdir)' = . ; then \
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
exit 1 ; \
fi
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|| { echo "ERROR: files left in build directory after distclean:" ; \
$(distcleancheck_listfiles) ; \
exit 1; } >&2
check-am: all-am
check: check-recursive
all-am: Makefile $(DATA)
installdirs: installdirs-recursive
installdirs-am:
for dir in "$(DESTDIR)$(sysconfdir)" "$(DESTDIR)$(pkgconfigdir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-recursive
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-libtool \
distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
info: info-recursive
info-am:
install-data-am: install-pkgconfigDATA
install-dvi: install-dvi-recursive
install-exec-am: install-dist_sysconfDATA
install-html: install-html-recursive
install-info: install-info-recursive
install-man:
install-pdf: install-pdf-recursive
install-ps: install-ps-recursive
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am: uninstall-dist_sysconfDATA uninstall-pkgconfigDATA
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
install-strip
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
all all-am am--refresh check check-am clean clean-generic \
clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
dist-gzip dist-lzma dist-shar dist-tarZ dist-zip distcheck \
distclean distclean-generic distclean-libtool distclean-tags \
distcleancheck distdir distuninstallcheck dvi dvi-am html \
html-am info info-am install install-am install-data \
install-data-am install-dist_sysconfDATA install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-pdf install-pdf-am install-pkgconfigDATA install-ps \
install-ps-am install-strip installcheck installcheck-am \
installdirs installdirs-am maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic \
mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
uninstall uninstall-am uninstall-dist_sysconfDATA \
uninstall-pkgconfigDATA
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@ -1,22 +0,0 @@
libcvautomation
============
Use OpenCV to create a GUI testing framework - replaces Sikuli, Xpresser
###### Why I'm doing this ######
In trying to create an application testing framework for the MOSAIC team at the University of North Carolina at Charlotte, I was very discouraged by what was currently offered.
Sikuli represented some great ideas, and the built-in IDE was great. Problem being, it crashed whenever I tried to create the first screenshot. Xpresser also looked like it could be great, but died pretty quickly too. Plus, neither of these programs ran on the Prominent North American Enterprise Linux Vendor's software platform.
As such, starting with a sample OpenCV program to recognize sub-images, I'm attempting to create a GUI testing framework that's more stable, no-questions-asked, simple, and otherwise just usable (specifically from BASH - don't make things more complicated than they need to be.)
###### How it works ######
OpenCV is used for image processing, and XTestExtension is used for driving X11. Reference implementations are given, and they are fairly full-featured.
###### Where we're headed #######
Image recognition and basic X automation are done. From here, code more advanced X automations (ex. Giving the library a string of text to enter, rather than just a character at a time), and clean up the code.
After the basic functionality is done (Image recognition and automation) I'll develop python bindings to make interfacing with the library simpler. If there are any suggestions, please let me know!
###### Get in contact #######
If you have a suggestion, comment, question, concern, or otherwise, feel free to email me at <bspeice@uncc.edu>. This product is developed with the community in mind, so if there's any feedback to be had I welcome it.

7425
aclocal.m4 vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,23 +0,0 @@
#!/bin/sh
#===============================================================================
#
# FILE: autogen.sh
#
# USAGE: ./autogen.sh
#
# DESCRIPTION:
#
# OPTIONS: ---
# REQUIREMENTS: ---
# BUGS: ---
# NOTES: ---
# AUTHOR: Bradlee Speice, bspeice@uncc.edu
# ORGANIZATION:
# CREATED: 06/22/2012 11:05:47 AM EDT
# REVISION: ---
#===============================================================================
aclocal
autoconf
libtoolize --copy
automake --copy --add-missing

1411
config.guess vendored Executable file

File diff suppressed because it is too large Load Diff

1500
config.sub vendored Executable file

File diff suppressed because it is too large Load Diff

22303
configure vendored Executable file

File diff suppressed because it is too large Load Diff

1
debian/compat vendored
View File

@ -1 +0,0 @@
8

36
debian/control vendored
View File

@ -1,36 +0,0 @@
Source: libcvautomation
Section: devel
Priority: extra
Maintainer: Bradlee Speice <bspeice@uncc.edu>
Build-Depends: debhelper (>= 8.0.0), autotools-dev, pkg-config, libpcre3, libx11-dev, libxtst-dev, libopencv-core-dev, libopencv-highgui-dev, libopencv-imgproc-dev, doxygen
Standards-Version: 3.9.3
Homepage: http://djbushido.github.com/libcvautomation/
Package: libcvautomation-dev
Section: libdevel
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, libxtst-dev, libx11-dev, libopencv-core2.3, libopencv-highgui2.3, libopencv-imgproc2.3
Description: GUI Automation and Testing Library
Contains the Libcvautomation main library, headers, and pkg-config files.
Libcvautomation is a GUI automation and testing tool based on image
recognition and response. This program was designed as a direct replacement
for Sikuli and Xpresser. Each solution had large problems with crashing, and
both refused to function on Red Hat Linux and Ubuntu 12.04. The author really
liked the way each of these programs approached GUI automation, but they
simply didn't work. As such, a simple library was designed to integrate OpenCV
and XTest, which can be used by BASH to drive GUI testing and automation, and
works on both new and old Linux distributions.
Package: libcvautomation-doc
Section: doc
Architecture: all
Depends: ${misc:Depends}, ${source:Version}
Description: documentation for libcvautomation
Contains the HTML documentation for libcvautomation.
Package: libcvautomation-examples
Depends: ${shlibs:Depends}, ${misc:Depends}, libxtst-dev, libx11-dev, libopencv-core2.3, libopencv-highgui2.3, libopencv-imgproc2.3
Architecture: any
Description: Example programs to demonstrate libcvautomation functionality
Contains programs designed to showcase the functionality of libcvautomation,
as well as a BASH wrapper to write application tests from BASH.

2
debian/docs vendored
View File

@ -1,2 +0,0 @@
NEWS
README

View File

@ -1,3 +0,0 @@
usr/lib/*
usr/share/man/man3/*
usr/include/*

View File

@ -1 +0,0 @@
#DOCS#

View File

@ -1,2 +0,0 @@
#DOCS#
usr/share/libcvautomation/*

View File

@ -1,3 +0,0 @@
/usr/share/man/man1/*
/usr/bin/*
/etc/*

26
debian/rules vendored
View File

@ -1,26 +0,0 @@
#!/usr/bin/make -f
# -*- makefile -*-
# Sample debian/rules that uses debhelper.
#
# This file was originally written by Joey Hess and Craig Small.
# As a special exception, when this file is copied by dh-make into a
# dh-make output file, you may use that output file without restriction.
# This special exception was added by Craig Small in version 0.37 of dh-make.
#
# Modified to make a template file for a multi-binary package with separated
# build-arch and build-indep targets by Bill Allombert 2001
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
# This has to be exported to make some magic below work.
export DH_OPTIONS
%:
dh $@
override_dh_install:
find debian/tmp/usr/lib -name "*.la" -exec \
sed -i -e "s,^dependency_libs=.*,dependency_libs=''," {} \;
dh_install

View File

@ -1 +0,0 @@
3.0 (quilt)

589
depcomp Executable file
View File

@ -0,0 +1,589 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
scriptversion=2007-03-29.01
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 Free Software
# Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
case $1 in
'')
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
Run PROGRAMS ARGS to compile a file, generating dependencies
as side-effects.
Environment variables:
depmode Dependency tracking mode.
source Source file read by `PROGRAMS ARGS'.
object Object file output by `PROGRAMS ARGS'.
DEPDIR directory where to store dependencies.
depfile Dependency file to output.
tmpdepfile Temporary file to use when outputing dependencies.
libtool Whether libtool is used (yes/no).
Report bugs to <bug-automake@gnu.org>.
EOF
exit $?
;;
-v | --v*)
echo "depcomp $scriptversion"
exit $?
;;
esac
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
echo "depcomp: Variables source, object and depmode must be set" 1>&2
exit 1
fi
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
depfile=${depfile-`echo "$object" |
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
rm -f "$tmpdepfile"
# Some modes work just like other modes, but use different flags. We
# parameterize here, but still list the modes in the big case below,
# to make depend.m4 easier to write. Note that we *cannot* use a case
# here, because this file can only contain one case statement.
if test "$depmode" = hp; then
# HP compiler uses -M and no extra arg.
gccflag=-M
depmode=gcc
fi
if test "$depmode" = dashXmstdout; then
# This is just like dashmstdout with a different argument.
dashmflag=-xM
depmode=dashmstdout
fi
case "$depmode" in
gcc3)
## gcc 3 implements dependency tracking that does exactly what
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
## it if -MD -MP comes after the -MF stuff. Hmm.
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
## the command line argument order; so add the flags where they
## appear in depend2.am. Note that the slowdown incurred here
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
for arg
do
case $arg in
-c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
*) set fnord "$@" "$arg" ;;
esac
shift # fnord
shift # $arg
done
"$@"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
mv "$tmpdepfile" "$depfile"
;;
gcc)
## There are various ways to get dependency output from gcc. Here's
## why we pick this rather obscure method:
## - Don't want to use -MD because we'd like the dependencies to end
## up in a subdir. Having to rename by hand is ugly.
## (We might end up doing this anyway to support other compilers.)
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
## -MM, not -M (despite what the docs say).
## - Using -M directly means running the compiler twice (even worse
## than renaming).
if test -z "$gccflag"; then
gccflag=-MD,
fi
"$@" -Wp,"$gccflag$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
## The second -e expression handles DOS-style file names with drive letters.
sed -e 's/^[^:]*: / /' \
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
## This next piece of magic avoids the `deleted header file' problem.
## The problem is that when a header file which appears in a .P file
## is deleted, the dependency causes make to die (because there is
## typically no way to rebuild the header). We avoid this by adding
## dummy dependencies for each header file. Too bad gcc doesn't do
## this for us directly.
tr ' ' '
' < "$tmpdepfile" |
## Some versions of gcc put a space before the `:'. On the theory
## that the space means something, we add a space to the output as
## well.
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
hp)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
sgi)
if test "$libtool" = yes; then
"$@" "-Wp,-MDupdate,$tmpdepfile"
else
"$@" -MDupdate "$tmpdepfile"
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
echo "$object : \\" > "$depfile"
# Clip off the initial element (the dependent). Don't try to be
# clever and replace this with sed code, as IRIX sed won't handle
# lines with more than a fixed number of characters (4096 in
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
# the IRIX cc adds comments like `#:fec' to the end of the
# dependency line.
tr ' ' '
' < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
tr '
' ' ' >> $depfile
echo >> $depfile
# The second pass generates a dummy entry for each header file.
tr ' ' '
' < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
>> $depfile
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
# "include basename.Plo" scheme.
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
aix)
# The C for AIX Compiler uses -M and outputs the dependencies
# in a .u file. In older versions, this file always lives in the
# current directory. Also, the AIX compiler puts `$object:' at the
# start of each line; $object doesn't have directory information.
# Version 6 uses the directory in both cases.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
test "x$dir" = "x$object" && dir=
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.u
tmpdepfile2=$base.u
tmpdepfile3=$dir.libs/$base.u
"$@" -Wc,-M
else
tmpdepfile1=$dir$base.u
tmpdepfile2=$dir$base.u
tmpdepfile3=$dir$base.u
"$@" -M
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
do
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
# Each line is of the form `foo.o: dependent.h'.
# Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'.
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
# That's a tab and a space in the [].
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
# "include basename.Plo" scheme.
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
icc)
# Intel's C compiler understands `-MD -MF file'. However on
# icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
# ICC 7.0 will fill foo.d with something like
# foo.o: sub/foo.c
# foo.o: sub/foo.h
# which is wrong. We want:
# sub/foo.o: sub/foo.c
# sub/foo.o: sub/foo.h
# sub/foo.c:
# sub/foo.h:
# ICC 7.1 will output
# foo.o: sub/foo.c sub/foo.h
# and will wrap long lines using \ :
# foo.o: sub/foo.c ... \
# sub/foo.h ... \
# ...
"$@" -MD -MF "$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
# Each line is of the form `foo.o: dependent.h',
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
# Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'.
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
# Some versions of the HPUX 10.20 sed can't process this invocation
# correctly. Breaking it into two sed invocations is a workaround.
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
hp2)
# The "hp" stanza above does not work with aCC (C++) and HP's ia64
# compilers, which have integrated preprocessors. The correct option
# to use with these is +Maked; it writes dependencies to a file named
# 'foo.d', which lands next to the object file, wherever that
# happens to be.
# Much of this is similar to the tru64 case; see comments there.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
test "x$dir" = "x$object" && dir=
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir.libs/$base.d
"$@" -Wc,+Maked
else
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir$base.d
"$@" +Maked
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile1" "$tmpdepfile2"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
do
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
# Add `dependent.h:' lines.
sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
else
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile" "$tmpdepfile2"
;;
tru64)
# The Tru64 compiler uses -MD to generate dependencies as a side
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
# dependencies in `foo.d' instead, so we check for that too.
# Subdirectories are respected.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
test "x$dir" = "x$object" && dir=
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
# With Tru64 cc, shared objects can also be used to make a
# static library. This mechanism is used in libtool 1.4 series to
# handle both shared and static libraries in a single compilation.
# With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
#
# With libtool 1.5 this exception was removed, and libtool now
# generates 2 separate objects for the 2 libraries. These two
# compilations output dependencies in $dir.libs/$base.o.d and
# in $dir$base.o.d. We have to check for both files, because
# one of the two compilations can be disabled. We should prefer
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
# automatically cleaned when .libs/ is deleted, while ignoring
# the former would cause a distcleancheck panic.
tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
tmpdepfile2=$dir$base.o.d # libtool 1.5
tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
"$@" -Wc,-MD
else
tmpdepfile1=$dir$base.o.d
tmpdepfile2=$dir$base.d
tmpdepfile3=$dir$base.d
tmpdepfile4=$dir$base.d
"$@" -MD
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
do
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
# That's a tab and a space in the [].
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
else
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
#nosideeffect)
# This comment above is used by automake to tell side-effect
# dependency tracking mechanisms from slower ones.
dashmstdout)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout, regardless of -o.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test $1 != '--mode=compile'; do
shift
done
shift
fi
# Remove `-o $object'.
IFS=" "
for arg
do
case $arg in
-o)
shift
;;
$object)
shift
;;
*)
set fnord "$@" "$arg"
shift # fnord
shift # $arg
;;
esac
done
test -z "$dashmflag" && dashmflag=-M
# Require at least two characters before searching for `:'
# in the target name. This is to cope with DOS-style filenames:
# a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
"$@" $dashmflag |
sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
tr ' ' '
' < "$tmpdepfile" | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
dashXmstdout)
# This case only exists to satisfy depend.m4. It is never actually
# run, as this mode is specially recognized in the preamble.
exit 1
;;
makedepend)
"$@" || exit $?
# Remove any Libtool call
if test "$libtool" = yes; then
while test $1 != '--mode=compile'; do
shift
done
shift
fi
# X makedepend
shift
cleared=no
for arg in "$@"; do
case $cleared in
no)
set ""; shift
cleared=yes ;;
esac
case "$arg" in
-D*|-I*)
set fnord "$@" "$arg"; shift ;;
# Strip any option that makedepend may not understand. Remove
# the object too, otherwise makedepend will parse it as a source file.
-*|$object)
;;
*)
set fnord "$@" "$arg"; shift ;;
esac
done
obj_suffix="`echo $object | sed 's/^.*\././'`"
touch "$tmpdepfile"
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
sed '1,2d' "$tmpdepfile" | tr ' ' '
' | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile" "$tmpdepfile".bak
;;
cpp)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test $1 != '--mode=compile'; do
shift
done
shift
fi
# Remove `-o $object'.
IFS=" "
for arg
do
case $arg in
-o)
shift
;;
$object)
shift
;;
*)
set fnord "$@" "$arg"
shift # fnord
shift # $arg
;;
esac
done
"$@" -E |
sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
sed '$ s: \\$::' > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
cat < "$tmpdepfile" >> "$depfile"
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
msvisualcpp)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout, regardless of -o,
# because we must use -o when running libtool.
"$@" || exit $?
IFS=" "
for arg
do
case "$arg" in
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
set fnord "$@"
shift
shift
;;
*)
set fnord "$@" "$arg"
shift
shift
;;
esac
done
"$@" -E |
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
echo " " >> "$depfile"
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
rm -f "$tmpdepfile"
;;
none)
exec "$@"
;;
*)
echo "Unknown depmode $depmode" 1>&2
exit 1
;;
esac
exit 0
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-end: "$"
# End:

488
docs/Makefile.in Normal file
View File

@ -0,0 +1,488 @@
# Makefile.in generated by automake 1.10.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = docs
DIST_COMMON = $(dist_man_MANS) $(srcdir)/Doxyfile_example.in \
$(srcdir)/Doxyfile_library.in $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_CLEAN_FILES = Doxyfile_library Doxyfile_example
SOURCES =
DIST_SOURCES =
man1dir = $(mandir)/man1
am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)"
man3dir = $(mandir)/man3
NROFF = nroff
MANS = $(dist_man_MANS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CV_CFLAGS = @CV_CFLAGS@
CV_LIBS = @CV_LIBS@
CV_VERSION = @CV_VERSION@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
Doxygen = @Doxygen@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLE_MAN = @ENABLE_MAN@
ENABLE_TEX = @ENABLE_TEX@
EXEEXT = @EXEEXT@
F77 = @F77@
FFLAGS = @FFLAGS@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIBTOOL_VERSION = @LIBTOOL_VERSION@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
OBJEXT = @OBJEXT@
OpenCV_CFLAGS = @OpenCV_CFLAGS@
OpenCV_LIBS = @OpenCV_LIBS@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
XMKMF = @XMKMF@
XTEST_CFLAGS = @XTEST_CFLAGS@
XTEST_LIBS = @XTEST_LIBS@
XTest_CFLAGS = @XTest_CFLAGS@
XTest_LIBS = @XTest_LIBS@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
@BUILD_DOXYGEN_TRUE@EXTRA_DIST = html
@BUILD_DOXYGEN_TRUE@CLEANFILES = doxyfile.stamp
@BUILD_MAN_TRUE@directory_1 = man/man1
@BUILD_MAN_TRUE@directory_3 = man/man3
@BUILD_MAN_TRUE@dist_man_MANS = $(directory_3)/cvaPoint.3 $(directory_3)/libcvautomation.h.3 $(directory_3)/libcvautomation-xlib.h.3 $(directory_3)/libcvautomation_search_methods.3 $(directory_3)/xtest_key_strings.3 $(directory_3)/cvautomationList.3 $(directory_3)/libcvautomation-opencv.h.3 $(directory_3)/libcvautomation-xtest.h.3 $(directory_3)/xtest_command_strings.3 $(directory_3)/libcvautomation.3 $(directory_3)/writing_app_tests.3 $(directory_1)/cva-match.1 $(directory_1)/cva-input.1
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu docs/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
Doxyfile_library: $(top_builddir)/config.status $(srcdir)/Doxyfile_library.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
Doxyfile_example: $(top_builddir)/config.status $(srcdir)/Doxyfile_example.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
install-man1: $(man1_MANS) $(man_MANS)
@$(NORMAL_INSTALL)
test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
esac; \
done; \
for i in $$list; do \
if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
else file=$$i; fi; \
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
case "$$ext" in \
1*) ;; \
*) ext='1' ;; \
esac; \
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
inst=`echo $$inst | sed -e 's/^.*\///'`; \
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
$(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
done
uninstall-man1:
@$(NORMAL_UNINSTALL)
@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
esac; \
done; \
for i in $$list; do \
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
case "$$ext" in \
1*) ;; \
*) ext='1' ;; \
esac; \
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
inst=`echo $$inst | sed -e 's/^.*\///'`; \
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \
rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
done
install-man3: $(man3_MANS) $(man_MANS)
@$(NORMAL_INSTALL)
test -z "$(man3dir)" || $(MKDIR_P) "$(DESTDIR)$(man3dir)"
@list='$(man3_MANS) $(dist_man3_MANS) $(nodist_man3_MANS)'; \
l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.3*) list="$$list $$i" ;; \
esac; \
done; \
for i in $$list; do \
if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
else file=$$i; fi; \
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
case "$$ext" in \
3*) ;; \
*) ext='3' ;; \
esac; \
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
inst=`echo $$inst | sed -e 's/^.*\///'`; \
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man3dir)/$$inst'"; \
$(INSTALL_DATA) "$$file" "$(DESTDIR)$(man3dir)/$$inst"; \
done
uninstall-man3:
@$(NORMAL_UNINSTALL)
@list='$(man3_MANS) $(dist_man3_MANS) $(nodist_man3_MANS)'; \
l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.3*) list="$$list $$i" ;; \
esac; \
done; \
for i in $$list; do \
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
case "$$ext" in \
3*) ;; \
*) ext='3' ;; \
esac; \
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
inst=`echo $$inst | sed -e 's/^.*\///'`; \
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
echo " rm -f '$(DESTDIR)$(man3dir)/$$inst'"; \
rm -f "$(DESTDIR)$(man3dir)/$$inst"; \
done
tags: TAGS
TAGS:
ctags: CTAGS
CTAGS:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
@BUILD_DOXYGEN_FALSE@all-local:
all-am: Makefile $(MANS) all-local
installdirs:
for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
@BUILD_DOXYGEN_FALSE@uninstall-local:
@BUILD_DOXYGEN_FALSE@install-data-local:
@BUILD_DOXYGEN_FALSE@clean-local:
clean: clean-am
clean-am: clean-generic clean-libtool clean-local mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic
dvi: dvi-am
dvi-am:
html: html-am
info: info-am
info-am:
install-data-am: install-data-local install-man
install-dvi: install-dvi-am
install-exec-am:
install-html: install-html-am
install-info: install-info-am
install-man: install-man1 install-man3
install-pdf: install-pdf-am
install-ps: install-ps-am
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-local uninstall-man
uninstall-man: uninstall-man1 uninstall-man3
.MAKE: install-am install-strip
.PHONY: all all-am all-local check check-am clean clean-generic \
clean-libtool clean-local distclean distclean-generic \
distclean-libtool distdir dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am \
install-data-local install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am install-info \
install-info-am install-man install-man1 install-man3 \
install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
uninstall uninstall-am uninstall-local uninstall-man \
uninstall-man1 uninstall-man3
@BUILD_DOXYGEN_TRUE@install-data-local:
@BUILD_DOXYGEN_TRUE@ $(mkdir_p) $(DESTDIR)$(datadir)/$(PACKAGE)/html
@BUILD_DOXYGEN_TRUE@ for f in html/*; do \
@BUILD_DOXYGEN_TRUE@ $(INSTALL_DATA) $$f \
@BUILD_DOXYGEN_TRUE@ $(DESTDIR)$(datadir)/$(PACKAGE)/html; done
@BUILD_DOXYGEN_TRUE@uninstall-local:
@BUILD_DOXYGEN_TRUE@ rm $(DESTDIR)$(datadir)/$(PACKAGE)/html/*
@BUILD_DOXYGEN_TRUE@ -rmdir $(DESTDIR)$(datadir)/$(PACKAGE)/html
@BUILD_DOXYGEN_TRUE@doxyfile.stamp:
@BUILD_DOXYGEN_TRUE@ $(Doxygen) Doxyfile_library
@BUILD_DOXYGEN_TRUE@ $(Doxygen) Doxyfile_example
@BUILD_DOXYGEN_TRUE@ echo Timestamp > doxyfile.stamp
@BUILD_DOXYGEN_TRUE@all-local: doxyfile.stamp
@BUILD_DOXYGEN_TRUE@clean-local:
@BUILD_DOXYGEN_TRUE@ rm -rf $(top_srcdir)/docs/man $(top_srcdir)/docs/html $(top_srcdir)/docs/latex
@BUILD_MAN_TRUE@$(directory_3)/cvaPoint.3: doxyfile.stamp
@BUILD_MAN_TRUE@$(directory_3)/libcvautomation.h.3: doxyfile.stamp
@BUILD_MAN_TRUE@$(directory_3)/libcvautomation-xlib.h.3: doxyfile.stamp
@BUILD_MAN_TRUE@$(directory_3)/libcvautomation_search_methods.3: doxyfile.stamp
@BUILD_MAN_TRUE@$(directory_3)/xtest_key_strings.3: doxyfile.stamp
@BUILD_MAN_TRUE@$(directory_3)/cvautomationList.3: doxyfile.stamp
@BUILD_MAN_TRUE@$(directory_3)/libcvautomation-opencv.h.3: doxyfile.stamp
@BUILD_MAN_TRUE@$(directory_3)/libcvautomation-xtest.h.3: doxyfile.stamp
@BUILD_MAN_TRUE@$(directory_3)/xtest_command_strings.3: doxyfile.stamp
@BUILD_MAN_TRUE@$(directory_3)/libcvautomation.3: doxyfile.stamp
@BUILD_MAN_TRUE@$(directory_3)/writing_app_tests.3: doxyfile.stamp
@BUILD_MAN_TRUE@$(directory_1)/cva-match.1: doxyfile.stamp
@BUILD_MAN_TRUE@$(directory_1)/cva-input.1: doxyfile.stamp
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 925 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 847 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 733 B

80
docs/man/man1/cva-input.1 Normal file
View File

@ -0,0 +1,80 @@
.TH "cva-input" 1 "23 Jul 2012" "Version 1.3" "libcvautomation" \" -*- nroff -*-
.ad l
.nh
.SH NAME
cva-input \- \fBAuthor:\fP
.RS 4
Bradlee Speice <bspeice@uncc.edu>
.RE
.PP
.SH "Usage:"
.PP
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. The return code is 1 if there are no commands given, or if all commands fail. It is 0 otherwise.
.SH "Example Usage:"
.PP
Click the mouse:
.PP
cva-input -s 'click 1'
.PP
Press key 'a':
.PP
cva-input -s 'keyclick a'
.SH "Full Options:"
.PP
-h, --help: Display this usage message.
.PP
-u, --usage: Display this usage message.
.PP
-d, --display: Specify the X display to use.
.PP
-m, --search-method: Specify a method to search by. See \fCcva-match --help\fP for more information on this.
.PP
-t, --tolerance: Specify how strict the match is.
.PP
-b, --button: Specify the mouse button to press (default 1).
.PP
-c, --center: Instead of matching the top-left corner of an image, match the center of the image.
.PP
-o, --sane-tolerance: Set the tolerance using a scale of 1-100, rather than INT_MIN to INT_MAX (100 ~= INT_MAX)
.PP
-s, --string: Command string - see below.
.PP
-i, --timeout: Specify the timeout to use when using the 'waitfor' command
.SH "Full Command List:"
.PP
\fCmouseclick:\fP Click the mouse in-place.
.PP
\fCimouseclick:\fP Click the mouse at an image's top-left corner.
.PP
\fCicmouseclick:\fP Click the mouse at an image's center.
.PP
\fCmousexy:\fP Move the mouse to the given coordinate.
.PP
\fCmouserxy:\fP Move the mouse by the given x and y values (relative motion).
.PP
\fCmouseimage:\fP Move the mouse to an image's top-left corner.
.PP
\fCcmouseimage:\fP Move the mouse to an image's center.
.PP
\fCmousedown:\fP Push and leave down a mouse button.
.PP
\fCmouseup:\fP Release a mouse button.
.PP
\fCmousejiggle:\fP Jiggle the mouse (helps to activate some widgets).
.PP
\fCmousescrollu:\fP Scroll the mouse wheel up
.PP
\fCmousescrolld:\fP Scroll the mouse wheel down
.PP
\fCkeyclick:\fP Click a keyboard button.
.PP
\fCkeydown:\fP Push and leave down a keyboard button.
.PP
\fCkeyup:\fP Release a keyboard button.
.PP
\fCkeystring:\fP Input a string of keys to X11.
.PP
\fCwaitfor:\fP Wait for an image to be displayed
.SH "Contact Information:"
.PP
Questions? Comments? Concerns? Suggestions? Send all feedback to Bradlee Speice at <bspeice@uncc.edu>

60
docs/man/man1/cva-match.1 Normal file
View File

@ -0,0 +1,60 @@
.TH "cva-match" 1 "23 Jul 2012" "Version 1.3" "libcvautomation" \" -*- nroff -*-
.ad l
.nh
.SH NAME
cva-match \- \fBAuthor:\fP
.RS 4
Bradlee Speice <bspeice@uncc.edu>
.RE
.PP
.SH "Usage:"
.PP
This program uses OpenCV in order to recognize an image within an image. The return code is 0 for at least one successful match, and 1 otherwise.
.SH "Example Usage:"
.PP
Match two images against the root X11 window:
.PP
cva-match --x-root -s '<image_name>' -s '<image_name_2>'
.PP
Match a root and sub image with a custom tolerance and search method
.PP
cva-match -r '<root_image>' -s '<image_name>' -o 75 -m 1
.SH "Full Options:"
.PP
-h, --help: Display this usage message.
.PP
-u, --usage: Display this usage message.
.PP
-r, --root-image: Location of the root image to compare against.
.PP
-s, --sub-image: Location of the sub-image to find in root.
.PP
-p, --separator: Separator of the X and Y coordinates.
.PP
-t, --tolerance: Set how strict the match is - 100 is recommended lowest value.
.PP
\fBNote:\fP
.RS 4
When using CCORR or CCOEFF tolerance works in opposite direction, so -50 is recommended highest value.
.RE
.PP
-m, --search-method: Set which method is used to search for sub-images.
.PP
\fBNote:\fP
.RS 4
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
.RE
.PP
-x, --x-root[=DISPLAY]: Set the root image to come from X11
.PP
\fBNote:\fP
.RS 4
The DISPLAY variable is optional, not specifying it will cause X to use the default display (not specifically :0.0)
.RE
.PP
-c, --center: The output points should be centered on the sub-image, rather than the top-left corner.
.PP
-o, --sane-tolerance: Set the tolerance using a scale of 1-100, rather than INT_MIN to INT_MAX (100 ~= INT_MAX)
.SH "Contact Information:"
.PP
Questions? Comments? Concerns? Suggestions? Send all feedback to Bradlee Speice at <bspeice@uncc.edu>

40
docs/man/man3/cvaPoint.3 Normal file
View File

@ -0,0 +1,40 @@
.TH "cvaPoint" 3 "23 Jul 2012" "Version 1.3" "libcvautomation" \" -*- nroff -*-
.ad l
.nh
.SH NAME
cvaPoint \- Very simple structure to standardize how points are used in libcvautomation.
.PP
.SH SYNOPSIS
.br
.PP
\fC#include <libcvautomation.h>\fP
.PP
.SS "Public Attributes"
.in +1c
.ti -1c
.RI "int \fBx\fP"
.br
.ti -1c
.RI "int \fBy\fP"
.br
.in -1c
.SH "Detailed Description"
.PP
Very simple structure to standardize how points are used in libcvautomation.
\fBParameters:\fP
.RS 4
\fIx\fP An X-coordinate
.br
\fIy\fP A Y-coordinate
.RE
.PP
.PP
Definition at line 41 of file libcvautomation.h.
.SH "Author"
.PP
Generated automatically by Doxygen for libcvautomation from the source code.

View File

@ -0,0 +1,62 @@
.TH "cvautomationList" 3 "23 Jul 2012" "Version 1.3" "libcvautomation" \" -*- nroff -*-
.ad l
.nh
.SH NAME
cvautomationList \- Implements a structure to build an array for methods like \fBmatchSubImage_a()\fP.
.PP
.SH SYNOPSIS
.br
.PP
\fC#include <libcvautomation.h>\fP
.PP
.SS "Public Attributes"
.in +1c
.ti -1c
.RI "IplImage * \fBcvaImage\fP"
.br
.ti -1c
.RI "char * \fBfileName\fP"
.br
.ti -1c
.RI "\fBcvaPoint\fP \fBresultPoint\fP"
.br
.ti -1c
.RI "int \fBsearchMethod\fP"
.br
.ti -1c
.RI "int \fBtolerance\fP"
.br
.in -1c
.SH "Detailed Description"
.PP
Implements a structure to build an array for methods like \fBmatchSubImage_a()\fP.
This structure is a simple way to wrap up all needed information for matching sub images in one location.
.PP
\fBParameters:\fP
.RS 4
\fIcvaImage\fP An image in IplImage format
.br
\fIfileName\fP The file location of an image to be loaded
.br
\fIresultPoint\fP Holder for a result - for example, storing where this sub image was located in its root image
.br
\fIsearchMethod\fP The search method to use when searching for this sub image in a root image
.br
\fItolerance\fP The tolerance to use when searching for this sub image in a root image
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
.PP
Definition at line 47 of file libcvautomation.h.
.SH "Author"
.PP
Generated automatically by Doxygen for libcvautomation from the source code.

View File

@ -0,0 +1,276 @@
.TH "libcvautomation-opencv.h" 3 "23 Jul 2012" "Version 1.3" "libcvautomation" \" -*- nroff -*-
.ad l
.nh
.SH NAME
libcvautomation-opencv.h \- The source code to access libcv from inside libcvautomation.
.SH SYNOPSIS
.br
.PP
\fC#include <libcvautomation/libcvautomation.h>\fP
.br
.SS "Functions"
.in +1c
.ti -1c
.RI "\fBcvaPoint\fP \fBmatchSubImage\fP (IplImage *rootImage, IplImage *subImage, int searchMethod, double tolerance)"
.br
.RI "\fIReturn the location of a sub image in its root image. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBmatchSubImage_center\fP (IplImage *rootImage, IplImage *subImage, int searchMethod, double tolerance)"
.br
.RI "\fIReturn the center of a sub image in its root image, rather than the top-left corner. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBmatchSubImage_location\fP (const char *rootImage_location, const char *subImage_location, int searchMethod, double tolerance)"
.br
.RI "\fIReturn the location of a sub image in its root image. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBmatchSubImage_location_center\fP (const char *rootImage_location, const char *subImage_location, int searchMethod, double tolerance)"
.br
.RI "\fIReturn the center of a sub image in its root image, rather than the top-left corner. \fP"
.ti -1c
.RI "void \fBmatchSubImage_a\fP (IplImage *rootImage, \fBcvautomationList\fP *subImageArray, int listSize)"
.br
.RI "\fIParse an array of sub images and send them to \fBmatchSubImage()\fP. \fP"
.ti -1c
.RI "void \fBmatchSubImage_a_center\fP (IplImage *rootImage, \fBcvautomationList\fP *subImageArray, int listSize)"
.br
.RI "\fIParse an array of sub images and send them to \fBmatchSubImage_center()\fP. \fP"
.ti -1c
.RI "void \fBmatchSubImage_a_location\fP (const char *rootImageFileName, \fBcvautomationList\fP *subImageArray, int listSize)"
.br
.RI "\fIParse an array of sub images and send them to \fBmatchSubImage()\fP. \fP"
.ti -1c
.RI "void \fBmatchSubImage_a_location_center\fP (const char *rootImageFileName, \fBcvautomationList\fP *subImageArray, int listSize)"
.br
.RI "\fIParse an array of sub images and send them to \fBmatchSubImage_center()\fP. \fP"
.in -1c
.SH "Detailed Description"
.PP
The source code to access libcv from inside libcvautomation.
This source file builds in the necessary functionality to use libcv functions inside libcvautomation.
.PP
\fBAuthor:\fP
.RS 4
Bradlee Speice
.RE
.PP
.PP
Definition in file \fBlibcvautomation-opencv.h\fP.
.SH "Function Documentation"
.PP
.SS "CvPoint matchSubImage (IplImage * rootImage, IplImage * subImage, int searchMethod, double tolerance)"
.PP
Return the location of a sub image in its root image.
.PP
\fBParameters:\fP
.RS 4
\fIrootImage\fP The root image (in IplImage format) to search in
.br
\fIsubImage\fP The sub image (in IplImage format) to search for in \fCrootImage\fP
.br
\fIsearchMethod\fP The search method to use when searching for \fCsubImage\fP in \fCrootImage\fP.
.br
\fItolerance\fP The tolerance to use when searching for \fCsubImage\fP in \fCrootImage\fP.
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
\fBReturns:\fP
.RS 4
The location of the sub image in root image
.RE
.PP
.SS "CvPoint matchSubImage_center (IplImage * rootImage, IplImage * subImage, int searchMethod, double tolerance)"
.PP
Return the center of a sub image in its root image, rather than the top-left corner.
.PP
\fBParameters:\fP
.RS 4
\fIrootImage\fP The root image (in IplImage format) to search in
.br
\fIsubImage\fP The sub image (in IplImage format) to search for in \fCrootImage\fP
.br
\fIsearchMethod\fP The search method to use when searching for \fCsubImage\fP in \fCrootImage\fP.
.br
\fItolerance\fP The tolerance to use when searching for \fCsubImage\fP in \fCrootImage\fP.
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
\fBReturns:\fP
.RS 4
The center location of the sub image in root image
.RE
.PP
.SS "CvPoint matchSubImage_location (const char * rootImage_location, const char * subImage_location, int searchMethod, double tolerance)"
.PP
Return the location of a sub image in its root image.
.PP
The difference that this function has over \fBmatchSubImage()\fP is that \fIrootImage_location\fP and \fIsubImage_location\fP are from files, rather than an IplImage format image.
.PP
\fBParameters:\fP
.RS 4
\fIrootImage_location\fP The location of the root image
.br
\fIsubImage_location\fP The location of the sub image to search for in \fCrootImage\fP
.br
\fIsearchMethod\fP The search method to use when searching for \fCsubImage\fP in \fCrootImage\fP.
.br
\fItolerance\fP The tolerance to use when searching for \fCsubImage\fP in \fCrootImage\fP.
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
\fBReturns:\fP
.RS 4
The location of the sub image in root image
.RE
.PP
.SS "CvPoint matchSubImage_location_center (const char * rootImage_location, const char * subImage_location, int searchMethod, double tolerance)"
.PP
Return the center of a sub image in its root image, rather than the top-left corner.
.PP
The difference that this function has over \fBmatchSubImage_center()\fP is that \fIrootImage_location\fP and \fIsubImage_location\fP are from files, rather than an IplImage format image.
.PP
\fBParameters:\fP
.RS 4
\fIrootImage_location\fP The location of the root image
.br
\fIsubImage_location\fP The location of the sub image to search for in \fCrootImage\fP
.br
\fIsearchMethod\fP The search method to use when searching for \fCsubImage\fP in \fCrootImage\fP.
.br
\fItolerance\fP The tolerance to use when searching for \fCsubImage\fP in \fCrootImage\fP.
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
\fBReturns:\fP
.RS 4
The center location of the sub image in root image
.RE
.PP
.SS "void matchSubImage_a (IplImage * rootImage, \fBcvautomationList\fP * subImageArray, int listSize)"
.PP
Parse an array of sub images and send them to \fBmatchSubImage()\fP.
.PP
\fBParameters:\fP
.RS 4
\fIrootImage\fP The root image (in IplImage format) to search in
.br
\fIsubImageArray\fP The sub image array to search for in \fCrootImage\fP - Note that the contents of \fCsubImageArray\fP are modified during execution of this routine
.br
\fIlistSize\fP The number of sub images to search for in subImageArray
.RE
.PP
\fBSee also:\fP
.RS 4
\fBcvautomationList\fP
.RE
.PP
\fBReturns:\fP
.RS 4
This function returns void, and modifies the contents of subImageArray
.RE
.PP
.SS "void matchSubImage_a_center (IplImage * rootImage, \fBcvautomationList\fP * subImageArray, int listSize)"
.PP
Parse an array of sub images and send them to \fBmatchSubImage_center()\fP.
.PP
Uses the \fBcvautomationList.cvaImage\fP parameter to find a \fCsubImage\fP in \fCrootImage\fP
.PP
\fBParameters:\fP
.RS 4
\fIrootImage\fP The root image (in IplImage format) to search in
.br
\fIsubImageArray\fP The sub image array to search for in \fCrootImage\fP - Note that the contents of \fCsubImageArray\fP are modified during execution of this routine
.br
\fIlistSize\fP The number of sub images to search for in subImageArray
.RE
.PP
\fBSee also:\fP
.RS 4
\fBcvautomationList\fP
.RE
.PP
\fBReturns:\fP
.RS 4
This function returns void, and modifies the contents of subImageArray
.RE
.PP
.SS "void matchSubImage_a_location (const char * rootImage_location, \fBcvautomationList\fP * subImageArray, int listSize)"
.PP
Parse an array of sub images and send them to \fBmatchSubImage()\fP.
.PP
The difference between this and \fBmatchSubImage_a()\fP is that this uses a root image from filename, rather than from an IplImage format.
.PP
\fBParameters:\fP
.RS 4
\fIrootImage_location\fP The location of the root image
.br
\fIsubImageArray\fP The sub image array to search for in \fCrootImage_location\fP - Note that the contents of \fCsubImageArray\fP are modified during execution of this routine
.br
\fIlistSize\fP The number of sub images to search for in subImageArray
.RE
.PP
\fBSee also:\fP
.RS 4
\fBcvautomationList\fP
.RE
.PP
\fBReturns:\fP
.RS 4
This function returns void, and modifies the contents of subImageArray
.RE
.PP
.SS "void matchSubImage_a_location_center (const char * rootImage_location, \fBcvautomationList\fP * subImageArray, int listSize)"
.PP
Parse an array of sub images and send them to \fBmatchSubImage_center()\fP.
.PP
The difference that this function has over \fBmatchSubImage_a_center()\fP is that \fCrootImage_location\fP is from a file
.PP
\fBParameters:\fP
.RS 4
\fIrootImage_location\fP The location of the root image
.br
\fIsubImageArray\fP The sub image array to search for in \fCrootImage_location\fP - Note that the contents of \fCsubImageArray\fP are modified during execution of this routine
.br
\fIlistSize\fP The number of sub images to search for in subImageArray
.RE
.PP
\fBSee also:\fP
.RS 4
\fBcvautomationList\fP
.RE
.PP
\fBReturns:\fP
.RS 4
This function returns void, and modifies the contents of subImageArray
.RE
.PP
.SH "Author"
.PP
Generated automatically by Doxygen for libcvautomation from the source code.

View File

@ -0,0 +1,211 @@
.TH "libcvautomation-xlib.h" 3 "23 Jul 2012" "Version 1.3" "libcvautomation" \" -*- nroff -*-
.ad l
.nh
.SH NAME
libcvautomation-xlib.h \- The source code to access Xlib from inside libcvautomation.
.SH SYNOPSIS
.br
.PP
\fC#include <libcvautomation/libcvautomation.h>\fP
.br
.SS "Functions"
.in +1c
.ti -1c
.RI "Display * \fBcvaOpenDisplay\fP (char *displayName)"
.br
.RI "\fISimple wrapper for XOpenDisplay. \fP"
.ti -1c
.RI "void \fBcvaCloseDisplay\fP (Display *displayLocation)"
.br
.RI "\fISimple wrapper for XCloseDisplay. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBmatchSubImage_X11\fP (Display *displayLocation, IplImage *subImage, int searchMethod, int tolerance)"
.br
.RI "\fIReturn the location of a sub image in the X11 root window. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBmatchSubImage_X11_center\fP (Display *displayLocation, IplImage *subImage, int searchMethod, int tolerance)"
.br
.RI "\fIReturn the center of a sub image in root X11 window, rather than the top-left corner. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBmatchSubImage_X11_location\fP (Display *displayLocation, const char *subImage_location, int search_method, int tolerance)"
.br
.RI "\fIReturn the location of a sub image in the X11 root window. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBmatchSubImage_X11_location_center\fP (Display *displayLocation, const char *subImage_location, int search_method, int tolerance)"
.br
.RI "\fIReturn the center of a sub image in the root X11 window, rather than the top-left corner. \fP"
.in -1c
.SH "Detailed Description"
.PP
The source code to access Xlib from inside libcvautomation.
This source file builds in the necessary functionality to use xlib functions inside libcvautomation.
.PP
\fBAuthor:\fP
.RS 4
Bradlee Speice
.RE
.PP
.PP
Definition in file \fBlibcvautomation-xlib.h\fP.
.SH "Function Documentation"
.PP
.SS "Display * cvaOpenDisplay (char * displayName)"
.PP
Simple wrapper for XOpenDisplay.
.PP
Currently this function literally just passes off to XOpenDisplay, but is designed to be used in the future if extra functionality is needed.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayName\fP The name of the display to open - '' is a valid name
.RE
.PP
\fBReturns:\fP
.RS 4
Pointer to the opened X11 Display
.RE
.PP
\fBWarning:\fP
.RS 4
You must open a display to use any functions.
.PP
The program using this library is responsible to close the display as well.
.RE
.PP
.SS "void cvaCloseDisplay (Display * displayLocation)"
.PP
Simple wrapper for XCloseDisplay.
.PP
Currently this function literally just passes off to XCloseDisplay, but is designed to be used in the future if extra functionality is needed.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP Pointer to the display to close
.RE
.PP
\fBReturns:\fP
.RS 4
Nothing
.RE
.PP
.SS "\fBcvaPoint\fP matchSubImage_X11 (Display * displayLocation, IplImage * subImage, int searchMethod, int tolerance)"
.PP
Return the location of a sub image in the X11 root window.
.PP
This function wraps grabbing the X11 root window, converting it to IplImage format, and then giving this to \fBmatchSubImage()\fP
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP Pointer to the currently open X11 Display
.br
\fIsubImage\fP The sub image (in IplImage format) to search for in the root X11 window
.br
\fIsearchMethod\fP The search method to use when searching for \fCsubImage\fP in the root X11 window
.br
\fItolerance\fP The tolerance to use when searching for \fCsubImage\fP in the root X11 window
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
\fBReturns:\fP
.RS 4
The location of the sub image in root X11 window
.RE
.PP
.SS "\fBcvaPoint\fP matchSubImage_X11_center (Display * displayLocation, IplImage * subImage, int searchMethod, int tolerance)"
.PP
Return the center of a sub image in root X11 window, rather than the top-left corner.
.PP
This function wraps grabbing the X11 root window, converting it to IplImage format, and then giving this to \fBmatchSubImage_center()\fP
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP Pointer to the currently open X11 Display
.br
\fIsubImage\fP The sub image (in IplImage format) to search for in the root X11 window
.br
\fIsearchMethod\fP The search method to use when searching for \fCsubImage\fP in the root X11 window
.br
\fItolerance\fP The tolerance to use when searching for \fCsubImage\fP in the root X11 window
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
\fBReturns:\fP
.RS 4
The center location of the sub image in the root X11 window
.RE
.PP
.SS "\fBcvaPoint\fP matchSubImage_X11_location (Display * displayLocation, const char * subImage_location, int searchMethod, int tolerance)"
.PP
Return the location of a sub image in the X11 root window.
.PP
This function wraps grabbing the X11 root window, converting it to IplImage format, and then giving this to \fBmatchSubImage_location()\fP
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP Pointer to the currently open X11 Display
.br
\fIsubImage_location\fP The location of the sub image to search for in the root X11 window
.br
\fIsearchMethod\fP The search method to use when searching for \fCsubImage\fP in the root X11 window
.br
\fItolerance\fP The tolerance to use when searching for \fCsubImage\fP in the root X11 window
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
\fBReturns:\fP
.RS 4
The center location of the sub image in the root X11 window
.RE
.PP
.SS "\fBcvaPoint\fP matchSubImage_X11_location_center (Display * displayLocation, const char * subImage_location, int searchMethod, int tolerance)"
.PP
Return the center of a sub image in the root X11 window, rather than the top-left corner.
.PP
This function wraps grabbing the X11 root window, converting it to IplImage format, and then giving this to \fBmatchSubImage_location_center()\fP
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP Pointer to the currently open X11 Display
.br
\fIsubImage_location\fP The location of the sub image to search for in the root X11 window
.br
\fIsearchMethod\fP The search method to use when searching for \fCsubImage\fP in the root X11 window
.br
\fItolerance\fP The tolerance to use when searching for \fCsubImage\fP in the root X11 window
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
\fBReturns:\fP
.RS 4
The center location of the sub image in the root X11 window
.RE
.PP
.SH "Author"
.PP
Generated automatically by Doxygen for libcvautomation from the source code.

View File

@ -0,0 +1,716 @@
.TH "libcvautomation-xtest.h" 3 "23 Jul 2012" "Version 1.3" "libcvautomation" \" -*- nroff -*-
.ad l
.nh
.SH NAME
libcvautomation-xtest.h \- The source code to access the XTest extension inside libcvautomation.
.SH SYNOPSIS
.br
.PP
\fC#include <libcvautomation/libcvautomation.h>\fP
.br
.SS "Defines"
.in +1c
.ti -1c
.RI "#define \fBIS_CMD\fP(x, y) strncmp( x, y, strlen( y ) ) == 0"
.br
.RI "\fIChecks if string \fC'x'\fP is in \fC'y'\fP. \fP"
.ti -1c
.RI "#define \fBCOMMAND_STR_LEN\fP 512"
.br
.RI "\fISpecifies the maximum length of a command string. \fP"
.in -1c
.SS "Functions"
.in +1c
.ti -1c
.RI "Bool \fBxte_XTestSupported\fP (Display *displayLocation)"
.br
.RI "\fICheck if the XTest extension is supported. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBxte_pointerLocation\fP (Display *displayLocation)"
.br
.RI "\fIGrab the current location of the pointer. \fP"
.ti -1c
.RI "void \fBxte_clickMouse\fP (Display *displayLocation, int mouseButton)"
.br
.RI "\fIClick the mouse in its current location. \fP"
.ti -1c
.RI "void \fBxte_clickMouseXY\fP (Display *displayLocation, int xLocation, int yLocation, int mouseButton)"
.br
.RI "\fIClick the mouse button at an absolute location. \fP"
.ti -1c
.RI "void \fBxte_clickMouseRXY\fP (Display *displayLocation, int xIncrement, int yIncrement, int mouseButton)"
.br
.RI "\fIClick the mouse button at a relative location. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBxte_clickMouseImage\fP (Display *displayLocation, IplImage *subImage, int mouseButton, int searchMethod, int tolerance)"
.br
.RI "\fIClick the mouse based on location of an image. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBxte_clickMouseImage_location\fP (Display *displayLocation, const char *fileName, int mouseButton, int searchMethod, int tolerance)"
.br
.RI "\fIClick the mouse based on the location of an image from file. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBxte_clickMouseImage_center\fP (Display *displayLocation, IplImage *subImage, int mouseButton, int searchMethod, int tolerance)"
.br
.RI "\fIClick the mouse based on center location of an image. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBxte_clickMouseImage_location_center\fP (Display *displayLocation, const char *fileName, int mouseButton, int searchMethod, int tolerance)"
.br
.RI "\fIClick the mouse based on the center location of an image from file. \fP"
.ti -1c
.RI "void \fBxte_hoverMouseXY\fP (Display *displayLocation, int xLocation, int yLocation)"
.br
.RI "\fIMove the mouse to a location, but do not click it. \fP"
.ti -1c
.RI "void \fBxte_hoverMouseRXY\fP (Display *displayLocation, int xIncrement, int yIncrement)"
.br
.RI "\fIMove the mouse to a relative location, but do not click it. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBxte_hoverMouseImage\fP (Display *displayLocation, IplImage *subImage, int searchMethod, int tolerance)"
.br
.RI "\fIMove the mouse based on location of an image. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBxte_hoverMouseImage_location\fP (Display *displayLocation, const char *filename, int searchMethod, int tolerance)"
.br
.RI "\fIMove the mouse based on location of an image from file. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBxte_hoverMouseImage_center\fP (Display *displayLocation, IplImage *subImage, int searchMethod, int tolerance)"
.br
.RI "\fIMove the mouse based on center location of an image. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBxte_hoverMouseImage_location_center\fP (Display *displayLocation, const char *fileName, int searchMethod, int tolerance)"
.br
.RI "\fIMove the mouse based on the center location of an image from file. \fP"
.ti -1c
.RI "void \fBxte_mouseDown\fP (Display *displayLocation, int mouseButton)"
.br
.RI "\fIPress a mouse button down, and do not release it. \fP"
.ti -1c
.RI "void \fBxte_mouseUp\fP (Display *displayLocation, int mouseButton)"
.br
.RI "\fIRelease a mouse button. \fP"
.ti -1c
.RI "void \fBxte_mouseJiggle\fP (Display *displayLocation)"
.br
.RI "\fIJiggle the mouse in place. \fP"
.ti -1c
.RI "void \fBxte_mouseScrollUp\fP (Display *displayLocation)"
.br
.RI "\fIScroll the mouse up. \fP"
.ti -1c
.RI "void \fBxte_mouseScrollDown\fP (Display *displayLocation)"
.br
.RI "\fIScroll the mouse down. \fP"
.ti -1c
.RI "void \fBxte_clickKey\fP (Display *displayLocation, char *key)"
.br
.RI "\fIPress and release a keyboard key. \fP"
.ti -1c
.RI "void \fBxte_clickKeyStr\fP (Display *displayLocation, char *string)"
.br
.RI "\fIInput a string of characters to the X Server. \fP"
.ti -1c
.RI "void \fBxte_keyDown\fP (Display *displayLocation, char *key)"
.br
.RI "\fIPress a key down, but do not release it. \fP"
.ti -1c
.RI "void \fBxte_keyUp\fP (Display *displayLocation, char *key)"
.br
.RI "\fIRelease a key. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBxte_waitForImage\fP (Display *displayLocation, IplImage *subImage, int searchMethod, int tolerance, int timeout)"
.br
.RI "\fIWait for an image to show up on screen. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBxte_waitForImage_location\fP (Display *displayLocation, const char *fileName, int searchMethod, int tolerance, int timeout)"
.br
.RI "\fIWait for an image from file to show up on screen. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBxte_commandString\fP (Display *displayLocation, char *commandString, int mouseButton, int searchMethod, int tolerance, int timeout)"
.br
.RI "\fIExecute a command where the command is coming from a string. \fP"
.in -1c
.SH "Detailed Description"
.PP
The source code to access the XTest extension inside libcvautomation.
This source file builds in the necessary functionality to drive the X11 server in libcvautomation
.PP
\fBAuthor:\fP
.RS 4
Bradlee Speice
.RE
.PP
.PP
Definition in file \fBlibcvautomation-xtest.h\fP.
.SH "Define Documentation"
.PP
.SS "#define IS_CMD(x, y) strncmp( x, y, strlen( y ) ) == 0"
.PP
Checks if string \fC'x'\fP is in \fC'y'\fP.
.PP
Performs a safe check to see if x is in y - this way, you can check that \fC'command'\fP is inside \fC'command argument'\fP
.SH "Function Documentation"
.PP
.SS "Bool xte_XTestSupported (Display * displayLocation)"
.PP
Check if the XTest extension is supported.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display to check if XTest is supported on
.RE
.PP
\fBReturns:\fP
.RS 4
True if XTest is supported, False otherwise
.RE
.PP
\fBWarning:\fP
.RS 4
The program using this library is responsible for checking to see if XTest is supported.
.RE
.PP
.SS "\fBcvaPoint\fP xte_pointerLocation (Display * displayLocation)"
.PP
Grab the current location of the pointer.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to grab the pointer location from
.RE
.PP
\fBReturns:\fP
.RS 4
\fBcvaPoint\fP with the current location of the pointer
.RE
.PP
.SS "void xte_clickMouse (Display * displayLocation, int mouseButton)"
.PP
Click the mouse in its current location.
.PP
Perform a mouse-down and mouse-up event on button \fCmouseButton\fP
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to click the mouse on
.br
\fImouseButton\fP The mouse button to click
.RE
.PP
.SS "void xte_clickMouseXY (Display * displayLocation, int xLocation, int yLocation, int mouseButton)"
.PP
Click the mouse button at an absolute location.
.PP
Move the mouse to location (\fCxLocation\fP, \fCyLocation\fP ) and then click button \fCmouseButton\fP
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to click the mouse on
.br
\fIxLocation\fP The X-coordinate to move the mouse to before clicking
.br
\fIyLocation\fP The Y-location to move the mouse to before clicking
.br
\fImouseButton\fP The mouse button to click
.RE
.PP
.SS "void xte_clickMouseRXY (Display * displayLocation, int xIncrement, int yIncrement, int mouseButton)"
.PP
Click the mouse button at a relative location.
.PP
Move the mouse horizontally \fCxIncrement\fP and vertically \fCyIncrement\fP before clicking button \fCmouseButton\fP
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to click the mouse on
.br
\fIxIncrement\fP Move the mouse horizontally this many pixels - positive value is motion to the right
.br
\fIyIncrement\fP Move the mouse vertically this many pixels - positive value is motion downwards
.br
\fImouseButton\fP The mouse button to click
.RE
.PP
.SS "\fBcvaPoint\fP xte_clickMouseImage (Display * displayLocation, IplImage * subImage, int mouseButton, int searchMethod, int tolerance)"
.PP
Click the mouse based on location of an image.
.PP
Wraps grabbing the X11 root window of \fCdisplayLocation\fP, finding \fCsubImage\fP in this display, moving the mouse to that location, and then clicking \fCmouseButton\fP. The return value can be ignored, the mouse will already have been clicked there.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to click the mouse on
.br
\fIsubImage\fP The sub image (in IplImage format) to find in the root X11 window
.br
\fImouseButton\fP The mouse button to click
.br
\fIsearchMethod\fP The search method to use when searching for \fCsubImage\fP in the root X11 window
.br
\fItolerance\fP The tolerance to use when searching for \fCsubImage\fP in the root X11 window
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
\fBReturns:\fP
.RS 4
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.
.RE
.PP
.SS "\fBcvaPoint\fP xte_clickMouseImage_location (Display * displayLocation, const char * fileName, int mouseButton, int searchMethod, int tolerance)"
.PP
Click the mouse based on the location of an image from file.
.PP
Wraps grabbing the X11 root window of \fCdisplayLocation\fP, finding the sub image from \fCfileName\fP in this display, moving the mouse to that location, and then clicking \fCmouseButton\fP. The return value can be ignored, the mouse will already have been clicked there.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to click the mouse on
.br
\fIfileName\fP The file name from which to load the sub-image
.br
\fImouseButton\fP The mouse button to click
.br
\fIsearchMethod\fP The search method to use when searching for the sub image in the root X11 window
.br
\fItolerance\fP The tolerance to use when searching for the sub image in the root X11 window
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
\fBReturns:\fP
.RS 4
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.
.RE
.PP
.SS "\fBcvaPoint\fP xte_clickMouseImage_center (Display * displayLocation, IplImage * subImage, int mouseButton, int searchMethod, int tolerance)"
.PP
Click the mouse based on center location of an image.
.PP
Wraps grabbing the X11 root window of \fCdisplayLocation\fP, finding the center of \fCsubImage\fP in this display, moving the mouse to that location, and then clicking \fCmouseButton\fP. The return value can be ignored, the mouse will already have been clicked there.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to click the mouse on
.br
\fIsubImage\fP The sub image (in IplImage format) to find in the root X11 window
.br
\fImouseButton\fP The mouse button to click
.br
\fIsearchMethod\fP The search method to use when searching for \fCsubImage\fP in the root X11 window
.br
\fItolerance\fP The tolerance to use when searching for \fCsubImage\fP in the root X11 window
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
\fBReturns:\fP
.RS 4
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.
.RE
.PP
.SS "\fBcvaPoint\fP xte_clickMouseImage_location_center (Display * displayLocation, const char * fileName, int mouseButton, int searchMethod, int tolerance)"
.PP
Click the mouse based on the center location of an image from file.
.PP
Wraps grabbing the X11 root window of \fCdisplayLocation\fP, finding the center location of the sub image from \fCfileName\fP in this display, moving the mouse to that location, and then clicking \fCmouseButton\fP. The return value can be ignored, the mouse will already have been clicked there.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to click the mouse on
.br
\fIfileName\fP The file name from which to load the sub-image
.br
\fImouseButton\fP The mouse button to click
.br
\fIsearchMethod\fP The search method to use when searching for the sub image in the root X11 window
.br
\fItolerance\fP The tolerance to use when searching for the sub image in the root X11 window
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
\fBReturns:\fP
.RS 4
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.
.RE
.PP
.SS "void xte_hoverMouseXY (Display * displayLocation, int xLocation, int yLocation)"
.PP
Move the mouse to a location, but do not click it.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to move the mouse
.br
\fIxLocation\fP The X-coordinate of which to move the mouse
.br
\fIyLocation\fP The Y-coordinate of which to move the mouse
.RE
.PP
.SS "void xte_hoverMouseRXY (Display * displayLocation, int xIncrement, int yIncrement)"
.PP
Move the mouse to a relative location, but do not click it.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to move the mouse
.br
\fIxIncrement\fP How far to move the mouse horizontally. Positive values indicate motion to the right.
.br
\fIyIncrement\fP How far to move the mouse vertically. Positive values indicate motion downward.
.RE
.PP
.SS "\fBcvaPoint\fP xte_hoverMouseImage (Display * displayLocation, IplImage * subImage, int searchMethod, int tolerance)"
.PP
Move the mouse based on location of an image.
.PP
Wraps grabbing the X11 root window of \fCdisplayLocation\fP, finding \fCsubImage\fP in this display, and then moving the mouse to that location. The return value can be ignored, the mouse will already have been moved there.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to move the mouse on
.br
\fIsubImage\fP The sub image (in IplImage format) to find in the root X11 window
.br
\fIsearchMethod\fP The search method to use when searching for \fCsubImage\fP in the root X11 window
.br
\fItolerance\fP The tolerance to use when searching for \fCsubImage\fP in the root X11 window
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
\fBReturns:\fP
.RS 4
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.
.RE
.PP
.SS "\fBcvaPoint\fP xte_hoverMouseImage_location (Display * displayLocation, const char * filename, int searchMethod, int tolerance)"
.PP
Move the mouse based on location of an image from file.
.PP
Wraps grabbing the X11 root window of \fCdisplayLocation\fP, finding the sub image from \fCfileName\fP in this display, and then moving the mouse to that location. The return value can be ignored, the mouse will already have been moved there.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to move the mouse on
.br
\fIfilename\fP The file name from which to load the sub-image
.br
\fIsearchMethod\fP The search method to use when searching for the sub image in the root X11 window
.br
\fItolerance\fP The tolerance to use when searching for the sub image in the root X11 window
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
\fBReturns:\fP
.RS 4
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.
.RE
.PP
.SS "\fBcvaPoint\fP xte_hoverMouseImage_center (Display * displayLocation, IplImage * subImage, int searchMethod, int tolerance)"
.PP
Move the mouse based on center location of an image.
.PP
Wraps grabbing the X11 root window of \fCdisplayLocation\fP, finding the center of \fCsubImage\fP in this display, and then moving the mouse to that location. The return value can be ignored, the mouse will already have been moved there.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to move the mouse on
.br
\fIsubImage\fP The sub image (in IplImage format) to find in the root X11 window
.br
\fIsearchMethod\fP The search method to use when searching for \fCsubImage\fP in the root X11 window
.br
\fItolerance\fP The tolerance to use when searching for \fCsubImage\fP in the root X11 window
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
\fBReturns:\fP
.RS 4
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.
.RE
.PP
.SS "\fBcvaPoint\fP xte_hoverMouseImage_location_center (Display * displayLocation, const char * fileName, int searchMethod, int tolerance)"
.PP
Move the mouse based on the center location of an image from file.
.PP
Wraps grabbing the X11 root window of \fCdisplayLocation\fP, finding the center location of the sub image from \fCfileName\fP in this display, and then moving the mouse to that location. The return value can be ignored, the mouse will already have been moved there.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to move the mouse on
.br
\fIfileName\fP The file name from which to load the sub-image
.br
\fIsearchMethod\fP The search method to use when searching for the sub image in the root X11 window
.br
\fItolerance\fP The tolerance to use when searching for the sub image in the root X11 window
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
\fBReturns:\fP
.RS 4
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.
.RE
.PP
.SS "void xte_mouseDown (Display * displayLocation, int mouseButton)"
.PP
Press a mouse button down, and do not release it.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to push a mouse button down
.br
\fImouseButton\fP The mouse button to push down
.RE
.PP
.SS "void xte_mouseUp (Display * displayLocation, int mouseButton)"
.PP
Release a mouse button.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to release a mouse button
.br
\fImouseButton\fP The mouse button to release
.RE
.PP
.SS "void xte_mouseJiggle (Display * displayLocation)"
.PP
Jiggle the mouse in place.
.PP
This moves the mouse down and right one pixel, and then back. This may be needed to activate menu items, etc.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to move the mouse
.RE
.PP
.SS "void xte_mouseScrollUp (Display * displayLocation)"
.PP
Scroll the mouse up.
.PP
This moves the mouse scroll wheel up one rotation, which may be multiple lines. What this really does is click mouse button 4.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to scroll the mouse
.RE
.PP
.SS "void void xte_mouseScrollDown (Display * displayLocation)"
.PP
Scroll the mouse down.
.PP
This moves the mouse scroll wheel down one rotation, which may be multiple lines. What this really does is click mouse button 5.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to scroll the mouse
.RE
.PP
.SS "void xte_clickKey (Display * displayLocation, char * key)"
.PP
Press and release a keyboard key.
.PP
This method allows you to press and release a key, where the key may be \fC'a'\fP, \fC'b'\fP, or maybe something fancy like \fC'space'\fP. Please see \fBXTest Key Strings\fP for a full list of keys.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to click a key
.br
\fIkey\fP The key to click as a string
.RE
.PP
\fBSee also:\fP
.RS 4
\fBXTest Key Strings\fP
.RE
.PP
.SS "void xte_clickKeyStr (Display * displayLocation, char * string)"
.PP
Input a string of characters to the X Server.
.PP
Instead of specifying a single character to enter at a time (\fC'a'\fP, \fC'space'\fP) this function allows you to enter an entire string (\fC'Hello\fP, World!') at a time.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to enter a key string on
.br
\fIstring\fP The key string to input to the X Server
.RE
.PP
.SS "void xte_keyDown (Display * displayLocation, char * key)"
.PP
Press a key down, but do not release it.
.PP
This method allows you to push down a key, where the key may be \fC'a'\fP, \fC'b'\fP, or maybe something fancy like \fC'space'\fP. Please see \fBXTest Key Strings\fP for a full list of keys.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to push down a key
.br
\fIkey\fP The key to click as a string
.RE
.PP
\fBSee also:\fP
.RS 4
\fBXTest Key Strings\fP
.RE
.PP
.SS "void xte_keyUp (Display * displayLocation, char * key)"
.PP
Release a key.
.PP
This method allows you to release a key, where the key may be \fC'a'\fP, \fC'b'\fP, or maybe something fancy like \fC'space'\fP. Please see \fBXTest Key Strings\fP for a full list of keys.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to release a key
.br
\fIkey\fP The key to click as a string
.RE
.PP
\fBSee also:\fP
.RS 4
\fBXTest Key Strings\fP
.RE
.PP
.SS "\fBcvaPoint\fP xte_waitForImage (Display * displayLocation, IplImage * subImage, int searchMethod, int tolerance, int timeout)"
.PP
Wait for an image to show up on screen.
.PP
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.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to search for an image
.br
\fIsubImage\fP The sub image to search for
.br
\fIsearchMethod\fP The search method to use when searching for \fCsubImage\fP
.br
\fItolerance\fP The tolerance to use when searching for \fCtolerance\fP
.br
\fItimeout\fP The time (in seconds) to search for the image
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
.SS "\fBcvaPoint\fP xte_waitForImage_location (Display * displayLocation, const char * fileName, int searchMethod, int tolerance, int timeout)"
.PP
Wait for an image from file to show up on screen.
.PP
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.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to search for an image
.br
\fIfileName\fP The file to load an image from before searching
.br
\fIsearchMethod\fP The search method to use when searching for \fCsubImage\fP
.br
\fItolerance\fP The tolerance to use when searching for \fCtolerance\fP
.br
\fItimeout\fP The time (in seconds) to search for the image
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
.SS "\fBcvaPoint\fP xte_commandString (Display * displayLocation, char * commandString, int mouseButton, int searchMethod, int tolerance, int timeout)"
.PP
Execute a command where the command is coming from a string.
.PP
This function allows you to input a command to libcvautomation from a string. For example, to click a mouse button, you would use the \fCcommand\fP 'mouseclick'. Please note that some \fCcommand\fPs may need arguments to the string, and some may use function arguments. See \fBxte_commandString() Command Strings\fP for a full list of command and arguments
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to operate on
.br
\fIcommandString\fP The command string to execute - limit to \fBCOMMAND_STR_LEN\fP characters
.br
\fImouseButton\fP The mouse button to click if it is needed by the command being executed
.br
\fIsearchMethod\fP The search method to use if it is needed by the command being executed
.br
\fItolerance\fP The tolerance to use if it is needed by the command being executed
.br
\fItimeout\fP The time in seconds to wait for an image to be displayed when using the \fCwaitfor\fP command.
.RE
.PP
\fBSee also:\fP
.RS 4
\fBxte_commandString() Command Strings\fP
.PP
\fBLibcv Search Methods\fP
.RE
.PP
.SH "Author"
.PP
Generated automatically by Doxygen for libcvautomation from the source code.

View File

@ -0,0 +1,27 @@
.TH "libcvautomation" 3 "23 Jul 2012" "Version 1.3" "libcvautomation" \" -*- nroff -*-
.ad l
.nh
.SH NAME
libcvautomation \- \fBAuthor:\fP
.RS 4
Bradlee Speice <\fCbspeice@uncc.edu\fP>
.RE
.PP
.SH "Introduction"
.PP
Welcome to Libcvautomation! Libcvautomation is a GUI automation and testing tool based on image recognition and response. This program was designed as a direct replacement for \fCSikuli\fP and \fCXpresser\fP. I was having incredible difficulty getting either of these solutions to work - Sikuli would crash whenever I tried to take a screenshot, and Xpresser was both too new for our Prominent North American Enterprise Linux systems, but also didn't work or \fCimport\fP correctly. I really liked the way each of these programs approached GUI automation, but they simply didn't work. Additionally, I wanted to create a simple solution - it does what you want it to, and that's it.
.SH "How Libcvautomation Works"
.PP
Libcvautomation represents two software products coming together - \fCOpenCV\fP and the \fCXTest extension\fP to the X11 server. OpenCV is used for image recognition, and XTest is used to actually drive the X server. You can dig into \fBlibcvautomation-xtest.h\fP to get an idea of what all this library is capable of.
.br
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 \fBmatchSubImage_X11()\fP that allow you to match an image against the X11 root window in place. This means no more \fC'xwd | convert '<out_name>''\fP.
.SH "Using Libcvautomation And Writing Application Tests"
.PP
So how does one go about using libcvautomation?
.br
I'm so glad you asked! I've provided a few reference programs - \fCcva-match\fP and \fCcva-input\fP - 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.
.br
Finally, if you want to know how to write your own application tests, please see \fBWriting Application Tests\fP for more information on that. I've provided code to give you a basic idea of how they work.
.SH "Questions? Comments? Concerns?"
.PP
Please send any feedback to <\fCbspeice@uncc.edu\fP>. Pull requests can be submitted to \fCmy github repository\fP.

View File

@ -0,0 +1,86 @@
.TH "libcvautomation.h" 3 "23 Jul 2012" "Version 1.3" "libcvautomation" \" -*- nroff -*-
.ad l
.nh
.SH NAME
libcvautomation.h \- The top-level include for all projects involving libcvautomation.
.SH SYNOPSIS
.br
.PP
\fC#include <stdio.h>\fP
.br
\fC#include <string.h>\fP
.br
\fC#include <unistd.h>\fP
.br
\fC#include <limits.h>\fP
.br
\fC#include <opencv/cv.h>\fP
.br
\fC#include <opencv/highgui.h>\fP
.br
\fC#include <X11/Xlib.h>\fP
.br
\fC#include <X11/Xutil.h>\fP
.br
\fC#include <X11/extensions/XTest.h>\fP
.br
\fC#include <libcvautomation/libcvautomation-opencv.h>\fP
.br
\fC#include <libcvautomation/libcvautomation-xlib.h>\fP
.br
\fC#include <libcvautomation/libcvautomation-xtest.h>\fP
.br
.SS "Classes"
.in +1c
.ti -1c
.RI "struct \fBcvaPoint\fP"
.br
.RI "\fIVery simple structure to standardize how points are used in libcvautomation. \fP"
.ti -1c
.RI "struct \fBcvautomationList\fP"
.br
.RI "\fIImplements a structure to build an array for methods like \fBmatchSubImage_a()\fP. \fP"
.in -1c
.SS "Defines"
.in +1c
.ti -1c
.RI "#define \fBLIBCVAUTOMATION_VERSION\fP '1.3'"
.br
.RI "\fIDefine what version of Libcvautomation we are using. \fP"
.ti -1c
.RI "#define \fBLIBCVAUTOMATION_BUGREPORT\fP 'bspeice@uncc.edu'"
.br
.RI "\fIDefine who to send bug reports to for Libcvautomation. \fP"
.in -1c
.SH "Detailed Description"
.PP
The top-level include for all projects involving libcvautomation.
This source file includes all other files needed for libcvautomation projects, and also defines the \fBcvautomationList\fP and \fBcvaPoint\fP structs to be used among libcvautomation functions.
.PP
\fBAuthor:\fP
.RS 4
Bradlee Speice
.RE
.PP
.PP
Definition in file \fBlibcvautomation.h\fP.
.SH "Define Documentation"
.PP
.SS "#define LIBCVAUTOMATION_VERSION '1.3'"
.PP
Define what version of Libcvautomation we are using.
.PP
This define provides access to what version of Libcvautomation we're using. All times that you need to know what it is should use this.
.SS "#define LIBCVAUTOMATION_BUGREPORT 'bspeice@uncc.edu'"
.PP
Define who to send bug reports to for Libcvautomation.
.PP
This define provides access to who should be emailed in case of a Libcvautomation bug. All times that you need to know what it is should use this.
.SH "Author"
.PP
Generated automatically by Doxygen for libcvautomation from the source code.

View File

@ -0,0 +1,106 @@
.TH "libcvautomation_search_methods" 3 "23 Jul 2012" "Version 1.3" "libcvautomation" \" -*- nroff -*-
.ad l
.nh
.SH NAME
libcvautomation_search_methods \- Libcv Search Methods
This page describes the methods libcv uses to search for a sub image in a root image.
.SH "Tolerance Values"
.PP
Tolerance values are used to control how strict each of the following search methods are. Acceptable values are from \fCINT_MIN\fP to \fCINT_MAX\fP.
.PP
Additionally, each of the reference programs - \fCcva-input\fP and \fCcva-match\fP - have a 'sane tolerance' built in. This is accessed by the '-o' switch, and allows you to specify a tolerance on scale of 1-100, where 1 is incredibly strict, and 100 is incredibly loose.
.PP
\fBNote:\fP
.RS 4
The formula for calculating the sane tolerance is: $ T(x) = (10^{\frac{\log{INT\_MAX}}{\lambda}})^x $ where $ \lambda $ is the highest tolerance value (in our case, 100). Finally, we have to round down a little bit to ensure that we don't accidentally generate a value higher than \fCINT_MAX\fP. The formula used does mean that we will never be able to generate values lower than 0.
.RE
.PP
\fBWarning:\fP
.RS 4
The 'sane-tolerance' option doesn't know which search method you are using - Thus while 1 is an incredibly strict search for \fBSquared Difference\fP and \fBSquared Difference (Normalized)\fP, it is fairly loose search for \fBCross Correlation\fP, \fBCross Correlation (Normalized)\fP, \fBCorrelation Coefficient\fP, and \fBCorrelation Coefficient (Normalized)\fP
.RE
.PP
.SH "Squared Difference"
.PP
.PP
.nf
#define CV_TM_SQDIFF 0
.fi
.PP
Squared Difference is the default search method used by \fClibcvautomation\fP, as well as \fCcva-match\fP and \fCcva-input\fP.
.PP
\fBFor this method, setting a low tolerance value results in a more strict match.\fP.RS 4
.RE
.PP
Formula: $R(x,y) = \sum_{x',y'} (T(x',y') - I(x + x', y+y'))^2 $
.SH "Squared Difference (Normalized)"
.PP
.PP
.nf
#define CV_TM_SQDIFF_NORMED 1
.fi
.PP
This is a normalized version of the \fBSquared Difference\fP search method.
.PP
\fBFor this method, setting a low tolerance value results in a more strict match.\fP.RS 4
.RE
.PP
Formula: $ 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}} $
.SH "Cross Correlation"
.PP
.PP
.nf
#define CV_TM_CCORR 2
.fi
.PP
This is the Cross Correlation search method.
.PP
\fBFor this method, setting a high tolerance value results in a more strict match.\fP.RS 4
.RE
.PP
Formula: $ R(x,y)= \sum _{x',y'} (T(x',y') \cdot I(x+x',y+y')) $
.SH "Cross Correlation (Normalized)"
.PP
.PP
.nf
#define CV_TM_CCORR_NORMED 3
.fi
.PP
This is the normalized version of the \fBCross Correlation\fP search method.
.PP
\fBFor this method, setting a high tolerance value results in a more strict match.\fP.RS 4
.RE
.PP
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}} $
.SH "Correlation Coefficient"
.PP
.PP
.nf
#define CV_TM_CCOEFF 4
.fi
.PP
This is the Correlation Coefficient search method.
.PP
\fBFor this method, setting a high tolerance value results in a more strict match.\fP.RS 4
.RE
.PP
Formula: $ R(x,y)= \sum _{x',y'} (T'(x',y') \cdot I(x+x',y+y')) $ where: $ \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} $
.SH "Correlation Coefficient (Normalized)"
.PP
.PP
.nf
#define CV_TM_CCOEFF_NORMED 5
.fi
.PP
This is the normalized version of the \fBCorrelation Coefficient\fP search method.
.PP
\fBFor this method, setting a high tolerance value results in a more strict match.\fP.RS 4
.RE
.PP
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} } $

View File

@ -0,0 +1,321 @@
.TH "writing_app_tests" 3 "23 Jul 2012" "Version 1.3" "libcvautomation" \" -*- nroff -*-
.ad l
.nh
.SH NAME
writing_app_tests \- Writing Application Tests
\fBAuthor:\fP
.RS 4
Bradlee Speice <\fCbspeice@uncc.edu\fP>
.RE
.PP
\fBDate:\fP
.RS 4
7/23/2012
.RE
.PP
.SH "Audience"
.PP
.PD 0
.IP "\(bu" 2
This document was written for people with some intermediate knowledge of BASH.
.IP "\(bu" 2
Screenshot experience is required - being able to create screenshots of windows using \fCGIMP\fP, the \fCimport\fP command from \fCImageMagick\fP, or something similar.
.br
.IP "\(bu" 2
Required for working with libcvautomation internals (not needed strictly for writing application testing):
.PD 0
.IP " \(bu" 4
Intermediate-level C knowledge required for interfacing with libcvautomation. There isn't much complicated going on with libcvautomation itself, but you need to know to use \fBcvaOpenDisplay()\fP for grabbing a display and then \fBcvaCloseDisplay()\fP for closing it later for example.
.IP " \(bu" 4
C++ is available, but currently only as \fCextern 'C'\fP style bindings.
.IP " \(bu" 4
Python bindings are in progress as of time-of-writing
.PP
.PP
.SH "Purpose"
.PP
.PD 0
.IP "\(bu" 2
This document is intended to outline the libcvautomation testing library for GUI applications and its two reference programs \fCcva-match\fP and \fCcva-input\fP
.IP "\(bu" 2
These programs allow you to automate mouse and keyboard events in response to what appears on screen - for example, clicking a button based on an image of that button on screen.
.PP
.SH "Using Libcvautomation"
.PP
.PD 0
.IP "\(bu" 2
Since libcvautomation is a shared-object library intended to bundle a lot of functionality in one area, we must use external programs to agin access to the functions of libcvautomation.
.IP "\(bu" 2
Two reference programs have been included to make this easy - \fCcva-match\fP and \fCcva-input\fP
.IP "\(bu" 2
The reference programs are fairly full-featured, and expose most of libcvautomation:
.PD 0
.IP " \(bu" 4
\fCcva-match\fP allows you to match multiple image files against a root image providing very fine control over how specific the match is
.IP " \(bu" 4
\fCcva-input\fP allows you to drive the X11 server using the XTest extension - for example, clicking on a button from image, clicking a key on the keyboard, and more.
.PP
.IP "\(bu" 2
These two programs should implement all functionality needed for GUI automation. Please contact \fCbspeice@uncc.edu\fP if you have suggestions for extra functionality, patches, comments, etc.
.IP "\(bu" 2
Finally, if you want to write your own programs using libcvautomation, the headers are located on your system. Use:
.PP
.nf
#include <libcvautomation/libcvautomation.h>
.fi
.PP
to include all necessary header files. See the 'Files' tab above to get an idea of what functionality exists.
.PP
\fBNote:\fP
.RS 4
Intermediate C or C++ knowledge is required for programming with libcvautomation. C++ is currently only supported through \fCextern 'C'\fP, and full C++ bindings are not currently planned. Libcvautomation itself is incredibly simple, but interfaces with a few API's (Xlib, libcv) that it is helpful to have an idea of how to use.
.RE
.PP
.PP
.SH "Application Testing"
.PP
Now we get into the good stuff. The basic process for application testing is as follows:
.PD 0
.IP "\(bu" 2
Create a sequence of screenshots for all mouse-clicks
.IP "\(bu" 2
Create a testing wrapper in BASH for automating the application
.IP "\(bu" 2
Test the wrapper and tune any necessary options
.PP
.SS "Creating the Screenshot Sequence"
.PD 0
.IP "\(bu" 2
This process creates a set of screenshots by which libcvautomation can drive the X11 server
.IP "\(bu" 2
The process is simple - create a screenshot of all buttons you would like to click in an application test, or location where you would like to move the mouse, etc.
.IP "\(bu" 2
This can be accomplished a number of different ways - using GIMP, the \fCimport\fP command, or any other screenshot program. Additionally, libcvautomation will support any image format that OpenCV does. At the time of writing, these are:
.PD 0
.IP " \(bu" 4
Windows bitmaps - \fC*.bmp\fP, \fC*.dib\fP
.IP " \(bu" 4
JPEG files - \fC*.jpeg\fP, \fC*.jpg\fP, \fC*.jpe\fP
.IP " \(bu" 4
JPEG 2000 files - \fC*.jp2\fP
.IP " \(bu" 4
Portable Network Graphics - \fC*.png\fP
.IP " \(bu" 4
Portable image format - \fC*.pbm\fP, \fC*.pgm\fP, \fC*.ppm\fP
.IP " \(bu" 4
Sun rasters - \fC*.sr\fP, \fC*.ras\fP
.IP " \(bu" 4
TIFF files - \fC*.tiff\fP, \fC*.tif\fP
.PP
.br
.IP "\(bu" 2
Some tips on creating screenshots:
.PD 0
.IP " \(bu" 4
Use as distinct an image as possible in a screenshot. For example, the following images look very similar, but can do very different things:
.br
.PD 0
.IP " \(bu" 6
The large amount of grey-space in each of the images can be very confusing. While the text itself is different, the overwhelming amount of grey space can result in a false positive. Limiting the space of the screenshot can be useful:
.br
.IP " \(bu" 6
Limiting the button size in this case helps the program identify what button you want to click, but in general you want to include as much detail as possible.
.PP
.br
.IP " \(bu" 4
Be careful of where an image may appear multiple times in a screenshot. For example, a 'Help' button on a dialog may get confused with the 'Help' menu at the top of the screen.
.PP
.PP
.PP
.SS "Create a Testing Wrapper"
.PD 0
.IP "\(bu" 2
This is where the BASH knowledge comes into play. We are going to write a script that will run your application test, to make sure that the GUI is functioning correctly.
.IP "\(bu" 2
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:
.PP
.nf
#!/bin/bash
#This is an application test involving libcvautomation and libreoffice
. /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'
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
sleep 30
}
close_libreoffice_writer()
{
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
close_libreoffice_writer
.fi
.PP
.br
.PP
.nf
#!/bin/bash
#This is an application test involving libcvautomation and libreoffice
. /etc/libcvautomation_funcs
set -o errexit
#Changing any wrapper parameters should go here
.fi
.PP
.IP "\(bu" 2
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 \fClocate libcvautomation_funcs\fP to find it on your computer. The wrapper itself is a handful of macros used to make our job easy.
.IP "\(bu" 2
The \fCset\fP line will abort the test if an error is ever encountered - for example, no images are found.
.IP "\(bu" 2
Changing any wrapper parameters should go after sourcing the wrapper functions. See \fBEnvironment Variables\fP for more information.
.br
.br
.PP
.nf
start_libreoffice_writer ()
{
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
sleep 30
}
.fi
.PP
.IP "\(bu" 2
This is the actual body of work done by libcvautomation
.IP "\(bu" 2
\fCclick_i\fP is a function to click the mouse at an image - in this case, the gnome or kde menu.
.PD 0
.IP " \(bu" 4
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 \fBAppendix of Wrapper Functions and Environment Variables\fP for more information on how to use this (\fCTOLERANCE\fP specifically)
.IP " \(bu" 4
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 \fCTIMEOUT\fP option to learn how to use this.
.IP " \(bu" 4
By using the function \fCclick_i\fP, we make things a bit more readable - the full command line is \fCcva-input -s 'icmouseclick <filename>'\fP
.IP " \(bu" 4
See the \fBAppendix of Wrapper Functions and Environment Variables\fP for a list of all functions available in the wrapper.
.PP
.IP "\(bu" 2
\fChover_i\fP is a function to move the mouse to an image - in this case, move it over the LibreOffice menu item.
.IP "\(bu" 2
Then we jiggle the mouse to make sure that the item activates, click, and wait for the program to start up.
.br
.br
.PP
.nf
close_libreoffice_writer()
{
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'
}
.fi
.PP
.IP "\(bu" 2
Use the \fCclick_i\fP function to close down LibreOffice writer - Find the 'File' menu, click 'Exit', and then make sure to discard all changes.
.br
.br
.PP
.nf
start_libreoffice_writer
close_libreoffice_writer
.fi
.PP
.IP "\(bu" 2
Actually run the functions given.
.br
.br
.IP "\(bu" 2
Please note that this is a fairly trivial example. The full list of commands available in the wrapper is given in \fBAppendix of Wrapper Functions and Environment Variables\fP
.PP
.SS "Testing the Testing Wrapper"
.PD 0
.IP "\(bu" 2
First things first, run through the testing wrapper to make sure that everything is O.K.
.IP "\(bu" 2
If you need to, there are a few environment variables you can set to change how the wrapper works. See \fBEnvironment Variables\fP for more information on how these work.
.IP "\(bu" 2
A full list of commands provided by the wrapper is available at \fBFunctions\fP
.PP
.PP
\fBNote:\fP
.RS 4
These options are controlled using the testing script as demonstrated above. Any modifications to the following values should be done at the line:
.PP
.nf
#Changing any wrapper parameters should go here
.fi
.PP
.RE
.PP
.SH "Wrapping Up"
.PP
.PD 0
.IP "\(bu" 2
At this point you should have all the information you need to write your own application tests. The libcvautomation library and reference programs were designed to be simple and powerful, but if you invest the time to learn them and some expert BASH scripting, you can do some very complex things.
.PD 0
.IP " \(bu" 4
For example, integrating a \fCTest Anything Protocol\fP wrapper into your scripts as well.
.PP
.IP "\(bu" 2
If you have questions, comments, concerns, suggestions, or feedback in general, feel free to let me know at \fCbspeice@uncc.edu\fP.
.PP

View File

@ -0,0 +1,176 @@
.TH "xtest_command_strings" 3 "23 Jul 2012" "Version 1.3" "libcvautomation" \" -*- nroff -*-
.ad l
.nh
.SH NAME
xtest_command_strings \- xte_commandString() Command Strings
This page describes the various command strings available for the \fBxte_commandString()\fP function.
.SH "Mouse Click"
.PP
.PP
.nf
'mouseclick <button_number>'
.fi
.PP
Click the mouse button \fC\fP <button_number> in-place.
.SH "Image Mouse Click"
.PP
.PP
.nf
'imouseclick <image_name>'
.fi
.PP
Click the mouse at an image's top-left corner.
.SH "Image Mouse Click (Centered)"
.PP
.PP
.nf
'icmouseclick <image_name>'
.fi
.PP
Click the mouse at an image's center.
.SH "Mouse XY Move"
.PP
.PP
.nf
'mousexy <x-coord> <y-coord>'
.fi
.PP
Move the mouse to an absolute coordinate.
.PP
\fBWarning:\fP
.RS 4
The \fC<x-coord>\fP and \fC<y-coord>\fP are expected to be integers.
.RE
.PP
.SH "Mouse XY Move (Relative)"
.PP
.PP
.nf
'mouserxy <x-increment> <y-increment>'
.fi
.PP
Move the mouse by the given x and y values (relative motion).
.PP
\fBA positive X increment will move the mouse to the right, and a positive Y increment will move the mouse down.\fP.RS 4
.RE
.PP
\fBWarning:\fP
.RS 4
The \fC<x-increment>\fP and \fC<y-increment>\fP are expected to be integers.
.RE
.PP
.SH "Mouse Image Move"
.PP
.PP
.nf
'mouseimage <image_name>'
.fi
.PP
Move the mouse to an image's top-left corner.
.SH "Mouse Image Move (Centered)"
.PP
.PP
.nf
'cmouseimage <image_name>'
.fi
.PP
Move the mouse to an image's center.
.SH "Mouse Button Down"
.PP
.PP
.nf
'mousedown <button_number>'
.fi
.PP
Push and leave down a mouse button.
.SH "Mouse Button Up"
.PP
.PP
.nf
'mouseup <button_number>'
.fi
.PP
Release mouse button \fC\fP <button_number>
.SH "Mouse Jiggle"
.PP
.PP
.nf
'mousejiggle'
.fi
.PP
Jiggle the mouse (helps to activate some widgets). Moves the mouse right and down 1 pixel, and then back.
.SH "Mouse Scroll Down"
.PP
.PP
.nf
'mousescrolld'
.fi
.PP
Scroll the mouse down 1 time - depending on window manager settings, etc., this may be multiple lines.
.PP
\fBNote:\fP
.RS 4
This is a wrapper function for clicking button 4 on the mouse
.RE
.PP
.SH "Mouse Scroll Up"
.PP
.PP
.nf
'mousescrollu'
.fi
.PP
Scroll the mouse up 1 time - depending on window manager settings, etc., this may be multiple lines.
.PP
\fBNote:\fP
.RS 4
This is a wrapper function for clicking button 5 on the mouse
.RE
.PP
.SH "Key Button Click"
.PP
.PP
.nf
'keyclick <key_name>'
.fi
.PP
Push and release a keyboard key. This can be a key like \fC'a'\fP, \fC'b'\fP, or something fancy like \fC'space'\fP. Please see \fBXTest Key Strings\fP for a full list of special keys.
.SH "Key Button Down"
.PP
.PP
.nf
'keydown <key_name>'
.fi
.PP
Push down \fIbut do not release\fP a keyboard key. This can be a key like \fC'a'\fP, \fC'b'\fP, or something fancy like \fC'space'\fP. Please see \fBXTest Key Strings\fP for a full list of special keys.
.SH "Key Button Up"
.PP
.PP
.nf
'keyup <key_name>'
.fi
.PP
Release a keyboard key. This can be a key like \fC'a'\fP, \fC'b'\fP, or something fancy like \fC'space'\fP. Please see \fBXTest Key Strings\fP for a full list of special keys.
.SH "Keyboard Input String"
.PP
.PP
.nf
'keystring <string>'
.fi
.PP
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.
.PP
\fBWarning:\fP
.RS 4
Unlike \fBKey Button Down\fP, \fBKey Button Up\fP, and \fBKey Button Click\fP, this function can not handle special keys like 'space'.
.RE
.PP
.SH "Wait for Image"
.PP
.PP
.nf
'waitfor <image_name>'
.fi
.PP
Wait for an image to show up on screen. For example, this can be used to make sure a button exists before clicking it.

View File

@ -0,0 +1,266 @@
.TH "xtest_key_strings" 3 "23 Jul 2012" "Version 1.3" "libcvautomation" \" -*- nroff -*-
.ad l
.nh
.SH NAME
xtest_key_strings \- XTest Key Strings
This page describes the various extra key strings to use with X11. The following list is generated with this command:
.PP
.nf
xmodmap -pke | cut -d'=' -f2 | sed 's/ /\n/g' | tr -s '\n' | awk '{ print length(), $0 | 'sort -n' }' | cut -d' ' -f2 | uniq
.fi
.PP
.PP
.nf
0
1
2
3
4
5
6
7
8
9
a
A
b
B
c
C
d
D
e
E
f
F
g
G
h
H
i
I
j
J
k
K
l
L
m
M
n
N
o
O
p
P
q
Q
r
R
s
S
t
T
u
U
v
V
w
W
x
X
y
Y
z
Z
at
F1
F2
F3
F4
F5
F6
F7
F8
F9
Up
bar
End
F10
F11
F12
Tab
Down
Home
KP_0
KP_1
KP_2
KP_3
KP_4
KP_5
KP_6
KP_7
KP_8
KP_9
Left
less
Menu
Next
plus
Alt_L
Break
colon
comma
equal
grave
KP_Up
minus
Pause
Print
Prior
Right
slash
space
aacute
Aacute
dagger
Delete
dollar
eacute
Eacute
Escape
exclam
iacute
Iacute
Insert
KP_Add
KP_End
Meta_L
oacute
Oacute
period
Return
uacute
Uacute
greater
Hyper_L
KP_Down
KP_Home
KP_Left
KP_Next
percent
Shift_L
Shift_R
Super_L
Super_R
Sys_Req
XF86WWW
asterisk
KP_Begin
KP_Enter
KP_Equal
KP_Prior
KP_Right
NoSymbol
Num_Lock
question
quotedbl
XF86Back
XF86Mail
XF86Stop
XF86WLAN
ampersand
backslash
BackSpace
braceleft
brokenbar
Caps_Lock
Control_L
Control_R
KP_Delete
KP_Divide
KP_Insert
parenleft
semicolon
XF86Eject
XF86Sleep
adiaeresis
Adiaeresis
apostrophe
asciitilde
braceright
ediaeresis
Ediaeresis
idiaeresis
KP_Decimal
numbersign
odiaeresis
Odiaeresis
parenright
udiaeresis
Udiaeresis
underscore
XF86Reload
XF86Search
XF86WakeUp
asciicircum
bracketleft
KP_Multiply
KP_Subtract
Mode_switch
Scroll_Lock
XF86Battery
XF86Display
XF86Forward
XF86_Ungrab
bracketright
doubledagger
ISO_Left_Tab
XF86PowerOff
XF86AudioMute
XF86AudioNext
XF86AudioPrev
XF86AudioStop
XF86Favorites
XF86AudioMedia
XF86AudioPause
XF86Calculator
XF86_ClearGrab
XF86MyComputer
XF86_Next_VMode
XF86_Prev_VMode
ISO_Level3_Shift
Terminate_Server
XF86_Switch_VT_1
XF86_Switch_VT_2
XF86_Switch_VT_3
XF86_Switch_VT_4
XF86_Switch_VT_5
XF86_Switch_VT_6
XF86_Switch_VT_7
XF86_Switch_VT_8
XF86_Switch_VT_9
XF86KbdLightOnOff
XF86_Switch_VT_10
XF86_Switch_VT_11
XF86_Switch_VT_12
Pointer_EnableKeys
XF86KbdBrightnessUp
XF86MonBrightnessUp
XF86AudioLowerVolume
XF86AudioRaiseVolume
XF86KbdBrightnessDown
XF86MonBrightnessDown
.fi
.PP
.PP
\fBWarning:\fP
.RS 4
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 \fC'$'\fP to come out, use the \fC'keystring $'\fP command to \fBxte_commandString()\fP or \fC'key_str $'\fP function in the BASH wrapper - see the \fBAppendix of Wrapper Functions and Environment Variables\fP.
.RE
.PP

487
examples/Makefile.in Normal file
View File

@ -0,0 +1,487 @@
# Makefile.in generated by automake 1.10.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
@BUILD_EXAMPLES_TRUE@bin_PROGRAMS = cva-match$(EXEEXT) \
@BUILD_EXAMPLES_TRUE@ cva-input$(EXEEXT)
subdir = examples
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_CLEAN_FILES =
am__installdirs = "$(DESTDIR)$(bindir)"
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
PROGRAMS = $(bin_PROGRAMS)
am__cva_input_SOURCES_DIST = cva-input.c
@BUILD_EXAMPLES_TRUE@am_cva_input_OBJECTS = cva-input.$(OBJEXT)
cva_input_OBJECTS = $(am_cva_input_OBJECTS)
cva_input_LDADD = $(LDADD)
am__cva_match_SOURCES_DIST = cva-match.c
@BUILD_EXAMPLES_TRUE@am_cva_match_OBJECTS = cva-match.$(OBJEXT)
cva_match_OBJECTS = $(am_cva_match_OBJECTS)
cva_match_LDADD = $(LDADD)
DEFAULT_INCLUDES = -I.@am__isrc@
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
$(LDFLAGS) -o $@
SOURCES = $(cva_input_SOURCES) $(cva_match_SOURCES)
DIST_SOURCES = $(am__cva_input_SOURCES_DIST) \
$(am__cva_match_SOURCES_DIST)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CV_CFLAGS = @CV_CFLAGS@
CV_LIBS = @CV_LIBS@
CV_VERSION = @CV_VERSION@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
Doxygen = @Doxygen@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLE_MAN = @ENABLE_MAN@
ENABLE_TEX = @ENABLE_TEX@
EXEEXT = @EXEEXT@
F77 = @F77@
FFLAGS = @FFLAGS@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIBTOOL_VERSION = @LIBTOOL_VERSION@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
OBJEXT = @OBJEXT@
OpenCV_CFLAGS = @OpenCV_CFLAGS@
OpenCV_LIBS = @OpenCV_LIBS@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
XMKMF = @XMKMF@
XTEST_CFLAGS = @XTEST_CFLAGS@
XTEST_LIBS = @XTEST_LIBS@
XTest_CFLAGS = @XTest_CFLAGS@
XTest_LIBS = @XTest_LIBS@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
#Need to include the -Ilibcvautomation so that libcvautomation.h can find everything that it needs
@BUILD_EXAMPLES_TRUE@AM_LDFLAGS = -L../libcvautomation/.libs -lcvautomation
@BUILD_EXAMPLES_TRUE@AM_CFLAGS = -Wall -Werror -O2 -I$(top_srcdir)/include @X11_CFLAGS@ @XTEST_CFLAGS@ @CV_CFLAGS@
@BUILD_EXAMPLES_TRUE@cva_match_SOURCES = cva-match.c
@BUILD_EXAMPLES_TRUE@cva_input_SOURCES = cva-input.c
all: all-am
.SUFFIXES:
.SUFFIXES: .c .lo .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu examples/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
@list='$(bin_PROGRAMS)'; for p in $$list; do \
p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
if test -f $$p \
|| test -f $$p1 \
; then \
f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
$(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
else :; fi; \
done
uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL)
@list='$(bin_PROGRAMS)'; for p in $$list; do \
f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
rm -f "$(DESTDIR)$(bindir)/$$f"; \
done
clean-binPROGRAMS:
@list='$(bin_PROGRAMS)'; for p in $$list; do \
f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
echo " rm -f $$p $$f"; \
rm -f $$p $$f ; \
done
cva-input$(EXEEXT): $(cva_input_OBJECTS) $(cva_input_DEPENDENCIES)
@rm -f cva-input$(EXEEXT)
$(LINK) $(cva_input_OBJECTS) $(cva_input_LDADD) $(LIBS)
cva-match$(EXEEXT): $(cva_match_OBJECTS) $(cva_match_DEPENDENCIES)
@rm -f cva-match$(EXEEXT)
$(LINK) $(cva_match_OBJECTS) $(cva_match_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cva-input.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cva-match.Po@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
.c.obj:
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
.c.lo:
@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(PROGRAMS)
installdirs:
for dir in "$(DESTDIR)$(bindir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
info: info-am
info-am:
install-data-am:
install-dvi: install-dvi-am
install-exec-am: install-binPROGRAMS
install-html: install-html-am
install-info: install-info-am
install-man:
install-pdf: install-pdf-am
install-ps: install-ps-am
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-binPROGRAMS
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
clean-generic clean-libtool ctags distclean distclean-compile \
distclean-generic distclean-libtool distclean-tags distdir dvi \
dvi-am html html-am info info-am install install-am \
install-binPROGRAMS install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
pdf pdf-am ps ps-am tags uninstall uninstall-am \
uninstall-binPROGRAMS
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@ -0,0 +1,426 @@
/*
* =====================================================================================
*
* Filename: libcvautomation.h
*
* Description: Include wrapper for libcvautomation subsections
*
* Created: 06/21/2012 12:20:43 PM
* Revision: none
* Compiler: gcc
*
* Author: Bradlee Speice (), bspeice.nc@gmail.com
* Organization:
*
* =====================================================================================
*/
#ifndef LIBCVAUTOMATION_H
#define LIBCVAUTOMATION_H
#define LIBCVAUTOMATION_VERSION "1.3"
#define LIBCVAUTOMATION_BUGREPORT "bspeice@uncc.edu"
/* C includes */
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <limits.h>
/* Autoconf logic to select the correct OpenCV version */
/* OpenCV includes */
#include <opencv/cv.h>
#include <opencv/highgui.h>
/* X11 includes */
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/extensions/XTest.h>
/* Define another basic structure for points */
typedef struct {
int x, y;
} cvaPoint;
/* Define a basic structure to help us with using multiple-picture arguments
* Yes, it's a hackish implementation, nobody said you had to use this one. */
typedef struct {
/* Use one or the other of fileName or cvaImage - cvaImage takes priority */
IplImage *cvaImage;
char *fileName;
cvaPoint resultPoint;
int searchMethod;
int tolerance;
} cvautomationList;
/* Project component includes */
/* The includes come here to make sure all function prototypes have access
* to the cvautomationList struct */
#include <libcvautomation/libcvautomation-opencv.h>
#include <libcvautomation/libcvautomation-xlib.h>
#include <libcvautomation/libcvautomation-xtest.h>
#endif /* LIBCVAUTOMATION_H */
/* Doxygen information */
/** \file libcvautomation.h
* \brief The top-level include for all projects involving libcvautomation
* \details This source file includes all other files needed for libcvautomation projects, and also defines the cvautomationList and cvaPoint structs to be used among libcvautomation functions.
* \author Bradlee Speice
*/
/** \mainpage Libcvautomation
* \author Bradlee Speice <<a href="mailto:bspeice@uncc.edu">bspeice@uncc.edu</a>>
* \section intro Introduction
* Welcome to Libcvautomation!
* Libcvautomation is a GUI automation and testing tool based on image recognition and response. This program was designed as a direct replacement for <a href="http://sikuli.org">Sikuli</a> and <a href="https://wiki.ubuntu.com/Xpresser">Xpresser</a>. I was having incredible difficulty getting either of these solutions to work - Sikuli would crash whenever I tried to take a screenshot, and Xpresser was both too new for our Prominent North American Enterprise Linux systems, but also didn't work or \c import correctly. I really liked the way each of these programs approached GUI automation, but they simply didn't work. Additionally, I wanted to create a simple solution - it does what you want it to, and that's it.
* \section how_it_works How Libcvautomation Works
* Libcvautomation represents two software products coming together - <a href="http://opencv.willowgarage.com/wiki/">OpenCV</a> and the <a href="http://www.x.org/docs/Xext/xtest.pdf">XTest extension</a> to the X11 server. OpenCV is used for image recognition, and XTest is used to actually drive the X server. You can dig into \ref libcvautomation-xtest.h to get an idea of what all this library is capable of. <br>
* 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 <tt>'xwd | convert "<out_name>"'</tt>.
* \section main_using Using Libcvautomation And Writing Application Tests
* So how does one go about using libcvautomation? <br>
* I'm so glad you asked! I've provided a few reference programs - \c cva-match and \c 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 \c cva-match and \c cva-input are installed). Python bindings are on their way too. <br>
* Finally, if you want to know how to write your own application tests, please see \ref writing_app_tests for more information on that. I've provided code to give you a basic idea of how they work.
* \section questions Questions? Comments? Concerns?
* Please send any feedback to <<a href="mailto:bspeice@uncc.edu">bspeice@uncc.edu</a>>. Pull requests can be submitted to <a href="https://github.com/DjBushido/libcvautomation">my github repository</a>.*/
/** \page libcvautomation
* \author Bradlee Speice <<a href="mailto:bspeice@uncc.edu">bspeice@uncc.edu</a>>
* \section intro Introduction
* Welcome to Libcvautomation!
* Libcvautomation is a GUI automation and testing tool based on image recognition and response. This program was designed as a direct replacement for <a href="http://sikuli.org">Sikuli</a> and <a href="https://wiki.ubuntu.com/Xpresser">Xpresser</a>. I was having incredible difficulty getting either of these solutions to work - Sikuli would crash whenever I tried to take a screenshot, and Xpresser was both too new for our Prominent North American Enterprise Linux systems, but also didn't work or \c import correctly. I really liked the way each of these programs approached GUI automation, but they simply didn't work. Additionally, I wanted to create a simple solution - it does what you want it to, and that's it.
* \section how_it_works How Libcvautomation Works
* Libcvautomation represents two software products coming together - <a href="http://opencv.willowgarage.com/wiki/">OpenCV</a> and the <a href="http://www.x.org/docs/Xext/xtest.pdf">XTest extension</a> to the X11 server. OpenCV is used for image recognition, and XTest is used to actually drive the X server. You can dig into \ref libcvautomation-xtest.h to get an idea of what all this library is capable of. <br>
* 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 <tt>'xwd | convert "<out_name>"'</tt>.
* \section main_using Using Libcvautomation And Writing Application Tests
* So how does one go about using libcvautomation? <br>
* I'm so glad you asked! I've provided a few reference programs - \c cva-match and \c 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. <br>
* Finally, if you want to know how to write your own application tests, please see \ref writing_app_tests for more information on that. I've provided code to give you a basic idea of how they work.
* \section questions Questions? Comments? Concerns?
* Please send any feedback to <<a href="mailto:bspeice@uncc.edu">bspeice@uncc.edu</a>>. Pull requests can be submitted to <a href="https://github.com/DjBushido/libcvautomation">my github repository</a>.*/
/** \page writing_app_tests Writing Application Tests
* \author Bradlee Speice <<a href="mailto:bspeice@uncc.edu">bspeice@uncc.edu</a>>
* \date 7/23/2012
* \section audience Audience
* <ul>
* <li>This document was written for people with some intermediate knowledge of BASH.
* <li>Screenshot experience is required - being able to create screenshots of windows using <a href="http://www.gimp.org/">GIMP</a>, the \c import command from <a href="http://www.imagemagick.org/script/index.php">ImageMagick</a>, or something similar. <br>
* <li>Required for working with libcvautomation internals (not needed strictly for writing application testing):
* <ul>
* <li>Intermediate-level C knowledge required for interfacing with libcvautomation. There isn't much complicated going on with libcvautomation itself, but you need to know to use cvaOpenDisplay() for grabbing a display and then cvaCloseDisplay() for closing it later for example.
* <li>C++ is available, but currently only as <tt>extern "C"</tt> style bindings.
* <li>Python bindings are in progress as of time-of-writing
* </ul>
* </ul>
*
* \section purpose Purpose
* <ul>
* <li>This document is intended to outline the libcvautomation testing library for GUI applications and its two reference programs \c cva-match and \c cva-input
* <li>These programs allow you to automate mouse and keyboard events in response to what appears on screen - for example, clicking a button based on an image of that button on screen.
* </ul>
*
* \section using Using Libcvautomation
* <ul>
* <li>Since libcvautomation is a shared-object library intended to bundle a lot of functionality in one area, we must use external programs to agin access to the functions of libcvautomation.
* <li>Two reference programs have been included to make this easy - \c cva-match and \c cva-input
* <li>The reference programs are fairly full-featured, and expose most of libcvautomation:
* <ul>
* <li>\c cva-match allows you to match multiple image files against a root image providing very fine control over how specific the match is
* <li>\c cva-input allows you to drive the X11 server using the XTest extension - for example, clicking on a button from image, clicking a key on the keyboard, and more.
* </ul>
* <li>These two programs should implement all functionality needed for GUI automation. Please contact <a href="mailto:bspeice@uncc.edu">bspeice@uncc.edu</a> if you have suggestions for extra functionality, patches, comments, etc.
* <li>Finally, if you want to write your own programs using libcvautomation, the headers are located on your system. Use:
* \code #include <libcvautomation/libcvautomation.h> \endcode
* to include all necessary header files. See the "Files" tab above to get an idea of what functionality exists.
* \note Intermediate C or C++ knowledge is required for programming with libcvautomation. C++ is currently only supported through <tt>extern "C"</tt>, and full C++ bindings are not currently planned. Libcvautomation itself is incredibly simple, but interfaces with a few API's (Xlib, libcv) that it is helpful to have an idea of how to use.
*
* \section testing Application Testing
* Now we get into the good stuff. The basic process for application testing is as follows:
* <ul>
* <li>Create a sequence of screenshots for all mouse-clicks
* <li>Create a testing wrapper in BASH for automating the application
* <li>Test the wrapper and tune any necessary options
* </ul>
* \subsection screenshot_sequence Creating the Screenshot Sequence
* <ul>
* <li>This process creates a set of screenshots by which libcvautomation can drive the X11 server
* <li>The process is simple - create a screenshot of all buttons you would like to click in an application test, or location where you would like to move the mouse, etc.
* <li>This can be accomplished a number of different ways - using GIMP, the \c import command, or any other screenshot program. Additionally, libcvautomation will support any image format that OpenCV does. At the time of writing, these are:
* <ul>
* <li>Windows bitmaps - <tt>*.bmp</tt>, <tt>*.dib</tt>
* <li>JPEG files - <tt>*.jpeg</tt>, <tt>*.jpg</tt>, <tt>*.jpe</tt>
* <li>JPEG 2000 files - <tt>*.jp2</tt>
* <li>Portable Network Graphics - <tt>*.png</tt>
* <li>Portable image format - <tt>*.pbm</tt>, <tt>*.pgm</tt>, <tt>*.ppm</tt>
* <li>Sun rasters - <tt>*.sr</tt>, <tt>*.ras</tt>
* <li>TIFF files - <tt>*.tiff</tt>, <tt>*.tif</tt>
* </ul>
* <br>
* <li>Some tips on creating screenshots:
* <ul>
* <li>Use as distinct an image as possible in a screenshot. For example, the following images look very similar, but can do very different things:
* \image html print-printbutton1.png
* <br>
* \image html print-helpbutton.png
* <ul>
* <li>The large amount of grey-space in each of the images can be very confusing. While the text itself is different, the overwhelming amount of grey space can result in a false positive. Limiting the space of the screenshot can be useful:
* \image html print-printbutton2.png
* <br>
* \image html print-helpbutton.png
* <li>Limiting the button size in this case helps the program identify what button you want to click, but in general you want to include as much detail as possible.
* </ul>
* <br>
* <li>Be careful of where an image may appear multiple times in a screenshot. For example, a "Help" button on a dialog may get confused with the "Help" menu at the top of the screen.
* </ul>
*
* \subsection testing_wrapper Create a Testing Wrapper
* <ul>
* <li>This is where the BASH knowledge comes into play. We are going to write a script that will run your application test, to make sure that the GUI is functioning correctly.
* <li>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:
* \code
* #!/bin/bash
* #This is an application test involving libcvautomation and libreoffice
* . /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"
* 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
* sleep 30
* }
*
* close_libreoffice_writer()
* {
* 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
* close_libreoffice_writer
* \endcode
* <br>
* \code
* #!/bin/bash
* #This is an application test involving libcvautomation and libreoffice
* . /etc/libcvautomation_funcs
* set -o errexit
*
* #Changing any wrapper parameters should go here
* \endcode
* <li>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 <tt>locate libcvautomation_funcs</tt> to find it on your computer. The wrapper itself is a handful of macros used to make our job easy.
* <li>The \c set line will abort the test if an error is ever encountered - for example, no images are found.
* <li>Changing any wrapper parameters should go after sourcing the wrapper functions. See \ref appendix_variables for more information.
* <br><br>
* \code
* start_libreoffice_writer ()
* {
* 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
* sleep 30
* }
* \endcode
* <li>This is the actual body of work done by libcvautomation
* <li>\c click_i is a function to click the mouse at an image - in this case, the gnome or kde menu.
* <ul>
* <li>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 \ref wrapper_functions for more information on how to use this (\c TOLERANCE specifically)
* <li>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 \c TIMEOUT option to learn how to use this.
* <li>By using the function \c click_i, we make things a bit more readable - the full command line is <tt>cva-input -s 'icmouseclick <filename>'</tt>
* <li>See the \ref wrapper_functions for a list of all functions available in the wrapper.
* </ul>
* <li>\c hover_i is a function to move the mouse to an image - in this case, move it over the LibreOffice menu item.
* <li>Then we jiggle the mouse to make sure that the item activates, click, and wait for the program to start up.
* <br><br>
* \code
* close_libreoffice_writer()
* {
* 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"
* }
* \endcode
* <li>Use the \c click_i function to close down LibreOffice writer - Find the "File" menu, click "Exit", and then make sure to discard all changes.
* <br><br>
* \code
* start_libreoffice_writer
* close_libreoffice_writer
* \endcode
* <li>Actually run the functions given.
* <br><br>
* <li>Please note that this is a fairly trivial example. The full list of commands available in the wrapper is given in \ref wrapper_functions
* </ul>
*
* \subsection testing_test_wrapper Testing the Testing Wrapper
* <ul>
* <li>First things first, run through the testing wrapper to make sure that everything is O.K.
* <li>If you need to, there are a few environment variables you can set to change how the wrapper works. See \ref appendix_variables for more information on how these work.
* <li>A full list of commands provided by the wrapper is available at \ref appendix_functions
* </ul>
*
* \note These options are controlled using the testing script as demonstrated above. Any modifications to the following values should be done at the line: \code #Changing any wrapper parameters should go here \endcode
* </ul>
* \section wrapping_up Wrapping Up
* <ul>
* <li>At this point you should have all the information you need to write your own application tests. The libcvautomation library and reference programs were designed to be simple and powerful, but if you invest the time to learn them and some expert BASH scripting, you can do some very complex things.
* <ul>
* <li>For example, integrating a <a href="http://testanything.org/wiki/index.php/Tap-functions">Test Anything Protocol</a> wrapper into your scripts as well.
* </ul>
* <li>If you have questions, comments, concerns, suggestions, or feedback in general, feel free to let me know at <a href="mailto:bspeice@uncc.edu">bspeice@uncc.edu</a>.
* </ul>
*/
/** \page wrapper_functions Appendix of Wrapper Functions and Environment Variables
* \section appendix_variables Environment Variables
* \subsection appendix_search Search Method
* \code SEARCH_METHOD \endcode
* This controls how each of the functions searches for an image. See \ref libcvautomation_search_methods for more instruction on how to use this option.
*
* \subsection appendix_tolerance Tolerance
* \code TOLERANCE
* USE_SANE_TOLERANCE \endcode
* These control how tolerant each function is when searching for an image. Acceptable values are anywhere between \c INT_MIN to \c INT_MAX. See \ref libcvautomation_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: \f$ 1 \approx 0 \f$, and \f$ 100 \approx INT\_MAX \f$
* By default, functions will not use sane tolerance. To make the functions search using sane tolerance, set \code USE_SANE_TOLERANCE="yes" \endcode
*
* \subsection appendix_center Center
* \code USE_CENTER \endcode
* 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 \code USE_CENTER="" \endcode
*
* \subsection appendix_wait Wait
* \code USE_WAIT
* TIMEOUT \endcode
* 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 \c TIMEOUT seconds before complaining.
* To disable waiting before performing an action, set \code USE_WAIT="" \endcode
* \warning Without setting a tolerance value, the waitfor function becomes totally useless, as the first search will always find an image. <tt>Make sure to set the tolerance</tt> (or just leave it as the default value in the wrapper).
*
* \subsection appendix_output Output and Debugging
* \code OUTFILE
* ERRFILE \endcode
* 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:
* \code OUTFILE=`mktemp`; echo "Logfile: " $OUTFILE
* ERRFILE=`mktemp`; echo "Error file: " $ERR_FILE \endcode
* This will redirect the output and error output to a file you own, and inform you of what that file is.
*
* \section appendix_functions Functions
* \subsection appendix_click Click the mouse
* \code click \endcode
* Click the mouse where it is currently located
* <br><br>
*
* \code click_xy <x-coordinate> <y-coordinate> \endcode
* Click the mouse on an absolute point on screen
* \note The actual process is to move the mouse to the given location, then click there.
* <br><br>
*
* \code clickr_xy <x-increment> <y-increment> \endcode
* Click the mouse on the screen relative to where the mouse is at
* \note The actual process is to move the mouse the given distance, then click there.
* \note Also, note that a positive \c x-increment moves the mouse to the right, and a positive \c y-increment moves the mouse down.
* <br><br>
*
* \code click_i <filename> \endcode
* Click the mouse on a screenshot from \c filename
* \note This is affected by the \c CENTER, \c TOLERANCE, and \c SEARCH_METHOD variables. See \ref appendix_variables for more information on these.
* <br><br>
*
* \subsection appendix_move Move the mouse
* \code hover_xy <x-coordinate> <y-increment> \endcode
* Move the mouse to a location on screen using absolute positioning
* <br><br>
*
* \code hoverr_xy <x-increment> <y-increment> \endcode
* Move the mouse to a location on screen using relative positioning
* \note Note that a positive \c x-increment moves the mouse to the right, and a positive \c y-increment moves the mouse down.
* <br><br>
*
* \code hover_i <filename> \endcode
* Move the mouse to a location on screen based on screenshot
* \note This is affected by the \c CENTER, \c TOLERANCE, and \c SEARCH_METHOD variables. See \ref appendix_variables for more information on these.
* <br><br>
*
* \code mouse_scrollu \endcode
* Scroll the mouse wheel up one
*
* \code mouse_scrolld \endcode
* Scroll the mouse wheel down one
*
* \subsection appendix_find Find an Image
* \code image_location <filename> \endcode
* Get the location of an image on screen
* \note This is affected by the \c CENTER, \c TOLERANCE, and \c SEARCH_METHOD variables. See \ref appendix_variables for more information on these.
* <br><br>
*
* \code waitfor <filename> \endcode
* Wait for an image to display on screen
* \note This is affected by the \c TOLERANCE, \c SEARCH_METHOD, and \c TIMEOUT variables. See \ref appendix_variables for more information on these.
*
* \subsection appendix_keyboard Click the keyboard
* \code key_str "<string>" \endcode
* Enter a string of characters on the keyboard rather than a single character at a time.
* \warning This function <b>does not</b> accept key strings like "Space" as \c key_down, \c key_up, and \c key_click do. If you pass in "Space", that is exactly what will be typed.
* <br><br>
*
* \code key_down "<key-name>" \endcode
* Press a key down and leave it down
* \note This function accepts special keys like "Space" - see \ref xtest_key_strings for a full list of characters allowed.
* <br><br>
*
* \code key_up "<key-name>" \endcode
* Release a key
* \note This function accepts special keys like "Space" - see \ref xtest_key_strings for a full list of characters allowed.
* <br><br>
*
* \code key_click "<key-name>" \endcode
* Press a key down and then release it immediately after
* \note This function accepts special keys like "Space" - see \ref xtest_key_strings for a full list of characters allowed.
* <br><br>
*
* \subsection appendix_utilities Useful extras
* \code run_process "<process-name>" \endcode
* Start a process on the system, background it, and return the PID of the created process.
* <br><br>
*
* \code is_running "<process-name>" \endcode
* \code is_running "<process-id>" \endcode
* Check if a program name or PID is currently running
*
* \code notify "<string_to_display>" \endcode
* Display a notification to the user, and wait for a response
* \warning Uses \c zenity - if \c zenity isn't available, will return an error without pausing, and will not display anything.
*/
/** \def LIBCVAUTOMATION_VERSION
* \brief Define what version of Libcvautomation we are using
* \details This define provides access to what version of Libcvautomation we're using. All times that you need to know what it is should use this.
*/
/** \def LIBCVAUTOMATION_BUGREPORT
* \brief Define who to send bug reports to for Libcvautomation
* \details This define provides access to who should be emailed in case of a Libcvautomation bug. All times that you need to know what it is should use this.*/
/** \struct cvautomationList
* \brief Implements a structure to build an array for methods like matchSubImage_a()
* \details This structure is a simple way to wrap up all needed information for matching sub images in one location.
* \param cvaImage An image in IplImage format
* \param fileName The file location of an image to be loaded
* \param resultPoint Holder for a result - for example, storing where this sub image was located in its root image
* \param searchMethod The search method to use when searching for this sub image in a root image
* \param tolerance The tolerance to use when searching for this sub image in a root image
* \see \ref libcvautomation_search_methods
*/
/** \struct cvaPoint
* \brief Very simple structure to standardize how points are used in libcvautomation
* \param x An X-coordinate
* \param y A Y-coordinate */

519
install-sh Executable file
View File

@ -0,0 +1,519 @@
#!/bin/sh
# install - install a program, script, or datafile
scriptversion=2006-12-25.00
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
# following copyright and license.
#
# Copyright (C) 1994 X Consortium
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
# Except as contained in this notice, the name of the X Consortium shall not
# be used in advertising or otherwise to promote the sale, use or other deal-
# ings in this Software without prior written authorization from the X Consor-
# tium.
#
#
# FSF changes to this file are in the public domain.
#
# Calling this script install-sh is preferred over install.sh, to prevent
# `make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
# from scratch.
nl='
'
IFS=" "" $nl"
# set DOITPROG to echo to test this script
# Don't use :- since 4.3BSD and earlier shells don't like it.
doit=${DOITPROG-}
if test -z "$doit"; then
doit_exec=exec
else
doit_exec=$doit
fi
# Put in absolute file names if you don't have them in your path;
# or use environment vars.
chgrpprog=${CHGRPPROG-chgrp}
chmodprog=${CHMODPROG-chmod}
chownprog=${CHOWNPROG-chown}
cmpprog=${CMPPROG-cmp}
cpprog=${CPPROG-cp}
mkdirprog=${MKDIRPROG-mkdir}
mvprog=${MVPROG-mv}
rmprog=${RMPROG-rm}
stripprog=${STRIPPROG-strip}
posix_glob='?'
initialize_posix_glob='
test "$posix_glob" != "?" || {
if (set -f) 2>/dev/null; then
posix_glob=
else
posix_glob=:
fi
}
'
posix_mkdir=
# Desired mode of installed file.
mode=0755
chgrpcmd=
chmodcmd=$chmodprog
chowncmd=
mvcmd=$mvprog
rmcmd="$rmprog -f"
stripcmd=
src=
dst=
dir_arg=
dst_arg=
copy_on_change=false
no_target_directory=
usage="\
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
or: $0 [OPTION]... SRCFILES... DIRECTORY
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
or: $0 [OPTION]... -d DIRECTORIES...
In the 1st form, copy SRCFILE to DSTFILE.
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
In the 4th, create DIRECTORIES.
Options:
--help display this help and exit.
--version display version info and exit.
-c (ignored)
-C install only if different (preserve the last data modification time)
-d create directories instead of installing files.
-g GROUP $chgrpprog installed files to GROUP.
-m MODE $chmodprog installed files to MODE.
-o USER $chownprog installed files to USER.
-s $stripprog installed files.
-t DIRECTORY install into DIRECTORY.
-T report an error if DSTFILE is a directory.
Environment variables override the default commands:
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
RMPROG STRIPPROG
"
while test $# -ne 0; do
case $1 in
-c) ;;
-C) copy_on_change=true;;
-d) dir_arg=true;;
-g) chgrpcmd="$chgrpprog $2"
shift;;
--help) echo "$usage"; exit $?;;
-m) mode=$2
case $mode in
*' '* | *' '* | *'
'* | *'*'* | *'?'* | *'['*)
echo "$0: invalid mode: $mode" >&2
exit 1;;
esac
shift;;
-o) chowncmd="$chownprog $2"
shift;;
-s) stripcmd=$stripprog;;
-t) dst_arg=$2
shift;;
-T) no_target_directory=true;;
--version) echo "$0 $scriptversion"; exit $?;;
--) shift
break;;
-*) echo "$0: invalid option: $1" >&2
exit 1;;
*) break;;
esac
shift
done
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
# When -d is used, all remaining arguments are directories to create.
# When -t is used, the destination is already specified.
# Otherwise, the last argument is the destination. Remove it from $@.
for arg
do
if test -n "$dst_arg"; then
# $@ is not empty: it contains at least $arg.
set fnord "$@" "$dst_arg"
shift # fnord
fi
shift # arg
dst_arg=$arg
done
fi
if test $# -eq 0; then
if test -z "$dir_arg"; then
echo "$0: no input file specified." >&2
exit 1
fi
# It's OK to call `install-sh -d' without argument.
# This can happen when creating conditional directories.
exit 0
fi
if test -z "$dir_arg"; then
trap '(exit $?); exit' 1 2 13 15
# Set umask so as not to create temps with too-generous modes.
# However, 'strip' requires both read and write access to temps.
case $mode in
# Optimize common cases.
*644) cp_umask=133;;
*755) cp_umask=22;;
*[0-7])
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw='% 200'
fi
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
*)
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw=,u+rw
fi
cp_umask=$mode$u_plus_rw;;
esac
fi
for src
do
# Protect names starting with `-'.
case $src in
-*) src=./$src;;
esac
if test -n "$dir_arg"; then
dst=$src
dstdir=$dst
test -d "$dstdir"
dstdir_status=$?
else
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
if test ! -f "$src" && test ! -d "$src"; then
echo "$0: $src does not exist." >&2
exit 1
fi
if test -z "$dst_arg"; then
echo "$0: no destination specified." >&2
exit 1
fi
dst=$dst_arg
# Protect names starting with `-'.
case $dst in
-*) dst=./$dst;;
esac
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
if test -d "$dst"; then
if test -n "$no_target_directory"; then
echo "$0: $dst_arg: Is a directory" >&2
exit 1
fi
dstdir=$dst
dst=$dstdir/`basename "$src"`
dstdir_status=0
else
# Prefer dirname, but fall back on a substitute if dirname fails.
dstdir=`
(dirname "$dst") 2>/dev/null ||
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$dst" : 'X\(//\)[^/]' \| \
X"$dst" : 'X\(//\)$' \| \
X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
echo X"$dst" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
}
/^X\(\/\/\)[^/].*/{
s//\1/
q
}
/^X\(\/\/\)$/{
s//\1/
q
}
/^X\(\/\).*/{
s//\1/
q
}
s/.*/./; q'
`
test -d "$dstdir"
dstdir_status=$?
fi
fi
obsolete_mkdir_used=false
if test $dstdir_status != 0; then
case $posix_mkdir in
'')
# Create intermediate dirs using mode 755 as modified by the umask.
# This is like FreeBSD 'install' as of 1997-10-28.
umask=`umask`
case $stripcmd.$umask in
# Optimize common cases.
*[2367][2367]) mkdir_umask=$umask;;
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
*[0-7])
mkdir_umask=`expr $umask + 22 \
- $umask % 100 % 40 + $umask % 20 \
- $umask % 10 % 4 + $umask % 2
`;;
*) mkdir_umask=$umask,go-w;;
esac
# With -d, create the new directory with the user-specified mode.
# Otherwise, rely on $mkdir_umask.
if test -n "$dir_arg"; then
mkdir_mode=-m$mode
else
mkdir_mode=
fi
posix_mkdir=false
case $umask in
*[123567][0-7][0-7])
# POSIX mkdir -p sets u+wx bits regardless of umask, which
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
;;
*)
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
if (umask $mkdir_umask &&
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
then
if test -z "$dir_arg" || {
# Check for POSIX incompatibilities with -m.
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
# other-writeable bit of parent directory when it shouldn't.
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
ls_ld_tmpdir=`ls -ld "$tmpdir"`
case $ls_ld_tmpdir in
d????-?r-*) different_mode=700;;
d????-?--*) different_mode=755;;
*) false;;
esac &&
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
}
}
then posix_mkdir=:
fi
rmdir "$tmpdir/d" "$tmpdir"
else
# Remove any dirs left behind by ancient mkdir implementations.
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
fi
trap '' 0;;
esac;;
esac
if
$posix_mkdir && (
umask $mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
)
then :
else
# The umask is ridiculous, or mkdir does not conform to POSIX,
# or it failed possibly due to a race condition. Create the
# directory the slow way, step by step, checking for races as we go.
case $dstdir in
/*) prefix='/';;
-*) prefix='./';;
*) prefix='';;
esac
eval "$initialize_posix_glob"
oIFS=$IFS
IFS=/
$posix_glob set -f
set fnord $dstdir
shift
$posix_glob set +f
IFS=$oIFS
prefixes=
for d
do
test -z "$d" && continue
prefix=$prefix$d
if test -d "$prefix"; then
prefixes=
else
if $posix_mkdir; then
(umask=$mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
# Don't fail if two instances are running concurrently.
test -d "$prefix" || exit 1
else
case $prefix in
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
*) qprefix=$prefix;;
esac
prefixes="$prefixes '$qprefix'"
fi
fi
prefix=$prefix/
done
if test -n "$prefixes"; then
# Don't fail if two instances are running concurrently.
(umask $mkdir_umask &&
eval "\$doit_exec \$mkdirprog $prefixes") ||
test -d "$dstdir" || exit 1
obsolete_mkdir_used=true
fi
fi
fi
if test -n "$dir_arg"; then
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
else
# Make a couple of temp file names in the proper directory.
dsttmp=$dstdir/_inst.$$_
rmtmp=$dstdir/_rm.$$_
# Trap to clean up those temp files at exit.
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
# Copy the file name to the temp name.
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
# and set any options; do chmod last to preserve setuid bits.
#
# If any of these fail, we abort the whole thing. If we want to
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $cpprog $src $dsttmp" command.
#
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
{ test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
{ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
# If -C, don't bother to copy if it wouldn't change the file.
if $copy_on_change &&
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
eval "$initialize_posix_glob" &&
$posix_glob set -f &&
set X $old && old=:$2:$4:$5:$6 &&
set X $new && new=:$2:$4:$5:$6 &&
$posix_glob set +f &&
test "$old" = "$new" &&
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
then
rm -f "$dsttmp"
else
# Rename the file to the real destination.
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
# The rename failed, perhaps because mv can't rename something else
# to itself, or perhaps because mv is so ancient that it does not
# support -f.
{
# Now remove or move aside any old file at destination location.
# We try this two ways since rm can't unlink itself on some
# systems and the destination file might be busy for other
# reasons. In this case, the final cleanup might fail but the new
# file should still install successfully.
{
test ! -f "$dst" ||
$doit $rmcmd -f "$dst" 2>/dev/null ||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
} ||
{ echo "$0: cannot unlink or rename $dst" >&2
(exit 1); exit 1
}
} &&
# Now rename the file to the real destination.
$doit $mvcmd "$dsttmp" "$dst"
}
fi || exit 1
trap '' 0
fi
done
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-end: "$"
# End:

540
libcvautomation/Makefile.in Normal file
View File

@ -0,0 +1,540 @@
# Makefile.in generated by automake 1.10.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = libcvautomation
DIST_COMMON = $(pkginclude_HEADERS) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_CLEAN_FILES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgincludedir)"
libLTLIBRARIES_INSTALL = $(INSTALL)
LTLIBRARIES = $(lib_LTLIBRARIES)
libcvautomation_la_DEPENDENCIES =
am_libcvautomation_la_OBJECTS = \
libcvautomation_la-libcvautomation-opencv.lo \
libcvautomation_la-libcvautomation-xlib.lo \
libcvautomation_la-libcvautomation-xtest.lo
libcvautomation_la_OBJECTS = $(am_libcvautomation_la_OBJECTS)
libcvautomation_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) \
$(libcvautomation_la_CFLAGS) $(CFLAGS) \
$(libcvautomation_la_LDFLAGS) $(LDFLAGS) -o $@
DEFAULT_INCLUDES = -I.@am__isrc@
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
$(LDFLAGS) -o $@
SOURCES = $(libcvautomation_la_SOURCES)
DIST_SOURCES = $(libcvautomation_la_SOURCES)
pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER)
HEADERS = $(pkginclude_HEADERS)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CV_CFLAGS = @CV_CFLAGS@
CV_LIBS = @CV_LIBS@
CV_VERSION = @CV_VERSION@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
Doxygen = @Doxygen@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLE_MAN = @ENABLE_MAN@
ENABLE_TEX = @ENABLE_TEX@
EXEEXT = @EXEEXT@
F77 = @F77@
FFLAGS = @FFLAGS@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIBTOOL_VERSION = @LIBTOOL_VERSION@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
OBJEXT = @OBJEXT@
OpenCV_CFLAGS = @OpenCV_CFLAGS@
OpenCV_LIBS = @OpenCV_LIBS@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
XMKMF = @XMKMF@
XTEST_CFLAGS = @XTEST_CFLAGS@
XTEST_LIBS = @XTEST_LIBS@
XTest_CFLAGS = @XTest_CFLAGS@
XTest_LIBS = @XTest_LIBS@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AM_CFLAGS =
AM_LDFLAGS =
AM_LIBS = -shared
#Lists the libraries to build
lib_LTLIBRARIES = libcvautomation.la
libcvautomation_la_SOURCES = libcvautomation-opencv.c libcvautomation-xlib.c libcvautomation-xtest.c
libcvautomation_la_LDFLAGS = -version-info @LIBTOOL_VERSION@
libcvautomation_la_LIBADD = @X11_LIBS@ @XTEST_LIBS@ @CV_LIBS@
libcvautomation_la_CFLAGS = -Wall -Werror -O2 -I$(top_srcdir)/include @X11_CFLAGS@ @XTEST_CFLAGS@ @CV_CFLAGS@
#Lists the headers to distribute
pkginclude_HEADERS = $(top_srcdir)/include/libcvautomation/libcvautomation.h $(top_srcdir)/include/libcvautomation/libcvautomation-opencv.h $(top_srcdir)/include/libcvautomation/libcvautomation-xlib.h $(top_srcdir)/include/libcvautomation/libcvautomation-xtest.h $(top_srcdir)/include/libcvautomation/xautomation_kbd.h $(top_srcdir)/include/libcvautomation/xautomation_keysym_map.h $(top_srcdir)/include/libcvautomation/xautomation_multikey_map.h
all: all-am
.SUFFIXES:
.SUFFIXES: .c .lo .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libcvautomation/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu libcvautomation/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
@$(NORMAL_INSTALL)
test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
if test -f $$p; then \
f=$(am__strip_dir) \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
else :; fi; \
done
uninstall-libLTLIBRARIES:
@$(NORMAL_UNINSTALL)
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
p=$(am__strip_dir) \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
done
clean-libLTLIBRARIES:
-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
test "$$dir" != "$$p" || dir=.; \
echo "rm -f \"$${dir}/so_locations\""; \
rm -f "$${dir}/so_locations"; \
done
libcvautomation.la: $(libcvautomation_la_OBJECTS) $(libcvautomation_la_DEPENDENCIES)
$(libcvautomation_la_LINK) -rpath $(libdir) $(libcvautomation_la_OBJECTS) $(libcvautomation_la_LIBADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcvautomation_la-libcvautomation-opencv.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcvautomation_la-libcvautomation-xlib.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcvautomation_la-libcvautomation-xtest.Plo@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
.c.obj:
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
.c.lo:
@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
libcvautomation_la-libcvautomation-opencv.lo: libcvautomation-opencv.c
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcvautomation_la_CFLAGS) $(CFLAGS) -MT libcvautomation_la-libcvautomation-opencv.lo -MD -MP -MF $(DEPDIR)/libcvautomation_la-libcvautomation-opencv.Tpo -c -o libcvautomation_la-libcvautomation-opencv.lo `test -f 'libcvautomation-opencv.c' || echo '$(srcdir)/'`libcvautomation-opencv.c
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libcvautomation_la-libcvautomation-opencv.Tpo $(DEPDIR)/libcvautomation_la-libcvautomation-opencv.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libcvautomation-opencv.c' object='libcvautomation_la-libcvautomation-opencv.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcvautomation_la_CFLAGS) $(CFLAGS) -c -o libcvautomation_la-libcvautomation-opencv.lo `test -f 'libcvautomation-opencv.c' || echo '$(srcdir)/'`libcvautomation-opencv.c
libcvautomation_la-libcvautomation-xlib.lo: libcvautomation-xlib.c
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcvautomation_la_CFLAGS) $(CFLAGS) -MT libcvautomation_la-libcvautomation-xlib.lo -MD -MP -MF $(DEPDIR)/libcvautomation_la-libcvautomation-xlib.Tpo -c -o libcvautomation_la-libcvautomation-xlib.lo `test -f 'libcvautomation-xlib.c' || echo '$(srcdir)/'`libcvautomation-xlib.c
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libcvautomation_la-libcvautomation-xlib.Tpo $(DEPDIR)/libcvautomation_la-libcvautomation-xlib.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libcvautomation-xlib.c' object='libcvautomation_la-libcvautomation-xlib.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcvautomation_la_CFLAGS) $(CFLAGS) -c -o libcvautomation_la-libcvautomation-xlib.lo `test -f 'libcvautomation-xlib.c' || echo '$(srcdir)/'`libcvautomation-xlib.c
libcvautomation_la-libcvautomation-xtest.lo: libcvautomation-xtest.c
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcvautomation_la_CFLAGS) $(CFLAGS) -MT libcvautomation_la-libcvautomation-xtest.lo -MD -MP -MF $(DEPDIR)/libcvautomation_la-libcvautomation-xtest.Tpo -c -o libcvautomation_la-libcvautomation-xtest.lo `test -f 'libcvautomation-xtest.c' || echo '$(srcdir)/'`libcvautomation-xtest.c
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libcvautomation_la-libcvautomation-xtest.Tpo $(DEPDIR)/libcvautomation_la-libcvautomation-xtest.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libcvautomation-xtest.c' object='libcvautomation_la-libcvautomation-xtest.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcvautomation_la_CFLAGS) $(CFLAGS) -c -o libcvautomation_la-libcvautomation-xtest.lo `test -f 'libcvautomation-xtest.c' || echo '$(srcdir)/'`libcvautomation-xtest.c
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
install-pkgincludeHEADERS: $(pkginclude_HEADERS)
@$(NORMAL_INSTALL)
test -z "$(pkgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)"
@list='$(pkginclude_HEADERS)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f=$(am__strip_dir) \
echo " $(pkgincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgincludedir)/$$f'"; \
$(pkgincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgincludedir)/$$f"; \
done
uninstall-pkgincludeHEADERS:
@$(NORMAL_UNINSTALL)
@list='$(pkginclude_HEADERS)'; for p in $$list; do \
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(pkgincludedir)/$$f'"; \
rm -f "$(DESTDIR)$(pkgincludedir)/$$f"; \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(LTLIBRARIES) $(HEADERS)
installdirs:
for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgincludedir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
info: info-am
info-am:
install-data-am: install-pkgincludeHEADERS
install-dvi: install-dvi-am
install-exec-am: install-libLTLIBRARIES
install-html: install-html-am
install-info: install-info-am
install-man:
install-pdf: install-pdf-am
install-ps: install-ps-am
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-libLTLIBRARIES uninstall-pkgincludeHEADERS
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
clean-libLTLIBRARIES clean-libtool ctags distclean \
distclean-compile distclean-generic distclean-libtool \
distclean-tags distdir dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am \
install-libLTLIBRARIES install-man install-pdf install-pdf-am \
install-pkgincludeHEADERS install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
pdf pdf-am ps ps-am tags uninstall uninstall-am \
uninstall-libLTLIBRARIES uninstall-pkgincludeHEADERS
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

6911
ltmain.sh Normal file

File diff suppressed because it is too large Load Diff

367
missing Executable file
View File

@ -0,0 +1,367 @@
#! /bin/sh
# Common stub for a few missing GNU programs while installing.
scriptversion=2006-05-10.23
# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
# Free Software Foundation, Inc.
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
if test $# -eq 0; then
echo 1>&2 "Try \`$0 --help' for more information"
exit 1
fi
run=:
sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
# In the cases where this matters, `missing' is being run in the
# srcdir already.
if test -f configure.ac; then
configure_ac=configure.ac
else
configure_ac=configure.in
fi
msg="missing on your system"
case $1 in
--run)
# Try to run requested program, and just exit if it succeeds.
run=
shift
"$@" && exit 0
# Exit code 63 means version mismatch. This often happens
# when the user try to use an ancient version of a tool on
# a file that requires a minimum version. In this case we
# we should proceed has if the program had been absent, or
# if --run hadn't been passed.
if test $? = 63; then
run=:
msg="probably too old"
fi
;;
-h|--h|--he|--hel|--help)
echo "\
$0 [OPTION]... PROGRAM [ARGUMENT]...
Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
error status if there is no known handling for PROGRAM.
Options:
-h, --help display this help and exit
-v, --version output version information and exit
--run try to run the given command, and emulate it if it fails
Supported PROGRAM values:
aclocal touch file \`aclocal.m4'
autoconf touch file \`configure'
autoheader touch file \`config.h.in'
autom4te touch the output file, or create a stub one
automake touch all \`Makefile.in' files
bison create \`y.tab.[ch]', if possible, from existing .[ch]
flex create \`lex.yy.c', if possible, from existing .c
help2man touch the output file
lex create \`lex.yy.c', if possible, from existing .c
makeinfo touch the output file
tar try tar, gnutar, gtar, then tar without non-portable flags
yacc create \`y.tab.[ch]', if possible, from existing .[ch]
Send bug reports to <bug-automake@gnu.org>."
exit $?
;;
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
echo "missing $scriptversion (GNU Automake)"
exit $?
;;
-*)
echo 1>&2 "$0: Unknown \`$1' option"
echo 1>&2 "Try \`$0 --help' for more information"
exit 1
;;
esac
# Now exit if we have it, but it failed. Also exit now if we
# don't have it and --version was passed (most likely to detect
# the program).
case $1 in
lex|yacc)
# Not GNU programs, they don't have --version.
;;
tar)
if test -n "$run"; then
echo 1>&2 "ERROR: \`tar' requires --run"
exit 1
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
exit 1
fi
;;
*)
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
# We have it, but it failed.
exit 1
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
# Could not run --version or --help. This is probably someone
# running `$TOOL --version' or `$TOOL --help' to check whether
# $TOOL exists and not knowing $TOOL uses missing.
exit 1
fi
;;
esac
# If it does not exist, or fails to run (possibly an outdated version),
# try to emulate it.
case $1 in
aclocal*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`acinclude.m4' or \`${configure_ac}'. You might want
to install the \`Automake' and \`Perl' packages. Grab them from
any GNU archive site."
touch aclocal.m4
;;
autoconf)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`${configure_ac}'. You might want to install the
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
archive site."
touch configure
;;
autoheader)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`acconfig.h' or \`${configure_ac}'. You might want
to install the \`Autoconf' and \`GNU m4' packages. Grab them
from any GNU archive site."
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
test -z "$files" && files="config.h"
touch_files=
for f in $files; do
case $f in
*:*) touch_files="$touch_files "`echo "$f" |
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
*) touch_files="$touch_files $f.in";;
esac
done
touch $touch_files
;;
automake*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
You might want to install the \`Automake' and \`Perl' packages.
Grab them from any GNU archive site."
find . -type f -name Makefile.am -print |
sed 's/\.am$/.in/' |
while read f; do touch "$f"; done
;;
autom4te)
echo 1>&2 "\
WARNING: \`$1' is needed, but is $msg.
You might have modified some files without having the
proper tools for further handling them.
You can get \`$1' as part of \`Autoconf' from any GNU
archive site."
file=`echo "$*" | sed -n "$sed_output"`
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -f "$file"; then
touch $file
else
test -z "$file" || exec >$file
echo "#! /bin/sh"
echo "# Created by GNU Automake missing as a replacement of"
echo "# $ $@"
echo "exit 0"
chmod +x $file
exit 1
fi
;;
bison|yacc)
echo 1>&2 "\
WARNING: \`$1' $msg. You should only need it if
you modified a \`.y' file. You may need the \`Bison' package
in order for those modifications to take effect. You can get
\`Bison' from any GNU archive site."
rm -f y.tab.c y.tab.h
if test $# -ne 1; then
eval LASTARG="\${$#}"
case $LASTARG in
*.y)
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
if test -f "$SRCFILE"; then
cp "$SRCFILE" y.tab.c
fi
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
if test -f "$SRCFILE"; then
cp "$SRCFILE" y.tab.h
fi
;;
esac
fi
if test ! -f y.tab.h; then
echo >y.tab.h
fi
if test ! -f y.tab.c; then
echo 'main() { return 0; }' >y.tab.c
fi
;;
lex|flex)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a \`.l' file. You may need the \`Flex' package
in order for those modifications to take effect. You can get
\`Flex' from any GNU archive site."
rm -f lex.yy.c
if test $# -ne 1; then
eval LASTARG="\${$#}"
case $LASTARG in
*.l)
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
if test -f "$SRCFILE"; then
cp "$SRCFILE" lex.yy.c
fi
;;
esac
fi
if test ! -f lex.yy.c; then
echo 'main() { return 0; }' >lex.yy.c
fi
;;
help2man)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a dependency of a manual page. You may need the
\`Help2man' package in order for those modifications to take
effect. You can get \`Help2man' from any GNU archive site."
file=`echo "$*" | sed -n "$sed_output"`
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -f "$file"; then
touch $file
else
test -z "$file" || exec >$file
echo ".ab help2man is required to generate this page"
exit 1
fi
;;
makeinfo)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a \`.texi' or \`.texinfo' file, or any other file
indirectly affecting the aspect of the manual. The spurious
call might also be the consequence of using a buggy \`make' (AIX,
DU, IRIX). You might want to install the \`Texinfo' package or
the \`GNU make' package. Grab either from any GNU archive site."
# The file to touch is that specified with -o ...
file=`echo "$*" | sed -n "$sed_output"`
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -z "$file"; then
# ... or it is the one specified with @setfilename ...
infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
file=`sed -n '
/^@setfilename/{
s/.* \([^ ]*\) *$/\1/
p
q
}' $infile`
# ... or it is derived from the source name (dir/f.texi becomes f.info)
test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
fi
# If the file does not exist, the user really needs makeinfo;
# let's fail without touching anything.
test -f $file || exit 1
touch $file
;;
tar)
shift
# We have already tried tar in the generic part.
# Look for gnutar/gtar before invocation to avoid ugly error
# messages.
if (gnutar --version > /dev/null 2>&1); then
gnutar "$@" && exit 0
fi
if (gtar --version > /dev/null 2>&1); then
gtar "$@" && exit 0
fi
firstarg="$1"
if shift; then
case $firstarg in
*o*)
firstarg=`echo "$firstarg" | sed s/o//`
tar "$firstarg" "$@" && exit 0
;;
esac
case $firstarg in
*h*)
firstarg=`echo "$firstarg" | sed s/h//`
tar "$firstarg" "$@" && exit 0
;;
esac
fi
echo 1>&2 "\
WARNING: I can't seem to be able to run \`tar' with the given arguments.
You may want to install GNU tar or Free paxutils, or check the
command line arguments."
exit 1
;;
*)
echo 1>&2 "\
WARNING: \`$1' is needed, and is $msg.
You might have modified some files without having the
proper tools for further handling them. Check the \`README' file,
it often tells you about the needed prerequisites for installing
this package. You may also peek at any GNU archive site, in case
some other package would contain this missing \`$1' program."
exit 1
;;
esac
exit 0
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-end: "$"
# End:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 706 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 678 B

View File

@ -1,36 +0,0 @@
#!/bin/bash -
#===============================================================================
#
# FILE: openCVLogo.sh
#
# USAGE: ./openCVLogo.sh
#
# DESCRIPTION: This is a test script to demonstrate libcvautomation
# We are going to find different sections of the OpenCV logo
# in itself.
#
# OPTIONS: ---
# REQUIREMENTS: ---
# BUGS: ---
# NOTES: ---
# AUTHOR: Bradlee Speice (), bspeice.nc@gmail.com
# ORGANIZATION:
# CREATED: 06/21/2012 03:45:19 PM EDT
# REVISION: ---
#===============================================================================
CVAMATCH=`which cva-match`
if [ ! -x "$CVA_MATCH" ]; then
echo "Could not find the cva-match binary! Can't continue..."
exit 255
fi
echo
echo "Finding the red circle in the OpenCV logo..."
echo "The red circle is located at: `$CVAMATCH -r opencvlogo.png -s redcircle.png -p ', ' | cut -d',' -f2-`"
echo "Finding the blue circle in the OpenCV logo..."
echo "The blue circle is located at: `$CVAMATCH -r opencvlogo.png -s bluecircle.png -p ', ' | cut -d',' -f2-`"
echo "Finding the green circle in the OpenCV logo..."
echo "The green circle is located at: `$CVAMATCH -r opencvlogo.png -s greencircle.png -p ', ' | cut -d',' -f2-`"
echo

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 731 B