⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gsub.c

📁 tracciatore di mani con webcam
💻 C
📖 第 1 页 / 共 3 页
字号:
	zoom = gZoom;        sx = 0;        sy = gWinYsize - 1;    }    else if( xwin == 1 && ywin == 0 ) {	zoom = gZoom;        sx = gXsize;        sy = gWinYsize - 1;    }    else {        zoom = gZoom / (double)GMINI;        sx = (xwin-1)*gMiniXsize;        sy = gWinYsize - gYsize - (ywin-1)*gMiniYsize - 1;    }    glPixelZoom( zoom, -zoom);    /* glRasterPos3i( sx, sy, 0 ); */    glRasterPos3i( sx, sy, -1 );#ifdef  AR_PIX_FORMAT_ABGR    glDrawPixels( gImXsize, gImYsize, GL_ABGR, GL_UNSIGNED_BYTE, image );#endif#ifdef  AR_PIX_FORMAT_BGRA    glDrawPixels( gImXsize, gImYsize, GL_BGRA, GL_UNSIGNED_BYTE, image );#endif#ifdef  AR_PIX_FORMAT_BGR    glDrawPixels( gImXsize, gImYsize, GL_BGR, GL_UNSIGNED_BYTE, image );#endif#ifdef  AR_PIX_FORMAT_RGBA    glDrawPixels( gImXsize, gImYsize, GL_RGBA, GL_UNSIGNED_BYTE, image );#endif#ifdef  AR_PIX_FORMAT_RGB    glDrawPixels( gImXsize, gImYsize, GL_RGB, GL_UNSIGNED_BYTE, image );#endif}#ifndef _WIN32static void argDispImageTex4( ARUint8 *image, int xwin, int ywin, int mode )#elsestatic void argDispImageTex4( ARUint8 *wimage, int xwin, int ywin, int mode )#endif{    static int      initf = 1;    static int      flag[3][MINIWIN_MAX+2][2];    static int      listIndex[3][MINIWIN_MAX+2][2];#ifdef _WIN32    static ARUint8  *image = NULL;#endif    double   *dist_factor = NULL;    double   tsx, tsy, tex, tey;    double   px, py, qx, qy, z;    double   x1, x2, x3, x4;    double   y1, y2, y3, y4;    double   xx1, xx2, xx3, xx4;    double   yy1, yy2, yy3, yy4;    int      size_adjust_factor;    int      list, win;    int      i, j;    switch( mode ) {      case 0: dist_factor = &(gCparam.dist_factor[0]);   break;    }#ifdef _WIN32    if( image == NULL ) {        arMalloc(image,ARUint8,gImXsize*tex1Ysize*AR_PIX_SIZE);    }    memcpy(image, wimage, gImXsize*gImYsize*AR_PIX_SIZE);#endif    if( initf ) {        for(j=0;j<3;j++) {            for(i=0;i<MINIWIN_MAX+2;i++) flag[j][i][0] = flag[j][i][1] = 1;        }        initf = 0;    }    if( argTexmapMode == AR_DRAW_TEXTURE_HALF_IMAGE ) {        size_adjust_factor = 2;        list = 1;    }    else {        size_adjust_factor = 1;        list = 0;    }    if( xwin == 0 && ywin == 0 )      win = 0;    else if( xwin == 1 && ywin == 0 ) win = 1;    else win = gMiniXnum * (ywin-1) + xwin + 1;    glEnable( GL_TEXTURE_2D );    glMatrixMode(GL_TEXTURE);    glLoadIdentity();    glMatrixMode(GL_MODELVIEW);    glPixelStorei( GL_UNPACK_ROW_LENGTH, gImXsize*size_adjust_factor );#ifndef _WIN32    glPixelStorei( GL_UNPACK_IMAGE_HEIGHT, gImYsize/size_adjust_factor );#endif    glBindTexture( GL_TEXTURE_2D, glid[0] );#ifdef  AR_PIX_FORMAT_ABGR    glTexImage2D( GL_TEXTURE_2D, 0, 3, tex1Xsize1, tex1Ysize/size_adjust_factor, 0, GL_ABGR, GL_UNSIGNED_BYTE, image );#endif#ifdef  AR_PIX_FORMAT_BGRA    glTexImage2D( GL_TEXTURE_2D, 0, 3, tex1Xsize1, tex1Ysize/size_adjust_factor, 0, GL_BGRA, GL_UNSIGNED_BYTE, image );#endif#ifdef  AR_PIX_FORMAT_BGR    glTexImage2D( GL_TEXTURE_2D, 0, 3, tex1Xsize1, tex1Ysize/size_adjust_factor, 0, GL_BGR, GL_UNSIGNED_BYTE, image );#endif#ifdef  AR_PIX_FORMAT_RGBA    glTexImage2D( GL_TEXTURE_2D, 0, 3, tex1Xsize1, tex1Ysize/size_adjust_factor, 0, GL_RGBA, GL_UNSIGNED_BYTE, image );#endif#ifdef  AR_PIX_FORMAT_RGB    glTexImage2D( GL_TEXTURE_2D, 0, 3, tex1Xsize1, tex1Ysize/size_adjust_factor, 0, GL_RGB, GL_UNSIGNED_BYTE, image );#endif    if( flag[mode][win][list] ) {        listIndex[mode][win][list] = glGenLists(1);        glNewList(listIndex[mode][win][list], GL_COMPILE_AND_EXECUTE);        z = -1.0;        qy = gImYsize   * 0 / 20.0;        tey = ((double)gImYsize / (double)tex1Ysize) * (double)0 / 20.0;        for( j = 1; j <= 20; j++ ) {            py = qy;            tsy = tey;            qy = gImYsize   * j / 20.0;            tey = ((double)gImYsize / (double)tex1Ysize) * (double)j / 20.0;            qx = gImXsize * 0 / 20.0;            tex = ((double)gImXsize / (double)(tex1Xsize1)) * (double)0 / 20.0;            for( i = 1; i <= 20; i++ ) {                px = qx;                tsx = tex;                qx = gImXsize * i / 20.0;                tex = ((double)gImXsize / (double)(tex1Xsize1)) * (double)i / 20.0;                arParamObserv2Ideal( dist_factor, px, py, &x1, &y1 );                arParamObserv2Ideal( dist_factor, qx, py, &x2, &y2 );                arParamObserv2Ideal( dist_factor, qx, qy, &x3, &y3 );                arParamObserv2Ideal( dist_factor, px, qy, &x4, &y4 );                if( xwin == 0 && ywin == 0 ) {                    xx1 = x1 * gZoom - 1.0;                    yy1 = (gWinYsize - 1) - y1 * gZoom;                    xx2 = x2 * gZoom - 1.0;                    yy2 = (gWinYsize - 1) - y2 * gZoom;                    xx3 = x3 * gZoom - 1.0;                    yy3 = (gWinYsize - 1) - y3 * gZoom;                    xx4 = x4 * gZoom - 1.0;                    yy4 = (gWinYsize - 1) - y4 * gZoom;                }                else if( xwin == 1 && ywin == 0 ) {                    xx1 = gXsize + x1 * gZoom - 1.0;                    yy1 = (gWinYsize - 1) - y1 * gZoom;                    xx2 = gXsize + x2 * gZoom - 1.0;                    yy2 = (gWinYsize - 1) - y2 * gZoom;                    xx3 = gXsize + x3 * gZoom - 1.0;                    yy3 = (gWinYsize - 1) - y3 * gZoom;                    xx4 = gXsize + x4 * gZoom - 1.0;                    yy4 = (gWinYsize - 1) - y4 * gZoom;                }                else {                    xx1 = (xwin-1)*gMiniXsize + x1*gZoom/(double)GMINI - 1.0;                    xx2 = (xwin-1)*gMiniXsize + x2*gZoom/(double)GMINI - 1.0;                    xx3 = (xwin-1)*gMiniXsize + x3*gZoom/(double)GMINI - 1.0;                    xx4 = (xwin-1)*gMiniXsize + x4*gZoom/(double)GMINI - 1.0;                    yy1 = gWinYsize-gYsize-(ywin-1)*gMiniYsize - y1*gZoom/(double)GMINI - 1.0;                    yy2 = gWinYsize-gYsize-(ywin-1)*gMiniYsize - y2*gZoom/(double)GMINI - 1.0;                    yy3 = gWinYsize-gYsize-(ywin-1)*gMiniYsize - y3*gZoom/(double)GMINI - 1.0;                    yy4 = gWinYsize-gYsize-(ywin-1)*gMiniYsize - y4*gZoom/(double)GMINI - 1.0;                }                glBegin( GL_QUADS );                glTexCoord2d( tsx, tsy ); glVertex3d( xx1, yy1, z );                glTexCoord2d( tex, tsy ); glVertex3d( xx2, yy2, z );                glTexCoord2d( tex, tey ); glVertex3d( xx3, yy3, z );                glTexCoord2d( tsx, tey ); glVertex3d( xx4, yy4, z );                glEnd();            }        }        glEndList();        flag[mode][win][list] = 0;    }    else {        glCallList( listIndex[mode][win][list] );    }    glBindTexture( GL_TEXTURE_2D, 0 );    glDisable( GL_TEXTURE_2D );    glPixelStorei( GL_UNPACK_ROW_LENGTH, 0 );#ifndef _WIN32    glPixelStorei( GL_UNPACK_IMAGE_HEIGHT, 0 );#endif}#ifndef _WIN32static void argDispImageTex3( ARUint8 *image, int xwin, int ywin, int mode )#elsestatic void argDispImageTex3( ARUint8 *wimage, int xwin, int ywin, int mode )#endif{    static int      initf = 1;    static int      flag[3][MINIWIN_MAX+2][2];    static int      listIndex[3][MINIWIN_MAX+2][2];#ifdef _WIN32    static ARUint8  *image = NULL;#endif    double   *dist_factor = NULL;    double   tsx, tsy, tex, tey;    double   px, py, qx, qy, z;    double   x1, x2, x3, x4;    double   y1, y2, y3, y4;    double   xx1, xx2, xx3, xx4;    double   yy1, yy2, yy3, yy4;    int      size_adjust_factor;    int      win, list;    int      i, j;    switch( mode ) {      case 0: dist_factor = &(gCparam.dist_factor[0]);   break;    }#ifdef _WIN32    if( image == NULL ) {        arMalloc(image,ARUint8,gImXsize*tex1Ysize*AR_PIX_SIZE);    }    memcpy(image, wimage, gImXsize*gImYsize*AR_PIX_SIZE);#endif    if( initf ) {        for(j=0;j<3;j++) {            for(i=0;i<=MINIWIN_MAX;i++) flag[j][i][0] = flag[j][i][1] = 1;        }        initf = 0;    }    if( argTexmapMode == AR_DRAW_TEXTURE_HALF_IMAGE ) {        size_adjust_factor = 2;        list = 1;    }    else {        size_adjust_factor = 1;        list = 0;    }    if( xwin == 0 && ywin == 0 )      win = 0;    else if( xwin == 1 && ywin == 0 ) win = 1;    else win = gMiniXnum * (ywin-1) + xwin + 1;    glEnable( GL_TEXTURE_2D );    glMatrixMode(GL_TEXTURE);    glLoadIdentity();    glMatrixMode(GL_MODELVIEW);    glPixelStorei( GL_UNPACK_ROW_LENGTH, gImXsize*size_adjust_factor );#ifndef _WIN32    glPixelStorei( GL_UNPACK_IMAGE_HEIGHT, gImYsize/size_adjust_factor );#endif    glBindTexture( GL_TEXTURE_2D, glid[0] );#ifdef  AR_PIX_FORMAT_ABGR    glTexImage2D( GL_TEXTURE_2D, 0, 3, tex1Xsize1, tex1Ysize/size_adjust_factor, 0, GL_ABGR, GL_UNSIGNED_BYTE, image );#endif#ifdef  AR_PIX_FORMAT_BGRA    glTexImage2D( GL_TEXTURE_2D, 0, 3, tex1Xsize1, tex1Ysize/size_adjust_factor, 0, GL_BGRA, GL_UNSIGNED_BYTE, image );#endif#ifdef  AR_PIX_FORMAT_BGR    glTexImage2D( GL_TEXTURE_2D, 0, 3, tex1Xsize1, tex1Ysize/size_adjust_factor, 0, GL_BGR, GL_UNSIGNED_BYTE, image );#endif#ifdef  AR_PIX_FORMAT_RGBA    glTexImage2D( GL_TEXTURE_2D, 0, 3, tex1Xsize1, tex1Ysize/size_adjust_factor, 0, GL_RGBA, GL_UNSIGNED_BYTE, image );#endif#ifdef  AR_PIX_FORMAT_RGB    glTexImage2D( GL_TEXTURE_2D, 0, 3, tex1Xsize1, tex1Ysize/size_adjust_factor, 0, GL_RGB, GL_UNSIGNED_BYTE, image );#endif    if( flag[mode][win][list] ) {        listIndex[mode][win][list] = glGenLists(2);        glNewList(listIndex[mode][win][list], GL_COMPILE_AND_EXECUTE);        z = -1.0;        qy = gImYsize   * 0 / 20.0;        tey = ((double)gImYsize / (double)tex1Ysize) * (double)0 / 20.0;        for( j = 1; j <= 20; j++ ) {            py = qy;            tsy = tey;            qy = gImYsize   * j / 20.0;            tey = ((double)gImYsize / (double)tex1Ysize) * (double)j / 20.0;            qx = tex1Xsize1 * 0 / 16.0;            tex = (double)0 / 16.0;            for( i = 1; i <= 16; i++ ) {                px = qx;                tsx = tex;                qx = tex1Xsize1 * i / 16.0;                tex = (double)i / 16.0;                arParamObserv2Ideal( dist_factor, px, py, &x1, &y1 );                arParamObserv2Ideal( dist_factor, qx, py, &x2, &y2 );                arParamObserv2Ideal( dist_factor, qx, qy, &x3, &y3 );                arParamObserv2Ideal( dist_factor, px, qy, &x4, &y4 );                if( x2 < x1 ) continue;                if( x4 > x3 ) continue;                if( y4 < y1 ) continue;                if( y3 < y2 ) continue;                if( x2 < 0 || x3 < 0 ) continue;                if( x1 > gImXsize || x4 > gImXsize ) continue;                if( y4 < 0 || y3 < 0 ) continue;                if( y1 > gImYsize || y2 > gImXsize ) continue;                if( xwin == 0 && ywin == 0 ) {                    xx1 = x1 * gZoom - 1.0;                    yy1 = (gWinYsize - 1) - y1 * gZoom;                    xx2 = x2 * gZoom - 1.0;                    yy2 = (gWinYsize - 1) - y2 * gZoom;                    xx3 = x3 * gZoom - 1.0;                    yy3 = (gWinYsize - 1) - y3 * gZoom;                    xx4 = x4 * gZoom - 1.0;                    yy4 = (gWinYsize - 1) - y4 * gZoom;                }                else if( xwin == 1 && ywin == 0 ) {                    xx1 = gXsize + x1 * gZoom - 1.0;                    yy1 = (gWinYsize - 1) - y1 * gZoom;                    xx2 = gXsize + x2 * gZoom - 1.0;                    yy2 = (gWinYsize - 1) - y2 * gZoom;                    xx3 = gXsize + x3 * gZoom - 1.0;                    yy3 = (gWinYsize - 1) - y3 * gZoom;                    xx4 = gXsize + x4 * gZoom - 1.0;                    yy4 = (gWinYsize - 1) - y4 * gZoom;                }                else {                    xx1 = (xwin-1)*gMiniXsize + x1*gZoom/(double)GMINI - 1.0;                    xx2 = (xwin-1)*gMiniXsize + x2*gZoom/(double)GMINI - 1.0;                    xx3 = (xwin-1)*gMiniXsize + x3*gZoom/(double)GMINI - 1.0;                    xx4 = (xwin-1)*gMiniXsize + x4*gZoom/(double)GMINI - 1.0;                    yy1 = gWinYsize-gYsize-(ywin-1)*gMiniYsize - y1*gZoom/(double)GMINI - 1.0;                    yy2 = gWinYsize-gYsize-(ywin-1)*gMiniYsize - y2*gZoom/(double)GMINI - 1.0;                    yy3 = gWinYsize-gYsize-(ywin-1)*gMiniYsize - y3*gZoom/(double)GMINI - 1.0;                    yy4 = gWinYsize-gYsize-(ywin-1)*gMiniYsize - y4*gZoom/(double)GMINI - 1.0;                }                glBegin( GL_QUADS );                glTexCoord2d( tsx, tsy ); glVertex3d( xx1, yy1, z );                glTexCoord2d( tex, tsy ); glVertex3d( xx2, yy2, z );                glTexCoord2d( tex, tey ); glVertex3d( xx3, yy3, z );                glTexCoord2d( tsx, tey ); glVertex3d( xx4, yy4, z );                glEnd();            }        }        glEndList();    }    else {        glCallList( listIndex[mode][win][list] );    }    glBindTexture( GL_TEXTURE_2D, glid[1] );#ifdef  AR_PIX_FORMAT_ABGR    glTexImage2D( GL_TEXTURE_2D, 0, 3, tex1Xsize2, tex1Ysize/size_adjust_factor, 0, GL_ABGR, GL_UNSIGNED_BYTE, image+tex1Xsize1*AR_PIX_SIZE );#endif#ifdef  AR_PIX_FORMAT_BGRA    glTexImage2D( GL_TEXTURE_2D, 0, 3, tex1Xsize2, tex1Ysize/size_adjust_factor, 0, GL_BGRA, GL_UNSIGNED_BYTE, image+tex1Xsize1*AR_PIX_SIZE );#endif#ifdef  AR_PIX_FORMAT_BGR    glTexImage2D( GL_TEXTURE_2D, 0, 3, tex1Xsize2, tex1Ysize/size_adjust_factor, 0, GL_BGR, GL_UNSIGNED_BYTE, image+tex1Xsize1*AR_PIX_SIZE );#endif#ifdef  AR_PIX_FORMAT_RGBA    glTexImage2D( GL_TEXTURE_2D, 0, 3, tex1Xsize2, tex1Ysize/size_adjust_factor, 0, GL_RGBA, GL_UNSIGNED_BYTE, image+tex1Xsize1*AR_PIX_SIZE );#endif#ifdef  AR_PIX_FORMAT_RGB    glTexImage2D( GL_TEXTURE_2D, 0, 3, tex1Xsize2, tex1Ysize/size_adjust_factor, 0, GL_RGB, GL_UNSIGNED_BYTE, image+tex1Xsize1*AR_PIX_SIZE );#endif    if( flag[mode][win][list] ) {        glNewList(listIndex[mode][win][list]+1, GL_COMPILE_AND_EXECUTE);        z = -1.0;        qy = gImYsize   * 0 / 20.0;        tey = ((double)gImYsize / (double)tex1Ysize) * (double)0 / 20.0;        for( j = 1; j <= 20; j++ ) {            py = qy;            tsy = tey;            qy = gImYsize   * j / 20.0;            tey = ((double)gImYsize / (double)tex1Ysize) * (double)j / 20.0;            qx = tex1Xsize1 + (gImXsize-tex1Xsize1) * 0 / 4.0;            tex = ((double)(gImXsize-tex1Xsize1) / (double)tex1Xsize2) * 0 / 4.0;            for( i = 1; i <= 4; i++ ) {                px = qx;                tsx = tex;                qx = tex1Xsize1 + (gImXsize-tex1Xsize1) * i / 4.0;                tex = ((double)(gImXsize-tex1Xsize1) / (double)tex1Xsize2) * i / 4.0;                arParamObserv2Ideal( dist_factor, px, py, &x1, &y1 );                arParamObserv2Ideal( dist_factor, qx, py, &x2, &y2 );                arParamObserv2Ideal( dist_factor, qx, qy, &x3, &y3 );                arParamObserv2Ideal( dist_factor, px, qy, &x4, &y4 );                if( x2 < x1 ) continue;                if( x4 > x3 ) continue;                if( y4 < y1 ) continue;                if( y3 < y2 ) continue;                if( x2 < 0 || x3 < 0 ) continue;                if( x1 > gImXsize || x4 > gImXsize ) continue;                if( y4 < 0 || y3 < 0 ) continue;                if( y1 > gImYsize || y2 > gImXsize ) continue;                if( xwin == 0 && ywin == 0 ) {                    xx1 = x1 * gZoom - 1.0;                    yy1 = (gWinYsize - 1) - y1 * gZoom;                    xx2 = x2 * gZoom - 1.0;                    yy2 = (gWinYsize - 1) - y2 * gZoom;                    xx3 = x3 * gZoom - 1.0;                    yy3 = (gWinYsize - 1) - y3 * gZoom;                    xx4 = x4 * gZoom - 1.0;                    yy4 = (gWinYsize - 1) - y4 * gZoom;                }                else if( xwin == 1 && ywin == 0 ) {                    xx1 = gXsize + x1 * gZoom - 1.0;                    yy1 = (gWinYsize - 1) - y1 * gZoom;                    xx2 = gXsize + x2 * gZoom - 1.0;                    yy2 = (gWinYsize - 1) - y2 * gZoom;                    xx3 = gXsize + x3 * gZoom - 1.0;                    yy3 = (gWinYsize - 1) - y3 * gZoom;                    xx4 = gXsize + x4 * gZoom - 1.0;                    yy4 = (gWinYsize - 1) - y4 * gZoom;                }                else {                    xx1 = (xwin-1)*gMiniXsize + x1*gZoom/(double)GMINI - 1.0;                    xx2 = (xwin-1)*gMiniXsize + x2*gZoom/(double)GMINI - 1.0;                    xx3 = (xwin-1)*gMiniXsize + x3*gZoom/(double)GMINI - 1.0;                    xx4 = (xwin-1)*gMiniXsize + x4*gZoom/(double)GMINI - 1.0;                    yy1 = gWinYsize-gYsize-(ywin-1)*gMiniYsize - y1*gZoom/(double)GMINI - 1.0;                    yy2 = gWinYsize-gYsize-(ywin-1)*gMiniYsize - y2*gZoom/(double)GMINI - 1.0;                    yy3 = gWinYsize-gYsize-(ywin-1)*gMiniYsize - y3*gZoom/(double)GMINI - 1.0;                    yy4 = gWinYsize-gYsize-(ywin-1)*gMiniYsize - y4*gZoom/(double)GMINI - 1.0;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -