예제 #1
0
파일: filetransdlg.cpp 프로젝트: Shura0/psi
FileTransferHandler::FileTransferHandler(PsiAccount *pa, FileTransfer *ft)
{
	d = new Private;
	d->pa = pa;
	d->c = 0;

	if(ft) {
		d->sending = false;
		d->peer = ft->peer();
		d->fileName = clean_filename(ft->fileName());
		d->fileSize = ft->fileSize();
		d->desc = ft->description();
		d->shift = calcShift(d->fileSize);
		d->complement = calcComplement(d->fileSize, d->shift);
		d->ft = ft;
		Jid proxy = d->pa->userAccount().dtProxy;
		if(proxy.isValid())
			d->ft->setProxy(proxy);
		mapSignals();
	}
	else {
		d->sending = true;
		d->ft = 0;
	}
}
예제 #2
0
float ScenRectangle::intersect(Node *node)
 {
   ////////////////
   if(nodeOverlap(*node))
    {
      Point2D pt(node->getPosition());
      //Trasformo il punto nelle coordinate locali del rettangolo
      pt.translate(-this->p.x,-this->p.y);
      pt.rotate(-rotAngle);
	
      Vector2D lv;
      lv=node->getVelocity();
      lv.rotate(-rotAngle);
		 
     Vector2D shift=calcShift(pt,lv,node->getRadius()+0.01f);
     node->setPosition(shift);
     //return 0;
   }	
  ////////////////////////////   	 
	 
	 
   float radius=node->getRadius();	
   ScenRectangle boundRect(Point2D(p.x-radius,p.y-radius),
		                              width+radius*2,height+radius*2);
  
  //Creo il raggio e lo trasformo nelle coodinate locali del rettangolo
  Ray2D ray=transformRay(Ray2D(node->getPosition(),node->getVelocity()));
  
  //Lo devo traslare perchè calcolo 
  //l'intersezione con un rettangolo allargato
  ray.o.x+=radius; ray.o.y+=radius;
  
  //Calcolo l'intersezione
  return boundRect.rayLocalIntersect(ray);
 }//Fine intersect
예제 #3
0
파일: bench.c 프로젝트: auriga/auriga
int main()
{
	char szStr[256];
	int ctime;
	ctime=0;

	ctime=ctime+calcFuncCall();
	ctime=ctime+calcAdd();
	ctime=ctime+calcSub();
	ctime=ctime+calcMul();
	ctime=ctime+calcDiv();
	ctime=ctime+calcShift();
	ctime=ctime+calcFloatAdd();
	ctime=ctime+calcFloatSub();
	ctime=ctime+calcFloatMul();
	ctime=ctime+calcFloatDiv();
	ctime=ctime+calcDoubleAdd();
	ctime=ctime+calcDoubleSub();
	ctime=ctime+calcDoubleMul();
	ctime=ctime+calcDoubleDiv();


	printf("Spec Time=,%d",ctime);

	return 0;
}
예제 #4
0
void ImageViewer::layoutImage()
{
    if(hasPicture()) {
        calcScaleRatio();
        calcTopLeft();
        calcShift();
    }

    updateCursor();
}
예제 #5
0
파일: filetransdlg.cpp 프로젝트: Shura0/psi
void FileTransferHandler::send(const XMPP::Jid &to, const QString &fname, const QString &desc)
{
	if(!d->sending)
		return;

	d->peer = to;
	QFileInfo fi(fname);
	d->filePath = fname;
	d->fileName = fi.fileName();
	d->fileSize = fi.size(); // TODO: large file support
	d->desc = desc;
	d->shift = calcShift(d->fileSize);
	d->complement = calcComplement(d->fileSize, d->shift);

	d->ft = d->pa->client()->fileTransferManager()->createTransfer();
	Jid proxy = d->pa->userAccount().dtProxy;
	if(proxy.isValid())
		d->ft->setProxy(proxy);
	mapSignals();

	d->f.setFileName(fname);
	d->ft->sendFile(d->peer, d->fileName, d->fileSize, desc);
}
예제 #6
0
파일: filetransdlg.cpp 프로젝트: DiGMi/psi
void FileTransferHandler::send(const XMPP::Jid &to, const QString &fname, const QString &desc)
{
	if(!d->sending)
		return;

	d->peer = to;
	QFileInfo fi(fname);
	d->filePath = fname;
	d->fileName = fi.fileName();
	d->fileSize = fi.size(); // TODO: large file support
	d->desc = desc;
	d->shift = calcShift(d->fileSize);
	d->complement = calcComplement(d->fileSize, d->shift);

	d->ft = d->pa->client()->fileTransferManager()->createTransfer();
	Jid proxy = d->pa->userAccount().dtProxy;
	if(proxy.isValid())
		d->ft->setProxy(proxy);
	mapSignals();

	d->f.setFileName(fname);

	// try to make thumbnail
	QImage img(fname);
	XMPP::FTThumbnail thumb;
	if (!img.isNull()) {
		QByteArray ba;
		QBuffer buffer(&ba);
		buffer.open(QIODevice::WriteOnly);
		img = img.scaled(64, 64, Qt::KeepAspectRatio, Qt::SmoothTransformation);
		img.save(&buffer, "PNG");
		thumb = XMPP::FTThumbnail(ba, "image/png", img.width(), img.height());
	}

	d->ft->sendFile(d->peer, d->fileName, d->fileSize, desc, thumb);
}