⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kwqpainter.h

📁 手机浏览器源码程序,功能强大
💻 H
字号:
/*
 * Copyright (C) 2003 Apple Computer, Inc.  All rights reserved.
 * Portions Copyright (c) 2005 Nokia Corporation, Inc. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#ifndef QPAINTER_H_
#define QPAINTER_H_

#include "KWQNamespace.h"
#include "KWQPaintDevice.h"
#include "KWQColor.h"
#include "KWQPen.h"
#include "KWQBrush.h"
#include "KWQRect.h"
#include "KWQRegion.h"
#include "KWQPointArray.h"
#include "KWQString.h"
#include "KWQFontMetrics.h"
#include "WebcoreBridge.h"

class QFont;
class QPixmap;
class QWidget;
class QPainterPrivate;

class CFbsBitGc;

class QPainter : public Qt
{
public:
    typedef enum { RTL, LTR } TextDirection;

    QPainter();
    QPainter(bool forPrinting);
    ~QPainter();


    QPaintDevice *device() const;

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

    const QPen &pen() const;
    void setPen(const QPen &);
    void setPen(PenStyle);
    void setPen(QRgb);

    const QBrush &brush() const;
    void setBrush(const QBrush &);
    void setBrush(BrushStyle);
    void setBrush(QRgb);

    QRect xForm(const QRect &) const;

    void save();
    void restore();

    void drawRect(int, int, int, int);
    void drawLine(int, int, int, int);
    void drawLineSegments(const QPointArray &, int index=0, int nlines=-1);
    void drawEllipse(int, int, int, int);
    void drawArc(int, int, int, int, int, int);
    void drawPolyline(const QPointArray &, int index=0, int npoints=-1);
    void drawPolygon(const QPointArray &, bool winding=FALSE, int index=0, int npoints=-1);
    void drawConvexPolygon(const QPointArray &);

    void fillRect(int, int, int, int, const QBrush &);
    void fillRect(const QRect &, const QBrush &);

    void drawPixmap(const QPoint &, const QPixmap &);
    void drawPixmap(const QPoint &, const QPixmap &, const QRect &);
    void drawPixmap(const QPoint &, const QPixmap &, const QRect &, const QString &);
/*    void drawPixmap( int x, int y, const QPixmap &,
			    int sx=0, int sy=0, int sw=-1, int sh=-1, int compositeOperator=-1, CGContextRef context=0);
    void drawPixmap( int x, int y, int w, int h, const QPixmap &,
			    int sx=0, int sy=0, int sw=-1, int sh=-1, int compositeOperator=-1, CGContextRef context=0);
    void drawTiledPixmap(int, int, int, int, const QPixmap &, int sx=0, int sy=0, CGContextRef context=0);
*/
    void drawPixmap( int x, int y, const QPixmap &,
			    int sx=0, int sy=0, int sw=-1, int sh=-1, int compositeOperator=-1);
    void drawPixmap( int x, int y, int w, int h, const QPixmap &,
			    int sx=0, int sy=0, int sw=-1, int sh=-1, int compositeOperator=-1);
    void drawTiledPixmap(int, int, int, int, const QPixmap &, int sx=0, int sy=0);
    void addClip(const QRect &);

    RasterOp rasterOp() const;
    void setRasterOp(RasterOp);

    void drawText(int x, int y, int, int, int alignmentFlags, const QString &);
    void drawHighlightForText(int x, int y, int h,
                  const QChar *, int length, int from, int to, int toAdd,
                  const QColor& backgroundColor, QPainter::TextDirection d, bool visuallyOrdered,
                  int letterSpacing, int wordSpacing, bool smallCaps);
    void drawText(int x, int y, const QChar *, int length, int from, int to, int toAdd,
                  const QColor& backgroundColor, QPainter::TextDirection d, bool visuallyOrdered,
                  int letterSpacing, int wordSpacing, bool smallCaps);
    void drawLineForText(int x, int y, int yOffset, int width);

    QColor selectedTextBackgroundColor() const;
    void setUsesInactiveTextBackgroundColor(bool u) { _usesInactiveTextBackgroundColor = u; }

    bool paintingDisabled() const;
    void setPaintingDisabled(bool);

    void beginTransparencyLayer(float opacity);
    void endTransparencyLayer();

    void setShadow(int x, int y, int blur, const QColor& color);
    void clearShadow();

    void initFocusRing(int width, int offset);
    void initFocusRing(int width, int offset, const QColor& color);
    void addFocusRingRect(int x, int y, int width, int height);
    void drawFocusRing();
    void clearFocusRing();
    void setDrawsFocusRing(bool flag) { _drawsFocusRing = flag; }

//    CGContextRef currentContext();

/*    static int compositeOperatorFromString (QString aString);
    static int getCompositeOperation(CGContextRef context);
    static void setCompositeOperation (CGContextRef context, QString operation);
    static void setCompositeOperation (CGContextRef context, int operation);*/

    CWebCoreGraphicsContext& Gc();
    void SetGc(CWebCoreGraphicsContext& aGc);

    //Methods to transforms rendered elements
    TPoint xForm ( const TPoint & p ) const;
    TRect xForm ( const TRect & r ) const;
    TSize xForm ( const TSize & s ) const;

private:
    // no copying or assignment
    QPainter(const QPainter &);
    QPainter &operator=(const QPainter &);

    void _setColorFromBrush();
    void _setColorFromPen();

    // A fillRect designed to work around buggy behavior in NSRectFill.
    void _fillRect(float x, float y, float w, float h, const QColor& color);

    void _drawPoints(const QPointArray &_points, bool winding, int index, int _npoints, bool fill);


    QPainterPrivate *data;
    bool _isForPrinting;
    bool _usesInactiveTextBackgroundColor;
    bool _drawsFocusRing;
};

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -