青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Cpper
C/C++高級工程師 Android高級軟件工程師 IT集成工程師 音頻工程師 熟悉c,c++,java,c#,py,js,asp等多種語言 程序猿
QCustomPlot和QWt各有千秋
前者偏輕,但是功能有點弱了,可以修改QCustomPlot增加Qwt的一些模塊和類

如下 代碼為QComstomPlot使用QwtText的例子
class QwtText : public  QCPLayerable
{
public:

    
/*!
      \brief Text format

      The text format defines the QwtTextEngine, that is used to render
      the text.

      \sa QwtTextEngine, setTextEngine()
    
*/

    
enum TextFormat
    {
        
/*!
          The text format is determined using QwtTextEngine::mightRender() for
          all available text engines in increasing order > PlainText.
          If none of the text engines can render the text is rendered
          like QwtText::PlainText.
         
*/
        AutoText 
= 0,

        
//! Draw the text as it is, using a QwtPlainTextEngine.
        PlainText,

        
//! Use the Scribe framework (Qt Rich Text) to render the text.
        RichText,

        
/*!
          Use a MathML (
http://en.wikipedia.org/wiki/MathML) render engine
          to display the text. The Qwt MathML extension offers such an engine
          based on the MathML renderer of the Qt solutions package. 
          To enable MathML support the following code needs to be added to the
          application:
\verbatim QwtText::setTextEngine(QwtText::MathMLText, new QwtMathMLTextEngine()); \endverbatim
         
*/
        MathMLText,

        
/*!
          Use a TeX (
http://en.wikipedia.org/wiki/TeX) render engine
          to display the text ( not implemented yet ).
         
*/
        TeXText,

        
/*!
          The number of text formats can be extended using setTextEngine.
          Formats >= QwtText::OtherFormat are not used by Qwt.
         
*/
        OtherFormat 
= 100
    };

    
/*!
      \brief Paint Attributes

      Font and color and background are optional attributes of a QwtText.
      The paint attributes hold the information, if they are set.
    
*/
    
enum PaintAttribute
    {
        
//! The text has an individual font.
        PaintUsingTextFont = 0x01,

        
//! The text has an individual color.
        PaintUsingTextColor = 0x02,

        
//! The text has an individual background.
        PaintBackground = 0x04
    };

    
//! Paint attributes
    typedef QFlags<PaintAttribute> PaintAttributes;

    
/*!
      \brief Layout Attributes
      The layout attributes affects some aspects of the layout of the text.
    
*/
    
enum LayoutAttribute
    {
        
/*!
          Layout the text without its margins. This mode is useful if a
          text needs to be aligned accurately, like the tick labels of a scale.
          If QwtTextEngine::textMargins is not implemented for the format
          of the text, MinimumLayout has no effect.
         
*/
        MinimumLayout 
= 0x01
    };

    
//! Layout attributes
    typedef QFlags<LayoutAttribute> LayoutAttributes;

    QwtText(QCustomPlot 
*plot,const QString & = QString::null,
             TextFormat textFormat 
= AutoText );

    
~QwtText();

    
void setText( const QString &,
        QwtText::TextFormat textFormat 
= AutoText );
    QString text() 
const;

    
bool isNull() const;
    
bool isEmpty() const;

    
void setFont( const QFont & );
    QFont font() 
const;

    QFont usedFont( 
const QFont & ) const;

    
void setRenderFlags( int flags );
    
int renderFlags() const;

    
void setColor( const QColor & );
    QColor color() 
const;

