Exemple #1
0
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;;
        }
    }
}
Exemple #2
0
void WebView::zoomReset()
{
    if (m_currentZoomLevel != qzSettings->defaultZoomLevel) {
        m_currentZoomLevel = qzSettings->defaultZoomLevel;
        applyZoom();
    }
}
Exemple #3
0
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);
    }
}
Exemple #4
0
void WebView::zoomOut()
{
    if (m_currentZoomLevel > 0) {
        m_currentZoomLevel--;
        applyZoom();
    }
}
Exemple #5
0
void WebView::zoomIn()
{
    if (m_currentZoomLevel < zoomLevels().count() - 1) {
        m_currentZoomLevel++;
        applyZoom();
    }
}
Exemple #6
0
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);
    }
}
Exemple #7
0
void WebView::zoomOut()
{
    int i = m_zoomLevels.indexOf(m_currentZoom);

    if (i > 0) {
        m_currentZoom = m_zoomLevels[i - 1];
    }

    applyZoom();
}
Exemple #8
0
void WebView::zoomIn()
{
    int i = m_zoomLevels.indexOf(m_currentZoom);

    if (i < m_zoomLevels.count() - 1) {
        m_currentZoom = m_zoomLevels[i + 1];
    }

    applyZoom();
}
Exemple #9
0
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);
}
Exemple #10
0
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);
    }
}
Exemple #11
0
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));
}
Exemple #12
0
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);
}
Exemple #13
0
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);
}
Exemple #14
0
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;
        }
}
Exemple #15
0
void WebView::setZoomLevel(int level)
{
    m_currentZoomLevel = level;
    applyZoom();
}
Exemple #16
0
void WebView::zoomReset()
{
    m_currentZoom = 100;
    applyZoom();
}
Exemple #17
0
int GpsDialog::exec() {
    m_ui->zoom->setValue(16);
    applyZoom();
    return QDialog::exec();
}