Update to 2.0.0 tree from current Fremantle build
[opencv] / apps / cvcsdemo / cvcsdemo.cpp
diff --git a/apps/cvcsdemo/cvcsdemo.cpp b/apps/cvcsdemo/cvcsdemo.cpp
deleted file mode 100644 (file)
index 683b83a..0000000
+++ /dev/null
@@ -1,1059 +0,0 @@
-/*M///////////////////////////////////////////////////////////////////////////////////////
-//
-//  IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
-//
-//  By downloading, copying, installing or using the software you agree to this license.
-//  If you do not agree to this license, do not download, install,
-//  copy or use the software.
-//
-//
-//                        Intel License Agreement
-//                For Open Source Computer Vision Library
-//
-// Copyright (C) 2000, Intel Corporation, all rights reserved.
-// Third party copyrights are property of their respective owners.
-//
-// Redistribution and use in source and binary forms, with or without modification,
-// are permitted provided that the following conditions are met:
-//
-//   * Redistribution's of source code must retain the above copyright notice,
-//     this list of conditions and the following disclaimer.
-//
-//   * Redistribution's in binary form must reproduce the above copyright notice,
-//     this list of conditions and the following disclaimer in the documentation
-//     and/or other materials provided with the distribution.
-//
-//   * The name of Intel Corporation may not be used to endorse or promote products
-//     derived from this software without specific prior written permission.
-//
-// This software is provided by the copyright holders and contributors "as is" and
-// any express or implied warranties, including, but not limited to, the implied
-// warranties of merchantability and fitness for a particular purpose are disclaimed.
-// In no event shall the Intel Corporation or contributors be liable for any direct,
-// indirect, incidental, special, exemplary, or consequential damages
-// (including, but not limited to, procurement of substitute goods or services;
-// loss of use, data, or profits; or business interruption) however caused
-// and on any theory of liability, whether in contract, strict liability,
-// or tort (including negligence or otherwise) arising in any way out of
-// the use of this software, even if advised of the possibility of such damage.
-//
-//M*/
-
-#include <tcl.h>
-#include <tk.h>
-#include <stdlib.h>
-
-#ifndef WIN32
-#include <unistd.h>
-#endif
-
-#ifndef WIN32
-    #define Tk_GetHWND(id) id
-#else
-    extern "C"
-    {
-    int Tk_GetHWND(int win);
-    }
-#endif
-
-#if _MSC_VER >= 1200
-#pragma warning( disable: 4514 )
-#endif
-
-#include <math.h>
-#include <string.h>
-#include "cvcam.h"
-#include "csdemoview.h"
-
-#define SYSTEM_WIN_FROM_TK_WIN(tkwin) Tk_GetHWND(Tk_WindowId(tkwin))
-
-char cmd[300];
-
-void    MainEx(int argc, char ** /*argv*/, Tcl_AppInitProc *pfappInitProc, Tcl_Interp *pintrp,
-               char *pchfileName);
-int     Tcl_AppInit(Tcl_Interp *pintrp);
-void    WishPanic TCL_VARARGS_DEF(char *,arg1);
-void    Panic (Tcl_Interp * pintrp, const char * pch);
-
-CCsDemoView view;
-CvImage limage;
-bool g_created = false;
-bool g_pressed = false;
-bool g_paused = false;
-
-int camtype = -1;
-
-int X,Y;
-cvcamWindow mainwin;
-
-static char* module_path;
-CvPoint P;
-
-cvcamAVIFILE avifile = (cvcamAVIFILE)-1;
-
-
-///////////////////////////////////////////////////////////////////////////////
-static char* GetPathFromModuleName( char* modulename )
-{
-    int i;
-    if( !modulename )
-        return 0;
-#ifndef WIN32
-    /* if module is link find real path */
-    int  len;
-    char real[1000];
-    strcpy( real, modulename );
-    while( (len = readlink( real, real, 1000 )) > 0 )
-        real[len] = 0;
-    char* path = (char*)malloc( strlen( real ) + 10 );
-    strcpy( path, real );
-#else
-    char* path = (char*)malloc( strlen( modulename ) + 10 );
-    strcpy( path, modulename );
-#endif
-
-    for( i = strlen( path ) - 1;
-         i > 0 && path[i] != '\\' && path[i] != '/';
-         i-- );
-
-    if( i <= 0 )
-    {
-        path[0] = '.';
-        i = 1;
-    }
-
-    path[i] = '/';
-    path[i + 1] = 0;
-
-#ifdef WIN32
-    for( i = 0; i < (int)strlen( path ); i++ )
-        if( path[i] == '\\' )
-            path[i] = '/';
-#endif
-
-    return path;
-}
-
-//----------------------------------------------------------------------------
-
-void  CheckBackProject( CvImage* image )
-{
-    if( view.m_params.view == 1 )
-    {
-        IplImage* src = view.m_cCamShift.get_back_project();
-        if( src && src->imageData && image )
-        {
-            //iplGrayToColor( src, image, 0, 0, 0 );
-            cvCvtPlaneToPix( src, src, src, 0, image);
-        }
-    }
-    else if( view.m_params.view == 2 && view.m_track)
-    {
-        int i, dims = 0;
-        CvSize size;
-
-        view.m_cCamShift.get_hist_dims( &dims );
-        cvGetImageRawData( image, 0, 0, &size );
-
-        for( i = 0; i < dims; i++ )
-        {
-            int val = cvRound(view.m_cCamShift.query(&i));
-            CvPoint p[4];
-
-            p[0].x = p[1].x = i*size.width/(2*dims);
-            p[2].x = p[3].x = (i+1)*size.width/(2*dims);
-
-            p[1].y = p[2].y = 0;
-            p[0].y = p[3].y = (val*size.height)/(3*255);
-
-            cvFillConvexPoly( image, p, 4, CV_RGB(255,0,0));
-        }
-    }
-}
-
-
-void  DrawCross( CvImage* image )
-{
-    float cs = (float)cos( view.m_cCamShift.get_orientation() );
-    float sn = (float)sin( view.m_cCamShift.get_orientation() );
-
-    int x = view.m_object.x + view.m_object.width / 2;
-    int y = view.m_object.y + view.m_object.height / 2;
-
-    CvPoint p1 = {(int)(x + view.m_cCamShift.get_length() * cs / 2),
-        (int)(y + view.m_cCamShift.get_length() * sn / 2)};
-    CvPoint p2 = {(int)(x - view.m_cCamShift.get_length() * cs / 2),
-        (int)(y - view.m_cCamShift.get_length() * sn / 2)};
-    CvPoint p3 = {(int)(x + view.m_cCamShift.get_width() * sn / 2),
-        (int)(y - view.m_cCamShift.get_width() * cs / 2)};
-    CvPoint p4 = {(int)(x - view.m_cCamShift.get_width() * sn / 2),
-        (int)(y + view.m_cCamShift.get_width() * cs / 2)};
-    cvLine( image, p1, p2, CV_RGB(255,255,0) );
-    cvLine( image, p4, p3, CV_RGB(255,255,0) );
-}
-
-void  ApplyCamShift( CvImage* image, bool initialize )
-{
-    CvSize size;
-    int bins = view.m_params.bins;
-
-    view.m_cCamShift.set_hist_dims( 1, &bins );
-    view.m_cCamShift.set_hist_bin_range( 0, 1, 180 );
-    view.m_cCamShift.set_threshold( 0 );
-    view.m_cCamShift.set_min_ch_val( 1, view.m_params.Smin );
-    view.m_cCamShift.set_max_ch_val( 1, 255 );
-    view.m_cCamShift.set_min_ch_val( 2, view.m_params.Vmin );
-    view.m_cCamShift.set_max_ch_val( 2, view.m_params.Vmax );
-
-    cvGetImageRawData( image, 0, 0, &size );
-
-    if( view.m_object.x < 0 ) view.m_object.x = 0;
-    if( view.m_object.x > size.width - view.m_object.width - 1 )
-        view.m_object.x = MAX(0, size.width - view.m_object.width - 1);
-
-    if( view.m_object.y < 0 ) view.m_object.y = 0;
-    if( view.m_object.y > size.height - view.m_object.height - 1 )
-        view.m_object.y = MAX(0, size.height - view.m_object.height - 1);
-
-    if( view.m_object.width > size.width - view.m_object.x )
-        view.m_object.width = MIN(size.width, size.width - view.m_object.x);
-
-    if( view.m_object.height > size.height - view.m_object.y )
-        view.m_object.height = MIN(size.height, size.height - view.m_object.y);
-    view.m_cCamShift.set_window(view.m_object);
-
-    if( initialize )
-    {
-        view.m_cCamShift.reset_histogram();
-        view.m_cCamShift.update_histogram( image );
-    }
-
-    view.m_cCamShift.track_object( image );
-    view.m_object = view.m_cCamShift.get_window();
-}
-
-// Callback function ----------------------------------------------------------
-void testcallback(IplImage* img)
-{
-    CvSize imgsize = view.SetImgSize( img->width, img->height );
-    int stride = (imgsize.width * 3 + 3) & -4;
-
-    cvInitImageHeader( &limage, imgsize, IPL_DEPTH_8U, 3, IPL_ORIGIN_TL, 4 );
-    //cvSetImageData( &image, pData,stride );
-    cvSetImageData( &limage, img->imageData,stride );
-
-    if(view.m_track == false)
-    {
-        if(view.m_init == false)
-        {
-            CvPoint p1, p2;
-            // Draw box
-            p1.x = cvRound( imgsize.width * view.m_params.x );
-            p1.y = cvRound( imgsize.height * view.m_params.y );
-
-            p2.x = cvRound( imgsize.width * (view.m_params.x + view.m_params.width));
-            p2.y = cvRound( imgsize.height * (view.m_params.y + view.m_params.height));
-
-            CheckBackProject( &limage );
-            cvRectangle( &limage, p1, p2, -1, 1 );
-            cvCircle(&limage, p1, 1, CV_RGB(255,0,0), 1);
-
-            view.m_cCamShift.set_window(view.m_object);
-        }
-        else
-        {
-            view.m_object.x = cvRound( imgsize.width * view.m_params.x );
-            view.m_object.y = cvRound( imgsize.height * view.m_params.y );
-
-            view.m_object.width = cvRound( imgsize.width * view.m_params.width );
-            view.m_object.height = cvRound( imgsize.height * view.m_params.height );
-
-
-            if( view.m_object.x < 0 ) view.m_object.x = 0;
-            if( view.m_object.x > imgsize.width - view.m_object.width - 1 )
-                view.m_object.x = MAX(0, imgsize.width - view.m_object.width - 1);
-
-            if( view.m_object.y < 0 ) view.m_object.y = 0;
-            if( view.m_object.y > imgsize.height - view.m_object.height - 1 )
-                view.m_object.y = MAX(0, imgsize.height - view.m_object.height - 1);
-
-            if( view.m_object.width > imgsize.width - view.m_object.x )
-                view.m_object.width = MIN(imgsize.width, imgsize.width - view.m_object.x);
-
-            if( view.m_object.height > imgsize.height - view.m_object.y )
-                view.m_object.height = MIN(imgsize.height, imgsize.height - view.m_object.y);
-
-            view.m_cCamShift.set_window(view.m_object);
-
-            ApplyCamShift( &limage, true );
-            CheckBackProject( &limage );
-
-            view.m_track = true;
-        }
-    }
-    else
-    {
-        ApplyCamShift( &limage, false );
-        CheckBackProject( &limage );
-
-        DrawCross( &limage );
-
-        CvPoint p1, p2;
-        // Draw box
-        p1.x = cvRound( imgsize.width * view.m_params.x );
-        p1.y = cvRound( imgsize.height * view.m_params.y );
-
-        p2.x = cvRound( imgsize.width * (view.m_params.x + view.m_params.width));
-        p2.y = cvRound( imgsize.height * (view.m_params.y + view.m_params.height));
-
-        cvRectangle( &limage, p1, p2, CV_RGB(0,0,255), 1 );
-        cvCircle(&limage, p1, 1, CV_RGB(255,0,0), 1);
-    }
-}
-//-----------------------------------------------------------------------------
-
-/*
- *----------------------------------------------------------------------
- *
- * Commands routines.
- *
- * Results:
- *  TCL_OK - if sucsess, or TCL_ERROR
- *
- *----------------------------------------------------------------------
- */
-
-int Init_Camera (ClientData, Tcl_Interp *interp,
-                 int, char **)
-{
-    int ncameras, ret;
-    Tk_Window win;
-    char com[1000]="set dlg [Dialog .dlg -parent . -modal local -separator 1 -title   \"Choice of cameras\" \
-        -side bottom -anchor  s -default 0]";
-    CameraDescription cd;
-
-    ncameras = cvcamGetCamerasCount();
-
-    if (ncameras==0)
-    {
-        Tcl_Eval(interp,"tk_dialog .pattern {Error} { Cameras not found.} {} 0 OK");
-        return TCL_ERROR;
-    }
-
-
-    if (ncameras > 1)
-    {
-        ret = Tcl_Eval(interp,com);
-
-        strcpy(com,"$dlg add -name ok -width 5");
-        ret = Tcl_Eval(interp,com);
-
-        strcpy(com, "set top [$dlg getframe]");
-        ret = Tcl_Eval(interp,com);
-
-        strcpy(com, "label $top.lab1 -text \"Several cameras has found in your system. Choose one of them.\" \n\
-            pack $top.lab1 -side top -anchor nw" );
-        ret = Tcl_Eval(interp,com);
-
-        strcpy(com, "label $top.lab2 -text \"\" \n\
-            pack $top.lab2 -side top -anchor nw");
-        ret = Tcl_Eval(interp,com);
-
-        strcpy(com, "label $top.lab3 -text \"Cameras:\" \n\
-            pack $top.lab3 -side top -anchor nw");
-        ret = Tcl_Eval(interp,com);
-
-        strcpy(com, "ComboBox $top.cb -width 50 -height 4 -editable no -modifycmd CVCsDemo::Modify");
-        ret = Tcl_Eval(interp,com);
-
-        strcpy(com, "pack $top.cb -side top");
-        ret = Tcl_Eval(interp,com);
-
-        strcpy(com, "$top.cb configure -values {");
-        for (int i=0; i<ncameras; i++)
-        {
-            cvcamGetProperty(i, CVCAM_DESCRIPTION, (void*)&cd);
-            strcat(com,"\"");
-            strcat(com,cd.DeviceDescription);
-            strcat(com,"\" ");
-        }
-        strcat(com,"}");
-        ret = Tcl_Eval(interp, com);
-
-        strcpy(com,"$top.cb setvalue @0 \n CVCsDemo::Modify \n set ret [$dlg draw]");
-        ret = Tcl_Eval(interp, com);
-
-        strcpy(com,"destroy $dlg");
-        ret = Tcl_Eval(interp, com);
-
-        ret = Tcl_Eval(interp, "set tmp $CVCsDemo::cam");
-
-        avifile = atoi(interp->result);
-    }
-    else
-    {
-        avifile=0;
-    }
-
-    ret = Tcl_Eval(interp, "set f $CVCsDemo::curframe");
-
-    win = Tk_NameToWindow(interp, interp->result,
-        Tk_MainWindow(interp));
-
-    Tk_MapWindow(win);
-    int w = Tk_Width(win);
-    int h = Tk_Height(win);
-
-    mainwin = SYSTEM_WIN_FROM_TK_WIN(win);
-
-    cvcamSetProperty(avifile, CVCAM_PROP_ENABLE, CVCAMTRUE);
-    cvcamSetProperty(avifile, CVCAM_PROP_RENDER, CVCAMTRUE);
-    cvcamSetProperty(avifile, CVCAM_PROP_WINDOW,  &mainwin);
-    cvcamSetProperty(avifile, CVCAM_PROP_CALLBACK, (void*)testcallback);
-    cvcamSetProperty(avifile, CVCAM_RNDWIDTH, (void*)&w);
-    cvcamSetProperty(avifile, CVCAM_RNDHEIGHT, (void*)&h);
-    view.SetVwSize(w,h);
-
-    cvcamInit();
-    camtype = 1;
-    g_created = true;
-    cvcamGetProperty(avifile, CVCAM_DESCRIPTION, (void*)&cd);
-    sprintf(com,"set CVCsDemo::curcam \"%s\"",cd.DeviceDescription);
-    Tcl_Eval(interp, com);
-
-    return TCL_OK;
-}
-
-int Close_Camera (ClientData, Tcl_Interp * /*interp*/,
-                  int, char ** /*argv*/)
-{
-    view.m_start = false;
-    g_created = false;
-    cvcamExit();
-    camtype = -1;
-    avifile = (cvcamAVIFILE)-1;
-    return TCL_OK;
-}
-
-int Start_Camera (ClientData, Tcl_Interp * /*interp*/,
-                 int, char ** /*argv*/)
-{
-    view.m_start = true;
-
-    cvcamStart();
-    return TCL_OK;
-}
-
-int Stop_Camera (ClientData, Tcl_Interp * /*interp*/,
-                  int, char ** /*argv*/)
-{
-    view.m_start = false;
-
-    cvcamStop();
-    return TCL_OK;
-}
-#ifndef __WIN32
-#define __stdcall
-#endif
-
-unsigned __stdcall thread_main(void * data)
-{
-    CvSize sz;
-    sz = view.GetVwSize();
-    return cvcamPlayAVI(0,
-                        data,
-                        sz.width,
-                        sz.height,
-                        (void*)testcallback);
-}
-
-int Init_Avi (ClientData, Tcl_Interp *interp,
-                 int, char ** /*argv*/)
-{
-    int ret;
-    Tk_Window win;
-
-    char * val = Tcl_GetVar(interp, "CVCsDemo::pagesnum", TCL_GLOBAL_ONLY);
-
-    if ( *val != '0' )
-    {
-        Tcl_Eval(interp, "tk_dialog .mes {Message} { CVCsDemo support only one tracker.} {} 0 OK");
-        return TCL_OK;
-    }
-
-    avifile = cvcamAVIOpenFile(NULL);
-    if (avifile == -1)
-    {
-        Tcl_Eval( interp, "tk_dialog .mes {Error} { Can't open file.} {} 0 OK");
-        return TCL_OK;
-    }
-
-    char com_ok[] = "incr CVCsDemo::pagescount \n"
-                    "incr CVCsDemo::pagesnum\n"
-                    "set CVCsDemo::avistate \"1\" \n"
-                    "CVCsDemo::longmenu 1 \n"
-                    "CVCsDemo::longbar 1 \n"
-                    "CVCsDemo::longstbar 1 \n"
-                    "set CVCsDemo::curpage p[expr $CVCsDemo::pagescount] \n"
-                    "lappend CVCsDemo::pages $CVCsDemo::curpage \n"
-                    "lappend CVCsDemo::cams \"AVI\" \n"
-                    "set text [format \"AVI %i\" $CVCsDemo::pagescount] \n"
-                    "CVCsDemo::createtab $CVCsDemo::curpage $text \n"
-                    "$CVCsDemo::nb see [$CVCsDemo::nb pages end] \n"
-                    "$CVCsDemo::nb raise [$CVCsDemo::nb pages end] \n"
-                    "update \n"
-                    "set CVCsDemo::capturestate 0 \n"
-                    "$CVCsDemo::tb.bbox2.b0 configure -state active \n"
-                    "$CVCsDemo::tb.bbox2.b1 configure -state disable \n"
-                    "$CVCsDemo::tb.bbox2.b2 configure -state disable ";
-
-    ret = Tcl_Eval(interp, com_ok);
-
-    ret = Tcl_Eval(interp, "set f $CVCsDemo::curframe");
-    win = Tk_NameToWindow(interp, interp->result,
-        Tk_MainWindow(interp));
-
-    Tk_MapWindow(win);
-    int w = Tk_Width(win);
-    int h = Tk_Height(win);
-
-    mainwin = SYSTEM_WIN_FROM_TK_WIN(win);
-
-    cvcamSetProperty(avifile, CVCAM_PROP_ENABLE, CVCAMTRUE);
-    cvcamSetProperty(avifile, CVCAM_PROP_RENDER, CVCAMTRUE);
-    cvcamSetProperty(avifile, CVCAM_PROP_WINDOW,  &mainwin);
-    cvcamSetProperty(avifile, CVCAM_PROP_CALLBACK, (void*)testcallback);
-    cvcamSetProperty(avifile, CVCAM_RNDWIDTH, (void*)&w);
-    cvcamSetProperty(avifile, CVCAM_RNDHEIGHT, (void*)&h);
-    view.SetVwSize(w,h);
-
-    sprintf(com_ok,"set CVCsDemo::curcam \"%s\"", "AVI");
-    Tcl_Eval(interp, com_ok);
-
-    g_created = true;
-    camtype = 0;
-
-    return TCL_OK;
-}
-
-int Pause_Camera (ClientData, Tcl_Interp * /*interp*/,
-                  int, char ** /*argv*/)
-{
-    g_paused = true;
-    cvcamPause();
-
-    return TCL_OK;
-}
-
-int Resume_Camera (ClientData, Tcl_Interp * /*interp*/,
-                   int, char ** /*argv*/)
-{
-    g_paused = false;
-    cvcamResume();
-
-    return TCL_OK;
-}
-
-int Pause_Avi (ClientData, Tcl_Interp * /*interp*/,
-               int, char ** /*argv*/)
-{
-    g_paused = true;
-    cvcamAVIPause(avifile);
-
-    return TCL_OK;
-}
-
-int Resume_Avi (ClientData, Tcl_Interp * /*interp*/,
-                int, char ** /*argv*/)
-{
-    g_paused = false;
-    cvcamAVIResume(avifile);
-
-    return TCL_OK;
-}
-
-int Stop_Avi (ClientData, Tcl_Interp * /*interp*/,
-              int, char ** /*argv*/)
-{
-    g_created = false;
-    view.m_start = false;
-    cvcamAVICloseFile(avifile);
-    avifile = (cvcamAVIFILE)-1;
-    camtype = -1;
-
-    return TCL_OK;
-}
-
-
-int Start_Avi (ClientData, Tcl_Interp *interp,
-                 int, char ** /*argv*/)
-{
-    int ret;
-    Tk_Window win;
-
-    ret = Tcl_Eval(interp, "set f $CVCsDemo::curframe");
-    win = Tk_NameToWindow(interp, interp->result,
-        Tk_MainWindow(interp));
-
-    Tk_MapWindow(win);
-    int w = Tk_Width(win);
-    int h = Tk_Height(win);
-
-    mainwin = SYSTEM_WIN_FROM_TK_WIN(win);
-    view.SetVwSize(w,h);
-
-    ret = cvcamAVISetWindow(avifile, &mainwin);
-    ret = cvcamAVISetCallback(avifile,(void*)testcallback);
-    ret = cvcamAVISetSize(avifile, w, h);
-
-    ret = cvcamAVIRun(avifile);
-
-    view.m_start = true;
-
-    return TCL_OK;
-}
-
-int Set_Track (ClientData, Tcl_Interp * /*interp*/,
-               int, char ** /*argv*/)
-{
-    view.m_init = true;
-    view.m_track = false;
-    view.m_params.view = 0;
-
-    return TCL_OK;
-}
-
-int Reset_Track (ClientData, Tcl_Interp * /*interp*/,
-               int, char ** /*argv*/)
-{
-    view.m_init =  view.m_track = false;
-
-    return TCL_OK;
-}
-
-int Set_Night (ClientData, Tcl_Interp * /*interp*/,
-               int, char ** /*argv*/)
-{
-    view.m_params.view = 1;
-    return TCL_OK;
-}
-
-int Reset_Night (ClientData, Tcl_Interp * /*interp*/,
-                 int, char ** /*argv*/)
-{
-    view.m_params.view = 0;
-    return TCL_OK;
-}
-
-int Set_Hist (ClientData, Tcl_Interp * /*interp*/,
-               int, char ** /*argv*/)
-{
-    view.m_params.view = 2;
-    return TCL_OK;
-}
-
-int Reset_Hist (ClientData, Tcl_Interp * /*interp*/,
-                 int, char ** /*argv*/)
-{
-    view.m_params.view = 0;
-    return TCL_OK;
-}
-
-int Set_Video (ClientData, Tcl_Interp * /*interp*/,
-               int, char ** /*argv*/)
-{
-    void *p = 0;
-    cvcamGetProperty(0,CVCAM_VIDEOFORMAT, p);
-
-    return TCL_OK;
-}
-
-int Set_CameraOpt (ClientData, Tcl_Interp * /*interp*/,
-               int, char ** /*argv*/)
-{
-    void *p = 0;
-    cvcamGetProperty(0,CVCAM_CAMERAPROPS, p);
-
-    return TCL_OK;
-}
-
-int Button_Press (ClientData, Tcl_Interp * /*interp*/,
-               int, char ** argv)
-{
-    if (view.m_start)
-    {
-        CvPoint p,imgp;
-        p.x = atoi(argv[1]);
-        p.y = atoi(argv[2]);
-    #ifdef WIN32
-        p.y = view.m_VwSize.height - p.y;
-    #endif
-        CvSize imgsize = view.GetImgSize();
-
-        imgp = view.ConvertViewToImage(p);
-        X = view.m_object.x = imgp.x;
-        Y = view.m_object.y = imgp.y;
-
-        view.m_params.x = ((float)imgp.x) / imgsize.width ;
-        view.m_params.y = ((float)imgp.y) / imgsize.height ;
-
-        g_pressed = true;
-    }
-    return TCL_OK;
-}
-
-int Button_Release (ClientData, Tcl_Interp * /*interp*/,
-                  int, char ** /*argv*/)
-{
-    if (view.m_start)
-    {
-        g_pressed = false;
-        if (view.m_track)
-        {
-            view.m_init  = true;
-            view.m_track = false;
-        }
-    }
-
-    return TCL_OK;
-}
-
-int Motion (ClientData, Tcl_Interp * /*interp*/,
-                    int, char ** argv)
-{
-    if (view.m_start)
-    {
-        if (g_pressed)
-        {
-
-            CvPoint p,imgp;
-            p.x = atoi(argv[1]);
-            p.y = atoi(argv[2]);
-    #ifdef WIN32
-            p.y = view.m_VwSize.height - p.y;
-    #endif
-            CvSize imgsize = view.GetImgSize();
-
-            imgp = view.ConvertViewToImage(p);
-
-            view.m_object.width  = abs(imgp.x - X);
-            view.m_object.height = abs(imgp.y - Y);
-
-
-            if (view.m_object.width == 0)
-            {
-                view.m_object.width = 1;
-                X--;
-            }
-
-            if (view.m_object.height == 0)
-            {
-                view.m_object.height = 1;
-                Y--;
-            }
-
-            if (imgp.x < X)
-                view.m_object.x = imgp.x;
-            if (imgp.y < Y)
-                view.m_object.y = imgp.y;
-
-            if( view.m_object.x < 0 ) view.m_object.x = 0;
-            if( view.m_object.x > imgsize.width - view.m_object.width - 1 )
-                view.m_object.x = MAX(0, imgsize.width - view.m_object.width - 1);
-
-            if( view.m_object.y < 0 ) view.m_object.y = 0;
-            if( view.m_object.y > imgsize.height - view.m_object.height - 1 )
-                view.m_object.y = MAX(0, imgsize.height - view.m_object.height - 1);
-
-            if( view.m_object.width > imgsize.width - view.m_object.x )
-                view.m_object.width = MIN(imgsize.width, imgsize.width - view.m_object.x);
-
-            if( view.m_object.height > imgsize.height - view.m_object.y )
-                view.m_object.height = MIN(imgsize.height, imgsize.height - view.m_object.y);
-
-            view.m_params.x = ((float)view.m_object.x) / imgsize.width ;
-            view.m_params.y = ((float)view.m_object.y) / imgsize.height ;
-            view.m_params.width  = ((float)view.m_object.width) / imgsize.width;
-            view.m_params.height  = ((float)view.m_object.height) / imgsize.height;
-
-            view.m_cCamShift.set_window(view.m_object);
-        }
-    }
-
-    return TCL_OK;
-}
-
-int Configure (ClientData, Tcl_Interp *interp,
-            int, char ** /*argv*/)
-{
-    if (g_created)
-    {
-        Tk_Window win;
-        Tcl_Eval(interp, "set f $CVCsDemo::curframe");
-
-        win = Tk_NameToWindow(interp, interp->result,
-            Tk_MainWindow(interp));
-
-        Tk_MapWindow(win);
-        int w = Tk_Width(win);
-        int h = Tk_Height(win);
-
-        cvcamSetProperty(avifile, CVCAM_RNDWIDTH, (void*)&w);
-        cvcamSetProperty(avifile, CVCAM_RNDHEIGHT, (void*)&h);
-
-        view.SetVwSize(w,h);
-    }
-
-    return TCL_OK;
-}
-
-int Set_Bins (ClientData, Tcl_Interp * /*interp*/,
-               int, char ** argv )
-{
-    view.m_params.bins = atoi(argv[1]);
-
-    if (view.m_track)
-    {
-        view.m_init  = true;
-        view.m_track = false;
-    }
-    return TCL_OK;
-}
-
-int Set_S (ClientData, Tcl_Interp * /*interp*/,
-              int, char ** argv)
-{
-    view.m_params.Smin = atoi(argv[1]);
-    return TCL_OK;
-}
-
-int Set_V1 (ClientData, Tcl_Interp * /*interp*/,
-              int, char ** argv)
-{
-    view.m_params.Vmin = atoi(argv[1]);
-    return TCL_OK;
-}
-
-int Set_V2 (ClientData, Tcl_Interp * /*interp*/,
-              int, char ** argv )
-{
-    view.m_params.Vmax = atoi(argv[1]);
-    return TCL_OK;
-}
-
-//-----------------------------------------------------------------------------
-
-/*
- *----------------------------------------------------------------------
- *
- * Commands_Init --    Commands initialisation routine.
- *
- * Results:
- *     TCL_OK - if sucsess, or TCL_ERROR
- *
- *----------------------------------------------------------------------
- */
-int
-Commands_Init(Tcl_Interp *interp)
-{
-    Tcl_CreateCommand (interp, "pInitCamera", Init_Camera,
-        (ClientData *) NULL, (Tcl_CmdDeleteProc *) NULL);
-    Tcl_CreateCommand (interp, "pStartCamera", Start_Camera,
-        (ClientData *) NULL, (Tcl_CmdDeleteProc *) NULL);
-    Tcl_CreateCommand (interp, "pCloseCamera", Close_Camera,
-        (ClientData *) NULL, (Tcl_CmdDeleteProc *) NULL);
-    Tcl_CreateCommand (interp, "pStopCamera", Stop_Camera,
-        (ClientData *) NULL, (Tcl_CmdDeleteProc *) NULL);
-
-    Tcl_CreateCommand (interp, "pInitAvi", Init_Avi,
-        (ClientData *) NULL, (Tcl_CmdDeleteProc *) NULL);
-    Tcl_CreateCommand (interp, "pStartAvi", Start_Avi,
-        (ClientData *) NULL, (Tcl_CmdDeleteProc *) NULL);
-    Tcl_CreateCommand (interp, "pStopAvi", Stop_Avi,
-        (ClientData *) NULL, (Tcl_CmdDeleteProc *) NULL);
-
-    Tcl_CreateCommand (interp, "pSetTrack", Set_Track,
-        (ClientData *) NULL, (Tcl_CmdDeleteProc *) NULL);
-    Tcl_CreateCommand (interp, "pResetTrack", Reset_Track,
-        (ClientData *) NULL, (Tcl_CmdDeleteProc *) NULL);
-    Tcl_CreateCommand (interp, "pSetNight", Set_Night,
-        (ClientData *) NULL, (Tcl_CmdDeleteProc *) NULL);
-    Tcl_CreateCommand (interp, "pResetNight", Reset_Night,
-        (ClientData *) NULL, (Tcl_CmdDeleteProc *) NULL);
-
-    Tcl_CreateCommand (interp, "pSetHist", Set_Hist,
-        (ClientData *) NULL, (Tcl_CmdDeleteProc *) NULL);
-    Tcl_CreateCommand (interp, "pResetHist", Reset_Hist,
-        (ClientData *) NULL, (Tcl_CmdDeleteProc *) NULL);
-
-    Tcl_CreateCommand (interp, "pSetVideo", Set_Video,
-        (ClientData *) NULL, (Tcl_CmdDeleteProc *) NULL);
-    Tcl_CreateCommand (interp, "pButtonPress", Button_Press,
-        (ClientData *) NULL, (Tcl_CmdDeleteProc *) NULL);
-    Tcl_CreateCommand (interp, "pButtonRelease", Button_Release,
-        (ClientData *) NULL, (Tcl_CmdDeleteProc *) NULL);
-    Tcl_CreateCommand (interp, "pMotion", Motion,
-        (ClientData *) NULL, (Tcl_CmdDeleteProc *) NULL);
-    Tcl_CreateCommand (interp, "pSetCameraOpt", Set_CameraOpt,
-        (ClientData *) NULL, (Tcl_CmdDeleteProc *) NULL);
-    Tcl_CreateCommand (interp, "pConfigure", Configure,
-        (ClientData *) NULL, (Tcl_CmdDeleteProc *) NULL);
-    Tcl_CreateCommand (interp, "pSetBins", Set_Bins,
-        (ClientData *) NULL, (Tcl_CmdDeleteProc *) NULL);
-    Tcl_CreateCommand (interp, "pSetS", Set_S,
-        (ClientData *) NULL, (Tcl_CmdDeleteProc *) NULL);
-    Tcl_CreateCommand (interp, "pSetV1", Set_V1,
-        (ClientData *) NULL, (Tcl_CmdDeleteProc *) NULL);
-    Tcl_CreateCommand (interp, "pSetV2", Set_V2,
-        (ClientData *) NULL, (Tcl_CmdDeleteProc *) NULL);
-
-    Tcl_CreateCommand (interp, "pPauseCamera", Pause_Camera,
-        (ClientData *) NULL, (Tcl_CmdDeleteProc *) NULL);
-    Tcl_CreateCommand (interp, "pPauseAvi", Pause_Avi,
-        (ClientData *) NULL, (Tcl_CmdDeleteProc *) NULL);
-    Tcl_CreateCommand (interp, "pResumeCamera", Resume_Camera,
-        (ClientData *) NULL, (Tcl_CmdDeleteProc *) NULL);
-    Tcl_CreateCommand (interp, "pResumeAvi", Resume_Avi,
-        (ClientData *) NULL, (Tcl_CmdDeleteProc *) NULL);
-
-    return TCL_OK;
-}
-
-
-/*
- *----------------------------------------------------------------------
- *
- * MainEx -- Main program for Tk-based applications.
- *
- *----------------------------------------------------------------------
- */
-void
-MainEx( int /*argc*/, char** /*argv*/, Tcl_AppInitProc *appInitProc,
-        Tcl_Interp *pintrp, char *fileName )
-{
-    int code;
-
-    (*appInitProc)(pintrp);
-
-    if ( Commands_Init(pintrp) != TCL_OK)
-        Panic (pintrp,"Can't initialise commands!");
-
-    char set_path[1000];
-    strcat( strcat( strcpy( set_path, "set ::image_path \"" ), module_path ), "\"" );
-    code = Tcl_Eval( pintrp, set_path );
-
-    if (fileName != NULL)
-    {
-        char  script[1000];
-        strcat( strcat( strcpy( script, module_path ), "" ), fileName );
-        code = Tcl_EvalFile(pintrp, script);
-        if (code != TCL_OK)
-            Panic (pintrp,"Evaluate file error!");
-    }
-    else Tcl_SourceRCFile(pintrp);
-
-    Tcl_ResetResult(pintrp);
-
-    Tk_MainLoop();
-
-    Tcl_DeleteInterp(pintrp);
-    return;
-}
-
-/*
- *----------------------------------------------------------------------
- *
- * WishPanic -- escape function.
- *
- *----------------------------------------------------------------------
- */
-
-void WishPanic TCL_VARARGS_DEF(char *,arg1)
-{
-    va_list argList;
-    char buf[1024];
-    char *format;
-
-    format = TCL_VARARGS_START(char *,arg1,argList);
-    printf(buf, format, argList);
-}
-
-/*
- *----------------------------------------------------------------------
- *
- * Panic -- error output & exit function.
- *
- *----------------------------------------------------------------------
- */
-
-void Panic (Tcl_Interp * pintrp, const char * pch)
-{
-    printf("Thread %P:",Tcl_GetCurrentThread());
-    printf(pch);
-    printf("\n    Reason:");
-    printf(pintrp->result);
-    printf("\n");
-
-    Tcl_DeleteInterp(pintrp);
-    Tcl_Exit(1);
-}
-
-/*void Panic (Tcl_Interp * pintrp, const char * pch)
-{
-    char buf[2048];
-    sprintf(buf, "\nThread %p, Interpetator %p:\n",
-        Tcl_GetCurrentThread(), pintrp);
-
-    Tcl_AddErrorInfo(pintrp, buf);
-    Tcl_AddErrorInfo(pintrp, pch);
-    TkpDisplayWarning(Tcl_GetVar(pintrp, "errorInfo",
-    TCL_GLOBAL_ONLY), "Error in startup script");
-    Tcl_DeleteInterp(pintrp);
-    Tcl_Exit(1);
-}*/
-
-/*
- *----------------------------------------------------------------------
- *
- * Tcl_AppInit -- Initialisation function.
- *
- *----------------------------------------------------------------------
- */
-
-
-int Tcl_AppInit(Tcl_Interp *pintrp)
-{
-
-    if (Tcl_InitStubs(pintrp, TCL_VERSION, 1) == NULL)
-        Panic (pintrp,"Tcl stub's initialisation failed!");
-
-    if (Tcl_Init(pintrp) == TCL_ERROR)
-        Panic (pintrp,"Tcl's initialisation failed!");
-
-    if (Tk_Init(pintrp) == TCL_ERROR)
-        Panic (pintrp,"Tk's initialisation failed!");
-
-    return TCL_OK;
-}
-
-// main body ------------------------------------------------------------------
-
-int main(int argc, char* argv[])
-{
-    module_path = GetPathFromModuleName( argv[0] );
-
-    Tcl_Interp* g_pInterp = Tcl_CreateInterp();
-
-    Tcl_SetPanicProc(WishPanic);
-    Tcl_FindExecutable(argv[0]);
-
-    MainEx(argc, argv, Tcl_AppInit, g_pInterp, "cvcsdemo.tcl");
-
-    if (camtype == 1)
-        cvcamExit();
-
-    if (camtype == 0)
-        cvcamAVICloseFile(avifile);
-
-    return 0;
-}