    QColor usedColor( 
const QColor & ) const;

    
void setBorderRadius( double );
    
double borderRadius() const;

    
void setBorderPen( const QPen & );
    QPen borderPen() 
const;

    
void setBackgroundBrush( const QBrush & );
    QBrush backgroundBrush() 
const;

    
void setPaintAttribute( PaintAttribute, bool on = true );
    
bool testPaintAttribute( PaintAttribute ) const;

    
void setLayoutAttribute( LayoutAttribute, bool on = true );
    
bool testLayoutAttribute( LayoutAttribute ) const;

    
double heightForWidth( double width, const QFont & = QFont() ) const;
    QSizeF textSize( 
const QFont & = QFont() ) const;

    
//void draw( QPainter *painter, const QRectF &rect ) const;
    virtual void applyDefaultAntialiasingHint(QCPPainter* painter)const;
    
virtual void draw(QCPPainter* painter);

    
static const QwtTextEngine *textEngine( 
        
const QString &text, QwtText::TextFormat = AutoText );

    
static const QwtTextEngine *textEngine( QwtText::TextFormat );
    
static void setTextEngine( QwtText::TextFormat, QwtTextEngine * );

private:
    
class PrivateData;
    PrivateData 
*d_data;

    
class LayoutCache;
    LayoutCache 
*d_layoutCache;
};

//! \return text().isNull()
inline bool QwtText::isNull() const
{
    
return text().isNull();
}

//! \return text().isEmpty()
inline bool QwtText::isEmpty() const
{
    
return text().isEmpty();
}

Q_DECLARE_OPERATORS_FOR_FLAGS( QwtText::PaintAttributes )
Q_DECLARE_OPERATORS_FOR_FLAGS( QwtText::LayoutAttributes )

class QwtTextEngineDict
{
public:
    
static QwtTextEngineDict &dict();

    
void setTextEngine( QwtText::TextFormat, QwtTextEngine * );

    
const QwtTextEngine *textEngine( QwtText::TextFormat ) const;
    
const QwtTextEngine *textEngine( const QString &,
        QwtText::TextFormat ) 
const;

private:
    QwtTextEngineDict();
    
~QwtTextEngineDict();

    typedef QMap
<int, QwtTextEngine *> EngineMap;

    inline 
const QwtTextEngine *engine( EngineMap::const_iterator &it ) const
    {
        
return it.value();
    }

    EngineMap d_map;
};

QwtTextEngineDict 
&QwtTextEngineDict::dict()
{
    
static QwtTextEngineDict engineDict;
    
return engineDict;
}

QwtTextEngineDict::QwtTextEngineDict()
{
    d_map.insert( QwtText::PlainText, 
new QwtPlainTextEngine() );
#ifndef QT_NO_RICHTEXT
    d_map.insert( QwtText::RichText, 
new QwtRichTextEngine() );
#endif
}

QwtTextEngineDict::
~QwtTextEngineDict()
{
    
for ( EngineMap::const_iterator it = d_map.begin();
        it 
!= d_map.end(); ++it )
    {
        
const QwtTextEngine *textEngine = engine( it );
        delete textEngine;
    }
}

const QwtTextEngine *QwtTextEngineDict::textEngine( const QString& text,
    QwtText::TextFormat format ) 
const
{
    
if ( format == QwtText::AutoText )
    {
        
for ( EngineMap::const_iterator it = d_map.begin();
            it 
!= d_map.end(); ++it )
        {
            
if ( it.key() != QwtText::PlainText )
            {
                
const QwtTextEngine *= engine( it );
                
if ( e && e->mightRender( text ) )
                    
return e;
            }
        }
    }

    EngineMap::const_iterator it 
= d_map.find( format );
    
if ( it != d_map.end() )
    {
        
const QwtTextEngine *= engine( it );
        
if ( e )
            
return e;
    }

    it 
= d_map.find( QwtText::PlainText );
    
return engine( it );
}

void QwtTextEngineDict::setTextEngine( QwtText::TextFormat format,
    QwtTextEngine 
*engine )
{
    
if ( format == QwtText::AutoText )
        
return;

    
if ( format == QwtText::PlainText && engine == NULL )
        
return;

    EngineMap::const_iterator it 
= d_map.find( format );
    
if ( it != d_map.end() )
    {
        
const QwtTextEngine *= this->engine( it );
        
if ( e )
            delete e;

        d_map.remove( format );
    }

    
if ( engine != NULL )
        d_map.insert( format, engine );
}

