Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/tags/Version Original/ARToolkit/lib/SRC/Gl/gsubUtil.c
diff options
context:
space:
mode:
Diffstat (limited to 'tags/Version Original/ARToolkit/lib/SRC/Gl/gsubUtil.c')
-rwxr-xr-xtags/Version Original/ARToolkit/lib/SRC/Gl/gsubUtil.c258
1 files changed, 0 insertions, 258 deletions
diff --git a/tags/Version Original/ARToolkit/lib/SRC/Gl/gsubUtil.c b/tags/Version Original/ARToolkit/lib/SRC/Gl/gsubUtil.c
deleted file mode 100755
index b38a483..0000000
--- a/tags/Version Original/ARToolkit/lib/SRC/Gl/gsubUtil.c
+++ /dev/null
@@ -1,258 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#if defined(_WIN32)
-#include <windows.h>
-#endif
-#ifndef __APPLE__
-# include <GL/glut.h>
-# ifdef GL_VERSION_1_2
-# include <GL/glext.h>
-# endif
-#else
-# include <GLUT/glut.h>
-# include <OpenGL/glext.h>
-#endif
-#include <AR/config.h>
-#include <AR/param.h>
-#include <AR/ar.h>
-#include <AR/gsub.h>
-#include <AR/video.h>
-#include <AR/gsubUtil.h>
-
-#define CALIB_POS1_NUM 5
-#define CALIB_POS2_NUM 2
-
-static double calib_pos[CALIB_POS1_NUM][2] = { { 160, 120 },
- { 480, 120 },
- { 320, 240 },
- { 160, 360 },
- { 480, 360 } };
-static double calib_pos2d[CALIB_POS1_NUM][CALIB_POS2_NUM][2];
-static double calib_pos3d[CALIB_POS1_NUM][CALIB_POS2_NUM][3];
-static int co1;
-static int co2;
-static int left_right;
-static double target_trans[3][4];
-static int target_id;
-static int target_visible;
-static double target_center[2] = { 0.0, 0.0 };
-static double target_width = 80.0;
-
-static ARParam hmd_param[2];
-static int thresh;
-static int arFittingModeBak;
-
-static int hmdMode;
-static int gMiniXnum, gMiniYnum;
-static void (*gMouseFunc)(int button, int state, int x, int y);
-static void (*gKeyFunc)(unsigned char key, int x, int y);
-static void (*gMainFunc)(void);
-static void (*gCalibPostFunc)(ARParam *lpara, ARParam *rpara);
-
-static void argCalibMouseFunc(int button, int state, int x, int y);
-static void argCalibMainFunc(void);
-static int argDrawAttention(double pos[2], int color);
-
-void argUtilCalibHMD( int targetId, int thresh2,
- void (*postFunc)(ARParam *lpara, ARParam *rpara) )
-{
- argInqSetting( &hmdMode, &gMiniXnum, &gMiniYnum,
- &gMouseFunc, &gKeyFunc, &gMainFunc );
-
- if( hmdMode == 0 ) return;
-
- target_id = targetId;
- thresh = thresh2;
- gCalibPostFunc = postFunc;
- arFittingModeBak = arFittingMode;
-
- arFittingMode = AR_FITTING_TO_IDEAL;
- co1 = 0;
- co2 = 0;
- left_right = 0;
- target_visible = 0;
-
- glutKeyboardFunc( NULL );
- glutMouseFunc( argCalibMouseFunc );
- glutIdleFunc( argCalibMainFunc );
- glutDisplayFunc( argCalibMainFunc );
-}
-
-static void argCalibMouseFunc(int button, int state, int x, int y)
-{
- if( button == GLUT_LEFT_BUTTON && state == GLUT_DOWN ) {
- if( target_visible ) {
- calib_pos3d[co1][co2][0] = target_trans[0][3];
- calib_pos3d[co1][co2][1] = target_trans[1][3];
- calib_pos3d[co1][co2][2] = target_trans[2][3];
- calib_pos2d[co1][co2][0] = calib_pos[co1][0];
- calib_pos2d[co1][co2][1] = calib_pos[co1][1];
- co2++;
- if( co2 == CALIB_POS2_NUM ) {
- co1++;
- co2 = 0;
- }
-
- if( co1 == CALIB_POS1_NUM ) {
- hmd_param[left_right].xsize = AR_HMD_XSIZE;
- hmd_param[left_right].ysize = AR_HMD_YSIZE;
- hmd_param[left_right].dist_factor[0] = AR_HMD_XSIZE / 2.0;
- hmd_param[left_right].dist_factor[1] = AR_HMD_YSIZE / 2.0;
- hmd_param[left_right].dist_factor[2] = 0.0;
- hmd_param[left_right].dist_factor[3] = 1.0;
- if( arParamGet( (double (*)[3])calib_pos3d, (double (*)[2])calib_pos2d,
- CALIB_POS1_NUM*CALIB_POS2_NUM, hmd_param[left_right].mat) < 0 ) {
- (*gCalibPostFunc)( NULL, NULL );
- arFittingMode = arFittingModeBak;
- glutKeyboardFunc( gKeyFunc );
- glutMouseFunc( gMouseFunc );
- glutIdleFunc( gMainFunc );
- glutDisplayFunc( gMainFunc );
- return;
- }
-
- co1 = 0;
- co2 = 0;
- left_right++;
- if( left_right == 2 ) {
- argLoadHMDparam( &hmd_param[0], &hmd_param[1] );
- arFittingMode = arFittingModeBak;
-
- if( gCalibPostFunc != NULL ) {
- (*gCalibPostFunc)( &hmd_param[0], &hmd_param[1] );
- }
- glutKeyboardFunc( gKeyFunc );
- glutMouseFunc( gMouseFunc );
- glutIdleFunc( gMainFunc );
- glutDisplayFunc( gMainFunc );
- return;
- }
- }
- }
- }
-
- if( button == GLUT_RIGHT_BUTTON && state == GLUT_DOWN ) {
- (*gCalibPostFunc)( NULL, NULL );
- arFittingMode = arFittingMode;
- glutKeyboardFunc( gKeyFunc );
- glutMouseFunc( gMouseFunc );
- glutIdleFunc( gMainFunc );
- glutDisplayFunc( gMainFunc );
- return;
- }
-}
-
-static void argCalibMainFunc(void)
-{
- ARUint8 *dataPtr;
- ARMarkerInfo *marker_info;
- int marker_num;
- int i, j;
- double cfmax;
- double err;
-
- /* grab a vide frame */
- if( (dataPtr = (ARUint8 *)arVideoGetImage()) == NULL ) {
- arUtilSleep(2);
- return;
- }
- target_visible = 0;
-
- /* detect the markers in the video frame */
- if( arDetectMarker(dataPtr, thresh,
- &marker_info, &marker_num) < 0 ) {
- (*gCalibPostFunc)( NULL, NULL );
- arFittingMode = arFittingModeBak;
- glutKeyboardFunc( gKeyFunc );
- glutMouseFunc( gMouseFunc );
- glutIdleFunc( gMainFunc );
- glutDisplayFunc( gMainFunc );
- return;
- }
- arVideoCapNext();
-
- glClearColor( 0.0, 0.0, 0.0, 0.0 );
- glClear(GL_COLOR_BUFFER_BIT);
-
- /* if the debug mode is on draw squares
- around the detected squares in the video image */
- if( arDebug && gMiniXnum >= 2 && gMiniYnum >= 1 ) {
- argDispImage( dataPtr, 1, 1 );
- if( arImageProcMode == AR_IMAGE_PROC_IN_HALF )
- argDispHalfImage( arImage, 2, 1 );
- else
- argDispImage( arImage, 2, 1);
-
- glColor3f( 1.0, 0.0, 0.0 );
- glLineWidth( 3.0 );
- for( i = 0; i < marker_num; i++ ) {
- if( marker_info[i].id < 0 ) continue;
- argDrawSquare( marker_info[i].vertex, 2, 1 );
- }
- glLineWidth( 1.0 );
- }
-
- if( left_right == 0 ) argDraw2dLeft();
- else argDraw2dRight();
- glLineWidth( 3.0 );
- glColor3f( 1.0, 1.0, 1.0 );
- argLineSegHMD( 0, calib_pos[co1][1], AR_HMD_XSIZE, calib_pos[co1][1] );
- argLineSegHMD( calib_pos[co1][0], 0, calib_pos[co1][0], AR_HMD_YSIZE );
- glLineWidth( 1.0 );
- argDrawMode2D();
-
- cfmax = 0.0;
- j = -1;
- for( i = 0; i < marker_num; i++ ) {
- if( marker_info[i].id != target_id ) continue;
-
- if( marker_info[i].cf > cfmax ) {
- cfmax = marker_info[i].cf;
- j = i;
- }
- }
- if( j < 0 ) {
- argSwapBuffers();
- return;
- }
- err = arGetTransMat(&marker_info[j], target_center, target_width, target_trans);
- if( err >= 0.0 ) {
- target_visible = 1;
-
- if( left_right == 0 ) argDraw2dLeft();
- else argDraw2dRight();
- argDrawAttention( calib_pos[co1], co2 );
- argDrawMode2D();
-
- if( arDebug && gMiniXnum >= 2 && gMiniYnum >= 1 ) {
- glColor3f( 0.0, 1.0, 0.0 );
- glLineWidth( 3.0 );
- argDrawSquare( marker_info[j].vertex, 1, 1 );
- glLineWidth( 1.0 );
- }
- }
-
- argSwapBuffers();
-}
-
-static int argDrawAttention( double pos[2], int color )
-{
- switch( color%7 ) {
- case 0: glColor3f( 1.0, 0.0, 0.0 ); break;
- case 1: glColor3f( 0.0, 1.0, 0.0 ); break;
- case 2: glColor3f( 0.0, 0.0, 1.0 ); break;
- case 3: glColor3f( 1.0, 1.0, 0.0 ); break;
- case 4: glColor3f( 1.0, 0.0, 1.0 ); break;
- case 5: glColor3f( 0.0, 1.0, 1.0 ); break;
- case 6: glColor3f( 1.0, 1.0, 1.0 ); break;
- }
-
- glLineWidth( 5.0 );
- argLineSegHMD( pos[0]-20, pos[1]-20, pos[0]+20, pos[1]-20 );
- argLineSegHMD( pos[0]-20, pos[1]+20, pos[0]+20, pos[1]+20 );
- argLineSegHMD( pos[0]-20, pos[1]-20, pos[0]-20, pos[1]+20 );
- argLineSegHMD( pos[0]+20, pos[1]-20, pos[0]+20, pos[1]+20 );
- glLineWidth( 1.0 );
-
- return(0);
-}