void HFViewport::intervalZoom(float dt){ if(!allowZoom){ return; } applyPos(m_tScrollDistance); m_tScrollDistance = ccpMult(m_tScrollDistance, SCROLL_DEACCEL_RATE); float curScale = this->m_TargetNode->getScale(); float targetZoom = 0.0; if ((curScale == mZoomLimitationMin * (1 + ZOOM_BOUND_LIMIT_PERCENT) || curScale == mZoomLimitationMax * (1 - ZOOM_BOUND_LIMIT_PERCENT)) && (fabsf(m_tScrollDistance.x) <= SCROLL_DEACCEL_DIST && fabsf(m_tScrollDistance.y) <= SCROLL_DEACCEL_DIST)) { this->unschedule(schedule_selector(HFViewport::intervalZoom)); this->mTouchMode = TouchMode_None; } if( curScale > mZoomLimitationMax * (1 - ZOOM_BOUND_LIMIT_PERCENT) ) { targetZoom=curScale-zoomDelta; if(targetZoom<mZoomLimitationMax * (1 - ZOOM_BOUND_LIMIT_PERCENT)){ targetZoom=mZoomLimitationMax * (1 - ZOOM_BOUND_LIMIT_PERCENT); } if( targetZoom != curScale ) { if(this->mTouchMode==TouchMode_GOUND){ applyZoom(curScale); }else{ applyZoom(targetZoom); } zoomDelta *= ZOOM_DEACCEL_RATE; } } else if (curScale <= mZoomLimitationMin * (1 + ZOOM_BOUND_LIMIT_PERCENT)) { targetZoom=curScale+zoomDelta; if(targetZoom > mZoomLimitationMin * (1 + ZOOM_BOUND_LIMIT_PERCENT)){ targetZoom = mZoomLimitationMin * (1 + ZOOM_BOUND_LIMIT_PERCENT); } if( targetZoom != curScale ) { if(this->mTouchMode==TouchMode_GOUND){ applyZoom(curScale); }else{ applyZoom(targetZoom); } zoomDelta *= ZOOM_DEACCEL_RATE;; } } }
void WebView::zoomReset() { if (m_currentZoomLevel != qzSettings->defaultZoomLevel) { m_currentZoomLevel = qzSettings->defaultZoomLevel; applyZoom(); } }
void Viewport::stepZoom(const Vec2& point1, const Vec2& point2, float scale) { if(!allowZoom){ return; } mIsProcessingZoom = true; float curDistance = point1.getDistance(point2); float curScale = (curDistance) / mZoomFingersDistance * mZoomOldScale; if (scale==0.0f) { if( curScale > mZoomLimitationMax ) { curScale = mZoomLimitationMax; } else if( curScale < mZoomLimitationMin ) { curScale = mZoomLimitationMin; } } else{ curScale = scale; } applyZoom(curScale); if (mStepZoomHandler) { pushValueToLua(mStepZoomHandler, point1, point2); } }
void WebView::zoomOut() { if (m_currentZoomLevel > 0) { m_currentZoomLevel--; applyZoom(); } }
void WebView::zoomIn() { if (m_currentZoomLevel < zoomLevels().count() - 1) { m_currentZoomLevel++; applyZoom(); } }
void HFViewport::stepZoom(const CCPoint& point1, const CCPoint& point2, float scale) { if(!allowZoom){ return; } mIsProcessingZoom = true; float curDistance = ccpDistance(point1, point2); float curScale = (curDistance) / mZoomFingersDistance * mZoomOldScale; if (scale==0.0f) { if( curScale > mZoomLimitationMax ) { curScale = mZoomLimitationMax; } else if( curScale < mZoomLimitationMin ) { curScale = mZoomLimitationMin; } } else{ curScale = scale; } applyZoom(curScale); if (mTouchDelegate) { mTouchDelegate->onStepZoom(point1, point2); } }
void WebView::zoomOut() { int i = m_zoomLevels.indexOf(m_currentZoom); if (i > 0) { m_currentZoom = m_zoomLevels[i - 1]; } applyZoom(); }
void WebView::zoomIn() { int i = m_zoomLevels.indexOf(m_currentZoom); if (i < m_zoomLevels.count() - 1) { m_currentZoom = m_zoomLevels[i + 1]; } applyZoom(); }
void WebView::wheelEvent(QWheelEvent *event) { if (event->modifiers() & Qt::ControlModifier) { int numDegrees = event->delta() / 8; int numSteps = numDegrees / 15; m_currentZoom = m_currentZoom + numSteps * 10; applyZoom(); event->accept(); return; } QWebView::wheelEvent(event); }
void HFViewport::endZoom() { float curScale = this->m_TargetNode->getScale(); CCLOG("endZoom with scale: %f", curScale); float targetZoom =0.0; bool moreThanMax = false; bool lessThanMin = false; if( curScale >= mZoomLimitationMax * (1 - ZOOM_BOUND_LIMIT_PERCENT) ) { moreThanMax = true; targetZoom = mZoomLimitationMax * (1 - ZOOM_BOUND_LIMIT_PERCENT); } else if (curScale < mZoomLimitationMin * (1 + ZOOM_BOUND_LIMIT_PERCENT)) { lessThanMin = true; targetZoom = mZoomLimitationMin * (1 + ZOOM_BOUND_LIMIT_PERCENT); } else{ targetZoom = curScale; } if (!isAutoZoom) { targetZoom = curScale; } if( targetZoom != curScale ) { if(moreThanMax){ //计算指数递减初始值 sum = 1 / (1 - q), q为比值 zoomDelta = (this->m_TargetNode->getScale() - mZoomLimitationMax * (1 - ZOOM_BOUND_LIMIT_PERCENT)) / ((1/(1-ZOOM_DEACCEL_RATE))*0.95); this->mTouchMode = TouchMode_ZoomFling; this->schedule(schedule_selector(HFViewport::intervalZoom)); } else if (lessThanMin) { //计算指数递减初始值 sum = 1 / (1 - q), q为比值 // zoomDelta = (mZoomLimitationMin - this->m_TargetNode->getScale()) / ((1/(1-ZOOM_DEACCEL_RATE))*0.95); zoomDelta = (mZoomLimitationMin * (1 + ZOOM_BOUND_LIMIT_PERCENT) - this->m_TargetNode->getScale()) / ((1/(1-ZOOM_DEACCEL_RATE))*0.95); this->mTouchMode = TouchMode_ZoomFling; this->schedule(schedule_selector(HFViewport::intervalZoom)); } else{ applyZoom(targetZoom); } } mIsProcessingZoom = false; if (mTouchDelegate) { mTouchDelegate->onEndZoom(targetZoom); } }
void HFViewport::changeSceneZoom(){ CCPoint orgPt = m_TargetNode->getPosition(); float orgS = m_TargetNode->getScale(); float finalS = orgS - 0.2; float time = 0.2; CCPoint setPt = orgPt * (finalS / orgS); scrollTo(setPt, NULL); applyZoom(finalS); CCPoint finalPt = m_TargetNode->getPosition(); finalS = m_TargetNode->getScale(); m_TargetNode->setPosition(orgPt); m_TargetNode->setScale(orgS); CCSpawn *spawn =CCSpawn::createWithTwoActions(CCMoveTo::create(time, finalPt), CCScaleTo::create(time, finalS)); m_TargetNode->runAction(CCSequence::create(spawn, NULL)); }
void Viewport::changeSceneZoom(){ Vec2 orgPt = m_TargetNode->getPosition(); float orgS = m_TargetNode->getScale(); float finalS = orgS - 0.2; float time = 0.2; Vec2 setPt = orgPt * (finalS / orgS); scrollTo(setPt, NULL); applyZoom(finalS); Vec2 finalPt = m_TargetNode->getPosition(); finalS = m_TargetNode->getScale(); m_TargetNode->setPosition(orgPt); m_TargetNode->setScale(orgS); Spawn *spawn =Spawn::createWithTwoActions(MoveTo::create(time, finalPt), ScaleTo::create(time, finalS)); m_TargetNode->runAction(spawn); }
void ZoomView::setZoom(int percent) { if (debugZoomWidget) qDebug() << "ZoomView::setZoom" << percent; if (m_zoom == percent) return; m_zoom = percent; const qreal hundred = 100.0; m_zoomFactor = static_cast<qreal>(m_zoom) / hundred; applyZoom(); if (m_zoomMenu) // Do not force them into existence m_zoomMenu->setZoom(m_zoom); resetTransform(); scale(m_zoomFactor, m_zoomFactor); }
void HFViewport::zoomInOut(float dt) { float curScale = this->m_TargetNode->getScale(); float targetZoom = 0.0; float resolutionScale = getResolutionRate(); if(curScale < resolutionScale) { targetZoom=curScale+m_tAutoZoomDelta; if(targetZoom > resolutionScale){ targetZoom=resolutionScale; } } else if (curScale > resolutionScale) { targetZoom=curScale-m_tAutoZoomDelta; if(targetZoom < resolutionScale){ targetZoom=resolutionScale; } } else { targetZoom = resolutionScale; } if( targetZoom != curScale ) { applyZoom(targetZoom); m_tAutoZoomDelta *= ZOOM_DEACCEL_RATE; } if (fabsf(m_tAutoZoomDistance.x) > SCROLL_DEACCEL_DIST || fabsf(m_tAutoZoomDistance.y) > SCROLL_DEACCEL_DIST) { applyPos(m_tAutoZoomDistance); m_tAutoZoomDistance = ccpMult(m_tAutoZoomDistance, SCROLL_DEACCEL_RATE); } if (curScale == resolutionScale && (fabsf(m_tAutoZoomDistance.x) <= SCROLL_DEACCEL_DIST && fabsf(m_tAutoZoomDistance.y) <= SCROLL_DEACCEL_DIST)) { unschedule(schedule_selector(HFViewport::zoomInOut)); this->mTouchMode = TouchMode_None; return; } }
void WebView::setZoomLevel(int level) { m_currentZoomLevel = level; applyZoom(); }
void WebView::zoomReset() { m_currentZoom = 100; applyZoom(); }
int GpsDialog::exec() { m_ui->zoom->setValue(16); applyZoom(); return QDialog::exec(); }