//----------------------------------------------------------------------------- void KBusyPtr :: loadCursor (const char* cursorName,const char* maskName) { int i, ix, iy, numX, numY, x, y; QBitmap map, mask; QBitmap cmap(16,16), cmask(16,16); numCursors = 0; if (!loadBitmap(map,cursorName)) return; if (!loadBitmap(mask,maskName)) return; numX = map.width() >> 4; numY = map.height() >> 4; numCursors = numX * numY; if (bitmapList) delete[] bitmapList; QSize size(16,16); bitmapList = new QBitmap[numCursors];//(size); if (cursorList) delete[] cursorList; cursorList = new QCursor[numCursors]; for (i=0,iy=0,y=0; iy<numY; iy++, y+=16) { for (ix=0,x=0; ix<numX; ix++, x+=16, i++) { bitBlt(&cmap, 0, 0, &map, x, y, 16, 16); bitBlt(&cmask, 0, 0, &mask, x, y, 16, 16); cursorList[i] = QCursor(cmap, cmask, 8, 8); } } }
/** An atom pair list consists of 2 values for each entry, a beginning * index and ending index. For molecules and residues this is the first * and just beyond the last atom; for atoms it is just the atom itself * twice. */ Image::PairType Image::CreatePairList(Topology const& Parm, Mode modeIn, std::string const& maskExpression) { PairType atomPairs; // Set up mask based on desired imaging mode. if ( modeIn == BYMOL || modeIn == BYRES ) { CharMask cmask( maskExpression ); if ( Parm.SetupCharMask( cmask ) ) return atomPairs; cmask.MaskInfo(); if (cmask.None()) return atomPairs; // Set up atom range for each entity to be imaged. if (modeIn == BYMOL) { atomPairs.reserve( Parm.Nmol()*2 ); for (Topology::mol_iterator mol = Parm.MolStart(); mol != Parm.MolEnd(); ++mol) CheckRange( atomPairs, cmask, mol->BeginAtom(), mol->EndAtom()); } else { // BYRES atomPairs.reserve( Parm.Nres()*2 ); for (Topology::res_iterator residue = Parm.ResStart(); residue != Parm.ResEnd(); ++residue) CheckRange( atomPairs, cmask, residue->FirstAtom(), residue->LastAtom() ); } } else { // BYATOM AtomMask imask( maskExpression ); if ( Parm.SetupIntegerMask( imask ) ) return atomPairs; imask.MaskInfo(); if (imask.None()) return atomPairs; atomPairs.reserve( Parm.Natom()*2 ); for (AtomMask::const_iterator atom = imask.begin(); atom != imask.end(); ++atom) { atomPairs.push_back( *atom ); atomPairs.push_back( (*atom)+1 ); } } // mprintf("\tNumber of %ss to be imaged is %zu based on mask '%s'\n", // ModeString[modeIn], atomPairs.size()/2, maskIn.MaskString()); return atomPairs; }
RectangularBinaryMatrix(const T &raw, unsigned int r, unsigned c) : _columns(alloc(r, c)), _r(r), _c(c) { for(unsigned int i = 0; i < _c; ++i) _columns[i] = raw[i] & cmask(); }
// Randomize the content of the matrix void randomize(uint64_t (*rng)()) { for(unsigned int i = 0; i < _c; ++i) _columns[i] = rng() & cmask(); }