//nand window right-clicked void NandWindow::on_treeWidget_customContextMenuRequested( QPoint pos ) { QPoint globalPos = ui->treeWidget->viewport()->mapToGlobal( pos ); QTreeWidgetItem* item = ui->treeWidget->itemAt( pos ); if( !item )//right-clicked in the partition window, but not on an item { qDebug() << "no item selected"; return; } QMenu myMenu( this ); QAction extractA( tr( "Extract" ), &myMenu ); myMenu.addAction( &extractA ); QAction* s = myMenu.exec( globalPos ); //respond to what was selected if( s ) { // something was chosen, do stuff if( s == &extractA )//extract a file { QString path = QFileDialog::getExistingDirectory( this, tr("Select a destination") ); if( path.isEmpty() ) return; ui->progressBar->setVisible( true ); nThread.Extract( item, path ); } } }
void TGAImage::getRGBA(unsigned char* src, int i, int j, unsigned char& r, unsigned char& g, unsigned char& b, unsigned char& a ) { unsigned char *ptr = src + BPP * (j * getLODwidth(0) + i) ; r = extractB( ptr ) ; g = extractG( ptr ) ; b = extractR( ptr ) ; a = extractA( ptr ) ; }
/* ************************************************************ PROCEDURE mexFunction - Entry for Matlab ************************************************************ */ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { jcir At, Apart; mwIndex i, m, njc, ifirst, n, ynnz, blk0,blk1; mwIndex *Ajc; const double *blkstartPr, *AjcPr; bool isblk0negative; /* ------------------------------------------------------------ Check for proper number of arguments ------------------------------------------------------------ */ mxAssert(nrhs >= NPARINMIN, "extractA requires more input arguments."); mxAssert(nlhs <= NPAROUT, "extractA produces less output arguments."); /* -------------------------------------------------- GET inputs At, blkstart, Ajc1, Ajc2 -------------------------------------------------- */ mxAssert(mxIsSparse(AT_IN), "At must be a sparse matrix."); At.jc = mxGetJc(AT_IN); At.ir = mxGetIr(AT_IN); At.pr = mxGetPr(AT_IN); m = mxGetN(AT_IN); if(nrhs >= NPARIN){ n = (mwIndex) mxGetScalar(BLKSTART2_IN); ifirst = (mwIndex) mxGetScalar(BLKSTART_IN); } else if(mxGetM(BLKSTART_IN) * mxGetN(BLKSTART_IN) ==2){ blkstartPr = mxGetPr(BLKSTART_IN); ifirst = (mwIndex) blkstartPr[0]; n = (mwIndex) blkstartPr[1]; } else mxAssert(0==1, "blkstart size mismatch."); n -= (ifirst--); AjcPr = mxGetPr(AJC_IN); mxAssert(m == mxGetM(AJC_IN), "Ablkjc size mismatch."); njc = mxGetN(AJC_IN); blk0 = (mwIndex) mxGetScalar(BLK0_IN); /* double to mwIndex */ if(blk0>0){ --blk0; /* Fortran to C */ isblk0negative=0;} else isblk0negative=1; if(mxGetM(BLK1_IN) * mxGetN(BLK1_IN) != 1) blk1 = njc; /*default to end */ else{ blk1 = (mwIndex) mxGetScalar(BLK1_IN); /* double to mwIndex (thus inf not allowed) */ mxAssert(blk1>0,""); --blk1; /* Fortran to C */ } /* ------------------------------------------------------------ Allocate mwIndex array blkstart Ajc(2*m) ------------------------------------------------------------ */ Ajc = (mwIndex *) mxCalloc(MAX(2*m,1), sizeof(mwIndex)); /* ------------------------------------------------------------ Convert Ajc from double to mwIndex: ------------------------------------------------------------ */ mxAssert(blk0 < njc, "Ablkjc size mismatches blk0."); if(isblk0negative) memcpy(Ajc,At.jc,m*sizeof(mwIndex)); /* default: start of column */ else for(i = 0; i < m; i++){ /* to integers */ Ajc[i] = (mwIndex) AjcPr[m*blk0 + i]; } mxAssert(blk1 >= 0, "blk1 must be positive."); if(blk1 >= njc) memcpy(Ajc+m,At.jc+1,m*sizeof(mwIndex)); /* default: end of column */ else for(i = 0; i < m; i++){ /* to integers */ Ajc[m+i] = (mwIndex) AjcPr[blk1*m + i]; } /* ------------------------------------------------------------ Apart = sparse(n,m,ynnz); ------------------------------------------------------------ */ ynnz = 0; for(i = 0; i < m; i++) ynnz += Ajc[m+i]-Ajc[i]; /* nnz(Apart(:,i)) */ APART_OUT = mxCreateSparse(n,m, ynnz,mxREAL); Apart.jc = mxGetJc(APART_OUT); Apart.ir = mxGetIr(APART_OUT); Apart.pr = mxGetPr(APART_OUT); /* ------------------------------------------------------------ The real job: ------------------------------------------------------------ */ extractA(Apart, Ajc,Ajc+m,At.ir,At.pr, ifirst, m); /* ------------------------------------------------------------ Release working array ------------------------------------------------------------ */ mxFree(Ajc); }
int TGAImage::getA( int lod, int i, int j ) { if( lod > goodLOD ) generateLODupTo( lod ) ; int w = getLODwidth(lod); return extractA( lodData[lod] + BPP * ( j * w + i ) ); }