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

📄 cfbmskbits.c

📁 远程桌面连接工具
💻 C
📖 第 1 页 / 共 3 页
字号:
/************************************************************Copyright 1987 by Sun Microsystems, Inc. Mountain View, CA.                    All Rights ReservedPermission  to  use,  copy,  modify,  and  distribute   thissoftware  and  its documentation for any purpose and withoutfee is hereby granted, provided that the above copyright no-tice  appear  in all copies and that both that copyright no-tice and this permission notice appear in  supporting  docu-mentation,  and  that the names of Sun or X Consortiumnot be used in advertising or publicity pertaining to distribution  of  the software  without specific prior written permission. Sun and X Consortium make no representations about the suitability of this software for any purpose. It is provided "as is" without any express or implied warranty.SUN DISCLAIMS ALL WARRANTIES WITH REGARD TO  THIS  SOFTWARE,INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT-NESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SUN BE  LI-ABLE  FOR  ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES ORANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,  DATA  ORPROFITS,  WHETHER  IN  AN  ACTION OF CONTRACT, NEGLIGENCE OROTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION  WITHTHE USE OR PERFORMANCE OF THIS SOFTWARE.********************************************************//* $XConsortium: cfbmskbits.c,v 4.13 94/07/28 12:30:41 dpw Exp $ *//* $XFree86: xc/programs/Xserver/cfb/cfbmskbits.c,v 3.0 1996/06/29 09:05:41 dawes Exp $ *//* * ========================================================================== * Converted to Color Frame Buffer by smarks@sun, April-May 1987.  The "bit  * numbering" in the doc below really means "byte numbering" now. * ========================================================================== *//*   these tables are used by several macros in the cfb code.   the vax numbers everything left to right, so bit indices on thescreen match bit indices in longwords.  the pc-rt and Sun numberbits on the screen the way they would be written on paper,(i.e. msb to the left), and so a bit index n on the screen isbit index 32-n in a longword   see also cfbmskbits.h*/#include	<X.h>#include	<Xmd.h>#include	<servermd.h>#include	"cfb.h"#include	"cfbmskbits.h"#define _cfbBits(a) (PixelGroup)(a)#if	(BITMAP_BIT_ORDER == MSBFirst)#define cfbBits(v)	_cfbBits(v)#else /* BITMAP_BIT_ORDER == LSBFirst */#define cfbFlip2(a)	((((a) & 0x1) << 1) | (((a) & 0x2) >> 1))#define cfbFlip4(a)	((cfbFlip2(a) << 2) | cfbFlip2(a >> 2))#define cfbFlip8(a)	((cfbFlip4(a) << 4) | cfbFlip4(a >> 4))#define cfbFlip16(a)	((cfbFlip8(a) << 8) | cfbFlip8(a >> 8))#define cfbFlip32(a)	((cfbFlip16(a) << 16) | cfbFlip16(a >> 16))#if PGSZ == 32#define cfbBits(a)	cfbFlip32(_cfbBits(a))#else /* PGSZ == 64 */#define cfbFlip64(a)	((cfbFlip32(a) << 32) | cfbFlip32(a >> 32))#define cfbBits(a)	cfbFlip64(_cfbBits(a))#endif /* PGSZ */#endif /* BITMAP_BIT_ORDER *//* NOTE:the first element in starttab could be 0xffffffff.  making it 0lets us deal with a full first word in the middle loop, ratherthan having to do the multiple reads and masks that we'dhave to do if we thought it was partial.*/#if PSZ == 4#if PGSZ == 32PixelGroup cfbstarttab[] =    {	cfbBits(0x00000000),	cfbBits(0x0FFFFFFF),	cfbBits(0x00FFFFFF),	cfbBits(0x000FFFFF),	cfbBits(0x0000FFFF),	cfbBits(0x00000FFF),	cfbBits(0x000000FF),	cfbBits(0x0000000F)    };PixelGroup cfbendtab[] =    {	cfbBits(0x00000000),	cfbBits(0xF0000000),	cfbBits(0xFF000000),	cfbBits(0xFFF00000),	cfbBits(0xFFFF0000),	cfbBits(0xFFFFF000),	cfbBits(0xFFFFFF00),	cfbBits(0xFFFFFFF0)    };#else /* PGSZ == 64 */PixelGroup cfbstarttab[] =    {	cfbBits(0x0000000000000000),	cfbBits(0x0FFFFFFFFFFFFFFF),	cfbBits(0x00FFFFFFFFFFFFFF),	cfbBits(0x000FFFFFFFFFFFFF),	cfbBits(0x0000FFFFFFFFFFFF),	cfbBits(0x00000FFFFFFFFFFF),	cfbBits(0x000000FFFFFFFFFF),	cfbBits(0x0000000FFFFFFFFF),	cfbBits(0x00000000FFFFFFFF),	cfbBits(0x000000000FFFFFFF),	cfbBits(0x0000000000FFFFFF),	cfbBits(0x00000000000FFFFF),	cfbBits(0x000000000000FFFF),	cfbBits(0x0000000000000FFF),	cfbBits(0x00000000000000FF),	cfbBits(0x000000000000000F),    };PixelGroup cfbendtab[] =    {	cfbBits(0x0000000000000000),	cfbBits(0xF000000000000000),	cfbBits(0xFF00000000000000),	cfbBits(0xFFF0000000000000),	cfbBits(0xFFFF000000000000),	cfbBits(0xFFFFF00000000000),	cfbBits(0xFFFFFF0000000000),	cfbBits(0xFFFFFFF000000000),	cfbBits(0xFFFFFFFF00000000),	cfbBits(0xFFFFFFFFF0000000),	cfbBits(0xFFFFFFFFFF000000),	cfbBits(0xFFFFFFFFFFF00000),	cfbBits(0xFFFFFFFFFFFF0000),	cfbBits(0xFFFFFFFFFFFFF000),	cfbBits(0xFFFFFFFFFFFFFF00),	cfbBits(0xFFFFFFFFFFFFFFF0),    };#endif /* PGSZ */#endif /* PSZ == 4 */#if PSZ == 8#if PGSZ == 32PixelGroup cfbstarttab[] =    {	cfbBits(0x00000000),	cfbBits(0x00FFFFFF),	cfbBits(0x0000FFFF),	cfbBits(0x000000FF)    };PixelGroup cfbendtab[] =    {	cfbBits(0x00000000),	cfbBits(0xFF000000),	cfbBits(0xFFFF0000),	cfbBits(0xFFFFFF00)    };#else /* PGSZ == 64 */PixelGroup cfbstarttab[] =    {	cfbBits(0x0000000000000000),	cfbBits(0x00FFFFFFFFFFFFFF),	cfbBits(0x0000FFFFFFFFFFFF),	cfbBits(0x000000FFFFFFFFFF),	cfbBits(0x00000000FFFFFFFF),	cfbBits(0x0000000000FFFFFF),	cfbBits(0x000000000000FFFF),	cfbBits(0x00000000000000FF)    };PixelGroup cfbendtab[] =    {	cfbBits(0x0000000000000000),	cfbBits(0xFF00000000000000),	cfbBits(0xFFFF000000000000),	cfbBits(0xFFFFFF0000000000),	cfbBits(0xFFFFFFFF00000000),	cfbBits(0xFFFFFFFFFF000000),	cfbBits(0xFFFFFFFFFFFF0000),	cfbBits(0xFFFFFFFFFFFFFF00)    };#endif /* PGSZ */#endif /* PSZ == 8 */#if PSZ == 16#if PGSZ == 32PixelGroup cfbstarttab[] =    {	cfbBits(0x00000000),	cfbBits(0x0000FFFF),    };PixelGroup cfbendtab[] =    {	cfbBits(0x00000000),	cfbBits(0xFFFF0000),    };#else /* PGSZ == 64 */PixelGroup cfbstarttab[] =    {	cfbBits(0x0000000000000000),	cfbBits(0x0000FFFFFFFFFFFF),	cfbBits(0x00000000FFFFFFFF),	cfbBits(0x000000000000FFFF),    };PixelGroup cfbendtab[] =    {	cfbBits(0x0000000000000000),	cfbBits(0xFFFF000000000000),	cfbBits(0xFFFFFFFF00000000),	cfbBits(0xFFFFFFFFFFFF0000),    };#endif /* PGSZ */#endif#if PSZ == 24#if PGSZ == 32PixelGroup cfbstarttab[] =    {	cfbBits(0x00000000),	cfbBits(0x000000FF),	cfbBits(0x0000FFFF),	cfbBits(0x00FFFFFF),    };PixelGroup cfbendtab[] =     {	cfbBits(0x00000000),	cfbBits(0xFFFFFF00),	cfbBits(0xFFFF0000),	cfbBits(0xFF000000),    };#else /* PGSZ == 64 */PixelGroup cfbstarttab[] =    {	cfbBits(0x0000000000000000),	cfbBits(0x000000FFFFFFFFFF),	cfbBits(0x000000000000FFFF),    };PixelGroup cfbendtab[] =     {	cfbBits(0x0000000000000000),	cfbBits(0xFFFFFFFFFF000000),	cfbBits(0xFFFF000000000000),    };#endif /* PGSZ */#endif /* PSZ == 24 */#if PSZ == 32#if PGSZ == 32PixelGroup cfbstarttab[] =    {	cfbBits(0x00000000),    };PixelGroup cfbendtab[] =     {	cfbBits(0x00000000),    };#else /* PGSZ == 64 */PixelGroup cfbstarttab[] =    {	cfbBits(0x0000000000000000),	cfbBits(0x00000000FFFFFFFF),    };PixelGroup cfbendtab[] =     {	cfbBits(0x0000000000000000),	cfbBits(0xFFFFFFFF00000000),    };#endif /* PGSZ */#endif /* PSZ == 32 *//* a hack, for now, since the entries for 0 need to be all   1 bits, not all zeros.   this means the code DOES NOT WORK for segments of length   0 (which is only a problem in the horizontal line code.)*/#if PSZ == 4#if PGSZ == 32PixelGroup cfbstartpartial[] =    {	cfbBits(0xFFFFFFFF),	cfbBits(0x0FFFFFFF),	cfbBits(0x00FFFFFF),	cfbBits(0x000FFFFF),	cfbBits(0x0000FFFF),	cfbBits(0x00000FFF),	cfbBits(0x000000FF),	cfbBits(0x0000000F)    };PixelGroup cfbendpartial[] =    {	cfbBits(0xFFFFFFFF),	cfbBits(0xF0000000),	cfbBits(0xFF000000),	cfbBits(0xFFF00000),	cfbBits(0xFFFF0000),	cfbBits(0xFFFFF000),	cfbBits(0xFFFFFF00),	cfbBits(0xFFFFFFF0)    };#else /* PGSZ == 64 */PixelGroup cfbstartpartial[] =    {	cfbBits(0xFFFFFFFFFFFFFFFF),	cfbBits(0x0FFFFFFFFFFFFFFF),	cfbBits(0x00FFFFFFFFFFFFFF),	cfbBits(0x000FFFFFFFFFFFFF),	cfbBits(0x0000FFFFFFFFFFFF),	cfbBits(0x00000FFFFFFFFFFF),	cfbBits(0x000000FFFFFFFFFF),	cfbBits(0x0000000FFFFFFFFF),	cfbBits(0x00000000FFFFFFFF),	cfbBits(0x000000000FFFFFFF),	cfbBits(0x0000000000FFFFFF),	cfbBits(0x00000000000FFFFF),	cfbBits(0x000000000000FFFF),	cfbBits(0x0000000000000FFF),	cfbBits(0x00000000000000FF),	cfbBits(0x000000000000000F),    };PixelGroup cfbendpartial[] =    {	cfbBits(0xFFFFFFFFFFFFFFFF),	cfbBits(0xF000000000000000),	cfbBits(0xFF00000000000000),	cfbBits(0xFFF0000000000000),	cfbBits(0xFFFF000000000000),	cfbBits(0xFFFFF00000000000),	cfbBits(0xFFFFFF0000000000),	cfbBits(0xFFFFFFF000000000),	cfbBits(0xFFFFFFFF00000000),	cfbBits(0xFFFFFFFFF0000000),	cfbBits(0xFFFFFFFFFF000000),	cfbBits(0xFFFFFFFFFFF00000),	cfbBits(0xFFFFFFFFFFFF0000),	cfbBits(0xFFFFFFFFFFFFF000),	cfbBits(0xFFFFFFFFFFFFFF00),	cfbBits(0xFFFFFFFFFFFFFFF0),    };#endif /* PGSZ */#endif /* PSZ == 4 */#if PSZ == 8#if PGSZ == 32PixelGroup cfbstartpartial[] =    {	cfbBits(0xFFFFFFFF),	cfbBits(0x00FFFFFF),	cfbBits(0x0000FFFF),	cfbBits(0x000000FF)    };PixelGroup cfbendpartial[] =    {	cfbBits(0xFFFFFFFF),	cfbBits(0xFF000000),	cfbBits(0xFFFF0000),	cfbBits(0xFFFFFF00)    };#else /* PGSZ == 64 */PixelGroup cfbstartpartial[] =    {	cfbBits(0xFFFFFFFFFFFFFFFF),	cfbBits(0x00FFFFFFFFFFFFFF),	cfbBits(0x0000FFFFFFFFFFFF),	cfbBits(0x000000FFFFFFFFFF),	cfbBits(0x00000000FFFFFFFF),	cfbBits(0x0000000000FFFFFF),	cfbBits(0x000000000000FFFF),	cfbBits(0x00000000000000FF),    };PixelGroup cfbendpartial[] =    {	cfbBits(0xFFFFFFFFFFFFFFFF),	cfbBits(0xFF00000000000000),	cfbBits(0xFFFF000000000000),	cfbBits(0xFFFFFF0000000000),	cfbBits(0xFFFFFFFF00000000),	cfbBits(0xFFFFFFFFFF000000),	cfbBits(0xFFFFFFFFFFFF0000),	cfbBits(0xFFFFFFFFFFFFFF00),    };#endif /* PGSZ */#endif /* PSZ == 8 */#if PSZ == 16#if PGSZ == 32PixelGroup cfbstartpartial[] =    {	cfbBits(0xFFFFFFFF),	cfbBits(0x0000FFFF),    };PixelGroup cfbendpartial[] =    {	cfbBits(0xFFFFFFFF),	cfbBits(0xFFFF0000),    };#else /* PGSZ == 64 */PixelGroup cfbstartpartial[] =    {	cfbBits(0xFFFFFFFFFFFFFFFF),	cfbBits(0x0000FFFFFFFFFFFF),	cfbBits(0x00000000FFFFFFFF),	cfbBits(0x000000000000FFFF),    };PixelGroup cfbendpartial[] =    {	cfbBits(0xFFFFFFFFFFFFFFFF),	cfbBits(0xFFFF000000000000),	cfbBits(0xFFFFFFFF00000000),	cfbBits(0xFFFFFFFFFFFF0000),    };#endif /* PGSZ */#endif /* PSZ == 16 */#if PSZ == 24#if PGSZ == 32PixelGroup cfbstartpartial[] =    {	cfbBits(0xFFFFFFFF),	cfbBits(0x000000FF),	cfbBits(0x0000FFFF),	cfbBits(0x00FFFFFF),    };PixelGroup cfbendpartial[] =    {	cfbBits(0xFFFFFFFF),	cfbBits(0xFFFFFF00),	cfbBits(0xFFFF0000),	cfbBits(0xFF000000),    };#else /* PGSZ == 64 */PixelGroup cfbstartpartial[] =    {	cfbBits(0xFFFFFFFFFFFFFFFF),	cfbBits(0x0000FFFFFFFFFFFF),	cfbBits(0x000000FFFFFFFFFF),	cfbBits(0x00000000FFFFFFFF),	cfbBits(0x0000000000FFFFFF),	cfbBits(0x000000000000FFFF),	cfbBits(0x00000000000000FF),    };PixelGroup cfbendpartial[] =    {	cfbBits(0xFFFFFFFFFFFFFFFF),	cfbBits(0xFFFFFFFFFFFF0000),	cfbBits(0xFFFFFFFFFF000000),	cfbBits(0xFFFFFFFF00000000),	cfbBits(0xFFFFFF0000000000),	cfbBits(0xFFFF000000000000),	cfbBits(0xFF00000000000000),    };#endif /* PGSZ */#endif /* PSZ == 24 */#if PSZ == 32#if PGSZ == 32

⌨️ 快捷键说明

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