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

📄 cfbpntwin.c

📁 远程桌面连接工具
💻 C
📖 第 1 页 / 共 2 页
字号:
	      case 3:		*pdst++ = ((*pdst) & 0xFF) | (piQxelArray[2] & 0xFFFFFF00);	        break;	      }	      while(nmiddle--){		*pdst++ = piQxelArray[0];		*pdst++ = piQxelArray[1];		*pdst++ = piQxelArray[2];	      }	      switch(rightIndex){	      case 0:		break;	      case 1:		*pdst = ((*pdst) & 0xFF000000) | (piQxelArray[0] & 0xFFFFFF);	        break;	      case 2:		*pdst++ = piQxelArray[0];		*pdst = ((*pdst) & 0xFFFF0000) | (piQxelArray[1] & 0xFFFF);	        break;	      case 3:		*pdst++ = piQxelArray[0];		*pdst++ = piQxelArray[1];		*pdst = ((*pdst) & 0xFFFFFF00) | (piQxelArray[2] & 0xFF);	        break;	    }	    pdstULC += widthDst;	    }	  }	}#else	pdst += (pBox->x1 >> PWSH);	if ((pBox->x1 & PIM) + w <= PPW)	{	    maskpartialbits(pBox->x1, w, leftMask);	    while (h--) {		*pdst = (*pdst & ~leftMask) | (rrop_xor & leftMask);		pdst += widthDst;	    }	}	else	{	    maskbits (pBox->x1, w, leftMask, rightMask, nmiddle);	    if (leftMask)	    {		if (rightMask)		{		    Expand (RROP_SOLID_MASK (pdst, leftMask); pdst++; ,			    RROP_SOLID_MASK (pdst, rightMask); ,			    1)		}		else		{		    Expand (RROP_SOLID_MASK (pdst, leftMask); pdst++;,			    ;,			    1)		}	    }	    else	    {		if (rightMask)		{		    Expand (;,			    RROP_SOLID_MASK (pdst, rightMask);,			    0)		}		else		{		    Expand (;,			    ;,			    0)		}	    }	}#endif#if PSZ == 8	}#endif    }}voidcfbFillBoxTile32 (pDrawable, nBox, pBox, tile)    DrawablePtr	    pDrawable;    int		    nBox;	/* number of boxes to fill */    BoxPtr 	    pBox;	/* pointer to list of boxes to fill */    PixmapPtr	    tile;	/* rotated, expanded tile */{    register unsigned long  rrop_xor;	    register unsigned long  *pdst;    register int	    m;    unsigned long	    *psrc;    int			    tileHeight;    int			    widthDst;    int			    w;    int			    h;    register unsigned long  leftMask;    register unsigned long  rightMask;    int			    nmiddle;    int			    y;    int			    srcy;    unsigned long	    *pdstBase;#if PSZ == 24    int			    leftIndex, rightIndex;    unsigned long piQxelArray[3], xOffset, *pdstULC;#endif    tileHeight = tile->drawable.height;    psrc = (unsigned long *)tile->devPrivate.ptr;    cfbGetLongWidthAndPointer (pDrawable, widthDst, pdstBase);    while (nBox--)    {#if PSZ == 24	w = pBox->x2 - pBox->x1;	h = pBox->y2 - pBox->y1;	y = pBox->y1;	leftIndex = pBox->x1 & 3;/*	rightIndex = ((leftIndex+w)<5)?0:pBox->x2 &3;*/	rightIndex = pBox->x2 &3;	nmiddle = w - rightIndex;	if(leftIndex){	  nmiddle -= (4 - leftIndex);	}	nmiddle >>= 2;	if(nmiddle < 0)	  nmiddle = 0;	pdst = pdstBase + ((pBox->x1 *3)>> 2) +  pBox->y1 * widthDst;	srcy = y % tileHeight;#define StepTile    piQxelArray[0] = (psrc[srcy] & 0xFFFFFF) | ((psrc[srcy] & 0xFF)<<24); \		    piQxelArray[1] = (psrc[srcy] & 0xFFFF00) | ((psrc[srcy] & 0xFFFF)<<16); \		    piQxelArray[2] = ((psrc[srcy] & 0xFF0000)>>16) | \		    		     ((psrc[srcy] & 0xFFFFFF)<<8); \		    /*rrop_xor = psrc[srcy];*/ \		    ++srcy; \		    if (srcy == tileHeight) \		        srcy = 0;	  switch(leftIndex+w){	  case 4:	    switch(leftIndex){	    case 0:	      while(h--){		  StepTile		*pdst++ = piQxelArray[0];		*pdst++ = piQxelArray[1];		*pdst   = piQxelArray[2];		pdst-=2;		pdst += widthDst;	      }	      break;	    case 1:	      while(h--){		  StepTile		*pdst++ = ((*pdst) & 0xFFFFFF) | (piQxelArray[0] & 0xFF000000);		*pdst++ = piQxelArray[1];		*pdst   = piQxelArray[2];		pdst-=2;		pdst += widthDst;	      }	      break;	    case 2:	      while(h--){		  StepTile		*pdst++ = ((*pdst) & 0xFFFF) | (piQxelArray[1] & 0xFFFF0000);		*pdst--   = piQxelArray[2];		pdst += widthDst;	      }	      break;	    case 3:	      while(h--){		  StepTile		*pdst = ((*pdst) & 0xFF) | (piQxelArray[2] & 0xFFFFFF00);		pdst += widthDst;	      }	      break;	    }	    break;	  case 3:	    switch(leftIndex){	    case 0:	      while(h--){		  StepTile		*pdst++ = piQxelArray[0];		*pdst++ = piQxelArray[1];		*pdst-- = ((*pdst) & 0xFFFFFF00) | (piQxelArray[2] & 0xFF);		pdst--;		pdst += widthDst;	      }	      break;	    case 1:	      while(h--){		  StepTile		*pdst++ = ((*pdst) & 0xFFFFFF) | (piQxelArray[0] & 0xFF000000);		*pdst++ = piQxelArray[1];		*pdst-- = ((*pdst) & 0xFFFFFF00) | (piQxelArray[2] & 0xFF);		pdst--;		pdst += widthDst;	      }	      break;	    case 2:	      while(h--){		  StepTile		*pdst++ = ((*pdst) & 0xFFFF) | (piQxelArray[1] & 0xFFFF0000);		*pdst-- = ((*pdst) & 0xFFFFFF00) | (piQxelArray[2] & 0xFF);		pdst += widthDst;	      }	      break;	    }	    break;	  case 2:	    while(h--){		  StepTile	      if(leftIndex){		*pdst++ = ((*pdst) & 0xFFFFFF) | (piQxelArray[0] & 0xFF000000);	      }	      else{		*pdst++ = piQxelArray[0];	      }		*pdst-- = ((*pdst) & 0xFFFF0000) | (piQxelArray[1] & 0xFFFF);		pdst += widthDst;	    }	    break;	  case 1: /*only if leftIndex = 0 and w = 1*/	    while(h--){		  StepTile		*pdst = ((*pdst) & 0xFF000000) | (piQxelArray[0] & 0xFFFFFF);		pdst += widthDst;	      }	    break;	  case 0: /*never*/	    break;	  default:	  {	    w = nmiddle;	    pdstULC = pdst;	    while(h--){	      StepTile	      nmiddle = w;	      pdst = pdstULC;	      switch(leftIndex){	      case 0:		break;	      case 1:		*pdst++ = ((*pdst) & 0xFFFFFF) | (piQxelArray[0] & 0xFF000000);		*pdst++ = piQxelArray[1];		*pdst++ = piQxelArray[2];	        break;	      case 2:		*pdst++ = ((*pdst) & 0xFFFF) | (piQxelArray[1] & 0xFFFF0000);		*pdst++ = piQxelArray[2];	        break;	      case 3:		*pdst++ = ((*pdst) & 0xFF) | (piQxelArray[2] & 0xFFFFFF00);	        break;	      }	      while(nmiddle--){		*pdst++ = piQxelArray[0];		*pdst++ = piQxelArray[1];		*pdst++ = piQxelArray[2];	      }	      switch(rightIndex){	      case 0:		break;	      case 1:		*pdst = ((*pdst) & 0xFF000000) | (piQxelArray[0] & 0xFFFFFF);		break;	      case 2:		*pdst++ = piQxelArray[0];		*pdst = ((*pdst) & 0xFFFF0000) | (piQxelArray[1] & 0xFFFF);		break;	      case 3:		*pdst++ = piQxelArray[0];		*pdst++ = piQxelArray[1];		*pdst = ((*pdst) & 0xFFFFFF00) | (piQxelArray[2] & 0xFF);		break;	      }	      pdstULC += widthDst;	    }	  }	  }#else	w = pBox->x2 - pBox->x1;	h = pBox->y2 - pBox->y1;	y = pBox->y1;	pdst = pdstBase + (pBox->y1 * widthDst) + (pBox->x1 >> PWSH);	srcy = y % tileHeight;#define StepTile    rrop_xor = psrc[srcy]; \		    ++srcy; \		    if (srcy == tileHeight) \		        srcy = 0;	if ( ((pBox->x1 & PIM) + w) < PPW)	{	    maskpartialbits(pBox->x1, w, leftMask);	    rightMask = ~leftMask;	    while (h--)	    {		StepTile		*pdst = (*pdst & rightMask) | (rrop_xor & leftMask);		pdst += widthDst;	    }	}	else	{	    maskbits(pBox->x1, w, leftMask, rightMask, nmiddle);	    if (leftMask)	    {		if (rightMask)		{		    Expand (StepTile			    RROP_SOLID_MASK(pdst, leftMask); pdst++;,			    RROP_SOLID_MASK(pdst, rightMask);,			    1)		}		else		{		    Expand (StepTile			    RROP_SOLID_MASK(pdst, leftMask); pdst++;,			    ;,			    1)		}	    }	    else	    {		if (rightMask)		{		    Expand (StepTile			    ,			    RROP_SOLID_MASK(pdst, rightMask);,			    0)		}		else		{		    Expand (StepTile			    ,			    ;,			    0)		}	    }	}#endif        pBox++;    }}

⌨️ 快捷键说明

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