bool Canvas::getDigest(Digest& digest) { // we don't have a digest if the image is uninitialized if (!m_pBMIH) return false; // read data from DIB int nSize = m_nLineLength * m_nHeight; BYTE* pData = new BYTE[nSize]; memset(pData, 0, nSize); if (GetDIBits(m_hDC, m_hBmp, 0, m_nHeight, pData, reinterpret_cast<BITMAPINFO*>(m_pBMIH), DIB_RGB_COLORS) != m_nHeight) { delete[] pData; return false; } // apply transparency, if any updateTrans(pData); // calculate hash mir_sha1_hash(pData, nSize, digest.m_Digest); delete[] pData; return true; }
void NoInterp_Magnetic_Field::initialize() { // Hardcode the parameters for the coil placement params[0]=5006.84; params[1]=0.985822; params[2]=0.9982; params[3]=3.35674; params[4]=-21.7003; params[5]=4.63252; params[6]=1.36807; params[7]=0.016498; params[8]=-0.163397; params[9]=-0.0495801; params[10]=12.3495; params[11]=26.5842; params[12]=0.00990677; params[13]=8.21411; params[14]=-0.0402859; params[15]=-0.938968; params[16]=0.402455; params[17]=24.6394; params[18]=-0.00621628; params[19]=1.42923; params[20]=-0.0654962; params[21]=1.1413; params[22]=0.634673; params[23]=-4.96187; params[24]=-0.00563976; params[25]=0.331756; params[26]=0.120429; params[27]=1.10007; params[28]=-0.845846; params[29]=-1.49355; params[30]=0.00201339; params[31]=22.7439; params[32]=0.546912; params[33]=-0.891447; params[34]=-0.491546; fieldCS = new TMD5(); fieldCS->Update((unsigned char *)params,sizeof(double)*34); fieldCS->Final(); // Define the coil positions and rotations. updateTrans(params+1); // Generate the segments nRestSegs = restGen(segments,NSEGSBIGARC,NSEGSSMALLARC); int nStepSegs = stepGen(segments + 6*nRestSegs,NSEGSBIGARC,NSEGSSMALLARC,uStrLen,dStrLen,dStepRad); if ((nStepSegs+nRestSegs)!=nSegs) { std::cerr << "WRONG NUMBER OF SEGMENTS!\n"; exit (-1); } }
bool Canvas::writePNG(const TCHAR* szFileName) { // read data from DIB BYTE* pData = new BYTE[m_nLineLength * m_nHeight]; if (GetDIBits(m_hDC, m_hBmp, 0, m_nHeight, pData, reinterpret_cast<BITMAPINFO*>(m_pBMIH), DIB_RGB_COLORS) != m_nHeight) { delete[] pData; return false; } // apply transparency, if any updateTrans(pData); // calculate resulting image size long png_len = 0; if (!mu::png::dibToPng(m_pBMIH, pData, 0, &png_len) || png_len == 0) { delete[] pData; return false; } // get the resulting image data BYTE* pRawPNG = new BYTE[png_len]; png_len = 0; if (!mu::png::dibToPng(m_pBMIH, pData, pRawPNG, &png_len)) { delete[] pData; delete[] pRawPNG; return false; } // write image data to file FILE* fp = _tfopen(szFileName, _T("wb")); if (!fp) { delete[] pData; delete[] pRawPNG; return false; } fwrite(pRawPNG, 1, png_len, fp); fclose(fp); // free buffers delete[] pRawPNG; delete[] pData; return true; }
void wheel::onWheelScroll ( ui::wheelCore* pWheel, ui::wheelCore::event const& event ) { updateTrans (); if ( mObserver ) { wheel::wheelEvent wEvent; wEvent.setTimeStamp ( event.mTimeStamp ); wEvent.setBase ( this ); wEvent.setManager ( mUiMgr.get () ); mObserver->onWheelScroll ( wEvent ); } }
void Animator::update(float elapsed) { if (!_mode) return; if (_mode & 0x8000) { _trans_time += _trans_speed * elapsed; if (_trans_time < 1) { updateTrans(); return; } _mode &= 0x7fff; if (!_mode || !_speed) { updateAnim(); _mode = 0; return; } } //do anim... _time += _speed * elapsed; switch (_mode) { case ANIM_MODE_LOOP: _time = fmod(_time, _seq_len); if (_time < 0) _time += _seq_len; break; case ANIM_MODE_PINGPONG: _time = fmod(_time, _seq_len * 2); if (_time < 0) _time += _seq_len * 2; if (_time >= _seq_len) { _time = _seq_len - (_time - _seq_len); _speed = -_speed; } break; case ANIM_MODE_ONESHOT: if (_time < 0) { _time = 0; _mode = 0; } else if (_time >= _seq_len) { _time = _seq_len; _mode = 0; } break; } updateAnim(); }