const QwtTextEngine *QwtTextEngineDict::textEngine(
    QwtText::TextFormat format ) 
const
{
    
const QwtTextEngine *= NULL;

    EngineMap::const_iterator it 
= d_map.find( format );
    
if ( it != d_map.end() )
        e 
= engine( it );

    
return e;
}

class QwtText::PrivateData
{
public:
    PrivateData():
        renderFlags( Qt::AlignCenter ),
        borderRadius( 
0 ),
        borderPen( Qt::NoPen ),
        backgroundBrush( Qt::NoBrush ),
        paintAttributes( 
0 ),
        layoutAttributes( 
0 ),
        textEngine( NULL )
    {
    }

    
int renderFlags;
    QString text;
    QFont font;
    QColor color;
    
double borderRadius;
    QPen borderPen;
    QBrush backgroundBrush;

    QwtText::PaintAttributes paintAttributes;
    QwtText::LayoutAttributes layoutAttributes;

    
const QwtTextEngine *textEngine;
};

class QwtText::LayoutCache
{
public:
    
void invalidate()
    {
        textSize 
= QSizeF();
    }

    QFont font;
    QSizeF textSize;
};

/*!
   Constructor

   \param text Text content
   \param textFormat Text format
*/
QwtText::QwtText(QCustomPlot
* plot, const QString &text, QwtText::TextFormat textFormat ):
QCPLayerable(plot)
{
    d_data 
= new PrivateData;
    d_data
->text = text;
    d_data
->textEngine = textEngine( text, textFormat );

    d_layoutCache 
= new LayoutCache;
}

//! Destructor
QwtText::~QwtText()
{
    delete d_data;
    delete d_layoutCache;
}

/*!
   Assign a new text content

   \param text Text content
   \param textFormat Text format

   \sa text()
*/
void QwtText::setText( const QString &text,
    QwtText::TextFormat textFormat )
{
    d_data
->text = text;
    d_data
->textEngine = textEngine( text, textFormat );
    d_layoutCache
->invalidate();
}

/*!
   \return Text as QString.
   \sa setText()
*/
QString QwtText::text() 
const
{
    
return d_data->text;
}

/*!
   \brief Change the render flags

   The default setting is Qt::AlignCenter

   \param renderFlags Bitwise OR of the flags used like in QPainter::drawText()

   \sa renderFlags(), QwtTextEngine::draw()
   \note Some renderFlags might have no effect, depending on the text format.
*/
void QwtText::setRenderFlags( int renderFlags )
{
    
if ( renderFlags != d_data->renderFlags )
    {
        d_data
->renderFlags = renderFlags;
        d_layoutCache
->invalidate();
    }
}

/*!
   \return Render flags
   \sa setRenderFlags()
*/
int QwtText::renderFlags() const
{
    
return d_data->renderFlags;
}

/*!
   Set the font.

   \param font Font
   \note Setting the font might have no effect, when
         the text contains control sequences for setting fonts.
*/
void QwtText::setFont( const QFont &font )
{
    d_data
->font = font;
    setPaintAttribute( PaintUsingTextFont );
}

//! Return the font.
QFont QwtText::font() const
{
    
return d_data->font;
}

/*!
   Return the font of the text, if it has one.
   Otherwise return defaultFont.

   \param defaultFont Default font
   \return Font used for drawing the text

   \sa setFont(), font(), PaintAttributes
*/
QFont QwtText::usedFont( 
const QFont &defaultFont ) const
{
    
if ( d_data->paintAttributes & PaintUsingTextFont )
        
return d_data->font;

    
return defaultFont;
}

/*!
   Set the pen color used for drawing the text.

   \param color Color
   \note Setting the color might have no effect, when
         the text contains control sequences for setting colors.
*/
void QwtText::setColor( const QColor &color )
{
    d_data
->color = color;
    setPaintAttribute( PaintUsingTextColor );
}

