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

📄 qgfxraster_qws.h

📁 著名的A780系列,E680系列的SDK开发包
💻 H
字号:
/****************************************************************************** $Id: qt/src/kernel/qgfxraster_qws.h   2.3.6   edited 2002-01-12 $**** Definition of QGfxRaster (unaccelerated graphics context) class**** Created : 940721**** Copyright (C) 1992-1999 Trolltech AS.  All rights reserved.**** This file is part of the kernel module of the Qt GUI Toolkit.**** 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 for Qt/Embedded may use this file in accordance with the** Qt Embedded 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/gpl/ for GPL licensing information.**** Contact info@trolltech.com if any conditions of this licensing are** not clear to you.************************************************************************/#ifndef QGFXRASTER_H#define QGFXRASTER_H#ifndef QT_H#include "qgfx_qws.h"#include "qpen.h"#include "qbrush.h"#include "qimage.h"#include "qfontmanager_qws.h"#include "qmemorymanager_qws.h"#include "qwsdisplay_qws.h"#include "qpointarray.h"#include "qpolygonscanner.h"#include "qapplication.h"#include "qregion.h"#endif // QT_H#include <unistd.h>#include <stdio.h>#include <stdlib.h>#include <math.h>class QGfxRasterBase : public QGfx {public:    QGfxRasterBase(unsigned char *,int w,int h);    ~QGfxRasterBase();    virtual void setPen( const QPen & );    virtual void setFont( const QFont & );    virtual void setBrushPixmap( const QPixmap * p ) { cbrushpixmap=p; }    virtual void setBrushOffset( int x, int y );    virtual void setBrush( const QBrush & );    virtual void setClipRect( int,int,int,int );    virtual void setClipRegion( const QRegion & );    virtual void setClipDeviceRegion( const QRegion & );    virtual void setClipping(bool);    // These will be called from qwidget_qws or qwidget_mac    // to update the drawing area when a widget is moved    virtual void setOffset( int,int );    virtual void setWidgetRect( int,int,int,int );    virtual void setWidgetRegion( const QRegion & );    virtual void setWidgetDeviceRegion( const QRegion & );    virtual void setGlobalRegionIndex( int idx );    virtual void setDashedLines(bool d);    virtual void setDashes(char *, int);    virtual void moveTo( int,int );    virtual void lineTo( int,int );    virtual void setOpaqueBackground(bool b) { opaque=b; }    virtual void setBackgroundColor(QColor c) { backcolor=c; }    virtual void setAlphaType(AlphaType);    virtual void setAlphaSource(unsigned char *,int);    virtual void setAlphaSource(int,int=-1,int=-1,int=-1);    virtual void drawText(int,int,const QString &);    virtual void sync();    virtual void setLineStep(int i) { lstep=i; }    int linestep() const { return lstep; }    int pixelWidth() const { return width; }    int pixelHeight() const { return height; }    virtual int bitDepth() = 0;    void save();    void restore();    virtual void setRop(RasterOp r) { myrop=r; }    void setClut(QRgb * cols,int numcols) { clut=cols; clutcols=numcols;  }protected:#ifdef DEBUG_POINTERS    void checkSource(unsigned char * c,int i) {      if(i<0) {	qFatal("Negative source coordinate");      }      if(i>=srcheight) {	qFatal("Source pointer height overrun");      }      unsigned char * tmp1=srcbits+(i*srclinestep);      unsigned char * tmp2=tmp1+srclinestep;      if(c<tmp1) {	qFatal("Source pointer underrun");      }      if(c>=tmp2) {	qFatal("Source pointer overrun");      }    }    void checkMask(unsigned char * c,int i) {      unsigned char * tmp1=alphabits+(i*alphalinestep);      unsigned char * tmp2=tmp1+alphalinestep;      if(i<0) {	qFatal("Negative mask coordinate");      }      if(i>=srcheight) {	qFatal("Mask height overrun");      }      if(c<tmp1) {	qFatal("Alpha pointer underrun");      }      if(c>=tmp2) {	qFatal("Alpha pointer overrun");      }          }    void checkDest(unsigned char * c,int i) {      if(i<0) {	qFatal("Negative dest coordinate");      }      if(i>=height) {	qFatal("Destination height overrun");      }       unsigned char * tmp1=buffer+(i*lstep);      unsigned char * tmp2=tmp1+lstep;      if(c<tmp1) {	qFatal("Destination pointer underrun");      }      if(c>=tmp2) {	qFatal("Destination pointer overrun");      }          }#endif    void* beginTransaction( const QRect& );    void endTransaction(void*);    void beginDraw()    {	QWSDisplay::grab();	if ( globalRegionRevision &&		*globalRegionRevision != currentRegionRevision ) {	    fixClip();	}    }    void endDraw()    {	QWSDisplay::ungrab();    }    void fixClip();    void update_clip();    bool inClip(int x, int y, QRect* cr=0, bool know_to_be_outside=FALSE);    virtual void setSourceWidgetOffset( int x, int y );    void useBrush();    void usePen();    virtual void setSourcePen();    unsigned char *scanLine(int i) { return buffer+(i*lstep); }    unsigned char *srcScanLine(int i) { return srcbits + (i*srclinestep); }    // Convert to/from different bit depths    unsigned int get_value_32(int sdepth,unsigned char **srcdata,			   bool reverse=FALSE);    unsigned int get_value_24(int sdepth,unsigned char **srcdata,			   bool reverse=FALSE);    unsigned int get_value_16(int sdepth,unsigned char **srcdata,			   bool reverse=FALSE);    unsigned int get_value_15(int sdepth,unsigned char **srcdata,			   bool reverse=FALSE);    unsigned int get_value_8(int sdepth,unsigned char **srcdata,			   bool reverse=FALSE);    unsigned int get_value_4(int sdepth,unsigned char **srcdata,			   bool reverse=FALSE);    unsigned int get_value_1(int sdepth,unsigned char **srcdata,			   bool reverse=FALSE);protected:    SourceType srctype;    PixelType srcpixeltype;    unsigned char * srcbits;    unsigned char * const buffer;    PixelType pixeltype;    int width;    int height;    int xoffs;    int yoffs;    unsigned int lstep;    bool opaque;    QColor backcolor;    QPen cpen;    QBrush cbrush;    QPoint brushoffs;    bool patternedbrush;    const QPixmap * cbrushpixmap;    bool dashedLines;    char *dashes;    int numDashes;    QPen savepen;    QBrush savebrush;    bool regionClip;    bool clipDirty;    QRegion widgetrgn;    QRegion cliprgn;    QRect clipbounds;    int penx;    int peny;    int srcwidth;    int srcheight;    int srcdepth;    int srclinestep;    int srccol;    QPoint srcwidgetoffs;	    // Needed when source is widget    bool src_little_endian;    bool src_normal_palette;    unsigned int srcclut[256];	    // Source color table - r,g,b values    unsigned int transclut[256];    // Source clut transformed to destination                                    // values - speed optimisation    QRgb * clut;      		    // Destination color table - r,g,b values    int clutcols;		    // Colours in clut    int monobitcount;    unsigned char monobitval;    AlphaType alphatype;    unsigned char * alphabits;    unsigned int * alphabuf;    int alphalinestep;    bool ismasking;    int amonobitcount;    unsigned char amonobitval;    bool amonolittletest;    int calpha;       		 // Constant alpha value    int calpha2,calpha3,calpha4; // Used for groovy accelerated effect    unsigned char * maskp;    QMemoryManager::FontID myfont;    int clipcursor;    QRect* cliprect;    int ncliprect;    int globalRegionIndex;    const int *globalRegionRevision;    int currentRegionRevision;    RasterOp myrop;    unsigned long int pixel; // == cpen.pixel() or cbrush.pixel()    QPolygonScanner::Edge stitchedges;    friend class QScreenCursor;};template <const int depth, const int type>class QGfxRaster : public QGfxRasterBase, protected QPolygonScanner {public:    QGfxRaster(unsigned char *,int w,int h);    ~QGfxRaster();    virtual void drawPoint( int,int );    virtual void drawPoints( const QPointArray &,int,int );    virtual void drawLine( int,int,int,int );    virtual void fillRect( int,int,int,int );#if defined(QT_EZX_MUNGE)    /* Reimplemented from QGfx */    virtual void eraseRect(int, int, int, int, int, QPixmap const*);#endif /* defined(QT_EZX_MUNGE) */    virtual void drawPolyline( const QPointArray &,int,int );    virtual void drawPolygon( const QPointArray &,bool,int,int );    virtual void blt( int,int,int,int,int,int );    virtual void scroll( int,int,int,int,int,int );#if !defined(QT_NO_MOVIE) || !defined(QT_NO_TRANSFORMATIONS) || !defined(QT_NO_PIXMAP_TRANSFORMATION)    virtual void stretchBlt( int,int,int,int,int,int );#endif    virtual void tiledBlt( int,int,int,int );    virtual int bitDepth() { return depth; }    virtual void setSource(const QImage *);    virtual void setSource(const QPaintDevice *);protected:    virtual void drawThickLine( int,int,int,int );    virtual void drawThickPolyline( const QPointArray &,int,int );    void buildSourceClut(QRgb *,int);    void processSpans( int n, QPoint* point, int* width );    // Optimised vertical line drawing    void vline(int,int,int );    // Optimised horizontal line drawing    void hline(int,int,int );    void hlineUnclipped(int,int,unsigned char* );#if defined(_OS_QNX6_) // need a different signature for QNX acceleration, override to accel	virtual void hlineUnclipped(int x,int x1,int y){unsigned char *l=scanLine(y);hlineUnclipped(x,x1,l);};#endif    void hImageLineUnclipped(int,int,unsigned char *,unsigned char *,bool);    void hAlphaLineUnclipped(int,int,unsigned char *,unsigned char *,			     unsigned char *);    void drawPointUnclipped( int, unsigned char* );    void calcPacking(void *,int,int,int&,int&,int&);};#endif

⌨️ 快捷键说明

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