📄 graphic.h
字号:
/////////////////////////////////////////////////////////////// Flash Plugin and Player// Copyright (C) 1998 Olivier Debon// // This program is free software; you can redistribute it and/or// modify it under the terms of the GNU General Public License// as published by the Free Software Foundation; either version 2// of the License, or (at your option) any later version.// // This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.// // You should have received a copy of the GNU General Public License// along with this program; if not, write to the Free Software// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.// ///////////////////////////////////////////////////////////////#ifndef _GRAPHIC_H_#define _GRAPHIC_H_#define ALPHA_OPAQUE 255enum FillType { f_Solid = 0x00, f_LinearGradient = 0x10, f_RadialGradient = 0x12, f_TiledBitmap = 0x40, f_clippedBitmap = 0x41, f_None = 0x80};struct Gradient { int nbGradients; unsigned char ratio[8]; Color color[8]; // For rendering Color *ramp; Matrix imat; int has_alpha;};struct FillStyleDef { FillType type; // See enum FillType // Solid Color color; // Gradient Gradient gradient; // Bitmap Bitmap *bitmap; Matrix bitmap_matrix; Color *cmap; unsigned char *alpha_table; // Gradient or Bitmap Matrix matrix; FillStyleDef() { style_size += sizeof(FillStyleDef); style_nb++; }};struct Segment { long x1,x2; long ymax; FillStyleDef *fs[2]; // 0 is left 1 is right int aa; long dX; long X; struct Segment *next; struct Segment *nextValid;};/* fractional bits (we don't use twips here... too expensive) */#define FRAC_BITS 5#define FRAC (1 << FRAC_BITS)#define NB_SEGMENT_MAX (2048*4)#define SEGFRAC 8class GraphicDevice { int targetWidth; int targetHeight; Rect viewPort; int movieWidth; int movieHeight; int zoom; unsigned long redMask; unsigned long greenMask; unsigned long blueMask; int clipping;public: FlashDisplay *flashDisplay; int bgInitialized; Color backgroundColor; Color foregroundColor;public: void *scan_line_func_id; ScanLineFunc scan_line_func; Rect clip_rect;private: Segment **segs; int ymin,ymax; int height; Segment *seg_pool; Segment *seg_pool_cur; Segment * allocSeg(); Segment * progressSegments(Segment * curSegs, long y); Segment * newSegments(Segment *curSegs, Segment *newSegs); void renderScanLine(long y, Segment *curSegs); protected: long clip(long &y, long &start, long &end);public: Matrix *adjust; // Matrix to fit window (shrink or expand) long showMore; // Used for debugging // For Direct Graphics unsigned char *canvasBuffer; // A pointer to canvas'memory long bpl; // Bytes per line long bpp; // Bytes per pixel long pad; // Scanline pad in byte GraphicDevice(FlashDisplay *fd); virtual ~GraphicDevice(); int setBackgroundColor(Color); void setForegroundColor(Color); Color getBackgroundColor(); Color getForegroundColor(); void setMovieDimension(long width, long height); void setMovieZoom(int zoom); void setMovieOffset(long x, long y); long getWidth(); long getHeight(); Color *getColormap(Color *old, long n, Cxform *cxform); void drawBox(long x1, long y1, long x2, long y2); void addSegment(long x1, long y1, long x2, long y2, FillStyleDef *f0, FillStyleDef *f1, int aa); void drawPolygon(void); void updateClippingRegion(Rect *); void setClipping(int); // Virtual functions virtual void clearCanvas(); virtual long allocColor(Color color); virtual void fillLineBitmap(FillStyleDef *f, long y, long start, long end); virtual void fillLineLG(Gradient *grad, long y, long start, long end); virtual void fillLineRG(Gradient *grad, long y, long start, long end); virtual void fillLine(FillStyleDef *f, long y, long start, long end); virtual void fillLineAA(FillStyleDef *f, long y, long start, long end); virtual void drawLine(long x1, long y1, long x2, long y2, long width);};#endif /* _GRAPHIC_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -