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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? drvstrok.cpp

?? wince3.0的源碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/*

Copyright (c) 1995-2000 Microsoft Corporation.  All rights reserved.

*/
#include "precomp.h"

// Flip and round flags:

#define DEBUGTEMP 0

#define FL_H_ROUND_DOWN         0x00000080L     // .... .... 1... ....
#define FL_V_ROUND_DOWN         0x00008000L     // 1... .... .... ....

#define FL_FLIP_D               0x00000005L     // .... .... .... .1.1
#define FL_FLIP_V               0x00000008L     // .... .... .... 1...
#define FL_FLIP_SLOPE_ONE       0x00000010L     // .... .... ...1 ....
#define FL_FLIP_HALF            0x00000002L     // .... .... .... ..1.
#define FL_FLIP_H               0x00000200L     // .... ..1. .... ....

#define FL_ROUND_MASK           0x0000001CL     // .... .... ...1 11..
#define FL_ROUND_SHIFT          2

#define FL_RECTLCLIP_MASK       0x0000000CL     // .... .... .... 11..
#define FL_RECTLCLIP_SHIFT      2

#define FL_STRIP_MASK           0x00000003L     // .... .... .... ..11
#define FL_STRIP_SHIFT          0

#define FL_SIMPLE_CLIP          0x00000020      // .... .... ..1. ....
#define FL_COMPLEX_CLIP         0x00000040      // .... .... .1.. ....
#define FL_CLIP                (FL_SIMPLE_CLIP | FL_COMPLEX_CLIP)

#define FL_STYLED               0x00000400L     // .... .1.. .... ....
#define FL_ALTERNATESTYLED      0x00001000L     // ...1 .... .... ....

#define FL_STYLE_MASK           0x00000400L
#define FL_STYLE_SHIFT          10

#define FL_LAST_PEL_INCLUSIVE   0x00002000L     // ..1. .... .... ....


#define CLIP_LIMIT 50
typedef struct _CLIPENUM {
    LONG    c;
    RECTL   arcl[CLIP_LIMIT];   // Space for enumerating complex clipping

} CLIPENUM;                         /* ce, pce */

#define SWAP(a,b,type) { type tmp=(a); a=(b); b=tmp; }

const FLONG gaflRound[] = {
    FL_H_ROUND_DOWN | FL_V_ROUND_DOWN, // no flips
    FL_H_ROUND_DOWN | FL_V_ROUND_DOWN, // FL_FLIP_D
    FL_H_ROUND_DOWN,                   // FL_FLIP_V
    FL_V_ROUND_DOWN,                   // FL_FLIP_V | FL_FLIP_D
    FL_V_ROUND_DOWN,                   // FL_FLIP_SLOPE_ONE
    0xbaadf00d,                        // FL_FLIP_SLOPE_ONE | FL_FLIP_D
    FL_H_ROUND_DOWN,                   // FL_FLIP_SLOPE_ONE | FL_FLIP_V
    0xbaadf00d                         // FL_FLIP_SLOPE_ONE | FL_FLIP_V | FL_FLIP_D
};

inline GPE *SurfobjToGPE( SURFOBJ *pso )
{
	return (GPE *)(pso->dhpdev);
}

class TmpGPESurf
{
	GPESurf *m_pGPESurf;
	GPESurf m_GPESurf;
public:
	operator GPESurf *() { return m_pGPESurf; }
	TmpGPESurf
	(
		SURFOBJ *pso1,
		SURFOBJ *pso2 = (SURFOBJ *)NULL,
		TmpGPESurf *pTmp2 = (TmpGPESurf *)NULL
	);
	~TmpGPESurf() {}
};