//! Return the pen color, used for painting the text
QColor QwtText::color() const
{
    
return d_data->color;
}

/*!
  Return the color of the text, if it has one.
  Otherwise return defaultColor.

  \param defaultColor Default color
  \return Color used for drawing the text

  \sa setColor(), color(), PaintAttributes
*/
QColor QwtText::usedColor( 
const QColor &defaultColor ) const
{
    
if ( d_data->paintAttributes & PaintUsingTextColor )
        
return d_data->color;

    
return defaultColor;
}

/*!
  Set the radius for the corners of the border frame

  \param radius Radius of a rounded corner
  \sa borderRadius(), setBorderPen(), setBackgroundBrush()
*/
void QwtText::setBorderRadius( double radius )
{
    d_data
->borderRadius = qMax( 0.0, radius );
}

/*!
  \return Radius for the corners of the border frame
  \sa setBorderRadius(), borderPen(), backgroundBrush()
*/
double QwtText::borderRadius() const
{
    
return d_data->borderRadius;
}

/*!
   Set the background pen

   \param pen Background pen
   \sa borderPen(), setBackgroundBrush()
*/
void QwtText::setBorderPen( const QPen &pen )
{
    d_data
->borderPen = pen;
    setPaintAttribute( PaintBackground );
}

/*!
   \return Background pen
   \sa setBorderPen(), backgroundBrush()
*/
QPen QwtText::borderPen() 
const
{
    
return d_data->borderPen;
}

/*!
   Set the background brush

   \param brush Background brush
   \sa backgroundBrush(), setBorderPen()
*/
void QwtText::setBackgroundBrush( const QBrush &brush )
{
    d_data
->backgroundBrush = brush;
    setPaintAttribute( PaintBackground );
}

/*!
   \return Background brush
   \sa setBackgroundBrush(), borderPen()
*/
QBrush QwtText::backgroundBrush() 
const
{
    
return d_data->backgroundBrush;
}

/*!
   Change a paint attribute

   \param attribute Paint attribute
   \param on On/Off

   \note Used by setFont(), setColor(),
         setBorderPen() and setBackgroundBrush()
   \sa testPaintAttribute()
*/
void QwtText::setPaintAttribute( PaintAttribute attribute, bool on )
{
    
if ( on )
        d_data
->paintAttributes |= attribute;
    
else
        d_data
->paintAttributes &= ~attribute;
}

/*!
   Test a paint attribute

   \param attribute Paint attribute
   \return true, if attribute is enabled

   \sa setPaintAttribute()
*/
bool QwtText::testPaintAttribute( PaintAttribute attribute ) const
{
    
return d_data->paintAttributes & attribute;
}

/*!
   Change a layout attribute

   \param attribute Layout attribute
   \param on On/Off
   \sa testLayoutAttribute()
*/
void QwtText::setLayoutAttribute( LayoutAttribute attribute, bool on )
{
    
if ( on )
        d_data
->layoutAttributes |= attribute;
    
else
        d_data
->layoutAttributes &= ~attribute;
}

/*!
   Test a layout attribute

   \param attribute Layout attribute
   \return true, if attribute is enabled

   \sa setLayoutAttribute()
*/
bool QwtText::testLayoutAttribute( LayoutAttribute attribute ) const
{
    
return d_data->layoutAttributes | attribute;
}

/*!
   Find the height for a given width

   \param defaultFont Font, used for the calculation if the text has no font
   \param width Width

   \return Calculated height
*/
double QwtText::heightForWidth( double width, const QFont &defaultFont ) const
{
    
// We want to calculate in screen metrics. So
    
// we need a font that uses screen metrics

    
const QFont font( usedFont( defaultFont ), QApplication::desktop() );

    
double h = 0;

    
if ( d_data->layoutAttributes & MinimumLayout )
    {
        
double left, right, top, bottom;
        d_data
->textEngine->textMargins( font, d_data->text,
            left, right, top, bottom );

        h 
= d_data->textEngine->heightForWidth(
            font, d_data
->renderFlags, d_data->text,
            width 
+ left + right );

        h 
-= top + bottom;
    }
    
else
    {
        h 
= d_data->textEngine->heightForWidth(
            font, d_data
->renderFlags, d_data->text, width );
    }

    
return h;
}

