//---------------------------------------- // 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; } }