Example #1
0
//----------------------------------------
//	main
//----------------------------------------
int main(int /*argc*/, char** /*argv*/)
{
	PrepareConsoleLogger logger(Poco::Logger::ROOT, Poco::Message::PRIO_INFORMATION);

	const std::string::size_type kNumKeys = 262144;

	std::vector<Poco::UInt32>	intVector(kNumKeys);
	std::vector<std::string>	strVector(kNumKeys);

	Poco::Random random;

	for(std::size_t i=0; i<kNumKeys; ++i)
	{
		intVector[i] = random.next();
		strVector[i] = Poco::format("%08x", intVector[i]);
	}

	std::cout << "------------------------------------" << std::endl;
	std::cout << "Comparison for key type Poco::UInt32" << std::endl;
	std::cout << "------------------------------------" << std::endl;
	TestAll(intVector);

	std::cout << "----------------------------------------------" << std::endl;
	std::cout << "Comparison for key type std::string (length=8)" << std::endl;
	std::cout << "----------------------------------------------" << std::endl;
	TestAll(strVector);

	return 0;
}
/*鼠标拖拽响应*/
void SpaceTranformWindow::mouseMoveEvent(QMouseEvent* event)
{
    QPoint mousePos = event->pos();

    /*鼠标在图片框内*/
    if(ui->ShowImage->rect().contains(mousePos))
    {
        switch(_Mode)
        {
        case DONOTHING: /*不做处理*/
        {
            break;
        }
        case POSITION:  /*平移*/
        {
            if(mousePos != _vectorStart)
            {
                _VectorMove += (mousePos - _vectorStart);

                _ShowImageCenter += (mousePos - _vectorStart);

                _vectorStart = mousePos;
                transformImage();
            }
            break;
        }
        case ROTATION:  /*旋转*/
        {
            /*旋转角度*/
            double endAngle;
            double angleTurned;

            endAngle = atan2(mousePos.y()-_ShowImageCenter.y(),
                             mousePos.x()-_ShowImageCenter.x());
            angleTurned = endAngle - _TurnAngle;
            if(angleTurned!=0)
            {
                _TransformAngle += angleTurned;
                _TurnAngle = endAngle;
                transformImage();
            }
            break;
        }
        case RESIZE_LIMITED:    /*等比例缩放*/
        {
            QPoint strVector(_vectorStart.x()-_ShowImageCenter.x(),
                             _vectorStart.y()-_ShowImageCenter.y());
            QPoint endVector(mousePos.x()-_ShowImageCenter.x(),
                             mousePos.y()-_ShowImageCenter.y());

            if(strVector.x()!=0)
            {
                _Scale_width_ShowImage = static_cast<double>(endVector.x())/strVector.x();
                if(_Scale_width_ShowImage <=0)
                {
                    _Scale_width_ShowImage =1;
                }
            }
            else
            {
                _Scale_width_ShowImage = 1;
            }

            _Scale_height_ShowImage = _Scale_width_ShowImage;

            transformImage();
            break;
        }
        case RESIZE_UNLIMITED:  /*非等比例缩放*/
        {
            QPoint strVector(_vectorStart.x()-_ShowImageCenter.x(),
                             _vectorStart.y()-_ShowImageCenter.y());
            QPoint endVector(mousePos.x()-_ShowImageCenter.x(),
                             mousePos.y()-_ShowImageCenter.y());

            if(strVector.x()!=0)
            {
                _Scale_width_ShowImage = static_cast<double>(endVector.x())/strVector.x();
                if(_Scale_width_ShowImage <=0)
                {
                    _Scale_width_ShowImage =1;
                }
            }
            else
            {
                _Scale_width_ShowImage = 1;
            }


            if(strVector.y()!=0)
            {
                _Scale_height_ShowImage = static_cast<double>(endVector.y())/strVector.y();
                if(_Scale_height_ShowImage <=0)
                {
                    _Scale_height_ShowImage =1;
                }
            }
            else
            {
                _Scale_height_ShowImage = 1;
            }

            transformImage();
            break;
        }
        }
    }

    /*鼠标在图片框外*/
    else
    {
        mouseReleaseEvent(event);
        _Mode = DONOTHING;
    }
}