/*!
   Find the height for a given width

   \param defaultFont Font, used for the calculation if the text has no font

   \return Calculated height
*/

/*!
   Returns the size, that is needed to render text

   \param defaultFont Font of the text
   \return Caluclated size
*/
QSizeF QwtText::textSize( 
const QFont &defaultFont ) const
{
    
// We want to calculate in screen metrics. So
    
// we need a font that uses screen metrics

    
const QFont font( usedFont( defaultFont ), QApplication::desktop() );

    
if ( !d_layoutCache->textSize.isValid()
        
|| d_layoutCache->font != font )
    {
        d_layoutCache
->textSize = d_data->textEngine->textSize(
            font, d_data
->renderFlags, d_data->text );
        d_layoutCache
->font = font;
    }

    QSizeF sz 
= d_layoutCache->textSize;

    
if ( d_data->layoutAttributes & MinimumLayout )
    {
        
double left, right, top, bottom;
        d_data
->textEngine->textMargins( font, d_data->text,
            left, right, top, bottom );
        sz 
-= QSizeF( left + right, top + bottom );
    }

    
return sz;
}

void QwtText::applyDefaultAntialiasingHint(QCPPainter* painter)const
{
}

void QwtText::draw(QCPPainter* painter)
{
    QRectF rect 
= mParentPlot->rect();
    
if ( d_data->paintAttributes & PaintBackground )
    {
        
if ( d_data->borderPen != Qt::NoPen ||
            d_data
->backgroundBrush != Qt::NoBrush )
        {
            painter
->save();

            painter
->setPen( d_data->borderPen );
            painter
->setBrush( d_data->backgroundBrush );

            
if ( d_data->borderRadius == 0 )
            {
                QwtPainter::drawRect( painter, rect );
            }
            
else
            {
                painter
->setRenderHint( QPainter::Antialiasing, true );
                painter
->drawRoundedRect( rect,
                    d_data
->borderRadius, d_data->borderRadius );
            }

            painter
->restore();
        }
    }

    painter
->save();

    
if ( d_data->paintAttributes & PaintUsingTextFont )
    {
        painter
->setFont( d_data->font );
    }

    
if ( d_data->paintAttributes & PaintUsingTextColor )
    {
        
if ( d_data->color.isValid() )
            painter
->setPen( d_data->color );
    }

    QRectF expandedRect 
= rect;
    
if ( d_data->layoutAttributes & MinimumLayout )
    {
        
// We want to calculate in screen metrics. So
        
// we need a font that uses screen metrics

        
const QFont font( painter->font(), QApplication::desktop() );

        
double left, right, top, bottom;
        d_data
->textEngine->textMargins(
            font, d_data
->text, left, right, top, bottom );

        expandedRect.setTop( rect.top() 
- top );
        expandedRect.setBottom( rect.bottom() 
+ bottom );
        expandedRect.setLeft( rect.left() 
- left );
        expandedRect.setRight( rect.right() 
+ right );
    }

    d_data
->textEngine->draw( painter, expandedRect,
        d_data
->renderFlags, d_data->text );

    painter
->restore();
}

/*!
   Find the text engine for a text format

   In case of QwtText::AutoText the first text engine
   (beside QwtPlainTextEngine) is returned, where QwtTextEngine::mightRender
   returns true. If there is none QwtPlainTextEngine is returned.

   If no text engine is registered for the format QwtPlainTextEngine
   is returnd.

   \param text Text, needed in case of AutoText
   \param format Text format

   \return Corresponding text engine
*/
const QwtTextEngine *QwtText::textEngine( const QString &text,
    QwtText::TextFormat format )
{
    
return QwtTextEngineDict::dict().textEngine( text, format );
}

