예제 #1
0
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);
    }
}
예제 #3
0
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;
}
예제 #4
0
파일: uiwheel.cpp 프로젝트: prwhite/philibs
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 );
  }
}
예제 #5
0
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();
}