BOOL APIENTRY DrvStrokePath(
	SURFOBJ   *pso,
	PATHOBJ   *ppo,
	CLIPOBJ   *pco,
	XFORMOBJ  *pxo,
	BRUSHOBJ  *pbo,
	POINTL    *pptlBrushOrg,
	LINEATTRS *plineattrs,
	MIX        mix)
{
	DEBUGMSG(GPE_ZONE_ENTER,(TEXT("Entering DrvStrokePath\r\n")));

	CLIPENUM ce;						// Clip enumeration allocation
	int moreClipLists;					// Continue flag for clip enumeration
	PATHDATA pd;						// Path enumeration allocation
	int morePointLists;					// Continue flag for path enumeration
	GPELineParms parms;					// Line parameters passed to individual line drawing calls
	GPE *pGPE = SurfobjToGPE(pso);		// Extract pGPE for this device from SURFOBJ
	TmpGPESurf pDst(pso);				// Either actual pSurf or temporary one for dest surf
	RECTL *prclCurr;					// Pointer into cliprect list
	RECTL arclClip[8];					// Cliprect rotated/flipped
	RECTL *prclFlipped;					// Pointer into arclClip[]
	unsigned long pointNo;				// Point counter within subpath
	POINTFIX ptfxStartFigure;			// X,Y of first point in subpath
	POINTFIX ptfxLast;					// X,Y of last point from previous point sequence
	POINTFIX *pptfxPrev;				// &[X,Y] of previous point
	POINTFIX *pptfxBuf;					// &[X,Y] of current point
	ULONG cptfx;						// Remaining points in current point list
	FIX fx0, fy0, fx1, fy1;				// Endpoints of line segment in 28.4 format
	unsigned long fl;					// Current flip/rotate flags for line segment
	unsigned long x,y;					// Integer components of starting point on line
	FIX M0, N0;							// Fractional component of fx0,fy0 after flipping (0..15)
	FIX M1, N1;							// Fractional component of fx1, fy1 after flipping
	FIX dM, dN;							// dX and dY after flipping  ( 28.4 format )
	unsigned long x0, y0;				// Starting point wrt initial x,y ( +0..+2 each )
	unsigned long x1, y1;				// End point wrt initial x,y
	long llGamma;						// Error term
	long llBeta;						// Error term... minor dimension
	long errorTerm;
	int cStylePels;						// Number of pixels in unclipped line
	int cPels;							// Number of pixels in clipped line
	int xLeft, xRight, yTop, yBottom;	// Rotated/reflected cliprect
	long xStart,yStart;					// Final first pixel coordinates
//	long ll;
//	unsigned long ulDelta;
	int iDir;							// Octant number for line


#if DEBUGTEMP
					int orig_x0 = 0xcccccccc;
					int orig_x1 = 0xcccccccc;
					int orig_y0 = 0xcccccccc;
					int x0_v1 = 0xcccccccc;
					int y0_v1 = 0xcccccccc;
					int x0_v2 = 0xcccccccc;
					int y0_v2 = 0xcccccccc;
					int orig_y1 = 0xcccccccc;
					int x1_v3 = 0xcccccccc;
					int y1_v3 = 0xcccccccc;
					int dM_v = 0xcccccccc;
					int dN_v = 0xcccccccc;
					int llGamma_v = 0xcccccccc;
#endif

	// Populate GPELineParms elements which are consistent along path

	// struct GPELineParms
	// {
	// 	SCODE 			(GPE::*pLine)(GPELineParms *);
	// 	GPESurf 		*pDst;
	// 	unsigned long	x1,	y1, x2, y2;
	// 	COLOR			solidColor;
	// 	RECTL			*prclClip;
	// 	int				state;
	// 	unsigned short	mix;
	// };

	parms.solidColor = pbo->iSolidColor;
	DEBUGMSG(GPE_ZONE_LINE,(TEXT("Mix:%04x Line color: %08x\r\n"), mix, pbo->iSolidColor));
	parms.mix = (unsigned short)mix;
	parms.pDst = pDst;
	parms.style = 0;

	if( plineattrs && (((mix>>8)&0x00ff)!=(mix&0x00ff)))
	{
		if( plineattrs->fl & LA_ALTERNATE )	// Every other pixel on
			parms.style = 0xaaaaaaaa;
		else if( plineattrs->pstyle && plineattrs->cstyle  )
		{
			int bitno=0;
			int bitval=0;
			int dashno;
			int dashpixel;
			for( dashno=0;
				bitno < 32;
				dashno++ )
			{
				dashno %= plineattrs->cstyle;
				for( dashpixel=0;
					( dashpixel < plineattrs->pstyle[dashno].l ) && ( bitno < 32 );
					dashpixel++, bitno++ )
						parms.style |= (bitval<<bitno);
				bitval ^= 1;
				if( dashno == 64 )		// in case all of the segments have 0 length
				{
					parms.style = 0;
					break;
				}
			}
		}
		if( plineattrs->fl & LA_STARTGAP )	// First dash is actually a gap
			parms.style = ~(parms.style);
	}




	// Call device specific line prepare
	// This can set up hardware mode (such as color) and must populate pLineParms->pLine

	DEBUGMSG(GPE_ZONE_LINE,(TEXT("Calling GPE::Line [prepare]\r\n")));

	if( FAILED( pGPE->Line( &parms, gpePrepare ) ) )
	{
		DEBUGMSG(GPE_ZONE_ENTER,(TEXT("Leaving DrvStrokePath\r\n")));
		return FALSE;
	}

	// Examine clipping

	if ( ( pco == NULL ) || ( pco->iDComplexity == DC_TRIVIAL ) )
	{
		DEBUGMSG(GPE_ZONE_LINE,(TEXT("DrvStrokePath: no clipping\r\n")));
		prclCurr = (RECTL *)NULL;
		moreClipLists = 0;
	}
	else if ( pco->iDComplexity == DC_RECT )
	{
		DEBUGMSG(GPE_ZONE_LINE,(TEXT("DrvStrokePath: single (DC_RECT) cliprect\r\n")));
		prclCurr = &pco->rclBounds;
		moreClipLists = 0;
	}
	else
	{
		DEBUGMSG(GPE_ZONE_LINE,(TEXT("DrvStrokePath: complex clipping region\r\n")));
		moreClipLists = 1;
	}

	// Iterate through each rectangle in clip list (once if no list)

	for( ce.c = 1-moreClipLists; ce.c || moreClipLists; prclCurr++, ce.c-- )
	{
		if( ce.c == 0 )
		{
			// Get next list of cliprects from clipobj
			moreClipLists = CLIPOBJ_bEnum( pco, sizeof(ce), (ULONG *)&ce );
			prclCurr = ce.arcl;
			if( !ce.c )
				continue;
		}


		parms.styleState = 0;


		// Flip cliprect into possible orientations

        arclClip[0]        =  *prclCurr;

    // FL_FLIP_D:

        arclClip[1].top    =  prclCurr->left;
        arclClip[1].left   =  prclCurr->top;
        arclClip[1].bottom =  prclCurr->right;
        arclClip[1].right  =  prclCurr->bottom;

    // FL_FLIP_V:

        arclClip[2].top    = -prclCurr->bottom + 1;
        arclClip[2].left   =  prclCurr->left;
        arclClip[2].bottom = -prclCurr->top + 1;
        arclClip[2].right  =  prclCurr->right;

    // FL_FLIP_V | FL_FLIP_D:

        arclClip[3].top    =  prclCurr->left;
        arclClip[3].left   = -prclCurr->bottom + 1;
        arclClip[3].bottom =  prclCurr->right;
        arclClip[3].right  = -prclCurr->top + 1;


    // FL_FLIP_H:

        arclClip[4].top    =  prclCurr->top;
        arclClip[4].left   =  -prclCurr->right + 1;
        arclClip[4].bottom =  prclCurr->bottom;
        arclClip[4].right  =  -prclCurr->left + 1;

    // FL_FLIP_H | FL_FLIP_D:

        arclClip[5].top    =  -prclCurr->right + 1;
        arclClip[5].left   =  prclCurr->top;
        arclClip[5].bottom =  -prclCurr->left + 1;
        arclClip[5].right  =  prclCurr->bottom;

    // FL_FLIP_H | FL_FLIP_V:

        arclClip[6].top    = -prclCurr->bottom + 1;
        arclClip[6].left   = -prclCurr->right + 1;
        arclClip[6].bottom = -prclCurr->top + 1;
        arclClip[6].right  = -prclCurr->left + 1;

    // FL_FLIP_H | FL_FLIP_V | FL_FLIP_D:

        arclClip[7].top    =  -prclCurr->right + 1;
        arclClip[7].left   =  -prclCurr->bottom + 1;
        arclClip[7].bottom =  -prclCurr->left + 1;
        arclClip[7].right  =  -prclCurr->top + 1;

		// Loop through the line segments in the path
		PATHOBJ_vEnumStart(ppo);
		do
		{
			morePointLists = PATHOBJ_bEnum( ppo, &pd );
			cptfx = pd.count;
			if( !cptfx )
				break;
			if( pd.flags & PD_BEGINSUBPATH )
			{
				ptfxStartFigure = *pd.pptfx;
				pptfxPrev = pd.pptfx;
				pptfxBuf = pd.pptfx+1;
				cptfx--;
			}
			else
			{
				pptfxPrev = &ptfxLast;
				pptfxBuf = pd.pptfx;
			}
			for( pointNo=0; pointNo<=cptfx; pointNo++ )
			{
//				parms.solidColor = (pointNo & 1 ) ? 2 : 4;	 // old test to alternate line colors

				if( pointNo < cptfx )
				{
					fx0 = pptfxPrev->x;
					fy0 = pptfxPrev->y;
					fx1 = pptfxBuf->x;
					fy1 = pptfxBuf->y;
					pptfxPrev = pptfxBuf++;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区二区久久不卡| 成人免费在线视频| 久久亚洲欧美国产精品乐播| 精品福利一区二区三区免费视频| 久久久久久夜精品精品免费| 久久久精品免费网站| 亚洲欧美福利一区二区| 亚洲一区在线免费观看| 久久精品国产亚洲高清剧情介绍| 国产在线视频一区二区| 在线观看av一区| 国产精品久线观看视频| 精品亚洲aⅴ乱码一区二区三区| 91视频在线看| 国产日韩欧美a| 日韩**一区毛片| 欧美在线观看视频在线| 中文乱码免费一区二区| 裸体健美xxxx欧美裸体表演| 色综合久久久久| 国产精品国产自产拍在线| 国产精品性做久久久久久| 欧美一区二区三区视频在线| 亚洲一卡二卡三卡四卡| 色婷婷av一区二区三区之一色屋| 久久久久88色偷偷免费| 成人国产精品免费观看| 欧美国产一区二区在线观看| 免费在线观看一区| 日韩欧美国产一区在线观看| 久久99精品一区二区三区三区| 日韩亚洲电影在线| 国产一区二区三区观看| 国产精品视频免费| 94色蜜桃网一区二区三区| 自拍偷拍亚洲欧美日韩| 欧美福利视频一区| 国产乱码一区二区三区| 国产精品久久久久久久久久久免费看| 一本大道综合伊人精品热热| 美日韩黄色大片| 日韩久久一区二区| 91精品国产91热久久久做人人| 国产伦精一区二区三区| 亚洲黄色片在线观看| 欧美一区二区三区不卡| 91丨porny丨中文| 免费在线观看精品| 亚州成人在线电影| 亚洲精品一二三| 国产亚洲欧美色| 欧美另类久久久品| 成人激情免费网站| 激情成人综合网| 激情图片小说一区| 激情偷乱视频一区二区三区| 日韩高清在线电影| 亚洲va欧美va人人爽午夜| 亚洲国产成人一区二区三区| 7878成人国产在线观看| 色乱码一区二区三区88| 国产麻豆精品95视频| 久久国产综合精品| 美腿丝袜一区二区三区| 蜜臀精品久久久久久蜜臀| 亚洲v中文字幕| 另类欧美日韩国产在线| 秋霞午夜鲁丝一区二区老狼| 日产国产高清一区二区三区| 日本伊人色综合网| 激情欧美一区二区三区在线观看| 久久69国产一区二区蜜臀| 精品亚洲成a人在线观看| 国产在线精品不卡| 丁香婷婷综合色啪| 91亚洲精品久久久蜜桃网站| 91免费观看在线| 欧美男男青年gay1069videost| 在线成人av网站| 久久亚洲二区三区| 亚洲国产电影在线观看| 奇米精品一区二区三区在线观看| 婷婷综合另类小说色区| 国产一区欧美日韩| 91黄色免费观看| 精品美女被调教视频大全网站| 中日韩免费视频中文字幕| 亚洲成av人片在线观看无码| 国产一区二区三区在线观看免费视频 | 奇米综合一区二区三区精品视频| 久久av中文字幕片| 欧美天堂亚洲电影院在线播放| 欧美一区二区日韩| 最新国产成人在线观看| 国产在线播放一区三区四| 欧美日韩一区二区在线观看 | 国产日韩亚洲欧美综合| 奇米一区二区三区av| 欧美中文字幕亚洲一区二区va在线| 日韩久久精品一区| 日韩av一二三| 日韩欧美一区电影| 奇米一区二区三区av| 在线不卡免费欧美| 午夜精品久久一牛影视| 欧美一区二区三区免费观看视频| 洋洋av久久久久久久一区| www.欧美日韩国产在线| 亚洲乱码日产精品bd| 日本韩国一区二区| 午夜精品福利一区二区三区蜜桃| 欧美午夜在线一二页| 亚洲不卡av一区二区三区| 欧洲亚洲精品在线| 日韩av二区在线播放| 中文成人综合网| 欧美挠脚心视频网站| 久久97超碰国产精品超碰| 欧美成人精品福利| 99久久精品国产毛片| 婷婷久久综合九色国产成人| 日韩一区二区三区免费观看| 国产一区二区三区高清播放| 亚洲人成人一区二区在线观看| 欧美在线制服丝袜| 国产乱人伦偷精品视频不卡| 一区二区三区在线高清| 精品国产123| 欧美日本乱大交xxxxx| 99精品在线观看视频| 国产自产高清不卡| 久久66热偷产精品| 日韩电影免费在线| 婷婷国产v国产偷v亚洲高清| 亚洲精品亚洲人成人网| 国产欧美日韩综合| 精品久久国产97色综合| 日韩三级视频在线看| 欧美日韩精品一区视频| 色婷婷国产精品| 色综合久久天天综合网| 在线亚洲一区二区| 在线免费不卡视频| 欧美日韩国产乱码电影| 欧美日韩1区2区| 欧美一级欧美三级在线观看 | 欧美一卡二卡在线| 欧美精品一二三区| 欧美浪妇xxxx高跟鞋交| 精品剧情v国产在线观看在线| 欧美精品一级二级三级| 6080yy午夜一二三区久久| 欧美丰满一区二区免费视频| 日韩一区二区免费高清| 国产亚洲视频系列| 成人欧美一区二区三区白人| 亚洲国产精品自拍| 免费高清在线视频一区·| 国产成人在线看| 欧美片网站yy| 国产精品久久毛片a| 亚洲国产日韩在线一区模特| 毛片一区二区三区| 色天使色偷偷av一区二区| 欧美日韩精品一区二区三区蜜桃| 久久综合九色综合97_久久久| 国产亚洲成年网址在线观看| 亚洲综合激情网| 成人免费黄色大片| 精品国产污污免费网站入口| 亚洲蜜臀av乱码久久精品| 国产一区二区精品久久99| 在线不卡a资源高清| 亚洲一本大道在线| 91麻豆福利精品推荐| 中文字幕免费一区| 国产成人在线观看| 久久久影院官网| 黄色精品一二区| 久久久午夜精品| 成人午夜免费视频| 国产精品欧美精品| 91免费看片在线观看| 亚洲精品va在线观看| 欧美中文一区二区三区| 久久亚洲欧美国产精品乐播| 亚洲自拍都市欧美小说| 成人晚上爱看视频| 国产拍揄自揄精品视频麻豆| 激情图区综合网| 日韩女同互慰一区二区| 偷拍日韩校园综合在线| 高清免费成人av| 亚洲精品在线一区二区| 国产一区二区三区精品欧美日韩一区二区三区| 91丨porny丨户外露出| 欧美图片一区二区三区| 亚洲免费观看高清完整版在线| 99久久夜色精品国产网站| 自拍偷自拍亚洲精品播放|