/*!
   Assign/Replace a text engine for a text format

   With setTextEngine it is possible to extend Qwt with
   other types of text formats.

   For QwtText::PlainText it is not allowed to assign a engine == NULL.

   \param format Text format
   \param engine Text engine

   \sa QwtMathMLTextEngine
   \warning Using QwtText::AutoText does nothing.
*/
void QwtText::setTextEngine( QwtText::TextFormat format,
    QwtTextEngine 
*engine )
{
    QwtTextEngineDict::dict().setTextEngine( format, engine );
}

/*!
   \brief Find the text engine for a text format

   textEngine can be used to find out if a text format is supported.

   \param format Text format
   \return The text engine, or NULL if no engine is available.
*/
const QwtTextEngine *QwtText::textEngine( QwtText::TextFormat format )
{
    
return  QwtTextEngineDict::dict().textEngine( format );
}
主要是修改了draw函數和去掉了幾個構造函數
posted on 2017-05-15 13:16 ccsdu2009 閱讀(4476) 評論(0)  編輯 收藏 引用 所屬分類: QT編程
 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲无线视频| 亚洲影音一区| 欧美日韩伊人| 欧美精品一区二区三区在线看午夜 | 欧美日韩黄视频| 欧美日韩亚洲国产精品| 欧美日韩国产a| 国产精品国产亚洲精品看不卡15| 国产精品入口日韩视频大尺度| 国产午夜精品麻豆| 亚洲风情在线资源站| 999在线观看精品免费不卡网站| 亚洲视频一区二区在线观看| 久久疯狂做爰流白浆xx| 欧美黑人多人双交| 在线亚洲美日韩| 久久se精品一区精品二区| 蜜桃久久av| 国产精品久久一区二区三区| 在线电影一区| 亚洲男人av电影| 欧美成人伊人久久综合网| 日韩视频在线一区二区| 久久se精品一区二区| 欧美日韩国产专区| 精品不卡在线| 先锋影音一区二区三区| 91久久久久久久久| 午夜精品成人在线| 欧美日韩在线观看一区二区| 激情综合色综合久久| 亚洲视频一二| 亚洲激情在线播放| 久久精品一二三区| 欧美午夜电影在线观看| 亚洲国产精品专区久久| 久久国产精品毛片| 一区二区三区 在线观看视频| 亚洲无线一线二线三线区别av| 国产在线乱码一区二区三区| 中文久久精品| 亚洲国产成人91精品| 欧美在线亚洲一区| 国产精品久久波多野结衣| 亚洲日本aⅴ片在线观看香蕉| 久久精品99国产精品| 一区二区三区黄色| 欧美日韩亚洲高清一区二区| 亚洲精品欧洲精品| 女女同性女同一区二区三区91| 亚洲欧美日韩精品久久奇米色影视 | 免费观看欧美在线视频的网站| 国产偷自视频区视频一区二区| 亚洲永久网站| 亚洲色图在线视频| 欧美三级在线| 亚洲欧美日韩精品一区二区| 夜夜嗨av一区二区三区免费区| 欧美激情一区二区三级高清视频| 亚洲激情一区二区| 亚洲第一二三四五区| 欧美暴力喷水在线| 日韩一级成人av| 亚洲精品护士| 欧美性久久久| 欧美在现视频| 久久精品夜色噜噜亚洲a∨| 尹人成人综合网| 亚洲第一中文字幕在线观看| 欧美精品18videos性欧美| 亚洲精品少妇30p| 日韩视频国产视频| 国产精品综合色区在线观看| 久久久美女艺术照精彩视频福利播放| 欧美在线视频在线播放完整版免费观看| 国产综合激情| 亚洲国产裸拍裸体视频在线观看乱了中文 | 亚洲欧洲av一区二区| 亚洲视频网站在线观看| 国产精品亚洲欧美| 久久青草欧美一区二区三区| 久久深夜福利| 一二三区精品| 久久久久免费视频| 久久精品人人做人人爽电影蜜月| 91久久精品国产91性色| 亚洲精品影院在线观看| 香蕉久久精品日日躁夜夜躁| 午夜激情久久久| 亚洲高清中文字幕| 一本久久综合亚洲鲁鲁| 国产欧美69| 亚洲电影第三页| 国产精品区一区二区三区| 久久久999| 欧美激情国产日韩| 亚洲欧美色婷婷| 久久久久久亚洲精品杨幂换脸| 99日韩精品| 久久精彩免费视频| 国产精品99久久久久久宅男| 欧美制服丝袜| 亚洲在线中文字幕| 久久深夜福利免费观看| 亚洲欧美日韩另类| 欧美成人69av| 巨胸喷奶水www久久久免费动漫| 欧美精品乱码久久久久久按摩| 欧美一级淫片aaaaaaa视频| 牛牛国产精品| 久久综合久久综合久久综合| 国产精品久久久久久久久久直播| 欧美大片免费| 精久久久久久| 欧美一区网站| 亚洲欧美综合一区| 欧美日韩在线观看一区二区| 欧美激情中文不卡| 在线免费观看欧美| 久久精品国产一区二区电影 | 欧美伊人久久大香线蕉综合69| 一本一本久久a久久精品牛牛影视| 久久久高清一区二区三区| 欧美在线观看视频一区二区| 欧美日韩综合久久| 亚洲欧洲一级| 亚洲人成网站影音先锋播放| 久久亚裔精品欧美| 久久一区二区三区av| 国产日韩在线播放| 先锋影音久久久| 欧美中文字幕精品| 国产麻豆午夜三级精品| 亚洲男女毛片无遮挡| 欧美一区二区女人| 国产欧美精品一区aⅴ影院| 亚洲一区在线观看免费观看电影高清| 夜夜精品视频| 欧美日韩精品久久久| 日韩亚洲欧美中文三级| 亚洲一区二区免费| 国产精品美女午夜av| 亚洲天堂av电影| 欧美在线视频不卡| 国产在线精品一区二区夜色| 性欧美大战久久久久久久久| 久久免费黄色| 最新69国产成人精品视频免费| 猛男gaygay欧美视频| 亚洲黄色一区| 国产一区二区中文| 鲁大师影院一区二区三区| 黑人一区二区三区四区五区| 久久久噜久噜久久综合| 欧美激情第五页| 日韩午夜在线观看视频| 欧美偷拍一区二区| 欧美一区二区免费观在线| 久久亚洲欧洲| 亚洲免费成人av| 国产精品美女久久久浪潮软件| 欧美一区二区视频免费观看| 美国十次成人| 亚洲一区激情| 国产综合在线看| 欧美国产免费| 午夜精品福利电影| 欧美高清免费| 亚洲欧美日韩另类精品一区二区三区| 国产日韩欧美中文| 欧美黄色aa电影| 午夜精品免费在线| 亚洲激情视频在线观看| 久久不射中文字幕| 日韩视频免费观看高清完整版| 国产精品wwwwww| 男女激情视频一区| 午夜精品免费视频| 亚洲七七久久综合桃花剧情介绍| 欧美一级在线视频| 一本到12不卡视频在线dvd| 国产真实久久| 欧美性生交xxxxx久久久| 久久久久久高潮国产精品视| 一区二区不卡在线视频 午夜欧美不卡在| 久久久久**毛片大全| 亚洲图片在线| 亚洲人妖在线| 一区二区三区中文在线观看| 国产精品久久久久77777| 欧美v国产在线一区二区三区| 亚洲欧美日韩视频二区| 日韩视频在线观看免费| 亚洲国产精品成人综合色在线婷婷| 性欧美暴力猛交69hd| 亚洲一级二级| 国产精品99久久久久久白浆小说| 亚洲黄色天堂| 亚洲高清资源综合久久精品| 黄色精品网站|