亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? qeffects.cpp

?? qtopia-phone-2.2.0下公共的控件實(shí)現(xiàn)源代碼。
?? CPP
字號:
/********************************************************************************** Implementation of QEffects functions**** Created : 2000.06.21**** Copyright (C) 2000 Trolltech AS.  All rights reserved.**** This file is part of the widgets module of the Qt GUI Toolkit.**** This file may be distributed under the terms of the Q Public License** as defined by Trolltech AS of Norway and appearing in the file** LICENSE.QPL included in the packaging of this file.**** This file may be distributed and/or modified under the terms of the** GNU General Public License version 2 as published by the Free Software** Foundation and appearing in the file LICENSE.GPL included in the** packaging of this file.**** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition** licenses may use this file in accordance with the Qt Commercial License** Agreement provided with the Software.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.**** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for**   information about Qt Commercial License Agreements.** See http://www.trolltech.com/qpl/ for QPL licensing information.** See http://www.trolltech.com/gpl/ for GPL licensing information.**** Contact info@trolltech.com if any conditions of this licensing are** not clear to you.************************************************************************/#include "qeffects_p.h"#ifndef QT_NO_EFFECTS#include "qapplication.h"#include "qwidget.h"#include "qpixmap.h"#include "qimage.h"#include "qtimer.h"#include "qdatetime.h"#include "qguardedptr.h"/*  Internal class to get access to protected QWidget-members*/class QAccessWidget : public QWidget{    friend class QAlphaWidget;    friend class QRollEffect;public:    QAccessWidget( QWidget* parent = 0, const char* name = 0, WFlags f = 0 )	: QWidget( parent, name, f ) {}};/*  Internal class QAlphaWidget.  The QAlphaWidget is shown while the animation lasts  and displays the pixmap resulting from the alpha blending.*/class QAlphaWidget: public QWidget, private QEffects{    Q_OBJECTpublic:    QAlphaWidget( QWidget* w, WFlags f = 0 );    void run( int time );protected:    void paintEvent( QPaintEvent* e );    void closeEvent( QCloseEvent* );    bool eventFilter( QObject* o, QEvent* e );    void alphaBlend();protected slots:    void render();    void goodBye();private:    QPixmap pm;    double alpha;    QImage back;    QImage front;    QImage mixed;    QGuardedPtr<QAccessWidget> widget;    int duration;    int elapsed;    bool showWidget;    QTimer anim;    QTime checkTime;};static QAlphaWidget* blend = 0;/*  Constructs a QAlphaWidget.*/QAlphaWidget::QAlphaWidget( QWidget* w, WFlags f )    : QWidget( 0, 0, f ){    setEnabled( FALSE );    pm.setOptimization( QPixmap::BestOptim );    setBackgroundMode( NoBackground );    widget = (QAccessWidget*)w;    alpha = 0;}/*  \reimp*/void QAlphaWidget::paintEvent( QPaintEvent* ){    bitBlt( this, QPoint(0,0), &pm );}/*  Starts the alphablending animation.  The animation will take about \a time ms*/void QAlphaWidget::run( int time ){    duration = time;    if ( duration < 0 )	duration = 200;    elapsed = 0;    checkTime.start();    if ( !widget )	return;    showWidget = TRUE;    widget->installEventFilter( this );    qApp->installEventFilter( this );    move( widget->geometry().x(),widget->geometry().y() );    resize( widget->size().width(), widget->size().height() );    front = QImage( widget->size(), 32 );    front = QPixmap::grabWidget( widget );    back = QImage( widget->size(), 32 );    back = QPixmap::grabWindow( QApplication::desktop()->winId(),				widget->geometry().x(), widget->geometry().y(),				widget->geometry().width(), widget->geometry().height() );    mixed = back.copy();    if ( !mixed.isNull() ) {	widget->setWState( WState_Visible );	pm = mixed;	show();	connect( &anim, SIGNAL(timeout()), this, SLOT(render()));	anim.start( 1 );    } else {	widget->clearWState( WState_Visible );	widget->show();    }}/*  \reimp*/bool QAlphaWidget::eventFilter( QObject* o, QEvent* e ){    switch ( e->type() ) {    case QEvent::Move:	if ( o != widget )	    break;	move( widget->geometry().x(),widget->geometry().y() );	update();	break;    case QEvent::Hide:    case QEvent::Close:	if ( o != widget )	    break;    case QEvent::MouseButtonPress:	showWidget = FALSE;	render();	break;    case QEvent::KeyPress:	{	    QKeyEvent *ke = (QKeyEvent*)e;	    if ( ke->key() == Key_Escape )		showWidget = FALSE;	    else		duration = 0;	    render();	    break;	}    default:	break;    }    return QWidget::eventFilter( o, e );}/*  \reimp*/void QAlphaWidget::closeEvent( QCloseEvent* e ){    e->accept();    if ( !blend )	return;    showWidget = FALSE;    render();}/*  Render alphablending for the time elapsed.  Show the blended widget and free all allocated source  if the blending is finished.*/void QAlphaWidget::render(){    int tempel = checkTime.elapsed();    if ( elapsed >= tempel )        elapsed++;    else        elapsed = tempel;    alpha = double(tempel) / duration;    if ( alpha >= 1 || !showWidget ) {	anim.stop();	if ( widget ) {	    widget->removeEventFilter( this );	    widget->clearWState( WState_Visible );	    if ( showWidget ) {		BackgroundMode bgm = widget->backgroundMode();		widget->setBackgroundMode( NoBackground );		widget->show();		widget->clearWState( WState_Visible ); // prevent update in setBackgroundMode		widget->setBackgroundMode( bgm );		widget->setWState( WState_Visible );	    } else {		widget->hide();	    }	}	blend = 0;	QTimer::singleShot( 0, this, SLOT(goodBye()) );    } else {	alphaBlend();	pm = mixed;	repaint( FALSE );    }}/*  Delete this after timout*/void QAlphaWidget::goodBye(){    delete this;}/*  Calculate an alphablended image.*/void QAlphaWidget::alphaBlend(){    const double ia = 1-alpha;    const int sw = front.width();    const int sh = front.height();    switch( front.depth() ) {    case 32:	{	    Q_UINT32** md = (Q_UINT32**)mixed.jumpTable();	    Q_UINT32** bd = (Q_UINT32**)back.jumpTable();	    Q_UINT32** fd = (Q_UINT32**)front.jumpTable();	    for (int sy = 0; sy < sh; sy++ ) {		Q_UINT32* bl = ((Q_UINT32*)bd[sy]);		Q_UINT32* fl = ((Q_UINT32*)fd[sy]);		for (int sx = 0; sx < sw; sx++ ) {		    Q_UINT32 bp = bl[sx];		    Q_UINT32 fp = fl[sx];		    ((Q_UINT32*)(md[sy]))[sx] =  qRgb(int (qRed(bp)*ia + qRed(fp)*alpha),						    int (qGreen(bp)*ia + qGreen(fp)*alpha),						    int (qBlue(bp)*ia + qBlue(fp)*alpha) );		}	    }	}    default:	break;    }}/*  Internal class QRollEffect  The QRollEffect widget is shown while the animation lasts  and displays a scrolling pixmap.*/class QRollEffect : public QWidget, private QEffects{    Q_OBJECTpublic:    QRollEffect( QWidget* w, WFlags f, DirFlags orient );    void run( int time );protected:    void paintEvent( QPaintEvent* );    bool eventFilter( QObject*, QEvent* );    void closeEvent( QCloseEvent* );private slots:    void scroll();    void goodBye();private:    QGuardedPtr<QAccessWidget> widget;    int currentHeight;    int currentWidth;    int totalHeight;    int totalWidth;    int duration;    int elapsed;    bool done;    bool showWidget;    int orientation;    QTimer anim;    QTime checkTime;    QPixmap pm;};static QRollEffect* roll = 0;/*  Construct a QRollEffect widget.*/QRollEffect::QRollEffect( QWidget* w, WFlags f, DirFlags orient )    : QWidget( 0, 0, f ), orientation(orient){    setEnabled( FALSE );    widget = (QAccessWidget*) w;    ASSERT( widget );    setBackgroundMode( NoBackground );    if ( widget->testWState( WState_Resized ) ) {	totalWidth = widget->width();	totalHeight = widget->height();    } else {	totalWidth = widget->sizeHint().width();	totalHeight = widget->sizeHint().height();    }    currentHeight = totalHeight;    currentWidth = totalWidth;    if ( orientation & RightScroll || orientation & LeftScroll )	currentWidth = 0;    if ( orientation & DownScroll || orientation & UpScroll )	currentHeight = 0;    pm.setOptimization( QPixmap::BestOptim );    pm = QPixmap::grabWidget( widget );}/*  \reimp*/void QRollEffect::paintEvent( QPaintEvent* ){    int x = orientation & RightScroll ? QMIN(0, currentWidth - totalWidth) : 0;    int y = orientation & DownScroll ? QMIN(0, currentHeight - totalHeight) : 0;    bitBlt( this, x, y, &pm,		  0, 0, pm.width(), pm.height(), CopyROP, TRUE );}/*  \reimp*/bool QRollEffect::eventFilter( QObject* o, QEvent* e ){    switch ( e->type() ) {	case QEvent::Move:	    if ( o != widget )		break;	    move( widget->geometry().x(),widget->geometry().y() );	    update();	    break;	case QEvent::Hide:	case QEvent::Close:	    if ( o != widget )		break;	    showWidget = FALSE;	    done = TRUE;	    scroll();	    break;	case QEvent::MouseButtonPress:	    showWidget = FALSE;	    done = TRUE;	    break;	case QEvent::KeyPress:	    {		QKeyEvent *ke = (QKeyEvent*)e;		if ( ke->key() == Key_Escape )		    showWidget = FALSE;		done = TRUE;		scroll();		break;	    }	default:	    break;    }    return QWidget::eventFilter( o, e );}/*  \reimp*/void QRollEffect::closeEvent( QCloseEvent* e ){    e->accept();    if ( done )	return;    showWidget = FALSE;    done = TRUE;    scroll();}/*  Start the animation.  The animation will take about \a time ms, or is  calculated if \a time is negative*/void QRollEffect::run( int time ){    if ( !widget )	return;    duration  = time;    elapsed = 0;    if ( duration < 0 )	duration = QMIN( QMAX((totalWidth - currentWidth) +			      (totalHeight - currentHeight), 100 ), 300 );    connect( &anim, SIGNAL(timeout()), this, SLOT(scroll()));    widget->setWState( WState_Visible );    int y = widget->geometry().y();    if ( orientation & UpScroll )	y += totalHeight;    move( widget->geometry().x(),y );    resize( QMIN( currentWidth, totalWidth ), QMIN( currentHeight, totalHeight ) );    show();    widget->installEventFilter( this );    qApp->installEventFilter( this );    showWidget = TRUE;    done = FALSE;    anim.start( 0 );    checkTime.start();}/*  Roll according to the time elapsed.*/void QRollEffect::scroll(){    if ( !done ) {        int tempel = checkTime.elapsed();        if ( elapsed >= tempel )            elapsed++;        else            elapsed = tempel;	if ( currentWidth != totalWidth ) {	    currentWidth = totalWidth * (elapsed/duration)		+ ( 2 * totalWidth * (elapsed%duration) + duration )		/ ( 2 * duration );	    // equiv. to int( (totalWidth*elapsed) / duration + 0.5 )	    done = (currentWidth >= totalWidth);	}	if ( currentHeight != totalHeight ) {	    currentHeight = totalHeight * (elapsed/duration)		+ ( 2 * totalHeight * (elapsed%duration) + duration )		/ ( 2 * duration );	    // equiv. to int( (totalHeight*elapsed) / duration + 0.5 )	    done = (currentHeight >= totalHeight);	}	done = ( currentHeight >= totalHeight ) &&	       ( currentWidth >= totalWidth );        int w = totalWidth;	int h = totalHeight;	int x = widget->geometry().x();	int y = widget->geometry().y();	if ( orientation & RightScroll || orientation & LeftScroll )	    w = QMIN( currentWidth, totalWidth );	if ( orientation & DownScroll || orientation & UpScroll )	    h = QMIN( currentHeight, totalHeight );	setUpdatesEnabled( FALSE );	if ( orientation & UpScroll )	    y = widget->geometry().y() + QMAX( 0, totalHeight - currentHeight );	if ( orientation & LeftScroll )	    x = widget->geometry().x() + QMAX( 0, totalWidth - currentWidth );	if ( orientation & UpScroll || orientation & LeftScroll )	    move( x, y );	resize( w, h );	        setUpdatesEnabled( TRUE );	repaint( FALSE );    }    if ( done ) {	anim.stop();	BackgroundMode bgm;	if ( widget ) {	    widget->removeEventFilter( this );	    bgm = widget->backgroundMode();	    widget->clearWState( WState_Visible );	    if ( showWidget ) {		widget->setBackgroundMode( NoBackground );		widget->show();	    } else {		widget->hide();	    }	}	hide();	if ( showWidget && widget ) {	    widget->clearWState( WState_Visible ); // prevent update in setBackgroundMode	    widget->setBackgroundMode( bgm );	    widget->setWState( WState_Visible );	    if ( widget->inherits( "QLabel" ) && widget->testWFlags( WStyle_Tool ) )		widget->update();	}	roll = 0;	QTimer::singleShot( 0, this, SLOT(goodBye()) );    }}/*  Delete this after timeout*/void QRollEffect::goodBye(){    delete this;}#include "qeffects.moc"/*!  Scroll widget \a w in \a time ms.  \a orient may be 1 (vertical), 2 (horizontal)  or 3 (diagonal).*/void qScrollEffect( QWidget* w, QEffects::DirFlags orient, int time ){    if ( roll ) {	delete roll;	roll = 0;    }    qApp->sendPostedEvents( w, QEvent::Move );    qApp->sendPostedEvents( w, QEvent::Resize );    roll = new QRollEffect( w, Qt::WStyle_Customize | Qt::WType_Popup |	Qt::WResizeNoErase | Qt::WRepaintNoErase | Qt::WStyle_StaysOnTop, orient );    roll->run( time );}/*!  Fade in widget \a w in \a time ms.*/void qFadeEffect( QWidget* w, int time ){    if ( blend ) {	delete blend;	blend = 0;    }    qApp->sendPostedEvents( w, QEvent::Move );    qApp->sendPostedEvents( w, QEvent::Resize );    blend = new QAlphaWidget( w, Qt::WStyle_Customize | Qt::WType_Popup |	Qt::WResizeNoErase | Qt::WRepaintNoErase | Qt::WStyle_StaysOnTop);    blend->run( time );}#endif //QT_NO_EFFECTS

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国模一区二区三区| 精品久久久久99| 91在线国产观看| 欧美日韩精品综合在线| 欧美日韩国产精选| 91精品国产麻豆国产自产在线| 精品国产伦一区二区三区观看方式 | av亚洲精华国产精华精| 色婷婷综合久久久中文一区二区| 欧美日韩国产系列| 久久精品亚洲精品国产欧美| 国产精品你懂的| 亚洲成人精品一区二区| 国产精品亚洲视频| 宅男在线国产精品| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 成人aa视频在线观看| 91精品国产91久久久久久一区二区| 国产亚洲一二三区| 免费久久99精品国产| 色噜噜狠狠色综合中国| 久久综合色天天久久综合图片| 亚洲一区二区三区四区不卡| 粉嫩欧美一区二区三区高清影视| 51精品国自产在线| 亚洲综合清纯丝袜自拍| 97成人超碰视| 国产精品久久久久7777按摩 | 91理论电影在线观看| 26uuu精品一区二区在线观看| 无码av中文一区二区三区桃花岛| 99久久久无码国产精品| 国产精品天美传媒沈樵| 国产精品亚洲第一区在线暖暖韩国| 日韩色视频在线观看| 亚洲高清视频的网址| 欧美日韩综合一区| 青青草97国产精品免费观看无弹窗版| 欧美丝袜丝交足nylons| 亚洲制服丝袜在线| 欧美一区二区精品在线| 成人丝袜18视频在线观看| 2020国产精品| av一二三不卡影片| 亚洲一区在线看| 日韩欧美第一区| 福利电影一区二区| 综合在线观看色| 91精品在线麻豆| 成人午夜激情视频| 亚洲综合久久久| 欧美电影免费观看高清完整版在线观看| 国产自产2019最新不卡| 国产婷婷精品av在线| 在线视频一区二区三| 日本中文字幕一区| 国产精品久久看| 日韩欧美中文字幕制服| 成人午夜免费电影| 日韩电影免费在线观看网站| 久久久久久久久久久久久夜| 色综合久久88色综合天天免费| 香蕉加勒比综合久久| 国产亚洲欧洲一区高清在线观看| 99re这里都是精品| 免费成人在线影院| 中文字幕日韩精品一区| 日韩欧美国产精品| 欧美女孩性生活视频| 中文字幕一区av| 日韩免费成人网| 一本色道**综合亚洲精品蜜桃冫| 国产综合色产在线精品| 亚洲精品成人在线| 中文字幕巨乱亚洲| 日韩欧美第一区| 欧美一二三四在线| 欧美性一区二区| 91丝袜国产在线播放| 国产福利精品导航| 国产剧情在线观看一区二区| 青椒成人免费视频| 午夜伊人狠狠久久| 亚洲一区二区视频| 亚洲一区在线免费观看| 一区二区三区在线视频免费| 亚洲欧美在线观看| 中文字幕一区二区三区四区| 国产精品乱子久久久久| 久久久久99精品国产片| 欧美经典一区二区三区| 国产欧美一区二区在线观看| 国产欧美日本一区二区三区| 久久夜色精品一区| 国产网站一区二区三区| 乱中年女人伦av一区二区| 欧美一级日韩免费不卡| 91精品国产一区二区三区| 日韩一区二区三区高清免费看看| 91精品综合久久久久久| 日韩欧美亚洲另类制服综合在线| 91精品国模一区二区三区| 日韩视频不卡中文| 国产日韩高清在线| 中文成人av在线| 亚洲欧美一区二区三区孕妇| 午夜电影一区二区| 精品综合久久久久久8888| 国产精品小仙女| 欧美伊人精品成人久久综合97| 日韩欧美国产不卡| 亚洲欧洲精品一区二区三区| 亚洲成人免费在线| 国产成人aaa| 欧美日韩国产综合一区二区三区 | 激情伊人五月天久久综合| 波多野结衣中文字幕一区| 欧美日韩成人综合天天影院| 18欧美亚洲精品| 日韩高清不卡一区二区三区| 成人性色生活片免费看爆迷你毛片| 一本久久精品一区二区| 日韩欧美一区二区久久婷婷| 亚洲精品视频在线观看免费 | 久久久亚洲国产美女国产盗摄 | 亚洲第一成人在线| 成人av免费观看| 日韩欧美国产电影| 国产精品久久久一区麻豆最新章节| 亚洲国产毛片aaaaa无费看| 国产精品一区一区| 日韩视频在线一区二区| 亚洲高清免费一级二级三级| 色综合久久88色综合天天免费| xvideos.蜜桃一区二区| 午夜精品爽啪视频| 91精品办公室少妇高潮对白| 国产精品免费丝袜| 国产成人精品三级| 国产亚洲婷婷免费| 国产风韵犹存在线视精品| 日韩三级在线观看| 久草中文综合在线| 日韩一区二区中文字幕| 免费观看久久久4p| 欧美二区三区91| 免费观看在线色综合| 亚洲精品在线免费观看视频| 久久99精品久久久久| 欧美成人激情免费网| 国产美女一区二区| 亚洲国产高清不卡| 欧美专区在线观看一区| 亚洲第一综合色| 91精品啪在线观看国产60岁| 免费日韩伦理电影| 国产欧美一区二区在线观看| 波多野结衣亚洲| 一区二区三区四区不卡在线| 精品视频资源站| 九色|91porny| 亚洲欧美日韩国产中文在线| 欧美亚洲图片小说| 日韩成人av影视| 国产精品亲子伦对白| 精品视频999| 亚洲福利视频导航| 91在线视频网址| 午夜精品一区二区三区三上悠亚 | 精品一区二区三区在线播放 | 国产风韵犹存在线视精品| 亚洲人123区| 日韩欧美国产一二三区| 国产99久久久久久免费看农村| 亚洲人成亚洲人成在线观看图片| 色婷婷精品大在线视频| 精品综合久久久久久8888| 亚洲欧洲精品一区二区精品久久久| 欧美日韩综合色| 99re这里只有精品首页| 精品亚洲免费视频| 五月激情六月综合| 亚洲欧美在线观看| 日韩欧美电影一二三| 欧美亚洲一区三区| aaa欧美色吧激情视频| 久久99热国产| 天天综合天天综合色| 国产精品久久久久久久久免费丝袜 | 欧美群妇大交群中文字幕| av一区二区三区黑人| 免费不卡在线视频| 日韩1区2区日韩1区2区| 亚洲一级二级三级在线免费观看| 中文字幕不卡的av| 国产精品五月天| 日本一区二区免费在线| 2019国产精品| 亚洲国产精品二十页| 久久精品免费在线观看|