diff options
author | Kaleb Keithley <kaleb@freedesktop.org> | 2003-11-14 15:54:54 +0000 |
---|---|---|
committer | Kaleb Keithley <kaleb@freedesktop.org> | 2003-11-14 15:54:54 +0000 |
commit | ded6147bfb5d75ff1e67c858040a628b61bc17d1 (patch) | |
tree | 82355105e93cdac89ef7d987424351c77545faf0 /mfb | |
parent | cb6ef07bf01e72d1a6e6e83ceb7f76d6534da941 (diff) |
R6.6 is the Xorg base-line
Diffstat (limited to 'mfb')
37 files changed, 22864 insertions, 0 deletions
diff --git a/mfb/fastblt.h b/mfb/fastblt.h new file mode 100644 index 000000000..6567a8936 --- /dev/null +++ b/mfb/fastblt.h @@ -0,0 +1,118 @@ +/* $Xorg: fastblt.h,v 1.4 2001/02/09 02:05:17 xorgcvs Exp $ */ +/* + +Copyright 1989, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall +not be used in advertising or otherwise to promote the sale, use or +other dealings in this Software without prior written authorization +from The Open Group. + +*/ + +/* + * Fast bitblt macros for certain hardware. If your machine has an addressing + * mode of small constant + register, you'll probably want this magic specific + * code. It's 25% faster for the R2000. I haven't studied the Sparc + * instruction set, but I suspect it also has this addressing mode. Also, + * unrolling the loop by 32 is possibly excessive for mfb. The number of times + * the loop is actually looped through is pretty small. + */ + +/* + * WARNING: These macros make *a lot* of assumptions about + * the environment they are invoked in. Plenty of implicit + * arguments, lots of side effects. Don't use them casually. + */ + +#define SwitchOdd(n) case n: BodyOdd(n) +#define SwitchEven(n) case n: BodyEven(n) + +/* to allow mfb and cfb to share code... */ +#ifndef BitRight +#define BitRight(a,b) SCRRIGHT(a,b) +#define BitLeft(a,b) SCRLEFT(a,b) +#endif + +#ifdef LARGE_INSTRUCTION_CACHE +#define UNROLL 8 +#define PackedLoop \ + switch (nl & (UNROLL-1)) { \ + SwitchOdd( 7) SwitchEven( 6) SwitchOdd( 5) SwitchEven( 4) \ + SwitchOdd( 3) SwitchEven( 2) SwitchOdd( 1) \ + } \ + while ((nl -= UNROLL) >= 0) { \ + LoopReset \ + BodyEven( 8) \ + BodyOdd( 7) BodyEven( 6) BodyOdd( 5) BodyEven( 4) \ + BodyOdd( 3) BodyEven( 2) BodyOdd( 1) \ + } +#else +#define UNROLL 4 +#define PackedLoop \ + switch (nl & (UNROLL-1)) { \ + SwitchOdd( 3) SwitchEven( 2) SwitchOdd( 1) \ + } \ + while ((nl -= UNROLL) >= 0) { \ + LoopReset \ + BodyEven( 4) \ + BodyOdd( 3) BodyEven( 2) BodyOdd( 1) \ + } +#endif + +#if PPW == 32 +#define DuffL(counter,label,body) \ + switch (counter & 3) { \ + label: \ + body \ + case 3: \ + body \ + case 2: \ + body \ + case 1: \ + body \ + case 0: \ + if ((counter -= 4) >= 0) \ + goto label; \ + } +#else /* PPW == 64 */ +#define DuffL(counter,label,body) \ + switch (counter & 7) { \ + label: \ + body \ + case 7: \ + body \ + case 6: \ + body \ + case 5: \ + body \ + case 4: \ + body \ + case 3: \ + body \ + case 2: \ + body \ + case 1: \ + body \ + case 0: \ + if ((counter -= 8) >= 0) \ + goto label; \ + } +#endif /* PPW */ diff --git a/mfb/maskbits.c b/mfb/maskbits.c new file mode 100644 index 000000000..deb62618a --- /dev/null +++ b/mfb/maskbits.c @@ -0,0 +1,9871 @@ +/* $Xorg: maskbits.c,v 1.4 2001/02/09 02:05:17 xorgcvs Exp $ */ +/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */ +/* + +Copyright 1987, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall +not be used in advertising or otherwise to promote the sale, use or +other dealings in this Software without prior written authorization +from The Open Group. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts, + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +*/ + +#include "maskbits.h" +#include "servermd.h" + +/* +these tables are used by several macros in the mfb code. + + the vax numbers everything left to right, so bit indices on the +screen match bit indices in longwords. the pc-rt and Sun number +bits 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 is +bit index PPW-n in a longword + + see also maskbits.h +*/ + +#if (BITMAP_BIT_ORDER == MSBFirst) +/* NOTE: +the first element in starttab could be 0xffffffff. making it 0 +lets us deal with a full first word in the middle loop, rather +than having to do the multiple reads and masks that we'd +have to do if we thought it was partial. +*/ +PixelType starttab[PPW+1] = + { + LONG2CHARS( 0x00000000 ), +#if PPW == 64 + LONG2CHARS( 0x7FFFFFFFFFFFFFFF ), + LONG2CHARS( 0x3FFFFFFFFFFFFFFF ), + LONG2CHARS( 0x1FFFFFFFFFFFFFFF ), + LONG2CHARS( 0x0FFFFFFFFFFFFFFF ), + LONG2CHARS( 0x07FFFFFFFFFFFFFF ), + LONG2CHARS( 0x03FFFFFFFFFFFFFF ), + LONG2CHARS( 0x01FFFFFFFFFFFFFF ), + LONG2CHARS( 0x00FFFFFFFFFFFFFF ), + LONG2CHARS( 0x007FFFFFFFFFFFFF ), + LONG2CHARS( 0x003FFFFFFFFFFFFF ), + LONG2CHARS( 0x001FFFFFFFFFFFFF ), + LONG2CHARS( 0x000FFFFFFFFFFFFF ), + LONG2CHARS( 0x0007FFFFFFFFFFFF ), + LONG2CHARS( 0x0003FFFFFFFFFFFF ), + LONG2CHARS( 0x0001FFFFFFFFFFFF ), + LONG2CHARS( 0x0000FFFFFFFFFFFF ), + LONG2CHARS( 0x00007FFFFFFFFFFF ), + LONG2CHARS( 0x00003FFFFFFFFFFF ), + LONG2CHARS( 0x00001FFFFFFFFFFF ), + LONG2CHARS( 0x00000FFFFFFFFFFF ), + LONG2CHARS( 0x000007FFFFFFFFFF ), + LONG2CHARS( 0x000003FFFFFFFFFF ), + LONG2CHARS( 0x000001FFFFFFFFFF ), + LONG2CHARS( 0x000000FFFFFFFFFF ), + LONG2CHARS( 0x0000007FFFFFFFFF ), + LONG2CHARS( 0x0000003FFFFFFFFF ), + LONG2CHARS( 0x0000001FFFFFFFFF ), + LONG2CHARS( 0x0000000FFFFFFFFF ), + LONG2CHARS( 0x00000007FFFFFFFF ), + LONG2CHARS( 0x00000003FFFFFFFF ), + LONG2CHARS( 0x00000001FFFFFFFF ), + LONG2CHARS( 0x00000000FFFFFFFF ), +#endif /* PPW == 64 */ + LONG2CHARS( 0x7FFFFFFF ), + LONG2CHARS( 0x3FFFFFFF ), + LONG2CHARS( 0x1FFFFFFF ), + LONG2CHARS( 0x0FFFFFFF ), + LONG2CHARS( 0x07FFFFFF ), + LONG2CHARS( 0x03FFFFFF ), + LONG2CHARS( 0x01FFFFFF ), + LONG2CHARS( 0x00FFFFFF ), + LONG2CHARS( 0x007FFFFF ), + LONG2CHARS( 0x003FFFFF ), + LONG2CHARS( 0x001FFFFF ), + LONG2CHARS( 0x000FFFFF ), + LONG2CHARS( 0x0007FFFF ), + LONG2CHARS( 0x0003FFFF ), + LONG2CHARS( 0x0001FFFF ), + LONG2CHARS( 0x0000FFFF ), + LONG2CHARS( 0x00007FFF ), + LONG2CHARS( 0x00003FFF ), + LONG2CHARS( 0x00001FFF ), + LONG2CHARS( 0x00000FFF ), + LONG2CHARS( 0x000007FF ), + LONG2CHARS( 0x000003FF ), + LONG2CHARS( 0x000001FF ), + LONG2CHARS( 0x000000FF ), + LONG2CHARS( 0x0000007F ), + LONG2CHARS( 0x0000003F ), + LONG2CHARS( 0x0000001F ), + LONG2CHARS( 0x0000000F ), + LONG2CHARS( 0x00000007 ), + LONG2CHARS( 0x00000003 ), + LONG2CHARS( 0x00000001 ), + LONG2CHARS( 0x00000000 ) + }; + +PixelType endtab[PPW+1] = + { +#if PPW == 32 + LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x80000000 ), + LONG2CHARS( 0xC0000000 ), + LONG2CHARS( 0xE0000000 ), + LONG2CHARS( 0xF0000000 ), + LONG2CHARS( 0xF8000000 ), + LONG2CHARS( 0xFC000000 ), + LONG2CHARS( 0xFE000000 ), + LONG2CHARS( 0xFF000000 ), + LONG2CHARS( 0xFF800000 ), + LONG2CHARS( 0xFFC00000 ), + LONG2CHARS( 0xFFE00000 ), + LONG2CHARS( 0xFFF00000 ), + LONG2CHARS( 0xFFF80000 ), + LONG2CHARS( 0xFFFC0000 ), + LONG2CHARS( 0xFFFE0000 ), + LONG2CHARS( 0xFFFF0000 ), + LONG2CHARS( 0xFFFF8000 ), + LONG2CHARS( 0xFFFFC000 ), + LONG2CHARS( 0xFFFFE000 ), + LONG2CHARS( 0xFFFFF000 ), + LONG2CHARS( 0xFFFFF800 ), + LONG2CHARS( 0xFFFFFC00 ), + LONG2CHARS( 0xFFFFFE00 ), + LONG2CHARS( 0xFFFFFF00 ), + LONG2CHARS( 0xFFFFFF80 ), + LONG2CHARS( 0xFFFFFFC0 ), + LONG2CHARS( 0xFFFFFFE0 ), + LONG2CHARS( 0xFFFFFFF0 ), + LONG2CHARS( 0xFFFFFFF8 ), + LONG2CHARS( 0xFFFFFFFC ), + LONG2CHARS( 0xFFFFFFFE ), + LONG2CHARS( 0xFFFFFFFF ) +#else /* PPW */ + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x8000000000000000 ), + LONG2CHARS( 0xC000000000000000 ), + LONG2CHARS( 0xE000000000000000 ), + LONG2CHARS( 0xF000000000000000 ), + LONG2CHARS( 0xF800000000000000 ), + LONG2CHARS( 0xFC00000000000000 ), + LONG2CHARS( 0xFE00000000000000 ), + LONG2CHARS( 0xFF00000000000000 ), + LONG2CHARS( 0xFF80000000000000 ), + LONG2CHARS( 0xFFC0000000000000 ), + LONG2CHARS( 0xFFE0000000000000 ), + LONG2CHARS( 0xFFF0000000000000 ), + LONG2CHARS( 0xFFF8000000000000 ), + LONG2CHARS( 0xFFFC000000000000 ), + LONG2CHARS( 0xFFFE000000000000 ), + LONG2CHARS( 0xFFFF000000000000 ), + LONG2CHARS( 0xFFFF800000000000 ), + LONG2CHARS( 0xFFFFC00000000000 ), + LONG2CHARS( 0xFFFFE00000000000 ), + LONG2CHARS( 0xFFFFF00000000000 ), + LONG2CHARS( 0xFFFFF80000000000 ), + LONG2CHARS( 0xFFFFFC0000000000 ), + LONG2CHARS( 0xFFFFFE0000000000 ), + LONG2CHARS( 0xFFFFFF0000000000 ), + LONG2CHARS( 0xFFFFFF8000000000 ), + LONG2CHARS( 0xFFFFFFC000000000 ), + LONG2CHARS( 0xFFFFFFE000000000 ), + LONG2CHARS( 0xFFFFFFF000000000 ), + LONG2CHARS( 0xFFFFFFF800000000 ), + LONG2CHARS( 0xFFFFFFFC00000000 ), + LONG2CHARS( 0xFFFFFFFE00000000 ), + LONG2CHARS( 0xFFFFFFFF00000000 ), + LONG2CHARS( 0xFFFFFFFF80000000 ), + LONG2CHARS( 0xFFFFFFFFC0000000 ), + LONG2CHARS( 0xFFFFFFFFE0000000 ), + LONG2CHARS( 0xFFFFFFFFF0000000 ), + LONG2CHARS( 0xFFFFFFFFF8000000 ), + LONG2CHARS( 0xFFFFFFFFFC000000 ), + LONG2CHARS( 0xFFFFFFFFFE000000 ), + LONG2CHARS( 0xFFFFFFFFFF000000 ), + LONG2CHARS( 0xFFFFFFFFFF800000 ), + LONG2CHARS( 0xFFFFFFFFFFC00000 ), + LONG2CHARS( 0xFFFFFFFFFFE00000 ), + LONG2CHARS( 0xFFFFFFFFFFF00000 ), + LONG2CHARS( 0xFFFFFFFFFFF80000 ), + LONG2CHARS( 0xFFFFFFFFFFFC0000 ), + LONG2CHARS( 0xFFFFFFFFFFFE0000 ), + LONG2CHARS( 0xFFFFFFFFFFFF0000 ), + LONG2CHARS( 0xFFFFFFFFFFFF8000 ), + LONG2CHARS( 0xFFFFFFFFFFFFC000 ), + LONG2CHARS( 0xFFFFFFFFFFFFE000 ), + LONG2CHARS( 0xFFFFFFFFFFFFF000 ), + LONG2CHARS( 0xFFFFFFFFFFFFF800 ), + LONG2CHARS( 0xFFFFFFFFFFFFFC00 ), + LONG2CHARS( 0xFFFFFFFFFFFFFE00 ), + LONG2CHARS( 0xFFFFFFFFFFFFFF00 ), + LONG2CHARS( 0xFFFFFFFFFFFFFF80 ), + LONG2CHARS( 0xFFFFFFFFFFFFFFC0 ), + LONG2CHARS( 0xFFFFFFFFFFFFFFE0 ), + LONG2CHARS( 0xFFFFFFFFFFFFFFF0 ), + LONG2CHARS( 0xFFFFFFFFFFFFFFF8 ), + LONG2CHARS( 0xFFFFFFFFFFFFFFFC ), + LONG2CHARS( 0xFFFFFFFFFFFFFFFE ), + LONG2CHARS( 0xFFFFFFFFFFFFFFFF ) +#endif /* PPW */ + }; + +#ifndef LOWMEMFTPT + +#if NEED_OLD_MFB_MASKS +/* 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.) +*/ +PixelType startpartial[33] = + { + LONG2CHARS( 0xFFFFFFFF ), + LONG2CHARS( 0x7FFFFFFF ), + LONG2CHARS( 0x3FFFFFFF ), + LONG2CHARS( 0x1FFFFFFF ), + LONG2CHARS( 0x0FFFFFFF ), + LONG2CHARS( 0x07FFFFFF ), + LONG2CHARS( 0x03FFFFFF ), + LONG2CHARS( 0x01FFFFFF ), + LONG2CHARS( 0x00FFFFFF ), + LONG2CHARS( 0x007FFFFF ), + LONG2CHARS( 0x003FFFFF ), + LONG2CHARS( 0x001FFFFF ), + LONG2CHARS( 0x000FFFFF ), + LONG2CHARS( 0x0007FFFF ), + LONG2CHARS( 0x0003FFFF ), + LONG2CHARS( 0x0001FFFF ), + LONG2CHARS( 0x0000FFFF ), + LONG2CHARS( 0x00007FFF ), + LONG2CHARS( 0x00003FFF ), + LONG2CHARS( 0x00001FFF ), + LONG2CHARS( 0x00000FFF ), + LONG2CHARS( 0x000007FF ), + LONG2CHARS( 0x000003FF ), + LONG2CHARS( 0x000001FF ), + LONG2CHARS( 0x000000FF ), + LONG2CHARS( 0x0000007F ), + LONG2CHARS( 0x0000003F ), + LONG2CHARS( 0x0000001F ), + LONG2CHARS( 0x0000000F ), + LONG2CHARS( 0x00000007 ), + LONG2CHARS( 0x00000003 ), + LONG2CHARS( 0x00000001 ), + LONG2CHARS( 0x00000000 ) + }; + +PixelType endpartial[33] = + { + LONG2CHARS( 0xFFFFFFFF ), + LONG2CHARS( 0x80000000 ), + LONG2CHARS( 0xC0000000 ), + LONG2CHARS( 0xE0000000 ), + LONG2CHARS( 0xF0000000 ), + LONG2CHARS( 0xF8000000 ), + LONG2CHARS( 0xFC000000 ), + LONG2CHARS( 0xFE000000 ), + LONG2CHARS( 0xFF000000 ), + LONG2CHARS( 0xFF800000 ), + LONG2CHARS( 0xFFC00000 ), + LONG2CHARS( 0xFFE00000 ), + LONG2CHARS( 0xFFF00000 ), + LONG2CHARS( 0xFFF80000 ), + LONG2CHARS( 0xFFFC0000 ), + LONG2CHARS( 0xFFFE0000 ), + LONG2CHARS( 0xFFFF0000 ), + LONG2CHARS( 0xFFFF8000 ), + LONG2CHARS( 0xFFFFC000 ), + LONG2CHARS( 0xFFFFE000 ), + LONG2CHARS( 0xFFFFF000 ), + LONG2CHARS( 0xFFFFF800 ), + LONG2CHARS( 0xFFFFFC00 ), + LONG2CHARS( 0xFFFFFE00 ), + LONG2CHARS( 0xFFFFFF00 ), + LONG2CHARS( 0xFFFFFF80 ), + LONG2CHARS( 0xFFFFFFC0 ), + LONG2CHARS( 0xFFFFFFE0 ), + LONG2CHARS( 0xFFFFFFF0 ), + LONG2CHARS( 0xFFFFFFF8 ), + LONG2CHARS( 0xFFFFFFFC ), + LONG2CHARS( 0xFFFFFFFE ), + LONG2CHARS( 0xFFFFFFFF ) + }; +#endif /* NEED_OLD_MFB_MASKS */ + +#endif /* ifndef LOWMEMFTPT */ + +#if PPW == 32 +PixelType partmasks[PPW][PPW] = { + {LONG2CHARS( 0xFFFFFFFF ), LONG2CHARS( 0x80000000 ), LONG2CHARS( 0xC0000000 ), LONG2CHARS( 0xE0000000 ), + LONG2CHARS( 0xF0000000 ), LONG2CHARS( 0xF8000000 ), LONG2CHARS( 0xFC000000 ), LONG2CHARS( 0xFE000000 ), + LONG2CHARS( 0xFF000000 ), LONG2CHARS( 0xFF800000 ), LONG2CHARS( 0xFFC00000 ), LONG2CHARS( 0xFFE00000 ), + LONG2CHARS( 0xFFF00000 ), LONG2CHARS( 0xFFF80000 ), LONG2CHARS( 0xFFFC0000 ), LONG2CHARS( 0xFFFE0000 ), + LONG2CHARS( 0xFFFF0000 ), LONG2CHARS( 0xFFFF8000 ), LONG2CHARS( 0xFFFFC000 ), LONG2CHARS( 0xFFFFE000 ), + LONG2CHARS( 0xFFFFF000 ), LONG2CHARS( 0xFFFFF800 ), LONG2CHARS( 0xFFFFFC00 ), LONG2CHARS( 0xFFFFFE00 ), + LONG2CHARS( 0xFFFFFF00 ), LONG2CHARS( 0xFFFFFF80 ), LONG2CHARS( 0xFFFFFFC0 ), LONG2CHARS( 0xFFFFFFE0 ), + LONG2CHARS( 0xFFFFFFF0 ), LONG2CHARS( 0xFFFFFFF8 ), LONG2CHARS( 0xFFFFFFFC ), LONG2CHARS( 0xFFFFFFFE )}, + {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x40000000 ), LONG2CHARS( 0x60000000 ), LONG2CHARS( 0x70000000 ), + LONG2CHARS( 0x78000000 ), LONG2CHARS( 0x7C000000 ), LONG2CHARS( 0x7E000000 ), LONG2CHARS( 0x7F000000 ), + LONG2CHARS( 0x7F800000 ), LONG2CHARS( 0x7FC00000 ), LONG2CHARS( 0x7FE00000 ), LONG2CHARS( 0x7FF00000 ), + LONG2CHARS( 0x7FF80000 ), LONG2CHARS( 0x7FFC0000 ), LONG2CHARS( 0x7FFE0000 ), LONG2CHARS( 0x7FFF0000 ), + LONG2CHARS( 0x7FFF8000 ), LONG2CHARS( 0x7FFFC000 ), LONG2CHARS( 0x7FFFE000 ), LONG2CHARS( 0x7FFFF000 ), + LONG2CHARS( 0x7FFFF800 ), LONG2CHARS( 0x7FFFFC00 ), LONG2CHARS( 0x7FFFFE00 ), LONG2CHARS( 0x7FFFFF00 ), + LONG2CHARS( 0x7FFFFF80 ), LONG2CHARS( 0x7FFFFFC0 ), LONG2CHARS( 0x7FFFFFE0 ), LONG2CHARS( 0x7FFFFFF0 ), + LONG2CHARS( 0x7FFFFFF8 ), LONG2CHARS( 0x7FFFFFFC ), LONG2CHARS( 0x7FFFFFFE ), LONG2CHARS( 0x7FFFFFFF )}, + {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x20000000 ), LONG2CHARS( 0x30000000 ), LONG2CHARS( 0x38000000 ), + LONG2CHARS( 0x3C000000 ), LONG2CHARS( 0x3E000000 ), LONG2CHARS( 0x3F000000 ), LONG2CHARS( 0x3F800000 ), + LONG2CHARS( 0x3FC00000 ), LONG2CHARS( 0x3FE00000 ), LONG2CHARS( 0x3FF00000 ), LONG2CHARS( 0x3FF80000 ), + LONG2CHARS( 0x3FFC0000 ), LONG2CHARS( 0x3FFE0000 ), LONG2CHARS( 0x3FFF0000 ), LONG2CHARS( 0x3FFF8000 ), + LONG2CHARS( 0x3FFFC000 ), LONG2CHARS( 0x3FFFE000 ), LONG2CHARS( 0x3FFFF000 ), LONG2CHARS( 0x3FFFF800 ), + LONG2CHARS( 0x3FFFFC00 ), LONG2CHARS( 0x3FFFFE00 ), LONG2CHARS( 0x3FFFFF00 ), LONG2CHARS( 0x3FFFFF80 ), + LONG2CHARS( 0x3FFFFFC0 ), LONG2CHARS( 0x3FFFFFE0 ), LONG2CHARS( 0x3FFFFFF0 ), LONG2CHARS( 0x3FFFFFF8 ), + LONG2CHARS( 0x3FFFFFFC ), LONG2CHARS( 0x3FFFFFFE ), LONG2CHARS( 0x3FFFFFFF ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x10000000 ), LONG2CHARS( 0x18000000 ), LONG2CHARS( 0x1C000000 ), + LONG2CHARS( 0x1E000000 ), LONG2CHARS( 0x1F000000 ), LONG2CHARS( 0x1F800000 ), LONG2CHARS( 0x1FC00000 ), + LONG2CHARS( 0x1FE00000 ), LONG2CHARS( 0x1FF00000 ), LONG2CHARS( 0x1FF80000 ), LONG2CHARS( 0x1FFC0000 ), + LONG2CHARS( 0x1FFE0000 ), LONG2CHARS( 0x1FFF0000 ), LONG2CHARS( 0x1FFF8000 ), LONG2CHARS( 0x1FFFC000 ), + LONG2CHARS( 0x1FFFE000 ), LONG2CHARS( 0x1FFFF000 ), LONG2CHARS( 0x1FFFF800 ), LONG2CHARS( 0x1FFFFC00 ), + LONG2CHARS( 0x1FFFFE00 ), LONG2CHARS( 0x1FFFFF00 ), LONG2CHARS( 0x1FFFFF80 ), LONG2CHARS( 0x1FFFFFC0 ), + LONG2CHARS( 0x1FFFFFE0 ), LONG2CHARS( 0x1FFFFFF0 ), LONG2CHARS( 0x1FFFFFF8 ), LONG2CHARS( 0x1FFFFFFC ), + LONG2CHARS( 0x1FFFFFFE ), LONG2CHARS( 0x1FFFFFFF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x08000000 ), LONG2CHARS( 0x0C000000 ), LONG2CHARS( 0x0E000000 ), + LONG2CHARS( 0x0F000000 ), LONG2CHARS( 0x0F800000 ), LONG2CHARS( 0x0FC00000 ), LONG2CHARS( 0x0FE00000 ), + LONG2CHARS( 0x0FF00000 ), LONG2CHARS( 0x0FF80000 ), LONG2CHARS( 0x0FFC0000 ), LONG2CHARS( 0x0FFE0000 ), + LONG2CHARS( 0x0FFF0000 ), LONG2CHARS( 0x0FFF8000 ), LONG2CHARS( 0x0FFFC000 ), LONG2CHARS( 0x0FFFE000 ), + LONG2CHARS( 0x0FFFF000 ), LONG2CHARS( 0x0FFFF800 ), LONG2CHARS( 0x0FFFFC00 ), LONG2CHARS( 0x0FFFFE00 ), + LONG2CHARS( 0x0FFFFF00 ), LONG2CHARS( 0x0FFFFF80 ), LONG2CHARS( 0x0FFFFFC0 ), LONG2CHARS( 0x0FFFFFE0 ), + LONG2CHARS( 0x0FFFFFF0 ), LONG2CHARS( 0x0FFFFFF8 ), LONG2CHARS( 0x0FFFFFFC ), LONG2CHARS( 0x0FFFFFFE ), + LONG2CHARS( 0x0FFFFFFF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x04000000 ), LONG2CHARS( 0x06000000 ), LONG2CHARS( 0x07000000 ), + LONG2CHARS( 0x07800000 ), LONG2CHARS( 0x07C00000 ), LONG2CHARS( 0x07E00000 ), LONG2CHARS( 0x07F00000 ), + LONG2CHARS( 0x07F80000 ), LONG2CHARS( 0x07FC0000 ), LONG2CHARS( 0x07FE0000 ), LONG2CHARS( 0x07FF0000 ), + LONG2CHARS( 0x07FF8000 ), LONG2CHARS( 0x07FFC000 ), LONG2CHARS( 0x07FFE000 ), LONG2CHARS( 0x07FFF000 ), + LONG2CHARS( 0x07FFF800 ), LONG2CHARS( 0x07FFFC00 ), LONG2CHARS( 0x07FFFE00 ), LONG2CHARS( 0x07FFFF00 ), + LONG2CHARS( 0x07FFFF80 ), LONG2CHARS( 0x07FFFFC0 ), LONG2CHARS( 0x07FFFFE0 ), LONG2CHARS( 0x07FFFFF0 ), + LONG2CHARS( 0x07FFFFF8 ), LONG2CHARS( 0x07FFFFFC ), LONG2CHARS( 0x07FFFFFE ), LONG2CHARS( 0x07FFFFFF ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x02000000 ), LONG2CHARS( 0x03000000 ), LONG2CHARS( 0x03800000 ), + LONG2CHARS( 0x03C00000 ), LONG2CHARS( 0x03E00000 ), LONG2CHARS( 0x03F00000 ), LONG2CHARS( 0x03F80000 ), + LONG2CHARS( 0x03FC0000 ), LONG2CHARS( 0x03FE0000 ), LONG2CHARS( 0x03FF0000 ), LONG2CHARS( 0x03FF8000 ), + LONG2CHARS( 0x03FFC000 ), LONG2CHARS( 0x03FFE000 ), LONG2CHARS( 0x03FFF000 ), LONG2CHARS( 0x03FFF800 ), + LONG2CHARS( 0x03FFFC00 ), LONG2CHARS( 0x03FFFE00 ), LONG2CHARS( 0x03FFFF00 ), LONG2CHARS( 0x03FFFF80 ), + LONG2CHARS( 0x03FFFFC0 ), LONG2CHARS( 0x03FFFFE0 ), LONG2CHARS( 0x03FFFFF0 ), LONG2CHARS( 0x03FFFFF8 ), + LONG2CHARS( 0x03FFFFFC ), LONG2CHARS( 0x03FFFFFE ), LONG2CHARS( 0x03FFFFFF ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x01000000 ), LONG2CHARS( 0x01800000 ), LONG2CHARS( 0x01C00000 ), + LONG2CHARS( 0x01E00000 ), LONG2CHARS( 0x01F00000 ), LONG2CHARS( 0x01F80000 ), LONG2CHARS( 0x01FC0000 ), + LONG2CHARS( 0x01FE0000 ), LONG2CHARS( 0x01FF0000 ), LONG2CHARS( 0x01FF8000 ), LONG2CHARS( 0x01FFC000 ), + LONG2CHARS( 0x01FFE000 ), LONG2CHARS( 0x01FFF000 ), LONG2CHARS( 0x01FFF800 ), LONG2CHARS( 0x01FFFC00 ), + LONG2CHARS( 0x01FFFE00 ), LONG2CHARS( 0x01FFFF00 ), LONG2CHARS( 0x01FFFF80 ), LONG2CHARS( 0x01FFFFC0 ), + LONG2CHARS( 0x01FFFFE0 ), LONG2CHARS( 0x01FFFFF0 ), LONG2CHARS( 0x01FFFFF8 ), LONG2CHARS( 0x01FFFFFC ), + LONG2CHARS( 0x01FFFFFE ), LONG2CHARS( 0x01FFFFFF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00800000 ), LONG2CHARS( 0x00C00000 ), LONG2CHARS( 0x00E00000 ), + LONG2CHARS( 0x00F00000 ), LONG2CHARS( 0x00F80000 ), LONG2CHARS( 0x00FC0000 ), LONG2CHARS( 0x00FE0000 ), + LONG2CHARS( 0x00FF0000 ), LONG2CHARS( 0x00FF8000 ), LONG2CHARS( 0x00FFC000 ), LONG2CHARS( 0x00FFE000 ), + LONG2CHARS( 0x00FFF000 ), LONG2CHARS( 0x00FFF800 ), LONG2CHARS( 0x00FFFC00 ), LONG2CHARS( 0x00FFFE00 ), + LONG2CHARS( 0x00FFFF00 ), LONG2CHARS( 0x00FFFF80 ), LONG2CHARS( 0x00FFFFC0 ), LONG2CHARS( 0x00FFFFE0 ), + LONG2CHARS( 0x00FFFFF0 ), LONG2CHARS( 0x00FFFFF8 ), LONG2CHARS( 0x00FFFFFC ), LONG2CHARS( 0x00FFFFFE ), + LONG2CHARS( 0x00FFFFFF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00400000 ), LONG2CHARS( 0x00600000 ), LONG2CHARS( 0x00700000 ), + LONG2CHARS( 0x00780000 ), LONG2CHARS( 0x007C0000 ), LONG2CHARS( 0x007E0000 ), LONG2CHARS( 0x007F0000 ), + LONG2CHARS( 0x007F8000 ), LONG2CHARS( 0x007FC000 ), LONG2CHARS( 0x007FE000 ), LONG2CHARS( 0x007FF000 ), + LONG2CHARS( 0x007FF800 ), LONG2CHARS( 0x007FFC00 ), LONG2CHARS( 0x007FFE00 ), LONG2CHARS( 0x007FFF00 ), + LONG2CHARS( 0x007FFF80 ), LONG2CHARS( 0x007FFFC0 ), LONG2CHARS( 0x007FFFE0 ), LONG2CHARS( 0x007FFFF0 ), + LONG2CHARS( 0x007FFFF8 ), LONG2CHARS( 0x007FFFFC ), LONG2CHARS( 0x007FFFFE ), LONG2CHARS( 0x007FFFFF ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00200000 ), LONG2CHARS( 0x00300000 ), LONG2CHARS( 0x00380000 ), + LONG2CHARS( 0x003C0000 ), LONG2CHARS( 0x003E0000 ), LONG2CHARS( 0x003F0000 ), LONG2CHARS( 0x003F8000 ), + LONG2CHARS( 0x003FC000 ), LONG2CHARS( 0x003FE000 ), LONG2CHARS( 0x003FF000 ), LONG2CHARS( 0x003FF800 ), + LONG2CHARS( 0x003FFC00 ), LONG2CHARS( 0x003FFE00 ), LONG2CHARS( 0x003FFF00 ), LONG2CHARS( 0x003FFF80 ), + LONG2CHARS( 0x003FFFC0 ), LONG2CHARS( 0x003FFFE0 ), LONG2CHARS( 0x003FFFF0 ), LONG2CHARS( 0x003FFFF8 ), + LONG2CHARS( 0x003FFFFC ), LONG2CHARS( 0x003FFFFE ), LONG2CHARS( 0x003FFFFF ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00100000 ), LONG2CHARS( 0x00180000 ), LONG2CHARS( 0x001C0000 ), + LONG2CHARS( 0x001E0000 ), LONG2CHARS( 0x001F0000 ), LONG2CHARS( 0x001F8000 ), LONG2CHARS( 0x001FC000 ), + LONG2CHARS( 0x001FE000 ), LONG2CHARS( 0x001FF000 ), LONG2CHARS( 0x001FF800 ), LONG2CHARS( 0x001FFC00 ), + LONG2CHARS( 0x001FFE00 ), LONG2CHARS( 0x001FFF00 ), LONG2CHARS( 0x001FFF80 ), LONG2CHARS( 0x001FFFC0 ), + LONG2CHARS( 0x001FFFE0 ), LONG2CHARS( 0x001FFFF0 ), LONG2CHARS( 0x001FFFF8 ), LONG2CHARS( 0x001FFFFC ), + LONG2CHARS( 0x001FFFFE ), LONG2CHARS( 0x001FFFFF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00080000 ), LONG2CHARS( 0x000C0000 ), LONG2CHARS( 0x000E0000 ), + LONG2CHARS( 0x000F0000 ), LONG2CHARS( 0x000F8000 ), LONG2CHARS( 0x000FC000 ), LONG2CHARS( 0x000FE000 ), + LONG2CHARS( 0x000FF000 ), LONG2CHARS( 0x000FF800 ), LONG2CHARS( 0x000FFC00 ), LONG2CHARS( 0x000FFE00 ), + LONG2CHARS( 0x000FFF00 ), LONG2CHARS( 0x000FFF80 ), LONG2CHARS( 0x000FFFC0 ), LONG2CHARS( 0x000FFFE0 ), + LONG2CHARS( 0x000FFFF0 ), LONG2CHARS( 0x000FFFF8 ), LONG2CHARS( 0x000FFFFC ), LONG2CHARS( 0x000FFFFE ), + LONG2CHARS( 0x000FFFFF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00040000 ), LONG2CHARS( 0x00060000 ), LONG2CHARS( 0x00070000 ), + LONG2CHARS( 0x00078000 ), LONG2CHARS( 0x0007C000 ), LONG2CHARS( 0x0007E000 ), LONG2CHARS( 0x0007F000 ), + LONG2CHARS( 0x0007F800 ), LONG2CHARS( 0x0007FC00 ), LONG2CHARS( 0x0007FE00 ), LONG2CHARS( 0x0007FF00 ), + LONG2CHARS( 0x0007FF80 ), LONG2CHARS( 0x0007FFC0 ), LONG2CHARS( 0x0007FFE0 ), LONG2CHARS( 0x0007FFF0 ), + LONG2CHARS( 0x0007FFF8 ), LONG2CHARS( 0x0007FFFC ), LONG2CHARS( 0x0007FFFE ), LONG2CHARS( 0x0007FFFF ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00020000 ), LONG2CHARS( 0x00030000 ), LONG2CHARS( 0x00038000 ), + LONG2CHARS( 0x0003C000 ), LONG2CHARS( 0x0003E000 ), LONG2CHARS( 0x0003F000 ), LONG2CHARS( 0x0003F800 ), + LONG2CHARS( 0x0003FC00 ), LONG2CHARS( 0x0003FE00 ), LONG2CHARS( 0x0003FF00 ), LONG2CHARS( 0x0003FF80 ), + LONG2CHARS( 0x0003FFC0 ), LONG2CHARS( 0x0003FFE0 ), LONG2CHARS( 0x0003FFF0 ), LONG2CHARS( 0x0003FFF8 ), + LONG2CHARS( 0x0003FFFC ), LONG2CHARS( 0x0003FFFE ), LONG2CHARS( 0x0003FFFF ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00010000 ), LONG2CHARS( 0x00018000 ), LONG2CHARS( 0x0001C000 ), + LONG2CHARS( 0x0001E000 ), LONG2CHARS( 0x0001F000 ), LONG2CHARS( 0x0001F800 ), LONG2CHARS( 0x0001FC00 ), + LONG2CHARS( 0x0001FE00 ), LONG2CHARS( 0x0001FF00 ), LONG2CHARS( 0x0001FF80 ), LONG2CHARS( 0x0001FFC0 ), + LONG2CHARS( 0x0001FFE0 ), LONG2CHARS( 0x0001FFF0 ), LONG2CHARS( 0x0001FFF8 ), LONG2CHARS( 0x0001FFFC ), + LONG2CHARS( 0x0001FFFE ), LONG2CHARS( 0x0001FFFF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00008000 ), LONG2CHARS( 0x0000C000 ), LONG2CHARS( 0x0000E000 ), + LONG2CHARS( 0x0000F000 ), LONG2CHARS( 0x0000F800 ), LONG2CHARS( 0x0000FC00 ), LONG2CHARS( 0x0000FE00 ), + LONG2CHARS( 0x0000FF00 ), LONG2CHARS( 0x0000FF80 ), LONG2CHARS( 0x0000FFC0 ), LONG2CHARS( 0x0000FFE0 ), + LONG2CHARS( 0x0000FFF0 ), LONG2CHARS( 0x0000FFF8 ), LONG2CHARS( 0x0000FFFC ), LONG2CHARS( 0x0000FFFE ), + LONG2CHARS( 0x0000FFFF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00004000 ), LONG2CHARS( 0x00006000 ), LONG2CHARS( 0x00007000 ), + LONG2CHARS( 0x00007800 ), LONG2CHARS( 0x00007C00 ), LONG2CHARS( 0x00007E00 ), LONG2CHARS( 0x00007F00 ), + LONG2CHARS( 0x00007F80 ), LONG2CHARS( 0x00007FC0 ), LONG2CHARS( 0x00007FE0 ), LONG2CHARS( 0x00007FF0 ), + LONG2CHARS( 0x00007FF8 ), LONG2CHARS( 0x00007FFC ), LONG2CHARS( 0x00007FFE ), LONG2CHARS( 0x00007FFF ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00002000 ), LONG2CHARS( 0x00003000 ), LONG2CHARS( 0x00003800 ), + LONG2CHARS( 0x00003C00 ), LONG2CHARS( 0x00003E00 ), LONG2CHARS( 0x00003F00 ), LONG2CHARS( 0x00003F80 ), + LONG2CHARS( 0x00003FC0 ), LONG2CHARS( 0x00003FE0 ), LONG2CHARS( 0x00003FF0 ), LONG2CHARS( 0x00003FF8 ), + LONG2CHARS( 0x00003FFC ), LONG2CHARS( 0x00003FFE ), LONG2CHARS( 0x00003FFF ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00001000 ), LONG2CHARS( 0x00001800 ), LONG2CHARS( 0x00001C00 ), + LONG2CHARS( 0x00001E00 ), LONG2CHARS( 0x00001F00 ), LONG2CHARS( 0x00001F80 ), LONG2CHARS( 0x00001FC0 ), + LONG2CHARS( 0x00001FE0 ), LONG2CHARS( 0x00001FF0 ), LONG2CHARS( 0x00001FF8 ), LONG2CHARS( 0x00001FFC ), + LONG2CHARS( 0x00001FFE ), LONG2CHARS( 0x00001FFF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000800 ), LONG2CHARS( 0x00000C00 ), LONG2CHARS( 0x00000E00 ), + LONG2CHARS( 0x00000F00 ), LONG2CHARS( 0x00000F80 ), LONG2CHARS( 0x00000FC0 ), LONG2CHARS( 0x00000FE0 ), + LONG2CHARS( 0x00000FF0 ), LONG2CHARS( 0x00000FF8 ), LONG2CHARS( 0x00000FFC ), LONG2CHARS( 0x00000FFE ), + LONG2CHARS( 0x00000FFF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000400 ), LONG2CHARS( 0x00000600 ), LONG2CHARS( 0x00000700 ), + LONG2CHARS( 0x00000780 ), LONG2CHARS( 0x000007C0 ), LONG2CHARS( 0x000007E0 ), LONG2CHARS( 0x000007F0 ), + LONG2CHARS( 0x000007F8 ), LONG2CHARS( 0x000007FC ), LONG2CHARS( 0x000007FE ), LONG2CHARS( 0x000007FF ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000200 ), LONG2CHARS( 0x00000300 ), LONG2CHARS( 0x00000380 ), + LONG2CHARS( 0x000003C0 ), LONG2CHARS( 0x000003E0 ), LONG2CHARS( 0x000003F0 ), LONG2CHARS( 0x000003F8 ), + LONG2CHARS( 0x000003FC ), LONG2CHARS( 0x000003FE ), LONG2CHARS( 0x000003FF ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000100 ), LONG2CHARS( 0x00000180 ), LONG2CHARS( 0x000001C0 ), + LONG2CHARS( 0x000001E0 ), LONG2CHARS( 0x000001F0 ), LONG2CHARS( 0x000001F8 ), LONG2CHARS( 0x000001FC ), + LONG2CHARS( 0x000001FE ), LONG2CHARS( 0x000001FF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000080 ), LONG2CHARS( 0x000000C0 ), LONG2CHARS( 0x000000E0 ), + LONG2CHARS( 0x000000F0 ), LONG2CHARS( 0x000000F8 ), LONG2CHARS( 0x000000FC ), LONG2CHARS( 0x000000FE ), + LONG2CHARS( 0x000000FF ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000040 ), LONG2CHARS( 0x00000060 ), LONG2CHARS( 0x00000070 ), + LONG2CHARS( 0x00000078 ), LONG2CHARS( 0x0000007C ), LONG2CHARS( 0x0000007E ), LONG2CHARS( 0x0000007F ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000020 ), LONG2CHARS( 0x00000030 ), LONG2CHARS( 0x00000038 ), + LONG2CHARS( 0x0000003C ), LONG2CHARS( 0x0000003E ), LONG2CHARS( 0x0000003F ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000010 ), LONG2CHARS( 0x00000018 ), LONG2CHARS( 0x0000001C ), + LONG2CHARS( 0x0000001E ), LONG2CHARS( 0x0000001F ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000008 ), LONG2CHARS( 0x0000000C ), LONG2CHARS( 0x0000000E ), + LONG2CHARS( 0x0000000F ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000004 ), LONG2CHARS( 0x00000006 ), LONG2CHARS( 0x00000007 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000002 ), LONG2CHARS( 0x00000003 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000001 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, +}; +#else /* PPW == 64 */ +unsigned long partmasks[PPW][PPW] = { + { + LONG2CHARS( 0xFFFFFFFFFFFFFFFF ), + LONG2CHARS( 0x8000000000000000 ), + LONG2CHARS( 0xC000000000000000 ), + LONG2CHARS( 0xE000000000000000 ), + LONG2CHARS( 0xF000000000000000 ), + LONG2CHARS( 0xF800000000000000 ), + LONG2CHARS( 0xFC00000000000000 ), + LONG2CHARS( 0xFE00000000000000 ), + LONG2CHARS( 0xFF00000000000000 ), + LONG2CHARS( 0xFF80000000000000 ), + LONG2CHARS( 0xFFC0000000000000 ), + LONG2CHARS( 0xFFE0000000000000 ), + LONG2CHARS( 0xFFF0000000000000 ), + LONG2CHARS( 0xFFF8000000000000 ), + LONG2CHARS( 0xFFFC000000000000 ), + LONG2CHARS( 0xFFFE000000000000 ), + LONG2CHARS( 0xFFFF000000000000 ), + LONG2CHARS( 0xFFFF800000000000 ), + LONG2CHARS( 0xFFFFC00000000000 ), + LONG2CHARS( 0xFFFFE00000000000 ), + LONG2CHARS( 0xFFFFF00000000000 ), + LONG2CHARS( 0xFFFFF80000000000 ), + LONG2CHARS( 0xFFFFFC0000000000 ), + LONG2CHARS( 0xFFFFFE0000000000 ), + LONG2CHARS( 0xFFFFFF0000000000 ), + LONG2CHARS( 0xFFFFFF8000000000 ), + LONG2CHARS( 0xFFFFFFC000000000 ), + LONG2CHARS( 0xFFFFFFE000000000 ), + LONG2CHARS( 0xFFFFFFF000000000 ), + LONG2CHARS( 0xFFFFFFF800000000 ), + LONG2CHARS( 0xFFFFFFFC00000000 ), + LONG2CHARS( 0xFFFFFFFE00000000 ), + LONG2CHARS( 0xFFFFFFFF00000000 ), + LONG2CHARS( 0xFFFFFFFF80000000 ), + LONG2CHARS( 0xFFFFFFFFC0000000 ), + LONG2CHARS( 0xFFFFFFFFE0000000 ), + LONG2CHARS( 0xFFFFFFFFF0000000 ), + LONG2CHARS( 0xFFFFFFFFF8000000 ), + LONG2CHARS( 0xFFFFFFFFFC000000 ), + LONG2CHARS( 0xFFFFFFFFFE000000 ), + LONG2CHARS( 0xFFFFFFFFFF000000 ), + LONG2CHARS( 0xFFFFFFFFFF800000 ), + LONG2CHARS( 0xFFFFFFFFFFC00000 ), + LONG2CHARS( 0xFFFFFFFFFFE00000 ), + LONG2CHARS( 0xFFFFFFFFFFF00000 ), + LONG2CHARS( 0xFFFFFFFFFFF80000 ), + LONG2CHARS( 0xFFFFFFFFFFFC0000 ), + LONG2CHARS( 0xFFFFFFFFFFFE0000 ), + LONG2CHARS( 0xFFFFFFFFFFFF0000 ), + LONG2CHARS( 0xFFFFFFFFFFFF8000 ), + LONG2CHARS( 0xFFFFFFFFFFFFC000 ), + LONG2CHARS( 0xFFFFFFFFFFFFE000 ), + LONG2CHARS( 0xFFFFFFFFFFFFF000 ), + LONG2CHARS( 0xFFFFFFFFFFFFF800 ), + LONG2CHARS( 0xFFFFFFFFFFFFFC00 ), + LONG2CHARS( 0xFFFFFFFFFFFFFE00 ), + LONG2CHARS( 0xFFFFFFFFFFFFFF00 ), + LONG2CHARS( 0xFFFFFFFFFFFFFF80 ), + LONG2CHARS( 0xFFFFFFFFFFFFFFC0 ), + LONG2CHARS( 0xFFFFFFFFFFFFFFE0 ), + LONG2CHARS( 0xFFFFFFFFFFFFFFF0 ), + LONG2CHARS( 0xFFFFFFFFFFFFFFF8 ), + LONG2CHARS( 0xFFFFFFFFFFFFFFFC ), + LONG2CHARS( 0xFFFFFFFFFFFFFFFE ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x4000000000000000 ), + LONG2CHARS( 0x6000000000000000 ), + LONG2CHARS( 0x7000000000000000 ), + LONG2CHARS( 0x7800000000000000 ), + LONG2CHARS( 0x7C00000000000000 ), + LONG2CHARS( 0x7E00000000000000 ), + LONG2CHARS( 0x7F00000000000000 ), + LONG2CHARS( 0x7F80000000000000 ), + LONG2CHARS( 0x7FC0000000000000 ), + LONG2CHARS( 0x7FE0000000000000 ), + LONG2CHARS( 0x7FF0000000000000 ), + LONG2CHARS( 0x7FF8000000000000 ), + LONG2CHARS( 0x7FFC000000000000 ), + LONG2CHARS( 0x7FFE000000000000 ), + LONG2CHARS( 0x7FFF000000000000 ), + LONG2CHARS( 0x7FFF800000000000 ), + LONG2CHARS( 0x7FFFC00000000000 ), + LONG2CHARS( 0x7FFFE00000000000 ), + LONG2CHARS( 0x7FFFF00000000000 ), + LONG2CHARS( 0x7FFFF80000000000 ), + LONG2CHARS( 0x7FFFFC0000000000 ), + LONG2CHARS( 0x7FFFFE0000000000 ), + LONG2CHARS( 0x7FFFFF0000000000 ), + LONG2CHARS( 0x7FFFFF8000000000 ), + LONG2CHARS( 0x7FFFFFC000000000 ), + LONG2CHARS( 0x7FFFFFE000000000 ), + LONG2CHARS( 0x7FFFFFF000000000 ), + LONG2CHARS( 0x7FFFFFF800000000 ), + LONG2CHARS( 0x7FFFFFFC00000000 ), + LONG2CHARS( 0x7FFFFFFE00000000 ), + LONG2CHARS( 0x7FFFFFFF00000000 ), + LONG2CHARS( 0x7FFFFFFF80000000 ), + LONG2CHARS( 0x7FFFFFFFC0000000 ), + LONG2CHARS( 0x7FFFFFFFE0000000 ), + LONG2CHARS( 0x7FFFFFFFF0000000 ), + LONG2CHARS( 0x7FFFFFFFF8000000 ), + LONG2CHARS( 0x7FFFFFFFFC000000 ), + LONG2CHARS( 0x7FFFFFFFFE000000 ), + LONG2CHARS( 0x7FFFFFFFFF000000 ), + LONG2CHARS( 0x7FFFFFFFFF800000 ), + LONG2CHARS( 0x7FFFFFFFFFC00000 ), + LONG2CHARS( 0x7FFFFFFFFFE00000 ), + LONG2CHARS( 0x7FFFFFFFFFF00000 ), + LONG2CHARS( 0x7FFFFFFFFFF80000 ), + LONG2CHARS( 0x7FFFFFFFFFFC0000 ), + LONG2CHARS( 0x7FFFFFFFFFFE0000 ), + LONG2CHARS( 0x7FFFFFFFFFFF0000 ), + LONG2CHARS( 0x7FFFFFFFFFFF8000 ), + LONG2CHARS( 0x7FFFFFFFFFFFC000 ), + LONG2CHARS( 0x7FFFFFFFFFFFE000 ), + LONG2CHARS( 0x7FFFFFFFFFFFF000 ), + LONG2CHARS( 0x7FFFFFFFFFFFF800 ), + LONG2CHARS( 0x7FFFFFFFFFFFFC00 ), + LONG2CHARS( 0x7FFFFFFFFFFFFE00 ), + LONG2CHARS( 0x7FFFFFFFFFFFFF00 ), + LONG2CHARS( 0x7FFFFFFFFFFFFF80 ), + LONG2CHARS( 0x7FFFFFFFFFFFFFC0 ), + LONG2CHARS( 0x7FFFFFFFFFFFFFE0 ), + LONG2CHARS( 0x7FFFFFFFFFFFFFF0 ), + LONG2CHARS( 0x7FFFFFFFFFFFFFF8 ), + LONG2CHARS( 0x7FFFFFFFFFFFFFFC ), + LONG2CHARS( 0x7FFFFFFFFFFFFFFE ), + LONG2CHARS( 0x7FFFFFFFFFFFFFFF ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x2000000000000000 ), + LONG2CHARS( 0x3000000000000000 ), + LONG2CHARS( 0x3800000000000000 ), + LONG2CHARS( 0x3C00000000000000 ), + LONG2CHARS( 0x3E00000000000000 ), + LONG2CHARS( 0x3F00000000000000 ), + LONG2CHARS( 0x3F80000000000000 ), + LONG2CHARS( 0x3FC0000000000000 ), + LONG2CHARS( 0x3FE0000000000000 ), + LONG2CHARS( 0x3FF0000000000000 ), + LONG2CHARS( 0x3FF8000000000000 ), + LONG2CHARS( 0x3FFC000000000000 ), + LONG2CHARS( 0x3FFE000000000000 ), + LONG2CHARS( 0x3FFF000000000000 ), + LONG2CHARS( 0x3FFF800000000000 ), + LONG2CHARS( 0x3FFFC00000000000 ), + LONG2CHARS( 0x3FFFE00000000000 ), + LONG2CHARS( 0x3FFFF00000000000 ), + LONG2CHARS( 0x3FFFF80000000000 ), + LONG2CHARS( 0x3FFFFC0000000000 ), + LONG2CHARS( 0x3FFFFE0000000000 ), + LONG2CHARS( 0x3FFFFF0000000000 ), + LONG2CHARS( 0x3FFFFF8000000000 ), + LONG2CHARS( 0x3FFFFFC000000000 ), + LONG2CHARS( 0x3FFFFFE000000000 ), + LONG2CHARS( 0x3FFFFFF000000000 ), + LONG2CHARS( 0x3FFFFFF800000000 ), + LONG2CHARS( 0x3FFFFFFC00000000 ), + LONG2CHARS( 0x3FFFFFFE00000000 ), + LONG2CHARS( 0x3FFFFFFF00000000 ), + LONG2CHARS( 0x3FFFFFFF80000000 ), + LONG2CHARS( 0x3FFFFFFFC0000000 ), + LONG2CHARS( 0x3FFFFFFFE0000000 ), + LONG2CHARS( 0x3FFFFFFFF0000000 ), + LONG2CHARS( 0x3FFFFFFFF8000000 ), + LONG2CHARS( 0x3FFFFFFFFC000000 ), + LONG2CHARS( 0x3FFFFFFFFE000000 ), + LONG2CHARS( 0x3FFFFFFFFF000000 ), + LONG2CHARS( 0x3FFFFFFFFF800000 ), + LONG2CHARS( 0x3FFFFFFFFFC00000 ), + LONG2CHARS( 0x3FFFFFFFFFE00000 ), + LONG2CHARS( 0x3FFFFFFFFFF00000 ), + LONG2CHARS( 0x3FFFFFFFFFF80000 ), + LONG2CHARS( 0x3FFFFFFFFFFC0000 ), + LONG2CHARS( 0x3FFFFFFFFFFE0000 ), + LONG2CHARS( 0x3FFFFFFFFFFF0000 ), + LONG2CHARS( 0x3FFFFFFFFFFF8000 ), + LONG2CHARS( 0x3FFFFFFFFFFFC000 ), + LONG2CHARS( 0x3FFFFFFFFFFFE000 ), + LONG2CHARS( 0x3FFFFFFFFFFFF000 ), + LONG2CHARS( 0x3FFFFFFFFFFFF800 ), + LONG2CHARS( 0x3FFFFFFFFFFFFC00 ), + LONG2CHARS( 0x3FFFFFFFFFFFFE00 ), + LONG2CHARS( 0x3FFFFFFFFFFFFF00 ), + LONG2CHARS( 0x3FFFFFFFFFFFFF80 ), + LONG2CHARS( 0x3FFFFFFFFFFFFFC0 ), + LONG2CHARS( 0x3FFFFFFFFFFFFFE0 ), + LONG2CHARS( 0x3FFFFFFFFFFFFFF0 ), + LONG2CHARS( 0x3FFFFFFFFFFFFFF8 ), + LONG2CHARS( 0x3FFFFFFFFFFFFFFC ), + LONG2CHARS( 0x3FFFFFFFFFFFFFFE ), + LONG2CHARS( 0x3FFFFFFFFFFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x1000000000000000 ), + LONG2CHARS( 0x1800000000000000 ), + LONG2CHARS( 0x1C00000000000000 ), + LONG2CHARS( 0x1E00000000000000 ), + LONG2CHARS( 0x1F00000000000000 ), + LONG2CHARS( 0x1F80000000000000 ), + LONG2CHARS( 0x1FC0000000000000 ), + LONG2CHARS( 0x1FE0000000000000 ), + LONG2CHARS( 0x1FF0000000000000 ), + LONG2CHARS( 0x1FF8000000000000 ), + LONG2CHARS( 0x1FFC000000000000 ), + LONG2CHARS( 0x1FFE000000000000 ), + LONG2CHARS( 0x1FFF000000000000 ), + LONG2CHARS( 0x1FFF800000000000 ), + LONG2CHARS( 0x1FFFC00000000000 ), + LONG2CHARS( 0x1FFFE00000000000 ), + LONG2CHARS( 0x1FFFF00000000000 ), + LONG2CHARS( 0x1FFFF80000000000 ), + LONG2CHARS( 0x1FFFFC0000000000 ), + LONG2CHARS( 0x1FFFFE0000000000 ), + LONG2CHARS( 0x1FFFFF0000000000 ), + LONG2CHARS( 0x1FFFFF8000000000 ), + LONG2CHARS( 0x1FFFFFC000000000 ), + LONG2CHARS( 0x1FFFFFE000000000 ), + LONG2CHARS( 0x1FFFFFF000000000 ), + LONG2CHARS( 0x1FFFFFF800000000 ), + LONG2CHARS( 0x1FFFFFFC00000000 ), + LONG2CHARS( 0x1FFFFFFE00000000 ), + LONG2CHARS( 0x1FFFFFFF00000000 ), + LONG2CHARS( 0x1FFFFFFF80000000 ), + LONG2CHARS( 0x1FFFFFFFC0000000 ), + LONG2CHARS( 0x1FFFFFFFE0000000 ), + LONG2CHARS( 0x1FFFFFFFF0000000 ), + LONG2CHARS( 0x1FFFFFFFF8000000 ), + LONG2CHARS( 0x1FFFFFFFFC000000 ), + LONG2CHARS( 0x1FFFFFFFFE000000 ), + LONG2CHARS( 0x1FFFFFFFFF000000 ), + LONG2CHARS( 0x1FFFFFFFFF800000 ), + LONG2CHARS( 0x1FFFFFFFFFC00000 ), + LONG2CHARS( 0x1FFFFFFFFFE00000 ), + LONG2CHARS( 0x1FFFFFFFFFF00000 ), + LONG2CHARS( 0x1FFFFFFFFFF80000 ), + LONG2CHARS( 0x1FFFFFFFFFFC0000 ), + LONG2CHARS( 0x1FFFFFFFFFFE0000 ), + LONG2CHARS( 0x1FFFFFFFFFFF0000 ), + LONG2CHARS( 0x1FFFFFFFFFFF8000 ), + LONG2CHARS( 0x1FFFFFFFFFFFC000 ), + LONG2CHARS( 0x1FFFFFFFFFFFE000 ), + LONG2CHARS( 0x1FFFFFFFFFFFF000 ), + LONG2CHARS( 0x1FFFFFFFFFFFF800 ), + LONG2CHARS( 0x1FFFFFFFFFFFFC00 ), + LONG2CHARS( 0x1FFFFFFFFFFFFE00 ), + LONG2CHARS( 0x1FFFFFFFFFFFFF00 ), + LONG2CHARS( 0x1FFFFFFFFFFFFF80 ), + LONG2CHARS( 0x1FFFFFFFFFFFFFC0 ), + LONG2CHARS( 0x1FFFFFFFFFFFFFE0 ), + LONG2CHARS( 0x1FFFFFFFFFFFFFF0 ), + LONG2CHARS( 0x1FFFFFFFFFFFFFF8 ), + LONG2CHARS( 0x1FFFFFFFFFFFFFFC ), + LONG2CHARS( 0x1FFFFFFFFFFFFFFE ), + LONG2CHARS( 0x1FFFFFFFFFFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0800000000000000 ), + LONG2CHARS( 0x0C00000000000000 ), + LONG2CHARS( 0x0E00000000000000 ), + LONG2CHARS( 0x0F00000000000000 ), + LONG2CHARS( 0x0F80000000000000 ), + LONG2CHARS( 0x0FC0000000000000 ), + LONG2CHARS( 0x0FE0000000000000 ), + LONG2CHARS( 0x0FF0000000000000 ), + LONG2CHARS( 0x0FF8000000000000 ), + LONG2CHARS( 0x0FFC000000000000 ), + LONG2CHARS( 0x0FFE000000000000 ), + LONG2CHARS( 0x0FFF000000000000 ), + LONG2CHARS( 0x0FFF800000000000 ), + LONG2CHARS( 0x0FFFC00000000000 ), + LONG2CHARS( 0x0FFFE00000000000 ), + LONG2CHARS( 0x0FFFF00000000000 ), + LONG2CHARS( 0x0FFFF80000000000 ), + LONG2CHARS( 0x0FFFFC0000000000 ), + LONG2CHARS( 0x0FFFFE0000000000 ), + LONG2CHARS( 0x0FFFFF0000000000 ), + LONG2CHARS( 0x0FFFFF8000000000 ), + LONG2CHARS( 0x0FFFFFC000000000 ), + LONG2CHARS( 0x0FFFFFE000000000 ), + LONG2CHARS( 0x0FFFFFF000000000 ), + LONG2CHARS( 0x0FFFFFF800000000 ), + LONG2CHARS( 0x0FFFFFFC00000000 ), + LONG2CHARS( 0x0FFFFFFE00000000 ), + LONG2CHARS( 0x0FFFFFFF00000000 ), + LONG2CHARS( 0x0FFFFFFF80000000 ), + LONG2CHARS( 0x0FFFFFFFC0000000 ), + LONG2CHARS( 0x0FFFFFFFE0000000 ), + LONG2CHARS( 0x0FFFFFFFF0000000 ), + LONG2CHARS( 0x0FFFFFFFF8000000 ), + LONG2CHARS( 0x0FFFFFFFFC000000 ), + LONG2CHARS( 0x0FFFFFFFFE000000 ), + LONG2CHARS( 0x0FFFFFFFFF000000 ), + LONG2CHARS( 0x0FFFFFFFFF800000 ), + LONG2CHARS( 0x0FFFFFFFFFC00000 ), + LONG2CHARS( 0x0FFFFFFFFFE00000 ), + LONG2CHARS( 0x0FFFFFFFFFF00000 ), + LONG2CHARS( 0x0FFFFFFFFFF80000 ), + LONG2CHARS( 0x0FFFFFFFFFFC0000 ), + LONG2CHARS( 0x0FFFFFFFFFFE0000 ), + LONG2CHARS( 0x0FFFFFFFFFFF0000 ), + LONG2CHARS( 0x0FFFFFFFFFFF8000 ), + LONG2CHARS( 0x0FFFFFFFFFFFC000 ), + LONG2CHARS( 0x0FFFFFFFFFFFE000 ), + LONG2CHARS( 0x0FFFFFFFFFFFF000 ), + LONG2CHARS( 0x0FFFFFFFFFFFF800 ), + LONG2CHARS( 0x0FFFFFFFFFFFFC00 ), + LONG2CHARS( 0x0FFFFFFFFFFFFE00 ), + LONG2CHARS( 0x0FFFFFFFFFFFFF00 ), + LONG2CHARS( 0x0FFFFFFFFFFFFF80 ), + LONG2CHARS( 0x0FFFFFFFFFFFFFC0 ), + LONG2CHARS( 0x0FFFFFFFFFFFFFE0 ), + LONG2CHARS( 0x0FFFFFFFFFFFFFF0 ), + LONG2CHARS( 0x0FFFFFFFFFFFFFF8 ), + LONG2CHARS( 0x0FFFFFFFFFFFFFFC ), + LONG2CHARS( 0x0FFFFFFFFFFFFFFE ), + LONG2CHARS( 0x0FFFFFFFFFFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0400000000000000 ), + LONG2CHARS( 0x0600000000000000 ), + LONG2CHARS( 0x0700000000000000 ), + LONG2CHARS( 0x0780000000000000 ), + LONG2CHARS( 0x07C0000000000000 ), + LONG2CHARS( 0x07E0000000000000 ), + LONG2CHARS( 0x07F0000000000000 ), + LONG2CHARS( 0x07F8000000000000 ), + LONG2CHARS( 0x07FC000000000000 ), + LONG2CHARS( 0x07FE000000000000 ), + LONG2CHARS( 0x07FF000000000000 ), + LONG2CHARS( 0x07FF800000000000 ), + LONG2CHARS( 0x07FFC00000000000 ), + LONG2CHARS( 0x07FFE00000000000 ), + LONG2CHARS( 0x07FFF00000000000 ), + LONG2CHARS( 0x07FFF80000000000 ), + LONG2CHARS( 0x07FFFC0000000000 ), + LONG2CHARS( 0x07FFFE0000000000 ), + LONG2CHARS( 0x07FFFF0000000000 ), + LONG2CHARS( 0x07FFFF8000000000 ), + LONG2CHARS( 0x07FFFFC000000000 ), + LONG2CHARS( 0x07FFFFE000000000 ), + LONG2CHARS( 0x07FFFFF000000000 ), + LONG2CHARS( 0x07FFFFF800000000 ), + LONG2CHARS( 0x07FFFFFC00000000 ), + LONG2CHARS( 0x07FFFFFE00000000 ), + LONG2CHARS( 0x07FFFFFF00000000 ), + LONG2CHARS( 0x07FFFFFF80000000 ), + LONG2CHARS( 0x07FFFFFFC0000000 ), + LONG2CHARS( 0x07FFFFFFE0000000 ), + LONG2CHARS( 0x07FFFFFFF0000000 ), + LONG2CHARS( 0x07FFFFFFF8000000 ), + LONG2CHARS( 0x07FFFFFFFC000000 ), + LONG2CHARS( 0x07FFFFFFFE000000 ), + LONG2CHARS( 0x07FFFFFFFF000000 ), + LONG2CHARS( 0x07FFFFFFFF800000 ), + LONG2CHARS( 0x07FFFFFFFFC00000 ), + LONG2CHARS( 0x07FFFFFFFFE00000 ), + LONG2CHARS( 0x07FFFFFFFFF00000 ), + LONG2CHARS( 0x07FFFFFFFFF80000 ), + LONG2CHARS( 0x07FFFFFFFFFC0000 ), + LONG2CHARS( 0x07FFFFFFFFFE0000 ), + LONG2CHARS( 0x07FFFFFFFFFF0000 ), + LONG2CHARS( 0x07FFFFFFFFFF8000 ), + LONG2CHARS( 0x07FFFFFFFFFFC000 ), + LONG2CHARS( 0x07FFFFFFFFFFE000 ), + LONG2CHARS( 0x07FFFFFFFFFFF000 ), + LONG2CHARS( 0x07FFFFFFFFFFF800 ), + LONG2CHARS( 0x07FFFFFFFFFFFC00 ), + LONG2CHARS( 0x07FFFFFFFFFFFE00 ), + LONG2CHARS( 0x07FFFFFFFFFFFF00 ), + LONG2CHARS( 0x07FFFFFFFFFFFF80 ), + LONG2CHARS( 0x07FFFFFFFFFFFFC0 ), + LONG2CHARS( 0x07FFFFFFFFFFFFE0 ), + LONG2CHARS( 0x07FFFFFFFFFFFFF0 ), + LONG2CHARS( 0x07FFFFFFFFFFFFF8 ), + LONG2CHARS( 0x07FFFFFFFFFFFFFC ), + LONG2CHARS( 0x07FFFFFFFFFFFFFE ), + LONG2CHARS( 0x07FFFFFFFFFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0200000000000000 ), + LONG2CHARS( 0x0300000000000000 ), + LONG2CHARS( 0x0380000000000000 ), + LONG2CHARS( 0x03C0000000000000 ), + LONG2CHARS( 0x03E0000000000000 ), + LONG2CHARS( 0x03F0000000000000 ), + LONG2CHARS( 0x03F8000000000000 ), + LONG2CHARS( 0x03FC000000000000 ), + LONG2CHARS( 0x03FE000000000000 ), + LONG2CHARS( 0x03FF000000000000 ), + LONG2CHARS( 0x03FF800000000000 ), + LONG2CHARS( 0x03FFC00000000000 ), + LONG2CHARS( 0x03FFE00000000000 ), + LONG2CHARS( 0x03FFF00000000000 ), + LONG2CHARS( 0x03FFF80000000000 ), + LONG2CHARS( 0x03FFFC0000000000 ), + LONG2CHARS( 0x03FFFE0000000000 ), + LONG2CHARS( 0x03FFFF0000000000 ), + LONG2CHARS( 0x03FFFF8000000000 ), + LONG2CHARS( 0x03FFFFC000000000 ), + LONG2CHARS( 0x03FFFFE000000000 ), + LONG2CHARS( 0x03FFFFF000000000 ), + LONG2CHARS( 0x03FFFFF800000000 ), + LONG2CHARS( 0x03FFFFFC00000000 ), + LONG2CHARS( 0x03FFFFFE00000000 ), + LONG2CHARS( 0x03FFFFFF00000000 ), + LONG2CHARS( 0x03FFFFFF80000000 ), + LONG2CHARS( 0x03FFFFFFC0000000 ), + LONG2CHARS( 0x03FFFFFFE0000000 ), + LONG2CHARS( 0x03FFFFFFF0000000 ), + LONG2CHARS( 0x03FFFFFFF8000000 ), + LONG2CHARS( 0x03FFFFFFFC000000 ), + LONG2CHARS( 0x03FFFFFFFE000000 ), + LONG2CHARS( 0x03FFFFFFFF000000 ), + LONG2CHARS( 0x03FFFFFFFF800000 ), + LONG2CHARS( 0x03FFFFFFFFC00000 ), + LONG2CHARS( 0x03FFFFFFFFE00000 ), + LONG2CHARS( 0x03FFFFFFFFF00000 ), + LONG2CHARS( 0x03FFFFFFFFF80000 ), + LONG2CHARS( 0x03FFFFFFFFFC0000 ), + LONG2CHARS( 0x03FFFFFFFFFE0000 ), + LONG2CHARS( 0x03FFFFFFFFFF0000 ), + LONG2CHARS( 0x03FFFFFFFFFF8000 ), + LONG2CHARS( 0x03FFFFFFFFFFC000 ), + LONG2CHARS( 0x03FFFFFFFFFFE000 ), + LONG2CHARS( 0x03FFFFFFFFFFF000 ), + LONG2CHARS( 0x03FFFFFFFFFFF800 ), + LONG2CHARS( 0x03FFFFFFFFFFFC00 ), + LONG2CHARS( 0x03FFFFFFFFFFFE00 ), + LONG2CHARS( 0x03FFFFFFFFFFFF00 ), + LONG2CHARS( 0x03FFFFFFFFFFFF80 ), + LONG2CHARS( 0x03FFFFFFFFFFFFC0 ), + LONG2CHARS( 0x03FFFFFFFFFFFFE0 ), + LONG2CHARS( 0x03FFFFFFFFFFFFF0 ), + LONG2CHARS( 0x03FFFFFFFFFFFFF8 ), + LONG2CHARS( 0x03FFFFFFFFFFFFFC ), + LONG2CHARS( 0x03FFFFFFFFFFFFFE ), + LONG2CHARS( 0x03FFFFFFFFFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0100000000000000 ), + LONG2CHARS( 0x0180000000000000 ), + LONG2CHARS( 0x01C0000000000000 ), + LONG2CHARS( 0x01E0000000000000 ), + LONG2CHARS( 0x01F0000000000000 ), + LONG2CHARS( 0x01F8000000000000 ), + LONG2CHARS( 0x01FC000000000000 ), + LONG2CHARS( 0x01FE000000000000 ), + LONG2CHARS( 0x01FF000000000000 ), + LONG2CHARS( 0x01FF800000000000 ), + LONG2CHARS( 0x01FFC00000000000 ), + LONG2CHARS( 0x01FFE00000000000 ), + LONG2CHARS( 0x01FFF00000000000 ), + LONG2CHARS( 0x01FFF80000000000 ), + LONG2CHARS( 0x01FFFC0000000000 ), + LONG2CHARS( 0x01FFFE0000000000 ), + LONG2CHARS( 0x01FFFF0000000000 ), + LONG2CHARS( 0x01FFFF8000000000 ), + LONG2CHARS( 0x01FFFFC000000000 ), + LONG2CHARS( 0x01FFFFE000000000 ), + LONG2CHARS( 0x01FFFFF000000000 ), + LONG2CHARS( 0x01FFFFF800000000 ), + LONG2CHARS( 0x01FFFFFC00000000 ), + LONG2CHARS( 0x01FFFFFE00000000 ), + LONG2CHARS( 0x01FFFFFF00000000 ), + LONG2CHARS( 0x01FFFFFF80000000 ), + LONG2CHARS( 0x01FFFFFFC0000000 ), + LONG2CHARS( 0x01FFFFFFE0000000 ), + LONG2CHARS( 0x01FFFFFFF0000000 ), + LONG2CHARS( 0x01FFFFFFF8000000 ), + LONG2CHARS( 0x01FFFFFFFC000000 ), + LONG2CHARS( 0x01FFFFFFFE000000 ), + LONG2CHARS( 0x01FFFFFFFF000000 ), + LONG2CHARS( 0x01FFFFFFFF800000 ), + LONG2CHARS( 0x01FFFFFFFFC00000 ), + LONG2CHARS( 0x01FFFFFFFFE00000 ), + LONG2CHARS( 0x01FFFFFFFFF00000 ), + LONG2CHARS( 0x01FFFFFFFFF80000 ), + LONG2CHARS( 0x01FFFFFFFFFC0000 ), + LONG2CHARS( 0x01FFFFFFFFFE0000 ), + LONG2CHARS( 0x01FFFFFFFFFF0000 ), + LONG2CHARS( 0x01FFFFFFFFFF8000 ), + LONG2CHARS( 0x01FFFFFFFFFFC000 ), + LONG2CHARS( 0x01FFFFFFFFFFE000 ), + LONG2CHARS( 0x01FFFFFFFFFFF000 ), + LONG2CHARS( 0x01FFFFFFFFFFF800 ), + LONG2CHARS( 0x01FFFFFFFFFFFC00 ), + LONG2CHARS( 0x01FFFFFFFFFFFE00 ), + LONG2CHARS( 0x01FFFFFFFFFFFF00 ), + LONG2CHARS( 0x01FFFFFFFFFFFF80 ), + LONG2CHARS( 0x01FFFFFFFFFFFFC0 ), + LONG2CHARS( 0x01FFFFFFFFFFFFE0 ), + LONG2CHARS( 0x01FFFFFFFFFFFFF0 ), + LONG2CHARS( 0x01FFFFFFFFFFFFF8 ), + LONG2CHARS( 0x01FFFFFFFFFFFFFC ), + LONG2CHARS( 0x01FFFFFFFFFFFFFE ), + LONG2CHARS( 0x01FFFFFFFFFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0080000000000000 ), + LONG2CHARS( 0x00C0000000000000 ), + LONG2CHARS( 0x00E0000000000000 ), + LONG2CHARS( 0x00F0000000000000 ), + LONG2CHARS( 0x00F8000000000000 ), + LONG2CHARS( 0x00FC000000000000 ), + LONG2CHARS( 0x00FE000000000000 ), + LONG2CHARS( 0x00FF000000000000 ), + LONG2CHARS( 0x00FF800000000000 ), + LONG2CHARS( 0x00FFC00000000000 ), + LONG2CHARS( 0x00FFE00000000000 ), + LONG2CHARS( 0x00FFF00000000000 ), + LONG2CHARS( 0x00FFF80000000000 ), + LONG2CHARS( 0x00FFFC0000000000 ), + LONG2CHARS( 0x00FFFE0000000000 ), + LONG2CHARS( 0x00FFFF0000000000 ), + LONG2CHARS( 0x00FFFF8000000000 ), + LONG2CHARS( 0x00FFFFC000000000 ), + LONG2CHARS( 0x00FFFFE000000000 ), + LONG2CHARS( 0x00FFFFF000000000 ), + LONG2CHARS( 0x00FFFFF800000000 ), + LONG2CHARS( 0x00FFFFFC00000000 ), + LONG2CHARS( 0x00FFFFFE00000000 ), + LONG2CHARS( 0x00FFFFFF00000000 ), + LONG2CHARS( 0x00FFFFFF80000000 ), + LONG2CHARS( 0x00FFFFFFC0000000 ), + LONG2CHARS( 0x00FFFFFFE0000000 ), + LONG2CHARS( 0x00FFFFFFF0000000 ), + LONG2CHARS( 0x00FFFFFFF8000000 ), + LONG2CHARS( 0x00FFFFFFFC000000 ), + LONG2CHARS( 0x00FFFFFFFE000000 ), + LONG2CHARS( 0x00FFFFFFFF000000 ), + LONG2CHARS( 0x00FFFFFFFF800000 ), + LONG2CHARS( 0x00FFFFFFFFC00000 ), + LONG2CHARS( 0x00FFFFFFFFE00000 ), + LONG2CHARS( 0x00FFFFFFFFF00000 ), + LONG2CHARS( 0x00FFFFFFFFF80000 ), + LONG2CHARS( 0x00FFFFFFFFFC0000 ), + LONG2CHARS( 0x00FFFFFFFFFE0000 ), + LONG2CHARS( 0x00FFFFFFFFFF0000 ), + LONG2CHARS( 0x00FFFFFFFFFF8000 ), + LONG2CHARS( 0x00FFFFFFFFFFC000 ), + LONG2CHARS( 0x00FFFFFFFFFFE000 ), + LONG2CHARS( 0x00FFFFFFFFFFF000 ), + LONG2CHARS( 0x00FFFFFFFFFFF800 ), + LONG2CHARS( 0x00FFFFFFFFFFFC00 ), + LONG2CHARS( 0x00FFFFFFFFFFFE00 ), + LONG2CHARS( 0x00FFFFFFFFFFFF00 ), + LONG2CHARS( 0x00FFFFFFFFFFFF80 ), + LONG2CHARS( 0x00FFFFFFFFFFFFC0 ), + LONG2CHARS( 0x00FFFFFFFFFFFFE0 ), + LONG2CHARS( 0x00FFFFFFFFFFFFF0 ), + LONG2CHARS( 0x00FFFFFFFFFFFFF8 ), + LONG2CHARS( 0x00FFFFFFFFFFFFFC ), + LONG2CHARS( 0x00FFFFFFFFFFFFFE ), + LONG2CHARS( 0x00FFFFFFFFFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0040000000000000 ), + LONG2CHARS( 0x0060000000000000 ), + LONG2CHARS( 0x0070000000000000 ), + LONG2CHARS( 0x0078000000000000 ), + LONG2CHARS( 0x007C000000000000 ), + LONG2CHARS( 0x007E000000000000 ), + LONG2CHARS( 0x007F000000000000 ), + LONG2CHARS( 0x007F800000000000 ), + LONG2CHARS( 0x007FC00000000000 ), + LONG2CHARS( 0x007FE00000000000 ), + LONG2CHARS( 0x007FF00000000000 ), + LONG2CHARS( 0x007FF80000000000 ), + LONG2CHARS( 0x007FFC0000000000 ), + LONG2CHARS( 0x007FFE0000000000 ), + LONG2CHARS( 0x007FFF0000000000 ), + LONG2CHARS( 0x007FFF8000000000 ), + LONG2CHARS( 0x007FFFC000000000 ), + LONG2CHARS( 0x007FFFE000000000 ), + LONG2CHARS( 0x007FFFF000000000 ), + LONG2CHARS( 0x007FFFF800000000 ), + LONG2CHARS( 0x007FFFFC00000000 ), + LONG2CHARS( 0x007FFFFE00000000 ), + LONG2CHARS( 0x007FFFFF00000000 ), + LONG2CHARS( 0x007FFFFF80000000 ), + LONG2CHARS( 0x007FFFFFC0000000 ), + LONG2CHARS( 0x007FFFFFE0000000 ), + LONG2CHARS( 0x007FFFFFF0000000 ), + LONG2CHARS( 0x007FFFFFF8000000 ), + LONG2CHARS( 0x007FFFFFFC000000 ), + LONG2CHARS( 0x007FFFFFFE000000 ), + LONG2CHARS( 0x007FFFFFFF000000 ), + LONG2CHARS( 0x007FFFFFFF800000 ), + LONG2CHARS( 0x007FFFFFFFC00000 ), + LONG2CHARS( 0x007FFFFFFFE00000 ), + LONG2CHARS( 0x007FFFFFFFF00000 ), + LONG2CHARS( 0x007FFFFFFFF80000 ), + LONG2CHARS( 0x007FFFFFFFFC0000 ), + LONG2CHARS( 0x007FFFFFFFFE0000 ), + LONG2CHARS( 0x007FFFFFFFFF0000 ), + LONG2CHARS( 0x007FFFFFFFFF8000 ), + LONG2CHARS( 0x007FFFFFFFFFC000 ), + LONG2CHARS( 0x007FFFFFFFFFE000 ), + LONG2CHARS( 0x007FFFFFFFFFF000 ), + LONG2CHARS( 0x007FFFFFFFFFF800 ), + LONG2CHARS( 0x007FFFFFFFFFFC00 ), + LONG2CHARS( 0x007FFFFFFFFFFE00 ), + LONG2CHARS( 0x007FFFFFFFFFFF00 ), + LONG2CHARS( 0x007FFFFFFFFFFF80 ), + LONG2CHARS( 0x007FFFFFFFFFFFC0 ), + LONG2CHARS( 0x007FFFFFFFFFFFE0 ), + LONG2CHARS( 0x007FFFFFFFFFFFF0 ), + LONG2CHARS( 0x007FFFFFFFFFFFF8 ), + LONG2CHARS( 0x007FFFFFFFFFFFFC ), + LONG2CHARS( 0x007FFFFFFFFFFFFE ), + LONG2CHARS( 0x007FFFFFFFFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0020000000000000 ), + LONG2CHARS( 0x0030000000000000 ), + LONG2CHARS( 0x0038000000000000 ), + LONG2CHARS( 0x003C000000000000 ), + LONG2CHARS( 0x003E000000000000 ), + LONG2CHARS( 0x003F000000000000 ), + LONG2CHARS( 0x003F800000000000 ), + LONG2CHARS( 0x003FC00000000000 ), + LONG2CHARS( 0x003FE00000000000 ), + LONG2CHARS( 0x003FF00000000000 ), + LONG2CHARS( 0x003FF80000000000 ), + LONG2CHARS( 0x003FFC0000000000 ), + LONG2CHARS( 0x003FFE0000000000 ), + LONG2CHARS( 0x003FFF0000000000 ), + LONG2CHARS( 0x003FFF8000000000 ), + LONG2CHARS( 0x003FFFC000000000 ), + LONG2CHARS( 0x003FFFE000000000 ), + LONG2CHARS( 0x003FFFF000000000 ), + LONG2CHARS( 0x003FFFF800000000 ), + LONG2CHARS( 0x003FFFFC00000000 ), + LONG2CHARS( 0x003FFFFE00000000 ), + LONG2CHARS( 0x003FFFFF00000000 ), + LONG2CHARS( 0x003FFFFF80000000 ), + LONG2CHARS( 0x003FFFFFC0000000 ), + LONG2CHARS( 0x003FFFFFE0000000 ), + LONG2CHARS( 0x003FFFFFF0000000 ), + LONG2CHARS( 0x003FFFFFF8000000 ), + LONG2CHARS( 0x003FFFFFFC000000 ), + LONG2CHARS( 0x003FFFFFFE000000 ), + LONG2CHARS( 0x003FFFFFFF000000 ), + LONG2CHARS( 0x003FFFFFFF800000 ), + LONG2CHARS( 0x003FFFFFFFC00000 ), + LONG2CHARS( 0x003FFFFFFFE00000 ), + LONG2CHARS( 0x003FFFFFFFF00000 ), + LONG2CHARS( 0x003FFFFFFFF80000 ), + LONG2CHARS( 0x003FFFFFFFFC0000 ), + LONG2CHARS( 0x003FFFFFFFFE0000 ), + LONG2CHARS( 0x003FFFFFFFFF0000 ), + LONG2CHARS( 0x003FFFFFFFFF8000 ), + LONG2CHARS( 0x003FFFFFFFFFC000 ), + LONG2CHARS( 0x003FFFFFFFFFE000 ), + LONG2CHARS( 0x003FFFFFFFFFF000 ), + LONG2CHARS( 0x003FFFFFFFFFF800 ), + LONG2CHARS( 0x003FFFFFFFFFFC00 ), + LONG2CHARS( 0x003FFFFFFFFFFE00 ), + LONG2CHARS( 0x003FFFFFFFFFFF00 ), + LONG2CHARS( 0x003FFFFFFFFFFF80 ), + LONG2CHARS( 0x003FFFFFFFFFFFC0 ), + LONG2CHARS( 0x003FFFFFFFFFFFE0 ), + LONG2CHARS( 0x003FFFFFFFFFFFF0 ), + LONG2CHARS( 0x003FFFFFFFFFFFF8 ), + LONG2CHARS( 0x003FFFFFFFFFFFFC ), + LONG2CHARS( 0x003FFFFFFFFFFFFE ), + LONG2CHARS( 0x003FFFFFFFFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0010000000000000 ), + LONG2CHARS( 0x0018000000000000 ), + LONG2CHARS( 0x001C000000000000 ), + LONG2CHARS( 0x001E000000000000 ), + LONG2CHARS( 0x001F000000000000 ), + LONG2CHARS( 0x001F800000000000 ), + LONG2CHARS( 0x001FC00000000000 ), + LONG2CHARS( 0x001FE00000000000 ), + LONG2CHARS( 0x001FF00000000000 ), + LONG2CHARS( 0x001FF80000000000 ), + LONG2CHARS( 0x001FFC0000000000 ), + LONG2CHARS( 0x001FFE0000000000 ), + LONG2CHARS( 0x001FFF0000000000 ), + LONG2CHARS( 0x001FFF8000000000 ), + LONG2CHARS( 0x001FFFC000000000 ), + LONG2CHARS( 0x001FFFE000000000 ), + LONG2CHARS( 0x001FFFF000000000 ), + LONG2CHARS( 0x001FFFF800000000 ), + LONG2CHARS( 0x001FFFFC00000000 ), + LONG2CHARS( 0x001FFFFE00000000 ), + LONG2CHARS( 0x001FFFFF00000000 ), + LONG2CHARS( 0x001FFFFF80000000 ), + LONG2CHARS( 0x001FFFFFC0000000 ), + LONG2CHARS( 0x001FFFFFE0000000 ), + LONG2CHARS( 0x001FFFFFF0000000 ), + LONG2CHARS( 0x001FFFFFF8000000 ), + LONG2CHARS( 0x001FFFFFFC000000 ), + LONG2CHARS( 0x001FFFFFFE000000 ), + LONG2CHARS( 0x001FFFFFFF000000 ), + LONG2CHARS( 0x001FFFFFFF800000 ), + LONG2CHARS( 0x001FFFFFFFC00000 ), + LONG2CHARS( 0x001FFFFFFFE00000 ), + LONG2CHARS( 0x001FFFFFFFF00000 ), + LONG2CHARS( 0x001FFFFFFFF80000 ), + LONG2CHARS( 0x001FFFFFFFFC0000 ), + LONG2CHARS( 0x001FFFFFFFFE0000 ), + LONG2CHARS( 0x001FFFFFFFFF0000 ), + LONG2CHARS( 0x001FFFFFFFFF8000 ), + LONG2CHARS( 0x001FFFFFFFFFC000 ), + LONG2CHARS( 0x001FFFFFFFFFE000 ), + LONG2CHARS( 0x001FFFFFFFFFF000 ), + LONG2CHARS( 0x001FFFFFFFFFF800 ), + LONG2CHARS( 0x001FFFFFFFFFFC00 ), + LONG2CHARS( 0x001FFFFFFFFFFE00 ), + LONG2CHARS( 0x001FFFFFFFFFFF00 ), + LONG2CHARS( 0x001FFFFFFFFFFF80 ), + LONG2CHARS( 0x001FFFFFFFFFFFC0 ), + LONG2CHARS( 0x001FFFFFFFFFFFE0 ), + LONG2CHARS( 0x001FFFFFFFFFFFF0 ), + LONG2CHARS( 0x001FFFFFFFFFFFF8 ), + LONG2CHARS( 0x001FFFFFFFFFFFFC ), + LONG2CHARS( 0x001FFFFFFFFFFFFE ), + LONG2CHARS( 0x001FFFFFFFFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0008000000000000 ), + LONG2CHARS( 0x000C000000000000 ), + LONG2CHARS( 0x000E000000000000 ), + LONG2CHARS( 0x000F000000000000 ), + LONG2CHARS( 0x000F800000000000 ), + LONG2CHARS( 0x000FC00000000000 ), + LONG2CHARS( 0x000FE00000000000 ), + LONG2CHARS( 0x000FF00000000000 ), + LONG2CHARS( 0x000FF80000000000 ), + LONG2CHARS( 0x000FFC0000000000 ), + LONG2CHARS( 0x000FFE0000000000 ), + LONG2CHARS( 0x000FFF0000000000 ), + LONG2CHARS( 0x000FFF8000000000 ), + LONG2CHARS( 0x000FFFC000000000 ), + LONG2CHARS( 0x000FFFE000000000 ), + LONG2CHARS( 0x000FFFF000000000 ), + LONG2CHARS( 0x000FFFF800000000 ), + LONG2CHARS( 0x000FFFFC00000000 ), + LONG2CHARS( 0x000FFFFE00000000 ), + LONG2CHARS( 0x000FFFFF00000000 ), + LONG2CHARS( 0x000FFFFF80000000 ), + LONG2CHARS( 0x000FFFFFC0000000 ), + LONG2CHARS( 0x000FFFFFE0000000 ), + LONG2CHARS( 0x000FFFFFF0000000 ), + LONG2CHARS( 0x000FFFFFF8000000 ), + LONG2CHARS( 0x000FFFFFFC000000 ), + LONG2CHARS( 0x000FFFFFFE000000 ), + LONG2CHARS( 0x000FFFFFFF000000 ), + LONG2CHARS( 0x000FFFFFFF800000 ), + LONG2CHARS( 0x000FFFFFFFC00000 ), + LONG2CHARS( 0x000FFFFFFFE00000 ), + LONG2CHARS( 0x000FFFFFFFF00000 ), + LONG2CHARS( 0x000FFFFFFFF80000 ), + LONG2CHARS( 0x000FFFFFFFFC0000 ), + LONG2CHARS( 0x000FFFFFFFFE0000 ), + LONG2CHARS( 0x000FFFFFFFFF0000 ), + LONG2CHARS( 0x000FFFFFFFFF8000 ), + LONG2CHARS( 0x000FFFFFFFFFC000 ), + LONG2CHARS( 0x000FFFFFFFFFE000 ), + LONG2CHARS( 0x000FFFFFFFFFF000 ), + LONG2CHARS( 0x000FFFFFFFFFF800 ), + LONG2CHARS( 0x000FFFFFFFFFFC00 ), + LONG2CHARS( 0x000FFFFFFFFFFE00 ), + LONG2CHARS( 0x000FFFFFFFFFFF00 ), + LONG2CHARS( 0x000FFFFFFFFFFF80 ), + LONG2CHARS( 0x000FFFFFFFFFFFC0 ), + LONG2CHARS( 0x000FFFFFFFFFFFE0 ), + LONG2CHARS( 0x000FFFFFFFFFFFF0 ), + LONG2CHARS( 0x000FFFFFFFFFFFF8 ), + LONG2CHARS( 0x000FFFFFFFFFFFFC ), + LONG2CHARS( 0x000FFFFFFFFFFFFE ), + LONG2CHARS( 0x000FFFFFFFFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0004000000000000 ), + LONG2CHARS( 0x0006000000000000 ), + LONG2CHARS( 0x0007000000000000 ), + LONG2CHARS( 0x0007800000000000 ), + LONG2CHARS( 0x0007C00000000000 ), + LONG2CHARS( 0x0007E00000000000 ), + LONG2CHARS( 0x0007F00000000000 ), + LONG2CHARS( 0x0007F80000000000 ), + LONG2CHARS( 0x0007FC0000000000 ), + LONG2CHARS( 0x0007FE0000000000 ), + LONG2CHARS( 0x0007FF0000000000 ), + LONG2CHARS( 0x0007FF8000000000 ), + LONG2CHARS( 0x0007FFC000000000 ), + LONG2CHARS( 0x0007FFE000000000 ), + LONG2CHARS( 0x0007FFF000000000 ), + LONG2CHARS( 0x0007FFF800000000 ), + LONG2CHARS( 0x0007FFFC00000000 ), + LONG2CHARS( 0x0007FFFE00000000 ), + LONG2CHARS( 0x0007FFFF00000000 ), + LONG2CHARS( 0x0007FFFF80000000 ), + LONG2CHARS( 0x0007FFFFC0000000 ), + LONG2CHARS( 0x0007FFFFE0000000 ), + LONG2CHARS( 0x0007FFFFF0000000 ), + LONG2CHARS( 0x0007FFFFF8000000 ), + LONG2CHARS( 0x0007FFFFFC000000 ), + LONG2CHARS( 0x0007FFFFFE000000 ), + LONG2CHARS( 0x0007FFFFFF000000 ), + LONG2CHARS( 0x0007FFFFFF800000 ), + LONG2CHARS( 0x0007FFFFFFC00000 ), + LONG2CHARS( 0x0007FFFFFFE00000 ), + LONG2CHARS( 0x0007FFFFFFF00000 ), + LONG2CHARS( 0x0007FFFFFFF80000 ), + LONG2CHARS( 0x0007FFFFFFFC0000 ), + LONG2CHARS( 0x0007FFFFFFFE0000 ), + LONG2CHARS( 0x0007FFFFFFFF0000 ), + LONG2CHARS( 0x0007FFFFFFFF8000 ), + LONG2CHARS( 0x0007FFFFFFFFC000 ), + LONG2CHARS( 0x0007FFFFFFFFE000 ), + LONG2CHARS( 0x0007FFFFFFFFF000 ), + LONG2CHARS( 0x0007FFFFFFFFF800 ), + LONG2CHARS( 0x0007FFFFFFFFFC00 ), + LONG2CHARS( 0x0007FFFFFFFFFE00 ), + LONG2CHARS( 0x0007FFFFFFFFFF00 ), + LONG2CHARS( 0x0007FFFFFFFFFF80 ), + LONG2CHARS( 0x0007FFFFFFFFFFC0 ), + LONG2CHARS( 0x0007FFFFFFFFFFE0 ), + LONG2CHARS( 0x0007FFFFFFFFFFF0 ), + LONG2CHARS( 0x0007FFFFFFFFFFF8 ), + LONG2CHARS( 0x0007FFFFFFFFFFFC ), + LONG2CHARS( 0x0007FFFFFFFFFFFE ), + LONG2CHARS( 0x0007FFFFFFFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0002000000000000 ), + LONG2CHARS( 0x0003000000000000 ), + LONG2CHARS( 0x0003800000000000 ), + LONG2CHARS( 0x0003C00000000000 ), + LONG2CHARS( 0x0003E00000000000 ), + LONG2CHARS( 0x0003F00000000000 ), + LONG2CHARS( 0x0003F80000000000 ), + LONG2CHARS( 0x0003FC0000000000 ), + LONG2CHARS( 0x0003FE0000000000 ), + LONG2CHARS( 0x0003FF0000000000 ), + LONG2CHARS( 0x0003FF8000000000 ), + LONG2CHARS( 0x0003FFC000000000 ), + LONG2CHARS( 0x0003FFE000000000 ), + LONG2CHARS( 0x0003FFF000000000 ), + LONG2CHARS( 0x0003FFF800000000 ), + LONG2CHARS( 0x0003FFFC00000000 ), + LONG2CHARS( 0x0003FFFE00000000 ), + LONG2CHARS( 0x0003FFFF00000000 ), + LONG2CHARS( 0x0003FFFF80000000 ), + LONG2CHARS( 0x0003FFFFC0000000 ), + LONG2CHARS( 0x0003FFFFE0000000 ), + LONG2CHARS( 0x0003FFFFF0000000 ), + LONG2CHARS( 0x0003FFFFF8000000 ), + LONG2CHARS( 0x0003FFFFFC000000 ), + LONG2CHARS( 0x0003FFFFFE000000 ), + LONG2CHARS( 0x0003FFFFFF000000 ), + LONG2CHARS( 0x0003FFFFFF800000 ), + LONG2CHARS( 0x0003FFFFFFC00000 ), + LONG2CHARS( 0x0003FFFFFFE00000 ), + LONG2CHARS( 0x0003FFFFFFF00000 ), + LONG2CHARS( 0x0003FFFFFFF80000 ), + LONG2CHARS( 0x0003FFFFFFFC0000 ), + LONG2CHARS( 0x0003FFFFFFFE0000 ), + LONG2CHARS( 0x0003FFFFFFFF0000 ), + LONG2CHARS( 0x0003FFFFFFFF8000 ), + LONG2CHARS( 0x0003FFFFFFFFC000 ), + LONG2CHARS( 0x0003FFFFFFFFE000 ), + LONG2CHARS( 0x0003FFFFFFFFF000 ), + LONG2CHARS( 0x0003FFFFFFFFF800 ), + LONG2CHARS( 0x0003FFFFFFFFFC00 ), + LONG2CHARS( 0x0003FFFFFFFFFE00 ), + LONG2CHARS( 0x0003FFFFFFFFFF00 ), + LONG2CHARS( 0x0003FFFFFFFFFF80 ), + LONG2CHARS( 0x0003FFFFFFFFFFC0 ), + LONG2CHARS( 0x0003FFFFFFFFFFE0 ), + LONG2CHARS( 0x0003FFFFFFFFFFF0 ), + LONG2CHARS( 0x0003FFFFFFFFFFF8 ), + LONG2CHARS( 0x0003FFFFFFFFFFFC ), + LONG2CHARS( 0x0003FFFFFFFFFFFE ), + LONG2CHARS( 0x0003FFFFFFFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0001000000000000 ), + LONG2CHARS( 0x0001800000000000 ), + LONG2CHARS( 0x0001C00000000000 ), + LONG2CHARS( 0x0001E00000000000 ), + LONG2CHARS( 0x0001F00000000000 ), + LONG2CHARS( 0x0001F80000000000 ), + LONG2CHARS( 0x0001FC0000000000 ), + LONG2CHARS( 0x0001FE0000000000 ), + LONG2CHARS( 0x0001FF0000000000 ), + LONG2CHARS( 0x0001FF8000000000 ), + LONG2CHARS( 0x0001FFC000000000 ), + LONG2CHARS( 0x0001FFE000000000 ), + LONG2CHARS( 0x0001FFF000000000 ), + LONG2CHARS( 0x0001FFF800000000 ), + LONG2CHARS( 0x0001FFFC00000000 ), + LONG2CHARS( 0x0001FFFE00000000 ), + LONG2CHARS( 0x0001FFFF00000000 ), + LONG2CHARS( 0x0001FFFF80000000 ), + LONG2CHARS( 0x0001FFFFC0000000 ), + LONG2CHARS( 0x0001FFFFE0000000 ), + LONG2CHARS( 0x0001FFFFF0000000 ), + LONG2CHARS( 0x0001FFFFF8000000 ), + LONG2CHARS( 0x0001FFFFFC000000 ), + LONG2CHARS( 0x0001FFFFFE000000 ), + LONG2CHARS( 0x0001FFFFFF000000 ), + LONG2CHARS( 0x0001FFFFFF800000 ), + LONG2CHARS( 0x0001FFFFFFC00000 ), + LONG2CHARS( 0x0001FFFFFFE00000 ), + LONG2CHARS( 0x0001FFFFFFF00000 ), + LONG2CHARS( 0x0001FFFFFFF80000 ), + LONG2CHARS( 0x0001FFFFFFFC0000 ), + LONG2CHARS( 0x0001FFFFFFFE0000 ), + LONG2CHARS( 0x0001FFFFFFFF0000 ), + LONG2CHARS( 0x0001FFFFFFFF8000 ), + LONG2CHARS( 0x0001FFFFFFFFC000 ), + LONG2CHARS( 0x0001FFFFFFFFE000 ), + LONG2CHARS( 0x0001FFFFFFFFF000 ), + LONG2CHARS( 0x0001FFFFFFFFF800 ), + LONG2CHARS( 0x0001FFFFFFFFFC00 ), + LONG2CHARS( 0x0001FFFFFFFFFE00 ), + LONG2CHARS( 0x0001FFFFFFFFFF00 ), + LONG2CHARS( 0x0001FFFFFFFFFF80 ), + LONG2CHARS( 0x0001FFFFFFFFFFC0 ), + LONG2CHARS( 0x0001FFFFFFFFFFE0 ), + LONG2CHARS( 0x0001FFFFFFFFFFF0 ), + LONG2CHARS( 0x0001FFFFFFFFFFF8 ), + LONG2CHARS( 0x0001FFFFFFFFFFFC ), + LONG2CHARS( 0x0001FFFFFFFFFFFE ), + LONG2CHARS( 0x0001FFFFFFFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000800000000000 ), + LONG2CHARS( 0x0000C00000000000 ), + LONG2CHARS( 0x0000E00000000000 ), + LONG2CHARS( 0x0000F00000000000 ), + LONG2CHARS( 0x0000F80000000000 ), + LONG2CHARS( 0x0000FC0000000000 ), + LONG2CHARS( 0x0000FE0000000000 ), + LONG2CHARS( 0x0000FF0000000000 ), + LONG2CHARS( 0x0000FF8000000000 ), + LONG2CHARS( 0x0000FFC000000000 ), + LONG2CHARS( 0x0000FFE000000000 ), + LONG2CHARS( 0x0000FFF000000000 ), + LONG2CHARS( 0x0000FFF800000000 ), + LONG2CHARS( 0x0000FFFC00000000 ), + LONG2CHARS( 0x0000FFFE00000000 ), + LONG2CHARS( 0x0000FFFF00000000 ), + LONG2CHARS( 0x0000FFFF80000000 ), + LONG2CHARS( 0x0000FFFFC0000000 ), + LONG2CHARS( 0x0000FFFFE0000000 ), + LONG2CHARS( 0x0000FFFFF0000000 ), + LONG2CHARS( 0x0000FFFFF8000000 ), + LONG2CHARS( 0x0000FFFFFC000000 ), + LONG2CHARS( 0x0000FFFFFE000000 ), + LONG2CHARS( 0x0000FFFFFF000000 ), + LONG2CHARS( 0x0000FFFFFF800000 ), + LONG2CHARS( 0x0000FFFFFFC00000 ), + LONG2CHARS( 0x0000FFFFFFE00000 ), + LONG2CHARS( 0x0000FFFFFFF00000 ), + LONG2CHARS( 0x0000FFFFFFF80000 ), + LONG2CHARS( 0x0000FFFFFFFC0000 ), + LONG2CHARS( 0x0000FFFFFFFE0000 ), + LONG2CHARS( 0x0000FFFFFFFF0000 ), + LONG2CHARS( 0x0000FFFFFFFF8000 ), + LONG2CHARS( 0x0000FFFFFFFFC000 ), + LONG2CHARS( 0x0000FFFFFFFFE000 ), + LONG2CHARS( 0x0000FFFFFFFFF000 ), + LONG2CHARS( 0x0000FFFFFFFFF800 ), + LONG2CHARS( 0x0000FFFFFFFFFC00 ), + LONG2CHARS( 0x0000FFFFFFFFFE00 ), + LONG2CHARS( 0x0000FFFFFFFFFF00 ), + LONG2CHARS( 0x0000FFFFFFFFFF80 ), + LONG2CHARS( 0x0000FFFFFFFFFFC0 ), + LONG2CHARS( 0x0000FFFFFFFFFFE0 ), + LONG2CHARS( 0x0000FFFFFFFFFFF0 ), + LONG2CHARS( 0x0000FFFFFFFFFFF8 ), + LONG2CHARS( 0x0000FFFFFFFFFFFC ), + LONG2CHARS( 0x0000FFFFFFFFFFFE ), + LONG2CHARS( 0x0000FFFFFFFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000400000000000 ), + LONG2CHARS( 0x0000600000000000 ), + LONG2CHARS( 0x0000700000000000 ), + LONG2CHARS( 0x0000780000000000 ), + LONG2CHARS( 0x00007C0000000000 ), + LONG2CHARS( 0x00007E0000000000 ), + LONG2CHARS( 0x00007F0000000000 ), + LONG2CHARS( 0x00007F8000000000 ), + LONG2CHARS( 0x00007FC000000000 ), + LONG2CHARS( 0x00007FE000000000 ), + LONG2CHARS( 0x00007FF000000000 ), + LONG2CHARS( 0x00007FF800000000 ), + LONG2CHARS( 0x00007FFC00000000 ), + LONG2CHARS( 0x00007FFE00000000 ), + LONG2CHARS( 0x00007FFF00000000 ), + LONG2CHARS( 0x00007FFF80000000 ), + LONG2CHARS( 0x00007FFFC0000000 ), + LONG2CHARS( 0x00007FFFE0000000 ), + LONG2CHARS( 0x00007FFFF0000000 ), + LONG2CHARS( 0x00007FFFF8000000 ), + LONG2CHARS( 0x00007FFFFC000000 ), + LONG2CHARS( 0x00007FFFFE000000 ), + LONG2CHARS( 0x00007FFFFF000000 ), + LONG2CHARS( 0x00007FFFFF800000 ), + LONG2CHARS( 0x00007FFFFFC00000 ), + LONG2CHARS( 0x00007FFFFFE00000 ), + LONG2CHARS( 0x00007FFFFFF00000 ), + LONG2CHARS( 0x00007FFFFFF80000 ), + LONG2CHARS( 0x00007FFFFFFC0000 ), + LONG2CHARS( 0x00007FFFFFFE0000 ), + LONG2CHARS( 0x00007FFFFFFF0000 ), + LONG2CHARS( 0x00007FFFFFFF8000 ), + LONG2CHARS( 0x00007FFFFFFFC000 ), + LONG2CHARS( 0x00007FFFFFFFE000 ), + LONG2CHARS( 0x00007FFFFFFFF000 ), + LONG2CHARS( 0x00007FFFFFFFF800 ), + LONG2CHARS( 0x00007FFFFFFFFC00 ), + LONG2CHARS( 0x00007FFFFFFFFE00 ), + LONG2CHARS( 0x00007FFFFFFFFF00 ), + LONG2CHARS( 0x00007FFFFFFFFF80 ), + LONG2CHARS( 0x00007FFFFFFFFFC0 ), + LONG2CHARS( 0x00007FFFFFFFFFE0 ), + LONG2CHARS( 0x00007FFFFFFFFFF0 ), + LONG2CHARS( 0x00007FFFFFFFFFF8 ), + LONG2CHARS( 0x00007FFFFFFFFFFC ), + LONG2CHARS( 0x00007FFFFFFFFFFE ), + LONG2CHARS( 0x00007FFFFFFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000200000000000 ), + LONG2CHARS( 0x0000300000000000 ), + LONG2CHARS( 0x0000380000000000 ), + LONG2CHARS( 0x00003C0000000000 ), + LONG2CHARS( 0x00003E0000000000 ), + LONG2CHARS( 0x00003F0000000000 ), + LONG2CHARS( 0x00003F8000000000 ), + LONG2CHARS( 0x00003FC000000000 ), + LONG2CHARS( 0x00003FE000000000 ), + LONG2CHARS( 0x00003FF000000000 ), + LONG2CHARS( 0x00003FF800000000 ), + LONG2CHARS( 0x00003FFC00000000 ), + LONG2CHARS( 0x00003FFE00000000 ), + LONG2CHARS( 0x00003FFF00000000 ), + LONG2CHARS( 0x00003FFF80000000 ), + LONG2CHARS( 0x00003FFFC0000000 ), + LONG2CHARS( 0x00003FFFE0000000 ), + LONG2CHARS( 0x00003FFFF0000000 ), + LONG2CHARS( 0x00003FFFF8000000 ), + LONG2CHARS( 0x00003FFFFC000000 ), + LONG2CHARS( 0x00003FFFFE000000 ), + LONG2CHARS( 0x00003FFFFF000000 ), + LONG2CHARS( 0x00003FFFFF800000 ), + LONG2CHARS( 0x00003FFFFFC00000 ), + LONG2CHARS( 0x00003FFFFFE00000 ), + LONG2CHARS( 0x00003FFFFFF00000 ), + LONG2CHARS( 0x00003FFFFFF80000 ), + LONG2CHARS( 0x00003FFFFFFC0000 ), + LONG2CHARS( 0x00003FFFFFFE0000 ), + LONG2CHARS( 0x00003FFFFFFF0000 ), + LONG2CHARS( 0x00003FFFFFFF8000 ), + LONG2CHARS( 0x00003FFFFFFFC000 ), + LONG2CHARS( 0x00003FFFFFFFE000 ), + LONG2CHARS( 0x00003FFFFFFFF000 ), + LONG2CHARS( 0x00003FFFFFFFF800 ), + LONG2CHARS( 0x00003FFFFFFFFC00 ), + LONG2CHARS( 0x00003FFFFFFFFE00 ), + LONG2CHARS( 0x00003FFFFFFFFF00 ), + LONG2CHARS( 0x00003FFFFFFFFF80 ), + LONG2CHARS( 0x00003FFFFFFFFFC0 ), + LONG2CHARS( 0x00003FFFFFFFFFE0 ), + LONG2CHARS( 0x00003FFFFFFFFFF0 ), + LONG2CHARS( 0x00003FFFFFFFFFF8 ), + LONG2CHARS( 0x00003FFFFFFFFFFC ), + LONG2CHARS( 0x00003FFFFFFFFFFE ), + LONG2CHARS( 0x00003FFFFFFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000100000000000 ), + LONG2CHARS( 0x0000180000000000 ), + LONG2CHARS( 0x00001C0000000000 ), + LONG2CHARS( 0x00001E0000000000 ), + LONG2CHARS( 0x00001F0000000000 ), + LONG2CHARS( 0x00001F8000000000 ), + LONG2CHARS( 0x00001FC000000000 ), + LONG2CHARS( 0x00001FE000000000 ), + LONG2CHARS( 0x00001FF000000000 ), + LONG2CHARS( 0x00001FF800000000 ), + LONG2CHARS( 0x00001FFC00000000 ), + LONG2CHARS( 0x00001FFE00000000 ), + LONG2CHARS( 0x00001FFF00000000 ), + LONG2CHARS( 0x00001FFF80000000 ), + LONG2CHARS( 0x00001FFFC0000000 ), + LONG2CHARS( 0x00001FFFE0000000 ), + LONG2CHARS( 0x00001FFFF0000000 ), + LONG2CHARS( 0x00001FFFF8000000 ), + LONG2CHARS( 0x00001FFFFC000000 ), + LONG2CHARS( 0x00001FFFFE000000 ), + LONG2CHARS( 0x00001FFFFF000000 ), + LONG2CHARS( 0x00001FFFFF800000 ), + LONG2CHARS( 0x00001FFFFFC00000 ), + LONG2CHARS( 0x00001FFFFFE00000 ), + LONG2CHARS( 0x00001FFFFFF00000 ), + LONG2CHARS( 0x00001FFFFFF80000 ), + LONG2CHARS( 0x00001FFFFFFC0000 ), + LONG2CHARS( 0x00001FFFFFFE0000 ), + LONG2CHARS( 0x00001FFFFFFF0000 ), + LONG2CHARS( 0x00001FFFFFFF8000 ), + LONG2CHARS( 0x00001FFFFFFFC000 ), + LONG2CHARS( 0x00001FFFFFFFE000 ), + LONG2CHARS( 0x00001FFFFFFFF000 ), + LONG2CHARS( 0x00001FFFFFFFF800 ), + LONG2CHARS( 0x00001FFFFFFFFC00 ), + LONG2CHARS( 0x00001FFFFFFFFE00 ), + LONG2CHARS( 0x00001FFFFFFFFF00 ), + LONG2CHARS( 0x00001FFFFFFFFF80 ), + LONG2CHARS( 0x00001FFFFFFFFFC0 ), + LONG2CHARS( 0x00001FFFFFFFFFE0 ), + LONG2CHARS( 0x00001FFFFFFFFFF0 ), + LONG2CHARS( 0x00001FFFFFFFFFF8 ), + LONG2CHARS( 0x00001FFFFFFFFFFC ), + LONG2CHARS( 0x00001FFFFFFFFFFE ), + LONG2CHARS( 0x00001FFFFFFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000080000000000 ), + LONG2CHARS( 0x00000C0000000000 ), + LONG2CHARS( 0x00000E0000000000 ), + LONG2CHARS( 0x00000F0000000000 ), + LONG2CHARS( 0x00000F8000000000 ), + LONG2CHARS( 0x00000FC000000000 ), + LONG2CHARS( 0x00000FE000000000 ), + LONG2CHARS( 0x00000FF000000000 ), + LONG2CHARS( 0x00000FF800000000 ), + LONG2CHARS( 0x00000FFC00000000 ), + LONG2CHARS( 0x00000FFE00000000 ), + LONG2CHARS( 0x00000FFF00000000 ), + LONG2CHARS( 0x00000FFF80000000 ), + LONG2CHARS( 0x00000FFFC0000000 ), + LONG2CHARS( 0x00000FFFE0000000 ), + LONG2CHARS( 0x00000FFFF0000000 ), + LONG2CHARS( 0x00000FFFF8000000 ), + LONG2CHARS( 0x00000FFFFC000000 ), + LONG2CHARS( 0x00000FFFFE000000 ), + LONG2CHARS( 0x00000FFFFF000000 ), + LONG2CHARS( 0x00000FFFFF800000 ), + LONG2CHARS( 0x00000FFFFFC00000 ), + LONG2CHARS( 0x00000FFFFFE00000 ), + LONG2CHARS( 0x00000FFFFFF00000 ), + LONG2CHARS( 0x00000FFFFFF80000 ), + LONG2CHARS( 0x00000FFFFFFC0000 ), + LONG2CHARS( 0x00000FFFFFFE0000 ), + LONG2CHARS( 0x00000FFFFFFF0000 ), + LONG2CHARS( 0x00000FFFFFFF8000 ), + LONG2CHARS( 0x00000FFFFFFFC000 ), + LONG2CHARS( 0x00000FFFFFFFE000 ), + LONG2CHARS( 0x00000FFFFFFFF000 ), + LONG2CHARS( 0x00000FFFFFFFF800 ), + LONG2CHARS( 0x00000FFFFFFFFC00 ), + LONG2CHARS( 0x00000FFFFFFFFE00 ), + LONG2CHARS( 0x00000FFFFFFFFF00 ), + LONG2CHARS( 0x00000FFFFFFFFF80 ), + LONG2CHARS( 0x00000FFFFFFFFFC0 ), + LONG2CHARS( 0x00000FFFFFFFFFE0 ), + LONG2CHARS( 0x00000FFFFFFFFFF0 ), + LONG2CHARS( 0x00000FFFFFFFFFF8 ), + LONG2CHARS( 0x00000FFFFFFFFFFC ), + LONG2CHARS( 0x00000FFFFFFFFFFE ), + LONG2CHARS( 0x00000FFFFFFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000040000000000 ), + LONG2CHARS( 0x0000060000000000 ), + LONG2CHARS( 0x0000070000000000 ), + LONG2CHARS( 0x0000078000000000 ), + LONG2CHARS( 0x000007C000000000 ), + LONG2CHARS( 0x000007E000000000 ), + LONG2CHARS( 0x000007F000000000 ), + LONG2CHARS( 0x000007F800000000 ), + LONG2CHARS( 0x000007FC00000000 ), + LONG2CHARS( 0x000007FE00000000 ), + LONG2CHARS( 0x000007FF00000000 ), + LONG2CHARS( 0x000007FF80000000 ), + LONG2CHARS( 0x000007FFC0000000 ), + LONG2CHARS( 0x000007FFE0000000 ), + LONG2CHARS( 0x000007FFF0000000 ), + LONG2CHARS( 0x000007FFF8000000 ), + LONG2CHARS( 0x000007FFFC000000 ), + LONG2CHARS( 0x000007FFFE000000 ), + LONG2CHARS( 0x000007FFFF000000 ), + LONG2CHARS( 0x000007FFFF800000 ), + LONG2CHARS( 0x000007FFFFC00000 ), + LONG2CHARS( 0x000007FFFFE00000 ), + LONG2CHARS( 0x000007FFFFF00000 ), + LONG2CHARS( 0x000007FFFFF80000 ), + LONG2CHARS( 0x000007FFFFFC0000 ), + LONG2CHARS( 0x000007FFFFFE0000 ), + LONG2CHARS( 0x000007FFFFFF0000 ), + LONG2CHARS( 0x000007FFFFFF8000 ), + LONG2CHARS( 0x000007FFFFFFC000 ), + LONG2CHARS( 0x000007FFFFFFE000 ), + LONG2CHARS( 0x000007FFFFFFF000 ), + LONG2CHARS( 0x000007FFFFFFF800 ), + LONG2CHARS( 0x000007FFFFFFFC00 ), + LONG2CHARS( 0x000007FFFFFFFE00 ), + LONG2CHARS( 0x000007FFFFFFFF00 ), + LONG2CHARS( 0x000007FFFFFFFF80 ), + LONG2CHARS( 0x000007FFFFFFFFC0 ), + LONG2CHARS( 0x000007FFFFFFFFE0 ), + LONG2CHARS( 0x000007FFFFFFFFF0 ), + LONG2CHARS( 0x000007FFFFFFFFF8 ), + LONG2CHARS( 0x000007FFFFFFFFFC ), + LONG2CHARS( 0x000007FFFFFFFFFE ), + LONG2CHARS( 0x000007FFFFFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000020000000000 ), + LONG2CHARS( 0x0000030000000000 ), + LONG2CHARS( 0x0000038000000000 ), + LONG2CHARS( 0x000003C000000000 ), + LONG2CHARS( 0x000003E000000000 ), + LONG2CHARS( 0x000003F000000000 ), + LONG2CHARS( 0x000003F800000000 ), + LONG2CHARS( 0x000003FC00000000 ), + LONG2CHARS( 0x000003FE00000000 ), + LONG2CHARS( 0x000003FF00000000 ), + LONG2CHARS( 0x000003FF80000000 ), + LONG2CHARS( 0x000003FFC0000000 ), + LONG2CHARS( 0x000003FFE0000000 ), + LONG2CHARS( 0x000003FFF0000000 ), + LONG2CHARS( 0x000003FFF8000000 ), + LONG2CHARS( 0x000003FFFC000000 ), + LONG2CHARS( 0x000003FFFE000000 ), + LONG2CHARS( 0x000003FFFF000000 ), + LONG2CHARS( 0x000003FFFF800000 ), + LONG2CHARS( 0x000003FFFFC00000 ), + LONG2CHARS( 0x000003FFFFE00000 ), + LONG2CHARS( 0x000003FFFFF00000 ), + LONG2CHARS( 0x000003FFFFF80000 ), + LONG2CHARS( 0x000003FFFFFC0000 ), + LONG2CHARS( 0x000003FFFFFE0000 ), + LONG2CHARS( 0x000003FFFFFF0000 ), + LONG2CHARS( 0x000003FFFFFF8000 ), + LONG2CHARS( 0x000003FFFFFFC000 ), + LONG2CHARS( 0x000003FFFFFFE000 ), + LONG2CHARS( 0x000003FFFFFFF000 ), + LONG2CHARS( 0x000003FFFFFFF800 ), + LONG2CHARS( 0x000003FFFFFFFC00 ), + LONG2CHARS( 0x000003FFFFFFFE00 ), + LONG2CHARS( 0x000003FFFFFFFF00 ), + LONG2CHARS( 0x000003FFFFFFFF80 ), + LONG2CHARS( 0x000003FFFFFFFFC0 ), + LONG2CHARS( 0x000003FFFFFFFFE0 ), + LONG2CHARS( 0x000003FFFFFFFFF0 ), + LONG2CHARS( 0x000003FFFFFFFFF8 ), + LONG2CHARS( 0x000003FFFFFFFFFC ), + LONG2CHARS( 0x000003FFFFFFFFFE ), + LONG2CHARS( 0x000003FFFFFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000010000000000 ), + LONG2CHARS( 0x0000018000000000 ), + LONG2CHARS( 0x000001C000000000 ), + LONG2CHARS( 0x000001E000000000 ), + LONG2CHARS( 0x000001F000000000 ), + LONG2CHARS( 0x000001F800000000 ), + LONG2CHARS( 0x000001FC00000000 ), + LONG2CHARS( 0x000001FE00000000 ), + LONG2CHARS( 0x000001FF00000000 ), + LONG2CHARS( 0x000001FF80000000 ), + LONG2CHARS( 0x000001FFC0000000 ), + LONG2CHARS( 0x000001FFE0000000 ), + LONG2CHARS( 0x000001FFF0000000 ), + LONG2CHARS( 0x000001FFF8000000 ), + LONG2CHARS( 0x000001FFFC000000 ), + LONG2CHARS( 0x000001FFFE000000 ), + LONG2CHARS( 0x000001FFFF000000 ), + LONG2CHARS( 0x000001FFFF800000 ), + LONG2CHARS( 0x000001FFFFC00000 ), + LONG2CHARS( 0x000001FFFFE00000 ), + LONG2CHARS( 0x000001FFFFF00000 ), + LONG2CHARS( 0x000001FFFFF80000 ), + LONG2CHARS( 0x000001FFFFFC0000 ), + LONG2CHARS( 0x000001FFFFFE0000 ), + LONG2CHARS( 0x000001FFFFFF0000 ), + LONG2CHARS( 0x000001FFFFFF8000 ), + LONG2CHARS( 0x000001FFFFFFC000 ), + LONG2CHARS( 0x000001FFFFFFE000 ), + LONG2CHARS( 0x000001FFFFFFF000 ), + LONG2CHARS( 0x000001FFFFFFF800 ), + LONG2CHARS( 0x000001FFFFFFFC00 ), + LONG2CHARS( 0x000001FFFFFFFE00 ), + LONG2CHARS( 0x000001FFFFFFFF00 ), + LONG2CHARS( 0x000001FFFFFFFF80 ), + LONG2CHARS( 0x000001FFFFFFFFC0 ), + LONG2CHARS( 0x000001FFFFFFFFE0 ), + LONG2CHARS( 0x000001FFFFFFFFF0 ), + LONG2CHARS( 0x000001FFFFFFFFF8 ), + LONG2CHARS( 0x000001FFFFFFFFFC ), + LONG2CHARS( 0x000001FFFFFFFFFE ), + LONG2CHARS( 0x000001FFFFFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000008000000000 ), + LONG2CHARS( 0x000000C000000000 ), + LONG2CHARS( 0x000000E000000000 ), + LONG2CHARS( 0x000000F000000000 ), + LONG2CHARS( 0x000000F800000000 ), + LONG2CHARS( 0x000000FC00000000 ), + LONG2CHARS( 0x000000FE00000000 ), + LONG2CHARS( 0x000000FF00000000 ), + LONG2CHARS( 0x000000FF80000000 ), + LONG2CHARS( 0x000000FFC0000000 ), + LONG2CHARS( 0x000000FFE0000000 ), + LONG2CHARS( 0x000000FFF0000000 ), + LONG2CHARS( 0x000000FFF8000000 ), + LONG2CHARS( 0x000000FFFC000000 ), + LONG2CHARS( 0x000000FFFE000000 ), + LONG2CHARS( 0x000000FFFF000000 ), + LONG2CHARS( 0x000000FFFF800000 ), + LONG2CHARS( 0x000000FFFFC00000 ), + LONG2CHARS( 0x000000FFFFE00000 ), + LONG2CHARS( 0x000000FFFFF00000 ), + LONG2CHARS( 0x000000FFFFF80000 ), + LONG2CHARS( 0x000000FFFFFC0000 ), + LONG2CHARS( 0x000000FFFFFE0000 ), + LONG2CHARS( 0x000000FFFFFF0000 ), + LONG2CHARS( 0x000000FFFFFF8000 ), + LONG2CHARS( 0x000000FFFFFFC000 ), + LONG2CHARS( 0x000000FFFFFFE000 ), + LONG2CHARS( 0x000000FFFFFFF000 ), + LONG2CHARS( 0x000000FFFFFFF800 ), + LONG2CHARS( 0x000000FFFFFFFC00 ), + LONG2CHARS( 0x000000FFFFFFFE00 ), + LONG2CHARS( 0x000000FFFFFFFF00 ), + LONG2CHARS( 0x000000FFFFFFFF80 ), + LONG2CHARS( 0x000000FFFFFFFFC0 ), + LONG2CHARS( 0x000000FFFFFFFFE0 ), + LONG2CHARS( 0x000000FFFFFFFFF0 ), + LONG2CHARS( 0x000000FFFFFFFFF8 ), + LONG2CHARS( 0x000000FFFFFFFFFC ), + LONG2CHARS( 0x000000FFFFFFFFFE ), + LONG2CHARS( 0x000000FFFFFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000004000000000 ), + LONG2CHARS( 0x0000006000000000 ), + LONG2CHARS( 0x0000007000000000 ), + LONG2CHARS( 0x0000007800000000 ), + LONG2CHARS( 0x0000007C00000000 ), + LONG2CHARS( 0x0000007E00000000 ), + LONG2CHARS( 0x0000007F00000000 ), + LONG2CHARS( 0x0000007F80000000 ), + LONG2CHARS( 0x0000007FC0000000 ), + LONG2CHARS( 0x0000007FE0000000 ), + LONG2CHARS( 0x0000007FF0000000 ), + LONG2CHARS( 0x0000007FF8000000 ), + LONG2CHARS( 0x0000007FFC000000 ), + LONG2CHARS( 0x0000007FFE000000 ), + LONG2CHARS( 0x0000007FFF000000 ), + LONG2CHARS( 0x0000007FFF800000 ), + LONG2CHARS( 0x0000007FFFC00000 ), + LONG2CHARS( 0x0000007FFFE00000 ), + LONG2CHARS( 0x0000007FFFF00000 ), + LONG2CHARS( 0x0000007FFFF80000 ), + LONG2CHARS( 0x0000007FFFFC0000 ), + LONG2CHARS( 0x0000007FFFFE0000 ), + LONG2CHARS( 0x0000007FFFFF0000 ), + LONG2CHARS( 0x0000007FFFFF8000 ), + LONG2CHARS( 0x0000007FFFFFC000 ), + LONG2CHARS( 0x0000007FFFFFE000 ), + LONG2CHARS( 0x0000007FFFFFF000 ), + LONG2CHARS( 0x0000007FFFFFF800 ), + LONG2CHARS( 0x0000007FFFFFFC00 ), + LONG2CHARS( 0x0000007FFFFFFE00 ), + LONG2CHARS( 0x0000007FFFFFFF00 ), + LONG2CHARS( 0x0000007FFFFFFF80 ), + LONG2CHARS( 0x0000007FFFFFFFC0 ), + LONG2CHARS( 0x0000007FFFFFFFE0 ), + LONG2CHARS( 0x0000007FFFFFFFF0 ), + LONG2CHARS( 0x0000007FFFFFFFF8 ), + LONG2CHARS( 0x0000007FFFFFFFFC ), + LONG2CHARS( 0x0000007FFFFFFFFE ), + LONG2CHARS( 0x0000007FFFFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000002000000000 ), + LONG2CHARS( 0x0000003000000000 ), + LONG2CHARS( 0x0000003800000000 ), + LONG2CHARS( 0x0000003C00000000 ), + LONG2CHARS( 0x0000003E00000000 ), + LONG2CHARS( 0x0000003F00000000 ), + LONG2CHARS( 0x0000003F80000000 ), + LONG2CHARS( 0x0000003FC0000000 ), + LONG2CHARS( 0x0000003FE0000000 ), + LONG2CHARS( 0x0000003FF0000000 ), + LONG2CHARS( 0x0000003FF8000000 ), + LONG2CHARS( 0x0000003FFC000000 ), + LONG2CHARS( 0x0000003FFE000000 ), + LONG2CHARS( 0x0000003FFF000000 ), + LONG2CHARS( 0x0000003FFF800000 ), + LONG2CHARS( 0x0000003FFFC00000 ), + LONG2CHARS( 0x0000003FFFE00000 ), + LONG2CHARS( 0x0000003FFFF00000 ), + LONG2CHARS( 0x0000003FFFF80000 ), + LONG2CHARS( 0x0000003FFFFC0000 ), + LONG2CHARS( 0x0000003FFFFE0000 ), + LONG2CHARS( 0x0000003FFFFF0000 ), + LONG2CHARS( 0x0000003FFFFF8000 ), + LONG2CHARS( 0x0000003FFFFFC000 ), + LONG2CHARS( 0x0000003FFFFFE000 ), + LONG2CHARS( 0x0000003FFFFFF000 ), + LONG2CHARS( 0x0000003FFFFFF800 ), + LONG2CHARS( 0x0000003FFFFFFC00 ), + LONG2CHARS( 0x0000003FFFFFFE00 ), + LONG2CHARS( 0x0000003FFFFFFF00 ), + LONG2CHARS( 0x0000003FFFFFFF80 ), + LONG2CHARS( 0x0000003FFFFFFFC0 ), + LONG2CHARS( 0x0000003FFFFFFFE0 ), + LONG2CHARS( 0x0000003FFFFFFFF0 ), + LONG2CHARS( 0x0000003FFFFFFFF8 ), + LONG2CHARS( 0x0000003FFFFFFFFC ), + LONG2CHARS( 0x0000003FFFFFFFFE ), + LONG2CHARS( 0x0000003FFFFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000001000000000 ), + LONG2CHARS( 0x0000001800000000 ), + LONG2CHARS( 0x0000001C00000000 ), + LONG2CHARS( 0x0000001E00000000 ), + LONG2CHARS( 0x0000001F00000000 ), + LONG2CHARS( 0x0000001F80000000 ), + LONG2CHARS( 0x0000001FC0000000 ), + LONG2CHARS( 0x0000001FE0000000 ), + LONG2CHARS( 0x0000001FF0000000 ), + LONG2CHARS( 0x0000001FF8000000 ), + LONG2CHARS( 0x0000001FFC000000 ), + LONG2CHARS( 0x0000001FFE000000 ), + LONG2CHARS( 0x0000001FFF000000 ), + LONG2CHARS( 0x0000001FFF800000 ), + LONG2CHARS( 0x0000001FFFC00000 ), + LONG2CHARS( 0x0000001FFFE00000 ), + LONG2CHARS( 0x0000001FFFF00000 ), + LONG2CHARS( 0x0000001FFFF80000 ), + LONG2CHARS( 0x0000001FFFFC0000 ), + LONG2CHARS( 0x0000001FFFFE0000 ), + LONG2CHARS( 0x0000001FFFFF0000 ), + LONG2CHARS( 0x0000001FFFFF8000 ), + LONG2CHARS( 0x0000001FFFFFC000 ), + LONG2CHARS( 0x0000001FFFFFE000 ), + LONG2CHARS( 0x0000001FFFFFF000 ), + LONG2CHARS( 0x0000001FFFFFF800 ), + LONG2CHARS( 0x0000001FFFFFFC00 ), + LONG2CHARS( 0x0000001FFFFFFE00 ), + LONG2CHARS( 0x0000001FFFFFFF00 ), + LONG2CHARS( 0x0000001FFFFFFF80 ), + LONG2CHARS( 0x0000001FFFFFFFC0 ), + LONG2CHARS( 0x0000001FFFFFFFE0 ), + LONG2CHARS( 0x0000001FFFFFFFF0 ), + LONG2CHARS( 0x0000001FFFFFFFF8 ), + LONG2CHARS( 0x0000001FFFFFFFFC ), + LONG2CHARS( 0x0000001FFFFFFFFE ), + LONG2CHARS( 0x0000001FFFFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000800000000 ), + LONG2CHARS( 0x0000000C00000000 ), + LONG2CHARS( 0x0000000E00000000 ), + LONG2CHARS( 0x0000000F00000000 ), + LONG2CHARS( 0x0000000F80000000 ), + LONG2CHARS( 0x0000000FC0000000 ), + LONG2CHARS( 0x0000000FE0000000 ), + LONG2CHARS( 0x0000000FF0000000 ), + LONG2CHARS( 0x0000000FF8000000 ), + LONG2CHARS( 0x0000000FFC000000 ), + LONG2CHARS( 0x0000000FFE000000 ), + LONG2CHARS( 0x0000000FFF000000 ), + LONG2CHARS( 0x0000000FFF800000 ), + LONG2CHARS( 0x0000000FFFC00000 ), + LONG2CHARS( 0x0000000FFFE00000 ), + LONG2CHARS( 0x0000000FFFF00000 ), + LONG2CHARS( 0x0000000FFFF80000 ), + LONG2CHARS( 0x0000000FFFFC0000 ), + LONG2CHARS( 0x0000000FFFFE0000 ), + LONG2CHARS( 0x0000000FFFFF0000 ), + LONG2CHARS( 0x0000000FFFFF8000 ), + LONG2CHARS( 0x0000000FFFFFC000 ), + LONG2CHARS( 0x0000000FFFFFE000 ), + LONG2CHARS( 0x0000000FFFFFF000 ), + LONG2CHARS( 0x0000000FFFFFF800 ), + LONG2CHARS( 0x0000000FFFFFFC00 ), + LONG2CHARS( 0x0000000FFFFFFE00 ), + LONG2CHARS( 0x0000000FFFFFFF00 ), + LONG2CHARS( 0x0000000FFFFFFF80 ), + LONG2CHARS( 0x0000000FFFFFFFC0 ), + LONG2CHARS( 0x0000000FFFFFFFE0 ), + LONG2CHARS( 0x0000000FFFFFFFF0 ), + LONG2CHARS( 0x0000000FFFFFFFF8 ), + LONG2CHARS( 0x0000000FFFFFFFFC ), + LONG2CHARS( 0x0000000FFFFFFFFE ), + LONG2CHARS( 0x0000000FFFFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000400000000 ), + LONG2CHARS( 0x0000000600000000 ), + LONG2CHARS( 0x0000000700000000 ), + LONG2CHARS( 0x0000000780000000 ), + LONG2CHARS( 0x00000007C0000000 ), + LONG2CHARS( 0x00000007E0000000 ), + LONG2CHARS( 0x00000007F0000000 ), + LONG2CHARS( 0x00000007F8000000 ), + LONG2CHARS( 0x00000007FC000000 ), + LONG2CHARS( 0x00000007FE000000 ), + LONG2CHARS( 0x00000007FF000000 ), + LONG2CHARS( 0x00000007FF800000 ), + LONG2CHARS( 0x00000007FFC00000 ), + LONG2CHARS( 0x00000007FFE00000 ), + LONG2CHARS( 0x00000007FFF00000 ), + LONG2CHARS( 0x00000007FFF80000 ), + LONG2CHARS( 0x00000007FFFC0000 ), + LONG2CHARS( 0x00000007FFFE0000 ), + LONG2CHARS( 0x00000007FFFF0000 ), + LONG2CHARS( 0x00000007FFFF8000 ), + LONG2CHARS( 0x00000007FFFFC000 ), + LONG2CHARS( 0x00000007FFFFE000 ), + LONG2CHARS( 0x00000007FFFFF000 ), + LONG2CHARS( 0x00000007FFFFF800 ), + LONG2CHARS( 0x00000007FFFFFC00 ), + LONG2CHARS( 0x00000007FFFFFE00 ), + LONG2CHARS( 0x00000007FFFFFF00 ), + LONG2CHARS( 0x00000007FFFFFF80 ), + LONG2CHARS( 0x00000007FFFFFFC0 ), + LONG2CHARS( 0x00000007FFFFFFE0 ), + LONG2CHARS( 0x00000007FFFFFFF0 ), + LONG2CHARS( 0x00000007FFFFFFF8 ), + LONG2CHARS( 0x00000007FFFFFFFC ), + LONG2CHARS( 0x00000007FFFFFFFE ), + LONG2CHARS( 0x00000007FFFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000200000000 ), + LONG2CHARS( 0x0000000300000000 ), + LONG2CHARS( 0x0000000380000000 ), + LONG2CHARS( 0x00000003C0000000 ), + LONG2CHARS( 0x00000003E0000000 ), + LONG2CHARS( 0x00000003F0000000 ), + LONG2CHARS( 0x00000003F8000000 ), + LONG2CHARS( 0x00000003FC000000 ), + LONG2CHARS( 0x00000003FE000000 ), + LONG2CHARS( 0x00000003FF000000 ), + LONG2CHARS( 0x00000003FF800000 ), + LONG2CHARS( 0x00000003FFC00000 ), + LONG2CHARS( 0x00000003FFE00000 ), + LONG2CHARS( 0x00000003FFF00000 ), + LONG2CHARS( 0x00000003FFF80000 ), + LONG2CHARS( 0x00000003FFFC0000 ), + LONG2CHARS( 0x00000003FFFE0000 ), + LONG2CHARS( 0x00000003FFFF0000 ), + LONG2CHARS( 0x00000003FFFF8000 ), + LONG2CHARS( 0x00000003FFFFC000 ), + LONG2CHARS( 0x00000003FFFFE000 ), + LONG2CHARS( 0x00000003FFFFF000 ), + LONG2CHARS( 0x00000003FFFFF800 ), + LONG2CHARS( 0x00000003FFFFFC00 ), + LONG2CHARS( 0x00000003FFFFFE00 ), + LONG2CHARS( 0x00000003FFFFFF00 ), + LONG2CHARS( 0x00000003FFFFFF80 ), + LONG2CHARS( 0x00000003FFFFFFC0 ), + LONG2CHARS( 0x00000003FFFFFFE0 ), + LONG2CHARS( 0x00000003FFFFFFF0 ), + LONG2CHARS( 0x00000003FFFFFFF8 ), + LONG2CHARS( 0x00000003FFFFFFFC ), + LONG2CHARS( 0x00000003FFFFFFFE ), + LONG2CHARS( 0x00000003FFFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000100000000 ), + LONG2CHARS( 0x0000000180000000 ), + LONG2CHARS( 0x00000001C0000000 ), + LONG2CHARS( 0x00000001E0000000 ), + LONG2CHARS( 0x00000001F0000000 ), + LONG2CHARS( 0x00000001F8000000 ), + LONG2CHARS( 0x00000001FC000000 ), + LONG2CHARS( 0x00000001FE000000 ), + LONG2CHARS( 0x00000001FF000000 ), + LONG2CHARS( 0x00000001FF800000 ), + LONG2CHARS( 0x00000001FFC00000 ), + LONG2CHARS( 0x00000001FFE00000 ), + LONG2CHARS( 0x00000001FFF00000 ), + LONG2CHARS( 0x00000001FFF80000 ), + LONG2CHARS( 0x00000001FFFC0000 ), + LONG2CHARS( 0x00000001FFFE0000 ), + LONG2CHARS( 0x00000001FFFF0000 ), + LONG2CHARS( 0x00000001FFFF8000 ), + LONG2CHARS( 0x00000001FFFFC000 ), + LONG2CHARS( 0x00000001FFFFE000 ), + LONG2CHARS( 0x00000001FFFFF000 ), + LONG2CHARS( 0x00000001FFFFF800 ), + LONG2CHARS( 0x00000001FFFFFC00 ), + LONG2CHARS( 0x00000001FFFFFE00 ), + LONG2CHARS( 0x00000001FFFFFF00 ), + LONG2CHARS( 0x00000001FFFFFF80 ), + LONG2CHARS( 0x00000001FFFFFFC0 ), + LONG2CHARS( 0x00000001FFFFFFE0 ), + LONG2CHARS( 0x00000001FFFFFFF0 ), + LONG2CHARS( 0x00000001FFFFFFF8 ), + LONG2CHARS( 0x00000001FFFFFFFC ), + LONG2CHARS( 0x00000001FFFFFFFE ), + LONG2CHARS( 0x00000001FFFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000080000000 ), + LONG2CHARS( 0x00000000C0000000 ), + LONG2CHARS( 0x00000000E0000000 ), + LONG2CHARS( 0x00000000F0000000 ), + LONG2CHARS( 0x00000000F8000000 ), + LONG2CHARS( 0x00000000FC000000 ), + LONG2CHARS( 0x00000000FE000000 ), + LONG2CHARS( 0x00000000FF000000 ), + LONG2CHARS( 0x00000000FF800000 ), + LONG2CHARS( 0x00000000FFC00000 ), + LONG2CHARS( 0x00000000FFE00000 ), + LONG2CHARS( 0x00000000FFF00000 ), + LONG2CHARS( 0x00000000FFF80000 ), + LONG2CHARS( 0x00000000FFFC0000 ), + LONG2CHARS( 0x00000000FFFE0000 ), + LONG2CHARS( 0x00000000FFFF0000 ), + LONG2CHARS( 0x00000000FFFF8000 ), + LONG2CHARS( 0x00000000FFFFC000 ), + LONG2CHARS( 0x00000000FFFFE000 ), + LONG2CHARS( 0x00000000FFFFF000 ), + LONG2CHARS( 0x00000000FFFFF800 ), + LONG2CHARS( 0x00000000FFFFFC00 ), + LONG2CHARS( 0x00000000FFFFFE00 ), + LONG2CHARS( 0x00000000FFFFFF00 ), + LONG2CHARS( 0x00000000FFFFFF80 ), + LONG2CHARS( 0x00000000FFFFFFC0 ), + LONG2CHARS( 0x00000000FFFFFFE0 ), + LONG2CHARS( 0x00000000FFFFFFF0 ), + LONG2CHARS( 0x00000000FFFFFFF8 ), + LONG2CHARS( 0x00000000FFFFFFFC ), + LONG2CHARS( 0x00000000FFFFFFFE ), + LONG2CHARS( 0x00000000FFFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000040000000 ), + LONG2CHARS( 0x0000000060000000 ), + LONG2CHARS( 0x0000000070000000 ), + LONG2CHARS( 0x0000000078000000 ), + LONG2CHARS( 0x000000007C000000 ), + LONG2CHARS( 0x000000007E000000 ), + LONG2CHARS( 0x000000007F000000 ), + LONG2CHARS( 0x000000007F800000 ), + LONG2CHARS( 0x000000007FC00000 ), + LONG2CHARS( 0x000000007FE00000 ), + LONG2CHARS( 0x000000007FF00000 ), + LONG2CHARS( 0x000000007FF80000 ), + LONG2CHARS( 0x000000007FFC0000 ), + LONG2CHARS( 0x000000007FFE0000 ), + LONG2CHARS( 0x000000007FFF0000 ), + LONG2CHARS( 0x000000007FFF8000 ), + LONG2CHARS( 0x000000007FFFC000 ), + LONG2CHARS( 0x000000007FFFE000 ), + LONG2CHARS( 0x000000007FFFF000 ), + LONG2CHARS( 0x000000007FFFF800 ), + LONG2CHARS( 0x000000007FFFFC00 ), + LONG2CHARS( 0x000000007FFFFE00 ), + LONG2CHARS( 0x000000007FFFFF00 ), + LONG2CHARS( 0x000000007FFFFF80 ), + LONG2CHARS( 0x000000007FFFFFC0 ), + LONG2CHARS( 0x000000007FFFFFE0 ), + LONG2CHARS( 0x000000007FFFFFF0 ), + LONG2CHARS( 0x000000007FFFFFF8 ), + LONG2CHARS( 0x000000007FFFFFFC ), + LONG2CHARS( 0x000000007FFFFFFE ), + LONG2CHARS( 0x000000007FFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000020000000 ), + LONG2CHARS( 0x0000000030000000 ), + LONG2CHARS( 0x0000000038000000 ), + LONG2CHARS( 0x000000003C000000 ), + LONG2CHARS( 0x000000003E000000 ), + LONG2CHARS( 0x000000003F000000 ), + LONG2CHARS( 0x000000003F800000 ), + LONG2CHARS( 0x000000003FC00000 ), + LONG2CHARS( 0x000000003FE00000 ), + LONG2CHARS( 0x000000003FF00000 ), + LONG2CHARS( 0x000000003FF80000 ), + LONG2CHARS( 0x000000003FFC0000 ), + LONG2CHARS( 0x000000003FFE0000 ), + LONG2CHARS( 0x000000003FFF0000 ), + LONG2CHARS( 0x000000003FFF8000 ), + LONG2CHARS( 0x000000003FFFC000 ), + LONG2CHARS( 0x000000003FFFE000 ), + LONG2CHARS( 0x000000003FFFF000 ), + LONG2CHARS( 0x000000003FFFF800 ), + LONG2CHARS( 0x000000003FFFFC00 ), + LONG2CHARS( 0x000000003FFFFE00 ), + LONG2CHARS( 0x000000003FFFFF00 ), + LONG2CHARS( 0x000000003FFFFF80 ), + LONG2CHARS( 0x000000003FFFFFC0 ), + LONG2CHARS( 0x000000003FFFFFE0 ), + LONG2CHARS( 0x000000003FFFFFF0 ), + LONG2CHARS( 0x000000003FFFFFF8 ), + LONG2CHARS( 0x000000003FFFFFFC ), + LONG2CHARS( 0x000000003FFFFFFE ), + LONG2CHARS( 0x000000003FFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000010000000 ), + LONG2CHARS( 0x0000000018000000 ), + LONG2CHARS( 0x000000001C000000 ), + LONG2CHARS( 0x000000001E000000 ), + LONG2CHARS( 0x000000001F000000 ), + LONG2CHARS( 0x000000001F800000 ), + LONG2CHARS( 0x000000001FC00000 ), + LONG2CHARS( 0x000000001FE00000 ), + LONG2CHARS( 0x000000001FF00000 ), + LONG2CHARS( 0x000000001FF80000 ), + LONG2CHARS( 0x000000001FFC0000 ), + LONG2CHARS( 0x000000001FFE0000 ), + LONG2CHARS( 0x000000001FFF0000 ), + LONG2CHARS( 0x000000001FFF8000 ), + LONG2CHARS( 0x000000001FFFC000 ), + LONG2CHARS( 0x000000001FFFE000 ), + LONG2CHARS( 0x000000001FFFF000 ), + LONG2CHARS( 0x000000001FFFF800 ), + LONG2CHARS( 0x000000001FFFFC00 ), + LONG2CHARS( 0x000000001FFFFE00 ), + LONG2CHARS( 0x000000001FFFFF00 ), + LONG2CHARS( 0x000000001FFFFF80 ), + LONG2CHARS( 0x000000001FFFFFC0 ), + LONG2CHARS( 0x000000001FFFFFE0 ), + LONG2CHARS( 0x000000001FFFFFF0 ), + LONG2CHARS( 0x000000001FFFFFF8 ), + LONG2CHARS( 0x000000001FFFFFFC ), + LONG2CHARS( 0x000000001FFFFFFE ), + LONG2CHARS( 0x000000001FFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000008000000 ), + LONG2CHARS( 0x000000000C000000 ), + LONG2CHARS( 0x000000000E000000 ), + LONG2CHARS( 0x000000000F000000 ), + LONG2CHARS( 0x000000000F800000 ), + LONG2CHARS( 0x000000000FC00000 ), + LONG2CHARS( 0x000000000FE00000 ), + LONG2CHARS( 0x000000000FF00000 ), + LONG2CHARS( 0x000000000FF80000 ), + LONG2CHARS( 0x000000000FFC0000 ), + LONG2CHARS( 0x000000000FFE0000 ), + LONG2CHARS( 0x000000000FFF0000 ), + LONG2CHARS( 0x000000000FFF8000 ), + LONG2CHARS( 0x000000000FFFC000 ), + LONG2CHARS( 0x000000000FFFE000 ), + LONG2CHARS( 0x000000000FFFF000 ), + LONG2CHARS( 0x000000000FFFF800 ), + LONG2CHARS( 0x000000000FFFFC00 ), + LONG2CHARS( 0x000000000FFFFE00 ), + LONG2CHARS( 0x000000000FFFFF00 ), + LONG2CHARS( 0x000000000FFFFF80 ), + LONG2CHARS( 0x000000000FFFFFC0 ), + LONG2CHARS( 0x000000000FFFFFE0 ), + LONG2CHARS( 0x000000000FFFFFF0 ), + LONG2CHARS( 0x000000000FFFFFF8 ), + LONG2CHARS( 0x000000000FFFFFFC ), + LONG2CHARS( 0x000000000FFFFFFE ), + LONG2CHARS( 0x000000000FFFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000004000000 ), + LONG2CHARS( 0x0000000006000000 ), + LONG2CHARS( 0x0000000007000000 ), + LONG2CHARS( 0x0000000007800000 ), + LONG2CHARS( 0x0000000007C00000 ), + LONG2CHARS( 0x0000000007E00000 ), + LONG2CHARS( 0x0000000007F00000 ), + LONG2CHARS( 0x0000000007F80000 ), + LONG2CHARS( 0x0000000007FC0000 ), + LONG2CHARS( 0x0000000007FE0000 ), + LONG2CHARS( 0x0000000007FF0000 ), + LONG2CHARS( 0x0000000007FF8000 ), + LONG2CHARS( 0x0000000007FFC000 ), + LONG2CHARS( 0x0000000007FFE000 ), + LONG2CHARS( 0x0000000007FFF000 ), + LONG2CHARS( 0x0000000007FFF800 ), + LONG2CHARS( 0x0000000007FFFC00 ), + LONG2CHARS( 0x0000000007FFFE00 ), + LONG2CHARS( 0x0000000007FFFF00 ), + LONG2CHARS( 0x0000000007FFFF80 ), + LONG2CHARS( 0x0000000007FFFFC0 ), + LONG2CHARS( 0x0000000007FFFFE0 ), + LONG2CHARS( 0x0000000007FFFFF0 ), + LONG2CHARS( 0x0000000007FFFFF8 ), + LONG2CHARS( 0x0000000007FFFFFC ), + LONG2CHARS( 0x0000000007FFFFFE ), + LONG2CHARS( 0x0000000007FFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000002000000 ), + LONG2CHARS( 0x0000000003000000 ), + LONG2CHARS( 0x0000000003800000 ), + LONG2CHARS( 0x0000000003C00000 ), + LONG2CHARS( 0x0000000003E00000 ), + LONG2CHARS( 0x0000000003F00000 ), + LONG2CHARS( 0x0000000003F80000 ), + LONG2CHARS( 0x0000000003FC0000 ), + LONG2CHARS( 0x0000000003FE0000 ), + LONG2CHARS( 0x0000000003FF0000 ), + LONG2CHARS( 0x0000000003FF8000 ), + LONG2CHARS( 0x0000000003FFC000 ), + LONG2CHARS( 0x0000000003FFE000 ), + LONG2CHARS( 0x0000000003FFF000 ), + LONG2CHARS( 0x0000000003FFF800 ), + LONG2CHARS( 0x0000000003FFFC00 ), + LONG2CHARS( 0x0000000003FFFE00 ), + LONG2CHARS( 0x0000000003FFFF00 ), + LONG2CHARS( 0x0000000003FFFF80 ), + LONG2CHARS( 0x0000000003FFFFC0 ), + LONG2CHARS( 0x0000000003FFFFE0 ), + LONG2CHARS( 0x0000000003FFFFF0 ), + LONG2CHARS( 0x0000000003FFFFF8 ), + LONG2CHARS( 0x0000000003FFFFFC ), + LONG2CHARS( 0x0000000003FFFFFE ), + LONG2CHARS( 0x0000000003FFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000001000000 ), + LONG2CHARS( 0x0000000001800000 ), + LONG2CHARS( 0x0000000001C00000 ), + LONG2CHARS( 0x0000000001E00000 ), + LONG2CHARS( 0x0000000001F00000 ), + LONG2CHARS( 0x0000000001F80000 ), + LONG2CHARS( 0x0000000001FC0000 ), + LONG2CHARS( 0x0000000001FE0000 ), + LONG2CHARS( 0x0000000001FF0000 ), + LONG2CHARS( 0x0000000001FF8000 ), + LONG2CHARS( 0x0000000001FFC000 ), + LONG2CHARS( 0x0000000001FFE000 ), + LONG2CHARS( 0x0000000001FFF000 ), + LONG2CHARS( 0x0000000001FFF800 ), + LONG2CHARS( 0x0000000001FFFC00 ), + LONG2CHARS( 0x0000000001FFFE00 ), + LONG2CHARS( 0x0000000001FFFF00 ), + LONG2CHARS( 0x0000000001FFFF80 ), + LONG2CHARS( 0x0000000001FFFFC0 ), + LONG2CHARS( 0x0000000001FFFFE0 ), + LONG2CHARS( 0x0000000001FFFFF0 ), + LONG2CHARS( 0x0000000001FFFFF8 ), + LONG2CHARS( 0x0000000001FFFFFC ), + LONG2CHARS( 0x0000000001FFFFFE ), + LONG2CHARS( 0x0000000001FFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000800000 ), + LONG2CHARS( 0x0000000000C00000 ), + LONG2CHARS( 0x0000000000E00000 ), + LONG2CHARS( 0x0000000000F00000 ), + LONG2CHARS( 0x0000000000F80000 ), + LONG2CHARS( 0x0000000000FC0000 ), + LONG2CHARS( 0x0000000000FE0000 ), + LONG2CHARS( 0x0000000000FF0000 ), + LONG2CHARS( 0x0000000000FF8000 ), + LONG2CHARS( 0x0000000000FFC000 ), + LONG2CHARS( 0x0000000000FFE000 ), + LONG2CHARS( 0x0000000000FFF000 ), + LONG2CHARS( 0x0000000000FFF800 ), + LONG2CHARS( 0x0000000000FFFC00 ), + LONG2CHARS( 0x0000000000FFFE00 ), + LONG2CHARS( 0x0000000000FFFF00 ), + LONG2CHARS( 0x0000000000FFFF80 ), + LONG2CHARS( 0x0000000000FFFFC0 ), + LONG2CHARS( 0x0000000000FFFFE0 ), + LONG2CHARS( 0x0000000000FFFFF0 ), + LONG2CHARS( 0x0000000000FFFFF8 ), + LONG2CHARS( 0x0000000000FFFFFC ), + LONG2CHARS( 0x0000000000FFFFFE ), + LONG2CHARS( 0x0000000000FFFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000400000 ), + LONG2CHARS( 0x0000000000600000 ), + LONG2CHARS( 0x0000000000700000 ), + LONG2CHARS( 0x0000000000780000 ), + LONG2CHARS( 0x00000000007C0000 ), + LONG2CHARS( 0x00000000007E0000 ), + LONG2CHARS( 0x00000000007F0000 ), + LONG2CHARS( 0x00000000007F8000 ), + LONG2CHARS( 0x00000000007FC000 ), + LONG2CHARS( 0x00000000007FE000 ), + LONG2CHARS( 0x00000000007FF000 ), + LONG2CHARS( 0x00000000007FF800 ), + LONG2CHARS( 0x00000000007FFC00 ), + LONG2CHARS( 0x00000000007FFE00 ), + LONG2CHARS( 0x00000000007FFF00 ), + LONG2CHARS( 0x00000000007FFF80 ), + LONG2CHARS( 0x00000000007FFFC0 ), + LONG2CHARS( 0x00000000007FFFE0 ), + LONG2CHARS( 0x00000000007FFFF0 ), + LONG2CHARS( 0x00000000007FFFF8 ), + LONG2CHARS( 0x00000000007FFFFC ), + LONG2CHARS( 0x00000000007FFFFE ), + LONG2CHARS( 0x00000000007FFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000200000 ), + LONG2CHARS( 0x0000000000300000 ), + LONG2CHARS( 0x0000000000380000 ), + LONG2CHARS( 0x00000000003C0000 ), + LONG2CHARS( 0x00000000003E0000 ), + LONG2CHARS( 0x00000000003F0000 ), + LONG2CHARS( 0x00000000003F8000 ), + LONG2CHARS( 0x00000000003FC000 ), + LONG2CHARS( 0x00000000003FE000 ), + LONG2CHARS( 0x00000000003FF000 ), + LONG2CHARS( 0x00000000003FF800 ), + LONG2CHARS( 0x00000000003FFC00 ), + LONG2CHARS( 0x00000000003FFE00 ), + LONG2CHARS( 0x00000000003FFF00 ), + LONG2CHARS( 0x00000000003FFF80 ), + LONG2CHARS( 0x00000000003FFFC0 ), + LONG2CHARS( 0x00000000003FFFE0 ), + LONG2CHARS( 0x00000000003FFFF0 ), + LONG2CHARS( 0x00000000003FFFF8 ), + LONG2CHARS( 0x00000000003FFFFC ), + LONG2CHARS( 0x00000000003FFFFE ), + LONG2CHARS( 0x00000000003FFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000100000 ), + LONG2CHARS( 0x0000000000180000 ), + LONG2CHARS( 0x00000000001C0000 ), + LONG2CHARS( 0x00000000001E0000 ), + LONG2CHARS( 0x00000000001F0000 ), + LONG2CHARS( 0x00000000001F8000 ), + LONG2CHARS( 0x00000000001FC000 ), + LONG2CHARS( 0x00000000001FE000 ), + LONG2CHARS( 0x00000000001FF000 ), + LONG2CHARS( 0x00000000001FF800 ), + LONG2CHARS( 0x00000000001FFC00 ), + LONG2CHARS( 0x00000000001FFE00 ), + LONG2CHARS( 0x00000000001FFF00 ), + LONG2CHARS( 0x00000000001FFF80 ), + LONG2CHARS( 0x00000000001FFFC0 ), + LONG2CHARS( 0x00000000001FFFE0 ), + LONG2CHARS( 0x00000000001FFFF0 ), + LONG2CHARS( 0x00000000001FFFF8 ), + LONG2CHARS( 0x00000000001FFFFC ), + LONG2CHARS( 0x00000000001FFFFE ), + LONG2CHARS( 0x00000000001FFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000080000 ), + LONG2CHARS( 0x00000000000C0000 ), + LONG2CHARS( 0x00000000000E0000 ), + LONG2CHARS( 0x00000000000F0000 ), + LONG2CHARS( 0x00000000000F8000 ), + LONG2CHARS( 0x00000000000FC000 ), + LONG2CHARS( 0x00000000000FE000 ), + LONG2CHARS( 0x00000000000FF000 ), + LONG2CHARS( 0x00000000000FF800 ), + LONG2CHARS( 0x00000000000FFC00 ), + LONG2CHARS( 0x00000000000FFE00 ), + LONG2CHARS( 0x00000000000FFF00 ), + LONG2CHARS( 0x00000000000FFF80 ), + LONG2CHARS( 0x00000000000FFFC0 ), + LONG2CHARS( 0x00000000000FFFE0 ), + LONG2CHARS( 0x00000000000FFFF0 ), + LONG2CHARS( 0x00000000000FFFF8 ), + LONG2CHARS( 0x00000000000FFFFC ), + LONG2CHARS( 0x00000000000FFFFE ), + LONG2CHARS( 0x00000000000FFFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000040000 ), + LONG2CHARS( 0x0000000000060000 ), + LONG2CHARS( 0x0000000000070000 ), + LONG2CHARS( 0x0000000000078000 ), + LONG2CHARS( 0x000000000007C000 ), + LONG2CHARS( 0x000000000007E000 ), + LONG2CHARS( 0x000000000007F000 ), + LONG2CHARS( 0x000000000007F800 ), + LONG2CHARS( 0x000000000007FC00 ), + LONG2CHARS( 0x000000000007FE00 ), + LONG2CHARS( 0x000000000007FF00 ), + LONG2CHARS( 0x000000000007FF80 ), + LONG2CHARS( 0x000000000007FFC0 ), + LONG2CHARS( 0x000000000007FFE0 ), + LONG2CHARS( 0x000000000007FFF0 ), + LONG2CHARS( 0x000000000007FFF8 ), + LONG2CHARS( 0x000000000007FFFC ), + LONG2CHARS( 0x000000000007FFFE ), + LONG2CHARS( 0x000000000007FFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000020000 ), + LONG2CHARS( 0x0000000000030000 ), + LONG2CHARS( 0x0000000000038000 ), + LONG2CHARS( 0x000000000003C000 ), + LONG2CHARS( 0x000000000003E000 ), + LONG2CHARS( 0x000000000003F000 ), + LONG2CHARS( 0x000000000003F800 ), + LONG2CHARS( 0x000000000003FC00 ), + LONG2CHARS( 0x000000000003FE00 ), + LONG2CHARS( 0x000000000003FF00 ), + LONG2CHARS( 0x000000000003FF80 ), + LONG2CHARS( 0x000000000003FFC0 ), + LONG2CHARS( 0x000000000003FFE0 ), + LONG2CHARS( 0x000000000003FFF0 ), + LONG2CHARS( 0x000000000003FFF8 ), + LONG2CHARS( 0x000000000003FFFC ), + LONG2CHARS( 0x000000000003FFFE ), + LONG2CHARS( 0x000000000003FFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000010000 ), + LONG2CHARS( 0x0000000000018000 ), + LONG2CHARS( 0x000000000001C000 ), + LONG2CHARS( 0x000000000001E000 ), + LONG2CHARS( 0x000000000001F000 ), + LONG2CHARS( 0x000000000001F800 ), + LONG2CHARS( 0x000000000001FC00 ), + LONG2CHARS( 0x000000000001FE00 ), + LONG2CHARS( 0x000000000001FF00 ), + LONG2CHARS( 0x000000000001FF80 ), + LONG2CHARS( 0x000000000001FFC0 ), + LONG2CHARS( 0x000000000001FFE0 ), + LONG2CHARS( 0x000000000001FFF0 ), + LONG2CHARS( 0x000000000001FFF8 ), + LONG2CHARS( 0x000000000001FFFC ), + LONG2CHARS( 0x000000000001FFFE ), + LONG2CHARS( 0x000000000001FFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000008000 ), + LONG2CHARS( 0x000000000000C000 ), + LONG2CHARS( 0x000000000000E000 ), + LONG2CHARS( 0x000000000000F000 ), + LONG2CHARS( 0x000000000000F800 ), + LONG2CHARS( 0x000000000000FC00 ), + LONG2CHARS( 0x000000000000FE00 ), + LONG2CHARS( 0x000000000000FF00 ), + LONG2CHARS( 0x000000000000FF80 ), + LONG2CHARS( 0x000000000000FFC0 ), + LONG2CHARS( 0x000000000000FFE0 ), + LONG2CHARS( 0x000000000000FFF0 ), + LONG2CHARS( 0x000000000000FFF8 ), + LONG2CHARS( 0x000000000000FFFC ), + LONG2CHARS( 0x000000000000FFFE ), + LONG2CHARS( 0x000000000000FFFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000004000 ), + LONG2CHARS( 0x0000000000006000 ), + LONG2CHARS( 0x0000000000007000 ), + LONG2CHARS( 0x0000000000007800 ), + LONG2CHARS( 0x0000000000007C00 ), + LONG2CHARS( 0x0000000000007E00 ), + LONG2CHARS( 0x0000000000007F00 ), + LONG2CHARS( 0x0000000000007F80 ), + LONG2CHARS( 0x0000000000007FC0 ), + LONG2CHARS( 0x0000000000007FE0 ), + LONG2CHARS( 0x0000000000007FF0 ), + LONG2CHARS( 0x0000000000007FF8 ), + LONG2CHARS( 0x0000000000007FFC ), + LONG2CHARS( 0x0000000000007FFE ), + LONG2CHARS( 0x0000000000007FFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000002000 ), + LONG2CHARS( 0x0000000000003000 ), + LONG2CHARS( 0x0000000000003800 ), + LONG2CHARS( 0x0000000000003C00 ), + LONG2CHARS( 0x0000000000003E00 ), + LONG2CHARS( 0x0000000000003F00 ), + LONG2CHARS( 0x0000000000003F80 ), + LONG2CHARS( 0x0000000000003FC0 ), + LONG2CHARS( 0x0000000000003FE0 ), + LONG2CHARS( 0x0000000000003FF0 ), + LONG2CHARS( 0x0000000000003FF8 ), + LONG2CHARS( 0x0000000000003FFC ), + LONG2CHARS( 0x0000000000003FFE ), + LONG2CHARS( 0x0000000000003FFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000001000 ), + LONG2CHARS( 0x0000000000001800 ), + LONG2CHARS( 0x0000000000001C00 ), + LONG2CHARS( 0x0000000000001E00 ), + LONG2CHARS( 0x0000000000001F00 ), + LONG2CHARS( 0x0000000000001F80 ), + LONG2CHARS( 0x0000000000001FC0 ), + LONG2CHARS( 0x0000000000001FE0 ), + LONG2CHARS( 0x0000000000001FF0 ), + LONG2CHARS( 0x0000000000001FF8 ), + LONG2CHARS( 0x0000000000001FFC ), + LONG2CHARS( 0x0000000000001FFE ), + LONG2CHARS( 0x0000000000001FFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000800 ), + LONG2CHARS( 0x0000000000000C00 ), + LONG2CHARS( 0x0000000000000E00 ), + LONG2CHARS( 0x0000000000000F00 ), + LONG2CHARS( 0x0000000000000F80 ), + LONG2CHARS( 0x0000000000000FC0 ), + LONG2CHARS( 0x0000000000000FE0 ), + LONG2CHARS( 0x0000000000000FF0 ), + LONG2CHARS( 0x0000000000000FF8 ), + LONG2CHARS( 0x0000000000000FFC ), + LONG2CHARS( 0x0000000000000FFE ), + LONG2CHARS( 0x0000000000000FFF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000400 ), + LONG2CHARS( 0x0000000000000600 ), + LONG2CHARS( 0x0000000000000700 ), + LONG2CHARS( 0x0000000000000780 ), + LONG2CHARS( 0x00000000000007C0 ), + LONG2CHARS( 0x00000000000007E0 ), + LONG2CHARS( 0x00000000000007F0 ), + LONG2CHARS( 0x00000000000007F8 ), + LONG2CHARS( 0x00000000000007FC ), + LONG2CHARS( 0x00000000000007FE ), + LONG2CHARS( 0x00000000000007FF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000200 ), + LONG2CHARS( 0x0000000000000300 ), + LONG2CHARS( 0x0000000000000380 ), + LONG2CHARS( 0x00000000000003C0 ), + LONG2CHARS( 0x00000000000003E0 ), + LONG2CHARS( 0x00000000000003F0 ), + LONG2CHARS( 0x00000000000003F8 ), + LONG2CHARS( 0x00000000000003FC ), + LONG2CHARS( 0x00000000000003FE ), + LONG2CHARS( 0x00000000000003FF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000100 ), + LONG2CHARS( 0x0000000000000180 ), + LONG2CHARS( 0x00000000000001C0 ), + LONG2CHARS( 0x00000000000001E0 ), + LONG2CHARS( 0x00000000000001F0 ), + LONG2CHARS( 0x00000000000001F8 ), + LONG2CHARS( 0x00000000000001FC ), + LONG2CHARS( 0x00000000000001FE ), + LONG2CHARS( 0x00000000000001FF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000080 ), + LONG2CHARS( 0x00000000000000C0 ), + LONG2CHARS( 0x00000000000000E0 ), + LONG2CHARS( 0x00000000000000F0 ), + LONG2CHARS( 0x00000000000000F8 ), + LONG2CHARS( 0x00000000000000FC ), + LONG2CHARS( 0x00000000000000FE ), + LONG2CHARS( 0x00000000000000FF ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000040 ), + LONG2CHARS( 0x0000000000000060 ), + LONG2CHARS( 0x0000000000000070 ), + LONG2CHARS( 0x0000000000000078 ), + LONG2CHARS( 0x000000000000007C ), + LONG2CHARS( 0x000000000000007E ), + LONG2CHARS( 0x000000000000007F ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000020 ), + LONG2CHARS( 0x0000000000000030 ), + LONG2CHARS( 0x0000000000000038 ), + LONG2CHARS( 0x000000000000003C ), + LONG2CHARS( 0x000000000000003E ), + LONG2CHARS( 0x000000000000003F ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000010 ), + LONG2CHARS( 0x0000000000000018 ), + LONG2CHARS( 0x000000000000001C ), + LONG2CHARS( 0x000000000000001E ), + LONG2CHARS( 0x000000000000001F ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000008 ), + LONG2CHARS( 0x000000000000000C ), + LONG2CHARS( 0x000000000000000E ), + LONG2CHARS( 0x000000000000000F ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000004 ), + LONG2CHARS( 0x0000000000000006 ), + LONG2CHARS( 0x0000000000000007 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000002 ), + LONG2CHARS( 0x0000000000000003 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000001 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, +}; +#endif /* PPW */ + +#else /* LSBFirst */ +/* NOTE: +the first element in starttab could be LONG2CHARS( 0xffffffff. making it 0 +lets us deal with a full first word in the middle loop ), rather +than having to do the multiple reads and masks that we'd +have to do if we thought it was partial. +*/ +PixelType starttab[PPW+1] = + { +#if PPW == 32 + LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0xFFFFFFFE ), + LONG2CHARS( 0xFFFFFFFC ), + LONG2CHARS( 0xFFFFFFF8 ), + LONG2CHARS( 0xFFFFFFF0 ), + LONG2CHARS( 0xFFFFFFE0 ), + LONG2CHARS( 0xFFFFFFC0 ), + LONG2CHARS( 0xFFFFFF80 ), + LONG2CHARS( 0xFFFFFF00 ), + LONG2CHARS( 0xFFFFFE00 ), + LONG2CHARS( 0xFFFFFC00 ), + LONG2CHARS( 0xFFFFF800 ), + LONG2CHARS( 0xFFFFF000 ), + LONG2CHARS( 0xFFFFE000 ), + LONG2CHARS( 0xFFFFC000 ), + LONG2CHARS( 0xFFFF8000 ), + LONG2CHARS( 0xFFFF0000 ), + LONG2CHARS( 0xFFFE0000 ), + LONG2CHARS( 0xFFFC0000 ), + LONG2CHARS( 0xFFF80000 ), + LONG2CHARS( 0xFFF00000 ), + LONG2CHARS( 0xFFE00000 ), + LONG2CHARS( 0xFFC00000 ), + LONG2CHARS( 0xFF800000 ), + LONG2CHARS( 0xFF000000 ), + LONG2CHARS( 0xFE000000 ), + LONG2CHARS( 0xFC000000 ), + LONG2CHARS( 0xF8000000 ), + LONG2CHARS( 0xF0000000 ), + LONG2CHARS( 0xE0000000 ), + LONG2CHARS( 0xC0000000 ), + LONG2CHARS( 0x80000000 ), + LONG2CHARS( 0x00000000 ) +#else /* PPW == 64 */ + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0xFFFFFFFFFFFFFFFE ), + LONG2CHARS( 0xFFFFFFFFFFFFFFFC ), + LONG2CHARS( 0xFFFFFFFFFFFFFFF8 ), + LONG2CHARS( 0xFFFFFFFFFFFFFFF0 ), + LONG2CHARS( 0xFFFFFFFFFFFFFFE0 ), + LONG2CHARS( 0xFFFFFFFFFFFFFFC0 ), + LONG2CHARS( 0xFFFFFFFFFFFFFF80 ), + LONG2CHARS( 0xFFFFFFFFFFFFFF00 ), + LONG2CHARS( 0xFFFFFFFFFFFFFE00 ), + LONG2CHARS( 0xFFFFFFFFFFFFFC00 ), + LONG2CHARS( 0xFFFFFFFFFFFFF800 ), + LONG2CHARS( 0xFFFFFFFFFFFFF000 ), + LONG2CHARS( 0xFFFFFFFFFFFFE000 ), + LONG2CHARS( 0xFFFFFFFFFFFFC000 ), + LONG2CHARS( 0xFFFFFFFFFFFF8000 ), + LONG2CHARS( 0xFFFFFFFFFFFF0000 ), + LONG2CHARS( 0xFFFFFFFFFFFE0000 ), + LONG2CHARS( 0xFFFFFFFFFFFC0000 ), + LONG2CHARS( 0xFFFFFFFFFFF80000 ), + LONG2CHARS( 0xFFFFFFFFFFF00000 ), + LONG2CHARS( 0xFFFFFFFFFFE00000 ), + LONG2CHARS( 0xFFFFFFFFFFC00000 ), + LONG2CHARS( 0xFFFFFFFFFF800000 ), + LONG2CHARS( 0xFFFFFFFFFF000000 ), + LONG2CHARS( 0xFFFFFFFFFE000000 ), + LONG2CHARS( 0xFFFFFFFFFC000000 ), + LONG2CHARS( 0xFFFFFFFFF8000000 ), + LONG2CHARS( 0xFFFFFFFFF0000000 ), + LONG2CHARS( 0xFFFFFFFFE0000000 ), + LONG2CHARS( 0xFFFFFFFFC0000000 ), + LONG2CHARS( 0xFFFFFFFF80000000 ), + LONG2CHARS( 0xFFFFFFFF00000000 ), + LONG2CHARS( 0xFFFFFFFE00000000 ), + LONG2CHARS( 0xFFFFFFFC00000000 ), + LONG2CHARS( 0xFFFFFFF800000000 ), + LONG2CHARS( 0xFFFFFFF000000000 ), + LONG2CHARS( 0xFFFFFFE000000000 ), + LONG2CHARS( 0xFFFFFFC000000000 ), + LONG2CHARS( 0xFFFFFF8000000000 ), + LONG2CHARS( 0xFFFFFF0000000000 ), + LONG2CHARS( 0xFFFFFE0000000000 ), + LONG2CHARS( 0xFFFFFC0000000000 ), + LONG2CHARS( 0xFFFFF80000000000 ), + LONG2CHARS( 0xFFFFF00000000000 ), + LONG2CHARS( 0xFFFFE00000000000 ), + LONG2CHARS( 0xFFFFC00000000000 ), + LONG2CHARS( 0xFFFF800000000000 ), + LONG2CHARS( 0xFFFF000000000000 ), + LONG2CHARS( 0xFFFE000000000000 ), + LONG2CHARS( 0xFFFC000000000000 ), + LONG2CHARS( 0xFFF8000000000000 ), + LONG2CHARS( 0xFFF0000000000000 ), + LONG2CHARS( 0xFFE0000000000000 ), + LONG2CHARS( 0xFFC0000000000000 ), + LONG2CHARS( 0xFF80000000000000 ), + LONG2CHARS( 0xFF00000000000000 ), + LONG2CHARS( 0xFE00000000000000 ), + LONG2CHARS( 0xFC00000000000000 ), + LONG2CHARS( 0xF800000000000000 ), + LONG2CHARS( 0xF000000000000000 ), + LONG2CHARS( 0xE000000000000000 ), + LONG2CHARS( 0xC000000000000000 ), + LONG2CHARS( 0x8000000000000000 ), + LONG2CHARS( 0x0000000000000000 ) +#endif /* PPW */ + }; + +PixelType endtab[PPW+1] = + { + LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0x00000001 ), + LONG2CHARS( 0x00000003 ), + LONG2CHARS( 0x00000007 ), + LONG2CHARS( 0x0000000F ), + LONG2CHARS( 0x0000001F ), + LONG2CHARS( 0x0000003F ), + LONG2CHARS( 0x0000007F ), + LONG2CHARS( 0x000000FF ), + LONG2CHARS( 0x000001FF ), + LONG2CHARS( 0x000003FF ), + LONG2CHARS( 0x000007FF ), + LONG2CHARS( 0x00000FFF ), + LONG2CHARS( 0x00001FFF ), + LONG2CHARS( 0x00003FFF ), + LONG2CHARS( 0x00007FFF ), + LONG2CHARS( 0x0000FFFF ), + LONG2CHARS( 0x0001FFFF ), + LONG2CHARS( 0x0003FFFF ), + LONG2CHARS( 0x0007FFFF ), + LONG2CHARS( 0x000FFFFF ), + LONG2CHARS( 0x001FFFFF ), + LONG2CHARS( 0x003FFFFF ), + LONG2CHARS( 0x007FFFFF ), + LONG2CHARS( 0x00FFFFFF ), + LONG2CHARS( 0x01FFFFFF ), + LONG2CHARS( 0x03FFFFFF ), + LONG2CHARS( 0x07FFFFFF ), + LONG2CHARS( 0x0FFFFFFF ), + LONG2CHARS( 0x1FFFFFFF ), + LONG2CHARS( 0x3FFFFFFF ), + LONG2CHARS( 0x7FFFFFFF ), + LONG2CHARS( 0xFFFFFFFF ) +#if PPW == 64 + , + LONG2CHARS( 0x00000001FFFFFFFF ), + LONG2CHARS( 0x00000003FFFFFFFF ), + LONG2CHARS( 0x00000007FFFFFFFF ), + LONG2CHARS( 0x0000000FFFFFFFFF ), + LONG2CHARS( 0x0000001FFFFFFFFF ), + LONG2CHARS( 0x0000003FFFFFFFFF ), + LONG2CHARS( 0x0000007FFFFFFFFF ), + LONG2CHARS( 0x000000FFFFFFFFFF ), + LONG2CHARS( 0x000001FFFFFFFFFF ), + LONG2CHARS( 0x000003FFFFFFFFFF ), + LONG2CHARS( 0x000007FFFFFFFFFF ), + LONG2CHARS( 0x00000FFFFFFFFFFF ), + LONG2CHARS( 0x00001FFFFFFFFFFF ), + LONG2CHARS( 0x00003FFFFFFFFFFF ), + LONG2CHARS( 0x00007FFFFFFFFFFF ), + LONG2CHARS( 0x0000FFFFFFFFFFFF ), + LONG2CHARS( 0x0001FFFFFFFFFFFF ), + LONG2CHARS( 0x0003FFFFFFFFFFFF ), + LONG2CHARS( 0x0007FFFFFFFFFFFF ), + LONG2CHARS( 0x000FFFFFFFFFFFFF ), + LONG2CHARS( 0x001FFFFFFFFFFFFF ), + LONG2CHARS( 0x003FFFFFFFFFFFFF ), + LONG2CHARS( 0x007FFFFFFFFFFFFF ), + LONG2CHARS( 0x00FFFFFFFFFFFFFF ), + LONG2CHARS( 0x01FFFFFFFFFFFFFF ), + LONG2CHARS( 0x03FFFFFFFFFFFFFF ), + LONG2CHARS( 0x07FFFFFFFFFFFFFF ), + LONG2CHARS( 0x0FFFFFFFFFFFFFFF ), + LONG2CHARS( 0x1FFFFFFFFFFFFFFF ), + LONG2CHARS( 0x3FFFFFFFFFFFFFFF ), + LONG2CHARS( 0x7FFFFFFFFFFFFFFF ), + LONG2CHARS( 0xFFFFFFFFFFFFFFFF ) +#endif /* PPW */ + }; + +#ifndef LOWMEMFTPT + +#ifdef NEED_OLD_MFB_MASKS +/* 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.) +*/ +PixelType startpartial[33] = + { + LONG2CHARS( 0xFFFFFFFF ), + LONG2CHARS( 0xFFFFFFFE ), + LONG2CHARS( 0xFFFFFFFC ), + LONG2CHARS( 0xFFFFFFF8 ), + LONG2CHARS( 0xFFFFFFF0 ), + LONG2CHARS( 0xFFFFFFE0 ), + LONG2CHARS( 0xFFFFFFC0 ), + LONG2CHARS( 0xFFFFFF80 ), + LONG2CHARS( 0xFFFFFF00 ), + LONG2CHARS( 0xFFFFFE00 ), + LONG2CHARS( 0xFFFFFC00 ), + LONG2CHARS( 0xFFFFF800 ), + LONG2CHARS( 0xFFFFF000 ), + LONG2CHARS( 0xFFFFE000 ), + LONG2CHARS( 0xFFFFC000 ), + LONG2CHARS( 0xFFFF8000 ), + LONG2CHARS( 0xFFFF0000 ), + LONG2CHARS( 0xFFFE0000 ), + LONG2CHARS( 0xFFFC0000 ), + LONG2CHARS( 0xFFF80000 ), + LONG2CHARS( 0xFFF00000 ), + LONG2CHARS( 0xFFE00000 ), + LONG2CHARS( 0xFFC00000 ), + LONG2CHARS( 0xFF800000 ), + LONG2CHARS( 0xFF000000 ), + LONG2CHARS( 0xFE000000 ), + LONG2CHARS( 0xFC000000 ), + LONG2CHARS( 0xF8000000 ), + LONG2CHARS( 0xF0000000 ), + LONG2CHARS( 0xE0000000 ), + LONG2CHARS( 0xC0000000 ), + LONG2CHARS( 0x80000000 ), + LONG2CHARS( 0x00000000 ) + }; + +PixelType endpartial[33] = + { + LONG2CHARS( 0xFFFFFFFF ), + LONG2CHARS( 0x00000001 ), + LONG2CHARS( 0x00000003 ), + LONG2CHARS( 0x00000007 ), + LONG2CHARS( 0x0000000F ), + LONG2CHARS( 0x0000001F ), + LONG2CHARS( 0x0000003F ), + LONG2CHARS( 0x0000007F ), + LONG2CHARS( 0x000000FF ), + LONG2CHARS( 0x000001FF ), + LONG2CHARS( 0x000003FF ), + LONG2CHARS( 0x000007FF ), + LONG2CHARS( 0x00000FFF ), + LONG2CHARS( 0x00001FFF ), + LONG2CHARS( 0x00003FFF ), + LONG2CHARS( 0x00007FFF ), + LONG2CHARS( 0x0000FFFF ), + LONG2CHARS( 0x0001FFFF ), + LONG2CHARS( 0x0003FFFF ), + LONG2CHARS( 0x0007FFFF ), + LONG2CHARS( 0x000FFFFF ), + LONG2CHARS( 0x001FFFFF ), + LONG2CHARS( 0x003FFFFF ), + LONG2CHARS( 0x007FFFFF ), + LONG2CHARS( 0x00FFFFFF ), + LONG2CHARS( 0x01FFFFFF ), + LONG2CHARS( 0x03FFFFFF ), + LONG2CHARS( 0x07FFFFFF ), + LONG2CHARS( 0x0FFFFFFF ), + LONG2CHARS( 0x1FFFFFFF ), + LONG2CHARS( 0x3FFFFFFF ), + LONG2CHARS( 0x7FFFFFFF ), + LONG2CHARS( 0xFFFFFFFF ) + }; +#endif + +#endif /* ifndef LOWMEMFTPT */ + +#if PPW == 32 +PixelType partmasks[PPW][PPW] = { + {LONG2CHARS( 0xFFFFFFFF ), LONG2CHARS( 0x00000001 ), LONG2CHARS( 0x00000003 ), LONG2CHARS( 0x00000007 ), + LONG2CHARS( 0x0000000F ), LONG2CHARS( 0x0000001F ), LONG2CHARS( 0x0000003F ), LONG2CHARS( 0x0000007F ), + LONG2CHARS( 0x000000FF ), LONG2CHARS( 0x000001FF ), LONG2CHARS( 0x000003FF ), LONG2CHARS( 0x000007FF ), + LONG2CHARS( 0x00000FFF ), LONG2CHARS( 0x00001FFF ), LONG2CHARS( 0x00003FFF ), LONG2CHARS( 0x00007FFF ), + LONG2CHARS( 0x0000FFFF ), LONG2CHARS( 0x0001FFFF ), LONG2CHARS( 0x0003FFFF ), LONG2CHARS( 0x0007FFFF ), + LONG2CHARS( 0x000FFFFF ), LONG2CHARS( 0x001FFFFF ), LONG2CHARS( 0x003FFFFF ), LONG2CHARS( 0x007FFFFF ), + LONG2CHARS( 0x00FFFFFF ), LONG2CHARS( 0x01FFFFFF ), LONG2CHARS( 0x03FFFFFF ), LONG2CHARS( 0x07FFFFFF ), + LONG2CHARS( 0x0FFFFFFF ), LONG2CHARS( 0x1FFFFFFF ), LONG2CHARS( 0x3FFFFFFF ), LONG2CHARS( 0x7FFFFFFF )}, + {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000002 ), LONG2CHARS( 0x00000006 ), LONG2CHARS( 0x0000000E ), + LONG2CHARS( 0x0000001E ), LONG2CHARS( 0x0000003E ), LONG2CHARS( 0x0000007E ), LONG2CHARS( 0x000000FE ), + LONG2CHARS( 0x000001FE ), LONG2CHARS( 0x000003FE ), LONG2CHARS( 0x000007FE ), LONG2CHARS( 0x00000FFE ), + LONG2CHARS( 0x00001FFE ), LONG2CHARS( 0x00003FFE ), LONG2CHARS( 0x00007FFE ), LONG2CHARS( 0x0000FFFE ), + LONG2CHARS( 0x0001FFFE ), LONG2CHARS( 0x0003FFFE ), LONG2CHARS( 0x0007FFFE ), LONG2CHARS( 0x000FFFFE ), + LONG2CHARS( 0x001FFFFE ), LONG2CHARS( 0x003FFFFE ), LONG2CHARS( 0x007FFFFE ), LONG2CHARS( 0x00FFFFFE ), + LONG2CHARS( 0x01FFFFFE ), LONG2CHARS( 0x03FFFFFE ), LONG2CHARS( 0x07FFFFFE ), LONG2CHARS( 0x0FFFFFFE ), + LONG2CHARS( 0x1FFFFFFE ), LONG2CHARS( 0x3FFFFFFE ), LONG2CHARS( 0x7FFFFFFE ), LONG2CHARS( 0xFFFFFFFE )}, + {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000004 ), LONG2CHARS( 0x0000000C ), LONG2CHARS( 0x0000001C ), + LONG2CHARS( 0x0000003C ), LONG2CHARS( 0x0000007C ), LONG2CHARS( 0x000000FC ), LONG2CHARS( 0x000001FC ), + LONG2CHARS( 0x000003FC ), LONG2CHARS( 0x000007FC ), LONG2CHARS( 0x00000FFC ), LONG2CHARS( 0x00001FFC ), + LONG2CHARS( 0x00003FFC ), LONG2CHARS( 0x00007FFC ), LONG2CHARS( 0x0000FFFC ), LONG2CHARS( 0x0001FFFC ), + LONG2CHARS( 0x0003FFFC ), LONG2CHARS( 0x0007FFFC ), LONG2CHARS( 0x000FFFFC ), LONG2CHARS( 0x001FFFFC ), + LONG2CHARS( 0x003FFFFC ), LONG2CHARS( 0x007FFFFC ), LONG2CHARS( 0x00FFFFFC ), LONG2CHARS( 0x01FFFFFC ), + LONG2CHARS( 0x03FFFFFC ), LONG2CHARS( 0x07FFFFFC ), LONG2CHARS( 0x0FFFFFFC ), LONG2CHARS( 0x1FFFFFFC ), + LONG2CHARS( 0x3FFFFFFC ), LONG2CHARS( 0x7FFFFFFC ), LONG2CHARS( 0xFFFFFFFC ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000008 ), LONG2CHARS( 0x00000018 ), LONG2CHARS( 0x00000038 ), + LONG2CHARS( 0x00000078 ), LONG2CHARS( 0x000000F8 ), LONG2CHARS( 0x000001F8 ), LONG2CHARS( 0x000003F8 ), + LONG2CHARS( 0x000007F8 ), LONG2CHARS( 0x00000FF8 ), LONG2CHARS( 0x00001FF8 ), LONG2CHARS( 0x00003FF8 ), + LONG2CHARS( 0X00007FF8 ), LONG2CHARS( 0x0000FFF8 ), LONG2CHARS( 0x0001FFF8 ), LONG2CHARS( 0x0003FFF8 ), + LONG2CHARS( 0X0007FFF8 ), LONG2CHARS( 0x000FFFF8 ), LONG2CHARS( 0x001FFFF8 ), LONG2CHARS( 0x003FFFF8 ), + LONG2CHARS( 0X007FFFF8 ), LONG2CHARS( 0x00FFFFF8 ), LONG2CHARS( 0x01FFFFF8 ), LONG2CHARS( 0x03FFFFF8 ), + LONG2CHARS( 0X07FFFFF8 ), LONG2CHARS( 0x0FFFFFF8 ), LONG2CHARS( 0x1FFFFFF8 ), LONG2CHARS( 0x3FFFFFF8 ), + LONG2CHARS( 0X7FFFFFF8 ), LONG2CHARS( 0xFFFFFFF8 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000010 ), LONG2CHARS( 0x00000030 ), LONG2CHARS( 0x00000070 ), + LONG2CHARS( 0X000000F0 ), LONG2CHARS( 0x000001F0 ), LONG2CHARS( 0x000003F0 ), LONG2CHARS( 0x000007F0 ), + LONG2CHARS( 0X00000FF0 ), LONG2CHARS( 0x00001FF0 ), LONG2CHARS( 0x00003FF0 ), LONG2CHARS( 0x00007FF0 ), + LONG2CHARS( 0X0000FFF0 ), LONG2CHARS( 0x0001FFF0 ), LONG2CHARS( 0x0003FFF0 ), LONG2CHARS( 0x0007FFF0 ), + LONG2CHARS( 0X000FFFF0 ), LONG2CHARS( 0x001FFFF0 ), LONG2CHARS( 0x003FFFF0 ), LONG2CHARS( 0x007FFFF0 ), + LONG2CHARS( 0X00FFFFF0 ), LONG2CHARS( 0x01FFFFF0 ), LONG2CHARS( 0x03FFFFF0 ), LONG2CHARS( 0x07FFFFF0 ), + LONG2CHARS( 0X0FFFFFF0 ), LONG2CHARS( 0x1FFFFFF0 ), LONG2CHARS( 0x3FFFFFF0 ), LONG2CHARS( 0x7FFFFFF0 ), + LONG2CHARS( 0XFFFFFFF0 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000020 ), LONG2CHARS( 0x00000060 ), LONG2CHARS( 0x000000E0 ), + LONG2CHARS( 0X000001E0 ), LONG2CHARS( 0x000003E0 ), LONG2CHARS( 0x000007E0 ), LONG2CHARS( 0x00000FE0 ), + LONG2CHARS( 0X00001FE0 ), LONG2CHARS( 0x00003FE0 ), LONG2CHARS( 0x00007FE0 ), LONG2CHARS( 0x0000FFE0 ), + LONG2CHARS( 0X0001FFE0 ), LONG2CHARS( 0x0003FFE0 ), LONG2CHARS( 0x0007FFE0 ), LONG2CHARS( 0x000FFFE0 ), + LONG2CHARS( 0X001FFFE0 ), LONG2CHARS( 0x003FFFE0 ), LONG2CHARS( 0x007FFFE0 ), LONG2CHARS( 0x00FFFFE0 ), + LONG2CHARS( 0X01FFFFE0 ), LONG2CHARS( 0x03FFFFE0 ), LONG2CHARS( 0x07FFFFE0 ), LONG2CHARS( 0x0FFFFFE0 ), + LONG2CHARS( 0X1FFFFFE0 ), LONG2CHARS( 0x3FFFFFE0 ), LONG2CHARS( 0x7FFFFFE0 ), LONG2CHARS( 0xFFFFFFE0 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000040 ), LONG2CHARS( 0x000000C0 ), LONG2CHARS( 0x000001C0 ), + LONG2CHARS( 0X000003C0 ), LONG2CHARS( 0x000007C0 ), LONG2CHARS( 0x00000FC0 ), LONG2CHARS( 0x00001FC0 ), + LONG2CHARS( 0X00003FC0 ), LONG2CHARS( 0x00007FC0 ), LONG2CHARS( 0x0000FFC0 ), LONG2CHARS( 0x0001FFC0 ), + LONG2CHARS( 0X0003FFC0 ), LONG2CHARS( 0x0007FFC0 ), LONG2CHARS( 0x000FFFC0 ), LONG2CHARS( 0x001FFFC0 ), + LONG2CHARS( 0X003FFFC0 ), LONG2CHARS( 0x007FFFC0 ), LONG2CHARS( 0x00FFFFC0 ), LONG2CHARS( 0x01FFFFC0 ), + LONG2CHARS( 0X03FFFFC0 ), LONG2CHARS( 0x07FFFFC0 ), LONG2CHARS( 0x0FFFFFC0 ), LONG2CHARS( 0x1FFFFFC0 ), + LONG2CHARS( 0X3FFFFFC0 ), LONG2CHARS( 0x7FFFFFC0 ), LONG2CHARS( 0xFFFFFFC0 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000080 ), LONG2CHARS( 0x00000180 ), LONG2CHARS( 0x00000380 ), + LONG2CHARS( 0X00000780 ), LONG2CHARS( 0x00000F80 ), LONG2CHARS( 0x00001F80 ), LONG2CHARS( 0x00003F80 ), + LONG2CHARS( 0X00007F80 ), LONG2CHARS( 0x0000FF80 ), LONG2CHARS( 0x0001FF80 ), LONG2CHARS( 0x0003FF80 ), + LONG2CHARS( 0X0007FF80 ), LONG2CHARS( 0x000FFF80 ), LONG2CHARS( 0x001FFF80 ), LONG2CHARS( 0x003FFF80 ), + LONG2CHARS( 0X007FFF80 ), LONG2CHARS( 0x00FFFF80 ), LONG2CHARS( 0x01FFFF80 ), LONG2CHARS( 0x03FFFF80 ), + LONG2CHARS( 0X07FFFF80 ), LONG2CHARS( 0x0FFFFF80 ), LONG2CHARS( 0x1FFFFF80 ), LONG2CHARS( 0x3FFFFF80 ), + LONG2CHARS( 0X7FFFFF80 ), LONG2CHARS( 0xFFFFFF80 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000100 ), LONG2CHARS( 0x00000300 ), LONG2CHARS( 0x00000700 ), + LONG2CHARS( 0X00000F00 ), LONG2CHARS( 0x00001F00 ), LONG2CHARS( 0x00003F00 ), LONG2CHARS( 0x00007F00 ), + LONG2CHARS( 0X0000FF00 ), LONG2CHARS( 0x0001FF00 ), LONG2CHARS( 0x0003FF00 ), LONG2CHARS( 0x0007FF00 ), + LONG2CHARS( 0X000FFF00 ), LONG2CHARS( 0x001FFF00 ), LONG2CHARS( 0x003FFF00 ), LONG2CHARS( 0x007FFF00 ), + LONG2CHARS( 0X00FFFF00 ), LONG2CHARS( 0x01FFFF00 ), LONG2CHARS( 0x03FFFF00 ), LONG2CHARS( 0x07FFFF00 ), + LONG2CHARS( 0X0FFFFF00 ), LONG2CHARS( 0x1FFFFF00 ), LONG2CHARS( 0x3FFFFF00 ), LONG2CHARS( 0x7FFFFF00 ), + LONG2CHARS( 0XFFFFFF00 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000200 ), LONG2CHARS( 0x00000600 ), LONG2CHARS( 0x00000E00 ), + LONG2CHARS( 0X00001E00 ), LONG2CHARS( 0x00003E00 ), LONG2CHARS( 0x00007E00 ), LONG2CHARS( 0x0000FE00 ), + LONG2CHARS( 0X0001FE00 ), LONG2CHARS( 0x0003FE00 ), LONG2CHARS( 0x0007FE00 ), LONG2CHARS( 0x000FFE00 ), + LONG2CHARS( 0X001FFE00 ), LONG2CHARS( 0x003FFE00 ), LONG2CHARS( 0x007FFE00 ), LONG2CHARS( 0x00FFFE00 ), + LONG2CHARS( 0X01FFFE00 ), LONG2CHARS( 0x03FFFE00 ), LONG2CHARS( 0x07FFFE00 ), LONG2CHARS( 0x0FFFFE00 ), + LONG2CHARS( 0X1FFFFE00 ), LONG2CHARS( 0x3FFFFE00 ), LONG2CHARS( 0x7FFFFE00 ), LONG2CHARS( 0xFFFFFE00 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000400 ), LONG2CHARS( 0x00000C00 ), LONG2CHARS( 0x00001C00 ), + LONG2CHARS( 0X00003C00 ), LONG2CHARS( 0x00007C00 ), LONG2CHARS( 0x0000FC00 ), LONG2CHARS( 0x0001FC00 ), + LONG2CHARS( 0X0003FC00 ), LONG2CHARS( 0x0007FC00 ), LONG2CHARS( 0x000FFC00 ), LONG2CHARS( 0x001FFC00 ), + LONG2CHARS( 0X003FFC00 ), LONG2CHARS( 0x007FFC00 ), LONG2CHARS( 0x00FFFC00 ), LONG2CHARS( 0x01FFFC00 ), + LONG2CHARS( 0X03FFFC00 ), LONG2CHARS( 0x07FFFC00 ), LONG2CHARS( 0x0FFFFC00 ), LONG2CHARS( 0x1FFFFC00 ), + LONG2CHARS( 0X3FFFFC00 ), LONG2CHARS( 0x7FFFFC00 ), LONG2CHARS( 0xFFFFFC00 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000800 ), LONG2CHARS( 0x00001800 ), LONG2CHARS( 0x00003800 ), + LONG2CHARS( 0X00007800 ), LONG2CHARS( 0x0000F800 ), LONG2CHARS( 0x0001F800 ), LONG2CHARS( 0x0003F800 ), + LONG2CHARS( 0X0007F800 ), LONG2CHARS( 0x000FF800 ), LONG2CHARS( 0x001FF800 ), LONG2CHARS( 0x003FF800 ), + LONG2CHARS( 0X007FF800 ), LONG2CHARS( 0x00FFF800 ), LONG2CHARS( 0x01FFF800 ), LONG2CHARS( 0x03FFF800 ), + LONG2CHARS( 0X07FFF800 ), LONG2CHARS( 0x0FFFF800 ), LONG2CHARS( 0x1FFFF800 ), LONG2CHARS( 0x3FFFF800 ), + LONG2CHARS( 0X7FFFF800 ), LONG2CHARS( 0xFFFFF800 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00001000 ), LONG2CHARS( 0x00003000 ), LONG2CHARS( 0x00007000 ), + LONG2CHARS( 0X0000F000 ), LONG2CHARS( 0x0001F000 ), LONG2CHARS( 0x0003F000 ), LONG2CHARS( 0x0007F000 ), + LONG2CHARS( 0X000FF000 ), LONG2CHARS( 0x001FF000 ), LONG2CHARS( 0x003FF000 ), LONG2CHARS( 0x007FF000 ), + LONG2CHARS( 0X00FFF000 ), LONG2CHARS( 0x01FFF000 ), LONG2CHARS( 0x03FFF000 ), LONG2CHARS( 0x07FFF000 ), + LONG2CHARS( 0X0FFFF000 ), LONG2CHARS( 0x1FFFF000 ), LONG2CHARS( 0x3FFFF000 ), LONG2CHARS( 0x7FFFF000 ), + LONG2CHARS( 0XFFFFF000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00002000 ), LONG2CHARS( 0x00006000 ), LONG2CHARS( 0x0000E000 ), + LONG2CHARS( 0X0001E000 ), LONG2CHARS( 0x0003E000 ), LONG2CHARS( 0x0007E000 ), LONG2CHARS( 0x000FE000 ), + LONG2CHARS( 0X001FE000 ), LONG2CHARS( 0x003FE000 ), LONG2CHARS( 0x007FE000 ), LONG2CHARS( 0x00FFE000 ), + LONG2CHARS( 0X01FFE000 ), LONG2CHARS( 0x03FFE000 ), LONG2CHARS( 0x07FFE000 ), LONG2CHARS( 0x0FFFE000 ), + LONG2CHARS( 0X1FFFE000 ), LONG2CHARS( 0x3FFFE000 ), LONG2CHARS( 0x7FFFE000 ), LONG2CHARS( 0xFFFFE000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00004000 ), LONG2CHARS( 0x0000C000 ), LONG2CHARS( 0x0001C000 ), + LONG2CHARS( 0X0003C000 ), LONG2CHARS( 0x0007C000 ), LONG2CHARS( 0x000FC000 ), LONG2CHARS( 0x001FC000 ), + LONG2CHARS( 0X003FC000 ), LONG2CHARS( 0x007FC000 ), LONG2CHARS( 0x00FFC000 ), LONG2CHARS( 0x01FFC000 ), + LONG2CHARS( 0X03FFC000 ), LONG2CHARS( 0x07FFC000 ), LONG2CHARS( 0x0FFFC000 ), LONG2CHARS( 0x1FFFC000 ), + LONG2CHARS( 0X3FFFC000 ), LONG2CHARS( 0x7FFFC000 ), LONG2CHARS( 0xFFFFC000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00008000 ), LONG2CHARS( 0x00018000 ), LONG2CHARS( 0x00038000 ), + LONG2CHARS( 0X00078000 ), LONG2CHARS( 0x000F8000 ), LONG2CHARS( 0x001F8000 ), LONG2CHARS( 0x003F8000 ), + LONG2CHARS( 0X007F8000 ), LONG2CHARS( 0x00FF8000 ), LONG2CHARS( 0x01FF8000 ), LONG2CHARS( 0x03FF8000 ), + LONG2CHARS( 0X07FF8000 ), LONG2CHARS( 0x0FFF8000 ), LONG2CHARS( 0x1FFF8000 ), LONG2CHARS( 0x3FFF8000 ), + LONG2CHARS( 0X7FFF8000 ), LONG2CHARS( 0xFFFF8000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00010000 ), LONG2CHARS( 0x00030000 ), LONG2CHARS( 0x00070000 ), + LONG2CHARS( 0X000F0000 ), LONG2CHARS( 0x001F0000 ), LONG2CHARS( 0x003F0000 ), LONG2CHARS( 0x007F0000 ), + LONG2CHARS( 0X00FF0000 ), LONG2CHARS( 0x01FF0000 ), LONG2CHARS( 0x03FF0000 ), LONG2CHARS( 0x07FF0000 ), + LONG2CHARS( 0X0FFF0000 ), LONG2CHARS( 0x1FFF0000 ), LONG2CHARS( 0x3FFF0000 ), LONG2CHARS( 0x7FFF0000 ), + LONG2CHARS( 0XFFFF0000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00020000 ), LONG2CHARS( 0x00060000 ), LONG2CHARS( 0x000E0000 ), + LONG2CHARS( 0X001E0000 ), LONG2CHARS( 0x003E0000 ), LONG2CHARS( 0x007E0000 ), LONG2CHARS( 0x00FE0000 ), + LONG2CHARS( 0X01FE0000 ), LONG2CHARS( 0x03FE0000 ), LONG2CHARS( 0x07FE0000 ), LONG2CHARS( 0x0FFE0000 ), + LONG2CHARS( 0X1FFE0000 ), LONG2CHARS( 0x3FFE0000 ), LONG2CHARS( 0x7FFE0000 ), LONG2CHARS( 0xFFFE0000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00040000 ), LONG2CHARS( 0x000C0000 ), LONG2CHARS( 0x001C0000 ), + LONG2CHARS( 0X003C0000 ), LONG2CHARS( 0x007C0000 ), LONG2CHARS( 0x00FC0000 ), LONG2CHARS( 0x01FC0000 ), + LONG2CHARS( 0X03FC0000 ), LONG2CHARS( 0x07FC0000 ), LONG2CHARS( 0x0FFC0000 ), LONG2CHARS( 0x1FFC0000 ), + LONG2CHARS( 0X3FFC0000 ), LONG2CHARS( 0x7FFC0000 ), LONG2CHARS( 0xFFFC0000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00080000 ), LONG2CHARS( 0x00180000 ), LONG2CHARS( 0x00380000 ), + LONG2CHARS( 0X00780000 ), LONG2CHARS( 0x00F80000 ), LONG2CHARS( 0x01F80000 ), LONG2CHARS( 0x03F80000 ), + LONG2CHARS( 0X07F80000 ), LONG2CHARS( 0x0FF80000 ), LONG2CHARS( 0x1FF80000 ), LONG2CHARS( 0x3FF80000 ), + LONG2CHARS( 0X7FF80000 ), LONG2CHARS( 0xFFF80000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00100000 ), LONG2CHARS( 0x00300000 ), LONG2CHARS( 0x00700000 ), + LONG2CHARS( 0X00F00000 ), LONG2CHARS( 0x01F00000 ), LONG2CHARS( 0x03F00000 ), LONG2CHARS( 0x07F00000 ), + LONG2CHARS( 0X0FF00000 ), LONG2CHARS( 0x1FF00000 ), LONG2CHARS( 0x3FF00000 ), LONG2CHARS( 0x7FF00000 ), + LONG2CHARS( 0XFFF00000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00200000 ), LONG2CHARS( 0x00600000 ), LONG2CHARS( 0x00E00000 ), + LONG2CHARS( 0X01E00000 ), LONG2CHARS( 0x03E00000 ), LONG2CHARS( 0x07E00000 ), LONG2CHARS( 0x0FE00000 ), + LONG2CHARS( 0X1FE00000 ), LONG2CHARS( 0x3FE00000 ), LONG2CHARS( 0x7FE00000 ), LONG2CHARS( 0xFFE00000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00400000 ), LONG2CHARS( 0x00C00000 ), LONG2CHARS( 0x01C00000 ), + LONG2CHARS( 0X03C00000 ), LONG2CHARS( 0x07C00000 ), LONG2CHARS( 0x0FC00000 ), LONG2CHARS( 0x1FC00000 ), + LONG2CHARS( 0X3FC00000 ), LONG2CHARS( 0x7FC00000 ), LONG2CHARS( 0xFFC00000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00800000 ), LONG2CHARS( 0x01800000 ), LONG2CHARS( 0x03800000 ), + LONG2CHARS( 0X07800000 ), LONG2CHARS( 0x0F800000 ), LONG2CHARS( 0x1F800000 ), LONG2CHARS( 0x3F800000 ), + LONG2CHARS( 0X7F800000 ), LONG2CHARS( 0xFF800000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x01000000 ), LONG2CHARS( 0x03000000 ), LONG2CHARS( 0x07000000 ), + LONG2CHARS( 0X0F000000 ), LONG2CHARS( 0x1F000000 ), LONG2CHARS( 0x3F000000 ), LONG2CHARS( 0x7F000000 ), + LONG2CHARS( 0XFF000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x02000000 ), LONG2CHARS( 0x06000000 ), LONG2CHARS( 0x0E000000 ), + LONG2CHARS( 0X1E000000 ), LONG2CHARS( 0x3E000000 ), LONG2CHARS( 0x7E000000 ), LONG2CHARS( 0xFE000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x04000000 ), LONG2CHARS( 0x0C000000 ), LONG2CHARS( 0x1C000000 ), + LONG2CHARS( 0X3C000000 ), LONG2CHARS( 0x7C000000 ), LONG2CHARS( 0xFC000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x08000000 ), LONG2CHARS( 0x18000000 ), LONG2CHARS( 0x38000000 ), + LONG2CHARS( 0X78000000 ), LONG2CHARS( 0xF8000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x10000000 ), LONG2CHARS( 0x30000000 ), LONG2CHARS( 0x70000000 ), + LONG2CHARS( 0XF0000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x20000000 ), LONG2CHARS( 0x60000000 ), LONG2CHARS( 0xE0000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x40000000 ), LONG2CHARS( 0xC0000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, + {LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x80000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), + LONG2CHARS( 0X00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 ), LONG2CHARS( 0x00000000 )}, +}; +#else /* PPW == 64 */ +unsigned long partmasks[PPW][PPW] = { + { + LONG2CHARS( 0xFFFFFFFFFFFFFFFF ), + LONG2CHARS( 0x0000000000000001 ), + LONG2CHARS( 0x0000000000000003 ), + LONG2CHARS( 0x0000000000000007 ), + LONG2CHARS( 0x000000000000000F ), + LONG2CHARS( 0x000000000000001F ), + LONG2CHARS( 0x000000000000003F ), + LONG2CHARS( 0x000000000000007F ), + LONG2CHARS( 0x00000000000000FF ), + LONG2CHARS( 0x00000000000001FF ), + LONG2CHARS( 0x00000000000003FF ), + LONG2CHARS( 0x00000000000007FF ), + LONG2CHARS( 0x0000000000000FFF ), + LONG2CHARS( 0x0000000000001FFF ), + LONG2CHARS( 0x0000000000003FFF ), + LONG2CHARS( 0x0000000000007FFF ), + LONG2CHARS( 0x000000000000FFFF ), + LONG2CHARS( 0x000000000001FFFF ), + LONG2CHARS( 0x000000000003FFFF ), + LONG2CHARS( 0x000000000007FFFF ), + LONG2CHARS( 0x00000000000FFFFF ), + LONG2CHARS( 0x00000000001FFFFF ), + LONG2CHARS( 0x00000000003FFFFF ), + LONG2CHARS( 0x00000000007FFFFF ), + LONG2CHARS( 0x0000000000FFFFFF ), + LONG2CHARS( 0x0000000001FFFFFF ), + LONG2CHARS( 0x0000000003FFFFFF ), + LONG2CHARS( 0x0000000007FFFFFF ), + LONG2CHARS( 0x000000000FFFFFFF ), + LONG2CHARS( 0x000000001FFFFFFF ), + LONG2CHARS( 0x000000003FFFFFFF ), + LONG2CHARS( 0x000000007FFFFFFF ), + LONG2CHARS( 0x00000000FFFFFFFF ), + LONG2CHARS( 0x00000001FFFFFFFF ), + LONG2CHARS( 0x00000003FFFFFFFF ), + LONG2CHARS( 0x00000007FFFFFFFF ), + LONG2CHARS( 0x0000000FFFFFFFFF ), + LONG2CHARS( 0x0000001FFFFFFFFF ), + LONG2CHARS( 0x0000003FFFFFFFFF ), + LONG2CHARS( 0x0000007FFFFFFFFF ), + LONG2CHARS( 0x000000FFFFFFFFFF ), + LONG2CHARS( 0x000001FFFFFFFFFF ), + LONG2CHARS( 0x000003FFFFFFFFFF ), + LONG2CHARS( 0x000007FFFFFFFFFF ), + LONG2CHARS( 0x00000FFFFFFFFFFF ), + LONG2CHARS( 0x00001FFFFFFFFFFF ), + LONG2CHARS( 0x00003FFFFFFFFFFF ), + LONG2CHARS( 0x00007FFFFFFFFFFF ), + LONG2CHARS( 0x0000FFFFFFFFFFFF ), + LONG2CHARS( 0x0001FFFFFFFFFFFF ), + LONG2CHARS( 0x0003FFFFFFFFFFFF ), + LONG2CHARS( 0x0007FFFFFFFFFFFF ), + LONG2CHARS( 0x000FFFFFFFFFFFFF ), + LONG2CHARS( 0x001FFFFFFFFFFFFF ), + LONG2CHARS( 0x003FFFFFFFFFFFFF ), + LONG2CHARS( 0x007FFFFFFFFFFFFF ), + LONG2CHARS( 0x00FFFFFFFFFFFFFF ), + LONG2CHARS( 0x01FFFFFFFFFFFFFF ), + LONG2CHARS( 0x03FFFFFFFFFFFFFF ), + LONG2CHARS( 0x07FFFFFFFFFFFFFF ), + LONG2CHARS( 0x0FFFFFFFFFFFFFFF ), + LONG2CHARS( 0x1FFFFFFFFFFFFFFF ), + LONG2CHARS( 0x3FFFFFFFFFFFFFFF ), + LONG2CHARS( 0x7FFFFFFFFFFFFFFF ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000002 ), + LONG2CHARS( 0x0000000000000006 ), + LONG2CHARS( 0x000000000000000E ), + LONG2CHARS( 0x000000000000001E ), + LONG2CHARS( 0x000000000000003E ), + LONG2CHARS( 0x000000000000007E ), + LONG2CHARS( 0x00000000000000FE ), + LONG2CHARS( 0x00000000000001FE ), + LONG2CHARS( 0x00000000000003FE ), + LONG2CHARS( 0x00000000000007FE ), + LONG2CHARS( 0x0000000000000FFE ), + LONG2CHARS( 0x0000000000001FFE ), + LONG2CHARS( 0x0000000000003FFE ), + LONG2CHARS( 0x0000000000007FFE ), + LONG2CHARS( 0x000000000000FFFE ), + LONG2CHARS( 0x000000000001FFFE ), + LONG2CHARS( 0x000000000003FFFE ), + LONG2CHARS( 0x000000000007FFFE ), + LONG2CHARS( 0x00000000000FFFFE ), + LONG2CHARS( 0x00000000001FFFFE ), + LONG2CHARS( 0x00000000003FFFFE ), + LONG2CHARS( 0x00000000007FFFFE ), + LONG2CHARS( 0x0000000000FFFFFE ), + LONG2CHARS( 0x0000000001FFFFFE ), + LONG2CHARS( 0x0000000003FFFFFE ), + LONG2CHARS( 0x0000000007FFFFFE ), + LONG2CHARS( 0x000000000FFFFFFE ), + LONG2CHARS( 0x000000001FFFFFFE ), + LONG2CHARS( 0x000000003FFFFFFE ), + LONG2CHARS( 0x000000007FFFFFFE ), + LONG2CHARS( 0x00000000FFFFFFFE ), + LONG2CHARS( 0x00000001FFFFFFFE ), + LONG2CHARS( 0x00000003FFFFFFFE ), + LONG2CHARS( 0x00000007FFFFFFFE ), + LONG2CHARS( 0x0000000FFFFFFFFE ), + LONG2CHARS( 0x0000001FFFFFFFFE ), + LONG2CHARS( 0x0000003FFFFFFFFE ), + LONG2CHARS( 0x0000007FFFFFFFFE ), + LONG2CHARS( 0x000000FFFFFFFFFE ), + LONG2CHARS( 0x000001FFFFFFFFFE ), + LONG2CHARS( 0x000003FFFFFFFFFE ), + LONG2CHARS( 0x000007FFFFFFFFFE ), + LONG2CHARS( 0x00000FFFFFFFFFFE ), + LONG2CHARS( 0x00001FFFFFFFFFFE ), + LONG2CHARS( 0x00003FFFFFFFFFFE ), + LONG2CHARS( 0x00007FFFFFFFFFFE ), + LONG2CHARS( 0x0000FFFFFFFFFFFE ), + LONG2CHARS( 0x0001FFFFFFFFFFFE ), + LONG2CHARS( 0x0003FFFFFFFFFFFE ), + LONG2CHARS( 0x0007FFFFFFFFFFFE ), + LONG2CHARS( 0x000FFFFFFFFFFFFE ), + LONG2CHARS( 0x001FFFFFFFFFFFFE ), + LONG2CHARS( 0x003FFFFFFFFFFFFE ), + LONG2CHARS( 0x007FFFFFFFFFFFFE ), + LONG2CHARS( 0x00FFFFFFFFFFFFFE ), + LONG2CHARS( 0x01FFFFFFFFFFFFFE ), + LONG2CHARS( 0x03FFFFFFFFFFFFFE ), + LONG2CHARS( 0x07FFFFFFFFFFFFFE ), + LONG2CHARS( 0x0FFFFFFFFFFFFFFE ), + LONG2CHARS( 0x1FFFFFFFFFFFFFFE ), + LONG2CHARS( 0x3FFFFFFFFFFFFFFE ), + LONG2CHARS( 0x7FFFFFFFFFFFFFFE ), + LONG2CHARS( 0xFFFFFFFFFFFFFFFE ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000004 ), + LONG2CHARS( 0x000000000000000C ), + LONG2CHARS( 0x000000000000001C ), + LONG2CHARS( 0x000000000000003C ), + LONG2CHARS( 0x000000000000007C ), + LONG2CHARS( 0x00000000000000FC ), + LONG2CHARS( 0x00000000000001FC ), + LONG2CHARS( 0x00000000000003FC ), + LONG2CHARS( 0x00000000000007FC ), + LONG2CHARS( 0x0000000000000FFC ), + LONG2CHARS( 0x0000000000001FFC ), + LONG2CHARS( 0x0000000000003FFC ), + LONG2CHARS( 0x0000000000007FFC ), + LONG2CHARS( 0x000000000000FFFC ), + LONG2CHARS( 0x000000000001FFFC ), + LONG2CHARS( 0x000000000003FFFC ), + LONG2CHARS( 0x000000000007FFFC ), + LONG2CHARS( 0x00000000000FFFFC ), + LONG2CHARS( 0x00000000001FFFFC ), + LONG2CHARS( 0x00000000003FFFFC ), + LONG2CHARS( 0x00000000007FFFFC ), + LONG2CHARS( 0x0000000000FFFFFC ), + LONG2CHARS( 0x0000000001FFFFFC ), + LONG2CHARS( 0x0000000003FFFFFC ), + LONG2CHARS( 0x0000000007FFFFFC ), + LONG2CHARS( 0x000000000FFFFFFC ), + LONG2CHARS( 0x000000001FFFFFFC ), + LONG2CHARS( 0x000000003FFFFFFC ), + LONG2CHARS( 0x000000007FFFFFFC ), + LONG2CHARS( 0x00000000FFFFFFFC ), + LONG2CHARS( 0x00000001FFFFFFFC ), + LONG2CHARS( 0x00000003FFFFFFFC ), + LONG2CHARS( 0x00000007FFFFFFFC ), + LONG2CHARS( 0x0000000FFFFFFFFC ), + LONG2CHARS( 0x0000001FFFFFFFFC ), + LONG2CHARS( 0x0000003FFFFFFFFC ), + LONG2CHARS( 0x0000007FFFFFFFFC ), + LONG2CHARS( 0x000000FFFFFFFFFC ), + LONG2CHARS( 0x000001FFFFFFFFFC ), + LONG2CHARS( 0x000003FFFFFFFFFC ), + LONG2CHARS( 0x000007FFFFFFFFFC ), + LONG2CHARS( 0x00000FFFFFFFFFFC ), + LONG2CHARS( 0x00001FFFFFFFFFFC ), + LONG2CHARS( 0x00003FFFFFFFFFFC ), + LONG2CHARS( 0x00007FFFFFFFFFFC ), + LONG2CHARS( 0x0000FFFFFFFFFFFC ), + LONG2CHARS( 0x0001FFFFFFFFFFFC ), + LONG2CHARS( 0x0003FFFFFFFFFFFC ), + LONG2CHARS( 0x0007FFFFFFFFFFFC ), + LONG2CHARS( 0x000FFFFFFFFFFFFC ), + LONG2CHARS( 0x001FFFFFFFFFFFFC ), + LONG2CHARS( 0x003FFFFFFFFFFFFC ), + LONG2CHARS( 0x007FFFFFFFFFFFFC ), + LONG2CHARS( 0x00FFFFFFFFFFFFFC ), + LONG2CHARS( 0x01FFFFFFFFFFFFFC ), + LONG2CHARS( 0x03FFFFFFFFFFFFFC ), + LONG2CHARS( 0x07FFFFFFFFFFFFFC ), + LONG2CHARS( 0x0FFFFFFFFFFFFFFC ), + LONG2CHARS( 0x1FFFFFFFFFFFFFFC ), + LONG2CHARS( 0x3FFFFFFFFFFFFFFC ), + LONG2CHARS( 0x7FFFFFFFFFFFFFFC ), + LONG2CHARS( 0xFFFFFFFFFFFFFFFC ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000008 ), + LONG2CHARS( 0x0000000000000018 ), + LONG2CHARS( 0x0000000000000038 ), + LONG2CHARS( 0x0000000000000078 ), + LONG2CHARS( 0x00000000000000F8 ), + LONG2CHARS( 0x00000000000001F8 ), + LONG2CHARS( 0x00000000000003F8 ), + LONG2CHARS( 0x00000000000007F8 ), + LONG2CHARS( 0x0000000000000FF8 ), + LONG2CHARS( 0x0000000000001FF8 ), + LONG2CHARS( 0x0000000000003FF8 ), + LONG2CHARS( 0x0000000000007FF8 ), + LONG2CHARS( 0x000000000000FFF8 ), + LONG2CHARS( 0x000000000001FFF8 ), + LONG2CHARS( 0x000000000003FFF8 ), + LONG2CHARS( 0x000000000007FFF8 ), + LONG2CHARS( 0x00000000000FFFF8 ), + LONG2CHARS( 0x00000000001FFFF8 ), + LONG2CHARS( 0x00000000003FFFF8 ), + LONG2CHARS( 0x00000000007FFFF8 ), + LONG2CHARS( 0x0000000000FFFFF8 ), + LONG2CHARS( 0x0000000001FFFFF8 ), + LONG2CHARS( 0x0000000003FFFFF8 ), + LONG2CHARS( 0x0000000007FFFFF8 ), + LONG2CHARS( 0x000000000FFFFFF8 ), + LONG2CHARS( 0x000000001FFFFFF8 ), + LONG2CHARS( 0x000000003FFFFFF8 ), + LONG2CHARS( 0x000000007FFFFFF8 ), + LONG2CHARS( 0x00000000FFFFFFF8 ), + LONG2CHARS( 0x00000001FFFFFFF8 ), + LONG2CHARS( 0x00000003FFFFFFF8 ), + LONG2CHARS( 0x00000007FFFFFFF8 ), + LONG2CHARS( 0x0000000FFFFFFFF8 ), + LONG2CHARS( 0x0000001FFFFFFFF8 ), + LONG2CHARS( 0x0000003FFFFFFFF8 ), + LONG2CHARS( 0x0000007FFFFFFFF8 ), + LONG2CHARS( 0x000000FFFFFFFFF8 ), + LONG2CHARS( 0x000001FFFFFFFFF8 ), + LONG2CHARS( 0x000003FFFFFFFFF8 ), + LONG2CHARS( 0x000007FFFFFFFFF8 ), + LONG2CHARS( 0x00000FFFFFFFFFF8 ), + LONG2CHARS( 0x00001FFFFFFFFFF8 ), + LONG2CHARS( 0x00003FFFFFFFFFF8 ), + LONG2CHARS( 0x00007FFFFFFFFFF8 ), + LONG2CHARS( 0x0000FFFFFFFFFFF8 ), + LONG2CHARS( 0x0001FFFFFFFFFFF8 ), + LONG2CHARS( 0x0003FFFFFFFFFFF8 ), + LONG2CHARS( 0x0007FFFFFFFFFFF8 ), + LONG2CHARS( 0x000FFFFFFFFFFFF8 ), + LONG2CHARS( 0x001FFFFFFFFFFFF8 ), + LONG2CHARS( 0x003FFFFFFFFFFFF8 ), + LONG2CHARS( 0x007FFFFFFFFFFFF8 ), + LONG2CHARS( 0x00FFFFFFFFFFFFF8 ), + LONG2CHARS( 0x01FFFFFFFFFFFFF8 ), + LONG2CHARS( 0x03FFFFFFFFFFFFF8 ), + LONG2CHARS( 0x07FFFFFFFFFFFFF8 ), + LONG2CHARS( 0x0FFFFFFFFFFFFFF8 ), + LONG2CHARS( 0x1FFFFFFFFFFFFFF8 ), + LONG2CHARS( 0x3FFFFFFFFFFFFFF8 ), + LONG2CHARS( 0x7FFFFFFFFFFFFFF8 ), + LONG2CHARS( 0xFFFFFFFFFFFFFFF8 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000010 ), + LONG2CHARS( 0x0000000000000030 ), + LONG2CHARS( 0x0000000000000070 ), + LONG2CHARS( 0x00000000000000F0 ), + LONG2CHARS( 0x00000000000001F0 ), + LONG2CHARS( 0x00000000000003F0 ), + LONG2CHARS( 0x00000000000007F0 ), + LONG2CHARS( 0x0000000000000FF0 ), + LONG2CHARS( 0x0000000000001FF0 ), + LONG2CHARS( 0x0000000000003FF0 ), + LONG2CHARS( 0x0000000000007FF0 ), + LONG2CHARS( 0x000000000000FFF0 ), + LONG2CHARS( 0x000000000001FFF0 ), + LONG2CHARS( 0x000000000003FFF0 ), + LONG2CHARS( 0x000000000007FFF0 ), + LONG2CHARS( 0x00000000000FFFF0 ), + LONG2CHARS( 0x00000000001FFFF0 ), + LONG2CHARS( 0x00000000003FFFF0 ), + LONG2CHARS( 0x00000000007FFFF0 ), + LONG2CHARS( 0x0000000000FFFFF0 ), + LONG2CHARS( 0x0000000001FFFFF0 ), + LONG2CHARS( 0x0000000003FFFFF0 ), + LONG2CHARS( 0x0000000007FFFFF0 ), + LONG2CHARS( 0x000000000FFFFFF0 ), + LONG2CHARS( 0x000000001FFFFFF0 ), + LONG2CHARS( 0x000000003FFFFFF0 ), + LONG2CHARS( 0x000000007FFFFFF0 ), + LONG2CHARS( 0x00000000FFFFFFF0 ), + LONG2CHARS( 0x00000001FFFFFFF0 ), + LONG2CHARS( 0x00000003FFFFFFF0 ), + LONG2CHARS( 0x00000007FFFFFFF0 ), + LONG2CHARS( 0x0000000FFFFFFFF0 ), + LONG2CHARS( 0x0000001FFFFFFFF0 ), + LONG2CHARS( 0x0000003FFFFFFFF0 ), + LONG2CHARS( 0x0000007FFFFFFFF0 ), + LONG2CHARS( 0x000000FFFFFFFFF0 ), + LONG2CHARS( 0x000001FFFFFFFFF0 ), + LONG2CHARS( 0x000003FFFFFFFFF0 ), + LONG2CHARS( 0x000007FFFFFFFFF0 ), + LONG2CHARS( 0x00000FFFFFFFFFF0 ), + LONG2CHARS( 0x00001FFFFFFFFFF0 ), + LONG2CHARS( 0x00003FFFFFFFFFF0 ), + LONG2CHARS( 0x00007FFFFFFFFFF0 ), + LONG2CHARS( 0x0000FFFFFFFFFFF0 ), + LONG2CHARS( 0x0001FFFFFFFFFFF0 ), + LONG2CHARS( 0x0003FFFFFFFFFFF0 ), + LONG2CHARS( 0x0007FFFFFFFFFFF0 ), + LONG2CHARS( 0x000FFFFFFFFFFFF0 ), + LONG2CHARS( 0x001FFFFFFFFFFFF0 ), + LONG2CHARS( 0x003FFFFFFFFFFFF0 ), + LONG2CHARS( 0x007FFFFFFFFFFFF0 ), + LONG2CHARS( 0x00FFFFFFFFFFFFF0 ), + LONG2CHARS( 0x01FFFFFFFFFFFFF0 ), + LONG2CHARS( 0x03FFFFFFFFFFFFF0 ), + LONG2CHARS( 0x07FFFFFFFFFFFFF0 ), + LONG2CHARS( 0x0FFFFFFFFFFFFFF0 ), + LONG2CHARS( 0x1FFFFFFFFFFFFFF0 ), + LONG2CHARS( 0x3FFFFFFFFFFFFFF0 ), + LONG2CHARS( 0x7FFFFFFFFFFFFFF0 ), + LONG2CHARS( 0xFFFFFFFFFFFFFFF0 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000020 ), + LONG2CHARS( 0x0000000000000060 ), + LONG2CHARS( 0x00000000000000E0 ), + LONG2CHARS( 0x00000000000001E0 ), + LONG2CHARS( 0x00000000000003E0 ), + LONG2CHARS( 0x00000000000007E0 ), + LONG2CHARS( 0x0000000000000FE0 ), + LONG2CHARS( 0x0000000000001FE0 ), + LONG2CHARS( 0x0000000000003FE0 ), + LONG2CHARS( 0x0000000000007FE0 ), + LONG2CHARS( 0x000000000000FFE0 ), + LONG2CHARS( 0x000000000001FFE0 ), + LONG2CHARS( 0x000000000003FFE0 ), + LONG2CHARS( 0x000000000007FFE0 ), + LONG2CHARS( 0x00000000000FFFE0 ), + LONG2CHARS( 0x00000000001FFFE0 ), + LONG2CHARS( 0x00000000003FFFE0 ), + LONG2CHARS( 0x00000000007FFFE0 ), + LONG2CHARS( 0x0000000000FFFFE0 ), + LONG2CHARS( 0x0000000001FFFFE0 ), + LONG2CHARS( 0x0000000003FFFFE0 ), + LONG2CHARS( 0x0000000007FFFFE0 ), + LONG2CHARS( 0x000000000FFFFFE0 ), + LONG2CHARS( 0x000000001FFFFFE0 ), + LONG2CHARS( 0x000000003FFFFFE0 ), + LONG2CHARS( 0x000000007FFFFFE0 ), + LONG2CHARS( 0x00000000FFFFFFE0 ), + LONG2CHARS( 0x00000001FFFFFFE0 ), + LONG2CHARS( 0x00000003FFFFFFE0 ), + LONG2CHARS( 0x00000007FFFFFFE0 ), + LONG2CHARS( 0x0000000FFFFFFFE0 ), + LONG2CHARS( 0x0000001FFFFFFFE0 ), + LONG2CHARS( 0x0000003FFFFFFFE0 ), + LONG2CHARS( 0x0000007FFFFFFFE0 ), + LONG2CHARS( 0x000000FFFFFFFFE0 ), + LONG2CHARS( 0x000001FFFFFFFFE0 ), + LONG2CHARS( 0x000003FFFFFFFFE0 ), + LONG2CHARS( 0x000007FFFFFFFFE0 ), + LONG2CHARS( 0x00000FFFFFFFFFE0 ), + LONG2CHARS( 0x00001FFFFFFFFFE0 ), + LONG2CHARS( 0x00003FFFFFFFFFE0 ), + LONG2CHARS( 0x00007FFFFFFFFFE0 ), + LONG2CHARS( 0x0000FFFFFFFFFFE0 ), + LONG2CHARS( 0x0001FFFFFFFFFFE0 ), + LONG2CHARS( 0x0003FFFFFFFFFFE0 ), + LONG2CHARS( 0x0007FFFFFFFFFFE0 ), + LONG2CHARS( 0x000FFFFFFFFFFFE0 ), + LONG2CHARS( 0x001FFFFFFFFFFFE0 ), + LONG2CHARS( 0x003FFFFFFFFFFFE0 ), + LONG2CHARS( 0x007FFFFFFFFFFFE0 ), + LONG2CHARS( 0x00FFFFFFFFFFFFE0 ), + LONG2CHARS( 0x01FFFFFFFFFFFFE0 ), + LONG2CHARS( 0x03FFFFFFFFFFFFE0 ), + LONG2CHARS( 0x07FFFFFFFFFFFFE0 ), + LONG2CHARS( 0x0FFFFFFFFFFFFFE0 ), + LONG2CHARS( 0x1FFFFFFFFFFFFFE0 ), + LONG2CHARS( 0x3FFFFFFFFFFFFFE0 ), + LONG2CHARS( 0x7FFFFFFFFFFFFFE0 ), + LONG2CHARS( 0xFFFFFFFFFFFFFFE0 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000040 ), + LONG2CHARS( 0x00000000000000C0 ), + LONG2CHARS( 0x00000000000001C0 ), + LONG2CHARS( 0x00000000000003C0 ), + LONG2CHARS( 0x00000000000007C0 ), + LONG2CHARS( 0x0000000000000FC0 ), + LONG2CHARS( 0x0000000000001FC0 ), + LONG2CHARS( 0x0000000000003FC0 ), + LONG2CHARS( 0x0000000000007FC0 ), + LONG2CHARS( 0x000000000000FFC0 ), + LONG2CHARS( 0x000000000001FFC0 ), + LONG2CHARS( 0x000000000003FFC0 ), + LONG2CHARS( 0x000000000007FFC0 ), + LONG2CHARS( 0x00000000000FFFC0 ), + LONG2CHARS( 0x00000000001FFFC0 ), + LONG2CHARS( 0x00000000003FFFC0 ), + LONG2CHARS( 0x00000000007FFFC0 ), + LONG2CHARS( 0x0000000000FFFFC0 ), + LONG2CHARS( 0x0000000001FFFFC0 ), + LONG2CHARS( 0x0000000003FFFFC0 ), + LONG2CHARS( 0x0000000007FFFFC0 ), + LONG2CHARS( 0x000000000FFFFFC0 ), + LONG2CHARS( 0x000000001FFFFFC0 ), + LONG2CHARS( 0x000000003FFFFFC0 ), + LONG2CHARS( 0x000000007FFFFFC0 ), + LONG2CHARS( 0x00000000FFFFFFC0 ), + LONG2CHARS( 0x00000001FFFFFFC0 ), + LONG2CHARS( 0x00000003FFFFFFC0 ), + LONG2CHARS( 0x00000007FFFFFFC0 ), + LONG2CHARS( 0x0000000FFFFFFFC0 ), + LONG2CHARS( 0x0000001FFFFFFFC0 ), + LONG2CHARS( 0x0000003FFFFFFFC0 ), + LONG2CHARS( 0x0000007FFFFFFFC0 ), + LONG2CHARS( 0x000000FFFFFFFFC0 ), + LONG2CHARS( 0x000001FFFFFFFFC0 ), + LONG2CHARS( 0x000003FFFFFFFFC0 ), + LONG2CHARS( 0x000007FFFFFFFFC0 ), + LONG2CHARS( 0x00000FFFFFFFFFC0 ), + LONG2CHARS( 0x00001FFFFFFFFFC0 ), + LONG2CHARS( 0x00003FFFFFFFFFC0 ), + LONG2CHARS( 0x00007FFFFFFFFFC0 ), + LONG2CHARS( 0x0000FFFFFFFFFFC0 ), + LONG2CHARS( 0x0001FFFFFFFFFFC0 ), + LONG2CHARS( 0x0003FFFFFFFFFFC0 ), + LONG2CHARS( 0x0007FFFFFFFFFFC0 ), + LONG2CHARS( 0x000FFFFFFFFFFFC0 ), + LONG2CHARS( 0x001FFFFFFFFFFFC0 ), + LONG2CHARS( 0x003FFFFFFFFFFFC0 ), + LONG2CHARS( 0x007FFFFFFFFFFFC0 ), + LONG2CHARS( 0x00FFFFFFFFFFFFC0 ), + LONG2CHARS( 0x01FFFFFFFFFFFFC0 ), + LONG2CHARS( 0x03FFFFFFFFFFFFC0 ), + LONG2CHARS( 0x07FFFFFFFFFFFFC0 ), + LONG2CHARS( 0x0FFFFFFFFFFFFFC0 ), + LONG2CHARS( 0x1FFFFFFFFFFFFFC0 ), + LONG2CHARS( 0x3FFFFFFFFFFFFFC0 ), + LONG2CHARS( 0x7FFFFFFFFFFFFFC0 ), + LONG2CHARS( 0xFFFFFFFFFFFFFFC0 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000080 ), + LONG2CHARS( 0x0000000000000180 ), + LONG2CHARS( 0x0000000000000380 ), + LONG2CHARS( 0x0000000000000780 ), + LONG2CHARS( 0x0000000000000F80 ), + LONG2CHARS( 0x0000000000001F80 ), + LONG2CHARS( 0x0000000000003F80 ), + LONG2CHARS( 0x0000000000007F80 ), + LONG2CHARS( 0x000000000000FF80 ), + LONG2CHARS( 0x000000000001FF80 ), + LONG2CHARS( 0x000000000003FF80 ), + LONG2CHARS( 0x000000000007FF80 ), + LONG2CHARS( 0x00000000000FFF80 ), + LONG2CHARS( 0x00000000001FFF80 ), + LONG2CHARS( 0x00000000003FFF80 ), + LONG2CHARS( 0x00000000007FFF80 ), + LONG2CHARS( 0x0000000000FFFF80 ), + LONG2CHARS( 0x0000000001FFFF80 ), + LONG2CHARS( 0x0000000003FFFF80 ), + LONG2CHARS( 0x0000000007FFFF80 ), + LONG2CHARS( 0x000000000FFFFF80 ), + LONG2CHARS( 0x000000001FFFFF80 ), + LONG2CHARS( 0x000000003FFFFF80 ), + LONG2CHARS( 0x000000007FFFFF80 ), + LONG2CHARS( 0x00000000FFFFFF80 ), + LONG2CHARS( 0x00000001FFFFFF80 ), + LONG2CHARS( 0x00000003FFFFFF80 ), + LONG2CHARS( 0x00000007FFFFFF80 ), + LONG2CHARS( 0x0000000FFFFFFF80 ), + LONG2CHARS( 0x0000001FFFFFFF80 ), + LONG2CHARS( 0x0000003FFFFFFF80 ), + LONG2CHARS( 0x0000007FFFFFFF80 ), + LONG2CHARS( 0x000000FFFFFFFF80 ), + LONG2CHARS( 0x000001FFFFFFFF80 ), + LONG2CHARS( 0x000003FFFFFFFF80 ), + LONG2CHARS( 0x000007FFFFFFFF80 ), + LONG2CHARS( 0x00000FFFFFFFFF80 ), + LONG2CHARS( 0x00001FFFFFFFFF80 ), + LONG2CHARS( 0x00003FFFFFFFFF80 ), + LONG2CHARS( 0x00007FFFFFFFFF80 ), + LONG2CHARS( 0x0000FFFFFFFFFF80 ), + LONG2CHARS( 0x0001FFFFFFFFFF80 ), + LONG2CHARS( 0x0003FFFFFFFFFF80 ), + LONG2CHARS( 0x0007FFFFFFFFFF80 ), + LONG2CHARS( 0x000FFFFFFFFFFF80 ), + LONG2CHARS( 0x001FFFFFFFFFFF80 ), + LONG2CHARS( 0x003FFFFFFFFFFF80 ), + LONG2CHARS( 0x007FFFFFFFFFFF80 ), + LONG2CHARS( 0x00FFFFFFFFFFFF80 ), + LONG2CHARS( 0x01FFFFFFFFFFFF80 ), + LONG2CHARS( 0x03FFFFFFFFFFFF80 ), + LONG2CHARS( 0x07FFFFFFFFFFFF80 ), + LONG2CHARS( 0x0FFFFFFFFFFFFF80 ), + LONG2CHARS( 0x1FFFFFFFFFFFFF80 ), + LONG2CHARS( 0x3FFFFFFFFFFFFF80 ), + LONG2CHARS( 0x7FFFFFFFFFFFFF80 ), + LONG2CHARS( 0xFFFFFFFFFFFFFF80 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000100 ), + LONG2CHARS( 0x0000000000000300 ), + LONG2CHARS( 0x0000000000000700 ), + LONG2CHARS( 0x0000000000000F00 ), + LONG2CHARS( 0x0000000000001F00 ), + LONG2CHARS( 0x0000000000003F00 ), + LONG2CHARS( 0x0000000000007F00 ), + LONG2CHARS( 0x000000000000FF00 ), + LONG2CHARS( 0x000000000001FF00 ), + LONG2CHARS( 0x000000000003FF00 ), + LONG2CHARS( 0x000000000007FF00 ), + LONG2CHARS( 0x00000000000FFF00 ), + LONG2CHARS( 0x00000000001FFF00 ), + LONG2CHARS( 0x00000000003FFF00 ), + LONG2CHARS( 0x00000000007FFF00 ), + LONG2CHARS( 0x0000000000FFFF00 ), + LONG2CHARS( 0x0000000001FFFF00 ), + LONG2CHARS( 0x0000000003FFFF00 ), + LONG2CHARS( 0x0000000007FFFF00 ), + LONG2CHARS( 0x000000000FFFFF00 ), + LONG2CHARS( 0x000000001FFFFF00 ), + LONG2CHARS( 0x000000003FFFFF00 ), + LONG2CHARS( 0x000000007FFFFF00 ), + LONG2CHARS( 0x00000000FFFFFF00 ), + LONG2CHARS( 0x00000001FFFFFF00 ), + LONG2CHARS( 0x00000003FFFFFF00 ), + LONG2CHARS( 0x00000007FFFFFF00 ), + LONG2CHARS( 0x0000000FFFFFFF00 ), + LONG2CHARS( 0x0000001FFFFFFF00 ), + LONG2CHARS( 0x0000003FFFFFFF00 ), + LONG2CHARS( 0x0000007FFFFFFF00 ), + LONG2CHARS( 0x000000FFFFFFFF00 ), + LONG2CHARS( 0x000001FFFFFFFF00 ), + LONG2CHARS( 0x000003FFFFFFFF00 ), + LONG2CHARS( 0x000007FFFFFFFF00 ), + LONG2CHARS( 0x00000FFFFFFFFF00 ), + LONG2CHARS( 0x00001FFFFFFFFF00 ), + LONG2CHARS( 0x00003FFFFFFFFF00 ), + LONG2CHARS( 0x00007FFFFFFFFF00 ), + LONG2CHARS( 0x0000FFFFFFFFFF00 ), + LONG2CHARS( 0x0001FFFFFFFFFF00 ), + LONG2CHARS( 0x0003FFFFFFFFFF00 ), + LONG2CHARS( 0x0007FFFFFFFFFF00 ), + LONG2CHARS( 0x000FFFFFFFFFFF00 ), + LONG2CHARS( 0x001FFFFFFFFFFF00 ), + LONG2CHARS( 0x003FFFFFFFFFFF00 ), + LONG2CHARS( 0x007FFFFFFFFFFF00 ), + LONG2CHARS( 0x00FFFFFFFFFFFF00 ), + LONG2CHARS( 0x01FFFFFFFFFFFF00 ), + LONG2CHARS( 0x03FFFFFFFFFFFF00 ), + LONG2CHARS( 0x07FFFFFFFFFFFF00 ), + LONG2CHARS( 0x0FFFFFFFFFFFFF00 ), + LONG2CHARS( 0x1FFFFFFFFFFFFF00 ), + LONG2CHARS( 0x3FFFFFFFFFFFFF00 ), + LONG2CHARS( 0x7FFFFFFFFFFFFF00 ), + LONG2CHARS( 0xFFFFFFFFFFFFFF00 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000200 ), + LONG2CHARS( 0x0000000000000600 ), + LONG2CHARS( 0x0000000000000E00 ), + LONG2CHARS( 0x0000000000001E00 ), + LONG2CHARS( 0x0000000000003E00 ), + LONG2CHARS( 0x0000000000007E00 ), + LONG2CHARS( 0x000000000000FE00 ), + LONG2CHARS( 0x000000000001FE00 ), + LONG2CHARS( 0x000000000003FE00 ), + LONG2CHARS( 0x000000000007FE00 ), + LONG2CHARS( 0x00000000000FFE00 ), + LONG2CHARS( 0x00000000001FFE00 ), + LONG2CHARS( 0x00000000003FFE00 ), + LONG2CHARS( 0x00000000007FFE00 ), + LONG2CHARS( 0x0000000000FFFE00 ), + LONG2CHARS( 0x0000000001FFFE00 ), + LONG2CHARS( 0x0000000003FFFE00 ), + LONG2CHARS( 0x0000000007FFFE00 ), + LONG2CHARS( 0x000000000FFFFE00 ), + LONG2CHARS( 0x000000001FFFFE00 ), + LONG2CHARS( 0x000000003FFFFE00 ), + LONG2CHARS( 0x000000007FFFFE00 ), + LONG2CHARS( 0x00000000FFFFFE00 ), + LONG2CHARS( 0x00000001FFFFFE00 ), + LONG2CHARS( 0x00000003FFFFFE00 ), + LONG2CHARS( 0x00000007FFFFFE00 ), + LONG2CHARS( 0x0000000FFFFFFE00 ), + LONG2CHARS( 0x0000001FFFFFFE00 ), + LONG2CHARS( 0x0000003FFFFFFE00 ), + LONG2CHARS( 0x0000007FFFFFFE00 ), + LONG2CHARS( 0x000000FFFFFFFE00 ), + LONG2CHARS( 0x000001FFFFFFFE00 ), + LONG2CHARS( 0x000003FFFFFFFE00 ), + LONG2CHARS( 0x000007FFFFFFFE00 ), + LONG2CHARS( 0x00000FFFFFFFFE00 ), + LONG2CHARS( 0x00001FFFFFFFFE00 ), + LONG2CHARS( 0x00003FFFFFFFFE00 ), + LONG2CHARS( 0x00007FFFFFFFFE00 ), + LONG2CHARS( 0x0000FFFFFFFFFE00 ), + LONG2CHARS( 0x0001FFFFFFFFFE00 ), + LONG2CHARS( 0x0003FFFFFFFFFE00 ), + LONG2CHARS( 0x0007FFFFFFFFFE00 ), + LONG2CHARS( 0x000FFFFFFFFFFE00 ), + LONG2CHARS( 0x001FFFFFFFFFFE00 ), + LONG2CHARS( 0x003FFFFFFFFFFE00 ), + LONG2CHARS( 0x007FFFFFFFFFFE00 ), + LONG2CHARS( 0x00FFFFFFFFFFFE00 ), + LONG2CHARS( 0x01FFFFFFFFFFFE00 ), + LONG2CHARS( 0x03FFFFFFFFFFFE00 ), + LONG2CHARS( 0x07FFFFFFFFFFFE00 ), + LONG2CHARS( 0x0FFFFFFFFFFFFE00 ), + LONG2CHARS( 0x1FFFFFFFFFFFFE00 ), + LONG2CHARS( 0x3FFFFFFFFFFFFE00 ), + LONG2CHARS( 0x7FFFFFFFFFFFFE00 ), + LONG2CHARS( 0xFFFFFFFFFFFFFE00 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000400 ), + LONG2CHARS( 0x0000000000000C00 ), + LONG2CHARS( 0x0000000000001C00 ), + LONG2CHARS( 0x0000000000003C00 ), + LONG2CHARS( 0x0000000000007C00 ), + LONG2CHARS( 0x000000000000FC00 ), + LONG2CHARS( 0x000000000001FC00 ), + LONG2CHARS( 0x000000000003FC00 ), + LONG2CHARS( 0x000000000007FC00 ), + LONG2CHARS( 0x00000000000FFC00 ), + LONG2CHARS( 0x00000000001FFC00 ), + LONG2CHARS( 0x00000000003FFC00 ), + LONG2CHARS( 0x00000000007FFC00 ), + LONG2CHARS( 0x0000000000FFFC00 ), + LONG2CHARS( 0x0000000001FFFC00 ), + LONG2CHARS( 0x0000000003FFFC00 ), + LONG2CHARS( 0x0000000007FFFC00 ), + LONG2CHARS( 0x000000000FFFFC00 ), + LONG2CHARS( 0x000000001FFFFC00 ), + LONG2CHARS( 0x000000003FFFFC00 ), + LONG2CHARS( 0x000000007FFFFC00 ), + LONG2CHARS( 0x00000000FFFFFC00 ), + LONG2CHARS( 0x00000001FFFFFC00 ), + LONG2CHARS( 0x00000003FFFFFC00 ), + LONG2CHARS( 0x00000007FFFFFC00 ), + LONG2CHARS( 0x0000000FFFFFFC00 ), + LONG2CHARS( 0x0000001FFFFFFC00 ), + LONG2CHARS( 0x0000003FFFFFFC00 ), + LONG2CHARS( 0x0000007FFFFFFC00 ), + LONG2CHARS( 0x000000FFFFFFFC00 ), + LONG2CHARS( 0x000001FFFFFFFC00 ), + LONG2CHARS( 0x000003FFFFFFFC00 ), + LONG2CHARS( 0x000007FFFFFFFC00 ), + LONG2CHARS( 0x00000FFFFFFFFC00 ), + LONG2CHARS( 0x00001FFFFFFFFC00 ), + LONG2CHARS( 0x00003FFFFFFFFC00 ), + LONG2CHARS( 0x00007FFFFFFFFC00 ), + LONG2CHARS( 0x0000FFFFFFFFFC00 ), + LONG2CHARS( 0x0001FFFFFFFFFC00 ), + LONG2CHARS( 0x0003FFFFFFFFFC00 ), + LONG2CHARS( 0x0007FFFFFFFFFC00 ), + LONG2CHARS( 0x000FFFFFFFFFFC00 ), + LONG2CHARS( 0x001FFFFFFFFFFC00 ), + LONG2CHARS( 0x003FFFFFFFFFFC00 ), + LONG2CHARS( 0x007FFFFFFFFFFC00 ), + LONG2CHARS( 0x00FFFFFFFFFFFC00 ), + LONG2CHARS( 0x01FFFFFFFFFFFC00 ), + LONG2CHARS( 0x03FFFFFFFFFFFC00 ), + LONG2CHARS( 0x07FFFFFFFFFFFC00 ), + LONG2CHARS( 0x0FFFFFFFFFFFFC00 ), + LONG2CHARS( 0x1FFFFFFFFFFFFC00 ), + LONG2CHARS( 0x3FFFFFFFFFFFFC00 ), + LONG2CHARS( 0x7FFFFFFFFFFFFC00 ), + LONG2CHARS( 0xFFFFFFFFFFFFFC00 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000800 ), + LONG2CHARS( 0x0000000000001800 ), + LONG2CHARS( 0x0000000000003800 ), + LONG2CHARS( 0x0000000000007800 ), + LONG2CHARS( 0x000000000000F800 ), + LONG2CHARS( 0x000000000001F800 ), + LONG2CHARS( 0x000000000003F800 ), + LONG2CHARS( 0x000000000007F800 ), + LONG2CHARS( 0x00000000000FF800 ), + LONG2CHARS( 0x00000000001FF800 ), + LONG2CHARS( 0x00000000003FF800 ), + LONG2CHARS( 0x00000000007FF800 ), + LONG2CHARS( 0x0000000000FFF800 ), + LONG2CHARS( 0x0000000001FFF800 ), + LONG2CHARS( 0x0000000003FFF800 ), + LONG2CHARS( 0x0000000007FFF800 ), + LONG2CHARS( 0x000000000FFFF800 ), + LONG2CHARS( 0x000000001FFFF800 ), + LONG2CHARS( 0x000000003FFFF800 ), + LONG2CHARS( 0x000000007FFFF800 ), + LONG2CHARS( 0x00000000FFFFF800 ), + LONG2CHARS( 0x00000001FFFFF800 ), + LONG2CHARS( 0x00000003FFFFF800 ), + LONG2CHARS( 0x00000007FFFFF800 ), + LONG2CHARS( 0x0000000FFFFFF800 ), + LONG2CHARS( 0x0000001FFFFFF800 ), + LONG2CHARS( 0x0000003FFFFFF800 ), + LONG2CHARS( 0x0000007FFFFFF800 ), + LONG2CHARS( 0x000000FFFFFFF800 ), + LONG2CHARS( 0x000001FFFFFFF800 ), + LONG2CHARS( 0x000003FFFFFFF800 ), + LONG2CHARS( 0x000007FFFFFFF800 ), + LONG2CHARS( 0x00000FFFFFFFF800 ), + LONG2CHARS( 0x00001FFFFFFFF800 ), + LONG2CHARS( 0x00003FFFFFFFF800 ), + LONG2CHARS( 0x00007FFFFFFFF800 ), + LONG2CHARS( 0x0000FFFFFFFFF800 ), + LONG2CHARS( 0x0001FFFFFFFFF800 ), + LONG2CHARS( 0x0003FFFFFFFFF800 ), + LONG2CHARS( 0x0007FFFFFFFFF800 ), + LONG2CHARS( 0x000FFFFFFFFFF800 ), + LONG2CHARS( 0x001FFFFFFFFFF800 ), + LONG2CHARS( 0x003FFFFFFFFFF800 ), + LONG2CHARS( 0x007FFFFFFFFFF800 ), + LONG2CHARS( 0x00FFFFFFFFFFF800 ), + LONG2CHARS( 0x01FFFFFFFFFFF800 ), + LONG2CHARS( 0x03FFFFFFFFFFF800 ), + LONG2CHARS( 0x07FFFFFFFFFFF800 ), + LONG2CHARS( 0x0FFFFFFFFFFFF800 ), + LONG2CHARS( 0x1FFFFFFFFFFFF800 ), + LONG2CHARS( 0x3FFFFFFFFFFFF800 ), + LONG2CHARS( 0x7FFFFFFFFFFFF800 ), + LONG2CHARS( 0xFFFFFFFFFFFFF800 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000001000 ), + LONG2CHARS( 0x0000000000003000 ), + LONG2CHARS( 0x0000000000007000 ), + LONG2CHARS( 0x000000000000F000 ), + LONG2CHARS( 0x000000000001F000 ), + LONG2CHARS( 0x000000000003F000 ), + LONG2CHARS( 0x000000000007F000 ), + LONG2CHARS( 0x00000000000FF000 ), + LONG2CHARS( 0x00000000001FF000 ), + LONG2CHARS( 0x00000000003FF000 ), + LONG2CHARS( 0x00000000007FF000 ), + LONG2CHARS( 0x0000000000FFF000 ), + LONG2CHARS( 0x0000000001FFF000 ), + LONG2CHARS( 0x0000000003FFF000 ), + LONG2CHARS( 0x0000000007FFF000 ), + LONG2CHARS( 0x000000000FFFF000 ), + LONG2CHARS( 0x000000001FFFF000 ), + LONG2CHARS( 0x000000003FFFF000 ), + LONG2CHARS( 0x000000007FFFF000 ), + LONG2CHARS( 0x00000000FFFFF000 ), + LONG2CHARS( 0x00000001FFFFF000 ), + LONG2CHARS( 0x00000003FFFFF000 ), + LONG2CHARS( 0x00000007FFFFF000 ), + LONG2CHARS( 0x0000000FFFFFF000 ), + LONG2CHARS( 0x0000001FFFFFF000 ), + LONG2CHARS( 0x0000003FFFFFF000 ), + LONG2CHARS( 0x0000007FFFFFF000 ), + LONG2CHARS( 0x000000FFFFFFF000 ), + LONG2CHARS( 0x000001FFFFFFF000 ), + LONG2CHARS( 0x000003FFFFFFF000 ), + LONG2CHARS( 0x000007FFFFFFF000 ), + LONG2CHARS( 0x00000FFFFFFFF000 ), + LONG2CHARS( 0x00001FFFFFFFF000 ), + LONG2CHARS( 0x00003FFFFFFFF000 ), + LONG2CHARS( 0x00007FFFFFFFF000 ), + LONG2CHARS( 0x0000FFFFFFFFF000 ), + LONG2CHARS( 0x0001FFFFFFFFF000 ), + LONG2CHARS( 0x0003FFFFFFFFF000 ), + LONG2CHARS( 0x0007FFFFFFFFF000 ), + LONG2CHARS( 0x000FFFFFFFFFF000 ), + LONG2CHARS( 0x001FFFFFFFFFF000 ), + LONG2CHARS( 0x003FFFFFFFFFF000 ), + LONG2CHARS( 0x007FFFFFFFFFF000 ), + LONG2CHARS( 0x00FFFFFFFFFFF000 ), + LONG2CHARS( 0x01FFFFFFFFFFF000 ), + LONG2CHARS( 0x03FFFFFFFFFFF000 ), + LONG2CHARS( 0x07FFFFFFFFFFF000 ), + LONG2CHARS( 0x0FFFFFFFFFFFF000 ), + LONG2CHARS( 0x1FFFFFFFFFFFF000 ), + LONG2CHARS( 0x3FFFFFFFFFFFF000 ), + LONG2CHARS( 0x7FFFFFFFFFFFF000 ), + LONG2CHARS( 0xFFFFFFFFFFFFF000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000002000 ), + LONG2CHARS( 0x0000000000006000 ), + LONG2CHARS( 0x000000000000E000 ), + LONG2CHARS( 0x000000000001E000 ), + LONG2CHARS( 0x000000000003E000 ), + LONG2CHARS( 0x000000000007E000 ), + LONG2CHARS( 0x00000000000FE000 ), + LONG2CHARS( 0x00000000001FE000 ), + LONG2CHARS( 0x00000000003FE000 ), + LONG2CHARS( 0x00000000007FE000 ), + LONG2CHARS( 0x0000000000FFE000 ), + LONG2CHARS( 0x0000000001FFE000 ), + LONG2CHARS( 0x0000000003FFE000 ), + LONG2CHARS( 0x0000000007FFE000 ), + LONG2CHARS( 0x000000000FFFE000 ), + LONG2CHARS( 0x000000001FFFE000 ), + LONG2CHARS( 0x000000003FFFE000 ), + LONG2CHARS( 0x000000007FFFE000 ), + LONG2CHARS( 0x00000000FFFFE000 ), + LONG2CHARS( 0x00000001FFFFE000 ), + LONG2CHARS( 0x00000003FFFFE000 ), + LONG2CHARS( 0x00000007FFFFE000 ), + LONG2CHARS( 0x0000000FFFFFE000 ), + LONG2CHARS( 0x0000001FFFFFE000 ), + LONG2CHARS( 0x0000003FFFFFE000 ), + LONG2CHARS( 0x0000007FFFFFE000 ), + LONG2CHARS( 0x000000FFFFFFE000 ), + LONG2CHARS( 0x000001FFFFFFE000 ), + LONG2CHARS( 0x000003FFFFFFE000 ), + LONG2CHARS( 0x000007FFFFFFE000 ), + LONG2CHARS( 0x00000FFFFFFFE000 ), + LONG2CHARS( 0x00001FFFFFFFE000 ), + LONG2CHARS( 0x00003FFFFFFFE000 ), + LONG2CHARS( 0x00007FFFFFFFE000 ), + LONG2CHARS( 0x0000FFFFFFFFE000 ), + LONG2CHARS( 0x0001FFFFFFFFE000 ), + LONG2CHARS( 0x0003FFFFFFFFE000 ), + LONG2CHARS( 0x0007FFFFFFFFE000 ), + LONG2CHARS( 0x000FFFFFFFFFE000 ), + LONG2CHARS( 0x001FFFFFFFFFE000 ), + LONG2CHARS( 0x003FFFFFFFFFE000 ), + LONG2CHARS( 0x007FFFFFFFFFE000 ), + LONG2CHARS( 0x00FFFFFFFFFFE000 ), + LONG2CHARS( 0x01FFFFFFFFFFE000 ), + LONG2CHARS( 0x03FFFFFFFFFFE000 ), + LONG2CHARS( 0x07FFFFFFFFFFE000 ), + LONG2CHARS( 0x0FFFFFFFFFFFE000 ), + LONG2CHARS( 0x1FFFFFFFFFFFE000 ), + LONG2CHARS( 0x3FFFFFFFFFFFE000 ), + LONG2CHARS( 0x7FFFFFFFFFFFE000 ), + LONG2CHARS( 0xFFFFFFFFFFFFE000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000004000 ), + LONG2CHARS( 0x000000000000C000 ), + LONG2CHARS( 0x000000000001C000 ), + LONG2CHARS( 0x000000000003C000 ), + LONG2CHARS( 0x000000000007C000 ), + LONG2CHARS( 0x00000000000FC000 ), + LONG2CHARS( 0x00000000001FC000 ), + LONG2CHARS( 0x00000000003FC000 ), + LONG2CHARS( 0x00000000007FC000 ), + LONG2CHARS( 0x0000000000FFC000 ), + LONG2CHARS( 0x0000000001FFC000 ), + LONG2CHARS( 0x0000000003FFC000 ), + LONG2CHARS( 0x0000000007FFC000 ), + LONG2CHARS( 0x000000000FFFC000 ), + LONG2CHARS( 0x000000001FFFC000 ), + LONG2CHARS( 0x000000003FFFC000 ), + LONG2CHARS( 0x000000007FFFC000 ), + LONG2CHARS( 0x00000000FFFFC000 ), + LONG2CHARS( 0x00000001FFFFC000 ), + LONG2CHARS( 0x00000003FFFFC000 ), + LONG2CHARS( 0x00000007FFFFC000 ), + LONG2CHARS( 0x0000000FFFFFC000 ), + LONG2CHARS( 0x0000001FFFFFC000 ), + LONG2CHARS( 0x0000003FFFFFC000 ), + LONG2CHARS( 0x0000007FFFFFC000 ), + LONG2CHARS( 0x000000FFFFFFC000 ), + LONG2CHARS( 0x000001FFFFFFC000 ), + LONG2CHARS( 0x000003FFFFFFC000 ), + LONG2CHARS( 0x000007FFFFFFC000 ), + LONG2CHARS( 0x00000FFFFFFFC000 ), + LONG2CHARS( 0x00001FFFFFFFC000 ), + LONG2CHARS( 0x00003FFFFFFFC000 ), + LONG2CHARS( 0x00007FFFFFFFC000 ), + LONG2CHARS( 0x0000FFFFFFFFC000 ), + LONG2CHARS( 0x0001FFFFFFFFC000 ), + LONG2CHARS( 0x0003FFFFFFFFC000 ), + LONG2CHARS( 0x0007FFFFFFFFC000 ), + LONG2CHARS( 0x000FFFFFFFFFC000 ), + LONG2CHARS( 0x001FFFFFFFFFC000 ), + LONG2CHARS( 0x003FFFFFFFFFC000 ), + LONG2CHARS( 0x007FFFFFFFFFC000 ), + LONG2CHARS( 0x00FFFFFFFFFFC000 ), + LONG2CHARS( 0x01FFFFFFFFFFC000 ), + LONG2CHARS( 0x03FFFFFFFFFFC000 ), + LONG2CHARS( 0x07FFFFFFFFFFC000 ), + LONG2CHARS( 0x0FFFFFFFFFFFC000 ), + LONG2CHARS( 0x1FFFFFFFFFFFC000 ), + LONG2CHARS( 0x3FFFFFFFFFFFC000 ), + LONG2CHARS( 0x7FFFFFFFFFFFC000 ), + LONG2CHARS( 0xFFFFFFFFFFFFC000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000008000 ), + LONG2CHARS( 0x0000000000018000 ), + LONG2CHARS( 0x0000000000038000 ), + LONG2CHARS( 0x0000000000078000 ), + LONG2CHARS( 0x00000000000F8000 ), + LONG2CHARS( 0x00000000001F8000 ), + LONG2CHARS( 0x00000000003F8000 ), + LONG2CHARS( 0x00000000007F8000 ), + LONG2CHARS( 0x0000000000FF8000 ), + LONG2CHARS( 0x0000000001FF8000 ), + LONG2CHARS( 0x0000000003FF8000 ), + LONG2CHARS( 0x0000000007FF8000 ), + LONG2CHARS( 0x000000000FFF8000 ), + LONG2CHARS( 0x000000001FFF8000 ), + LONG2CHARS( 0x000000003FFF8000 ), + LONG2CHARS( 0x000000007FFF8000 ), + LONG2CHARS( 0x00000000FFFF8000 ), + LONG2CHARS( 0x00000001FFFF8000 ), + LONG2CHARS( 0x00000003FFFF8000 ), + LONG2CHARS( 0x00000007FFFF8000 ), + LONG2CHARS( 0x0000000FFFFF8000 ), + LONG2CHARS( 0x0000001FFFFF8000 ), + LONG2CHARS( 0x0000003FFFFF8000 ), + LONG2CHARS( 0x0000007FFFFF8000 ), + LONG2CHARS( 0x000000FFFFFF8000 ), + LONG2CHARS( 0x000001FFFFFF8000 ), + LONG2CHARS( 0x000003FFFFFF8000 ), + LONG2CHARS( 0x000007FFFFFF8000 ), + LONG2CHARS( 0x00000FFFFFFF8000 ), + LONG2CHARS( 0x00001FFFFFFF8000 ), + LONG2CHARS( 0x00003FFFFFFF8000 ), + LONG2CHARS( 0x00007FFFFFFF8000 ), + LONG2CHARS( 0x0000FFFFFFFF8000 ), + LONG2CHARS( 0x0001FFFFFFFF8000 ), + LONG2CHARS( 0x0003FFFFFFFF8000 ), + LONG2CHARS( 0x0007FFFFFFFF8000 ), + LONG2CHARS( 0x000FFFFFFFFF8000 ), + LONG2CHARS( 0x001FFFFFFFFF8000 ), + LONG2CHARS( 0x003FFFFFFFFF8000 ), + LONG2CHARS( 0x007FFFFFFFFF8000 ), + LONG2CHARS( 0x00FFFFFFFFFF8000 ), + LONG2CHARS( 0x01FFFFFFFFFF8000 ), + LONG2CHARS( 0x03FFFFFFFFFF8000 ), + LONG2CHARS( 0x07FFFFFFFFFF8000 ), + LONG2CHARS( 0x0FFFFFFFFFFF8000 ), + LONG2CHARS( 0x1FFFFFFFFFFF8000 ), + LONG2CHARS( 0x3FFFFFFFFFFF8000 ), + LONG2CHARS( 0x7FFFFFFFFFFF8000 ), + LONG2CHARS( 0xFFFFFFFFFFFF8000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000010000 ), + LONG2CHARS( 0x0000000000030000 ), + LONG2CHARS( 0x0000000000070000 ), + LONG2CHARS( 0x00000000000F0000 ), + LONG2CHARS( 0x00000000001F0000 ), + LONG2CHARS( 0x00000000003F0000 ), + LONG2CHARS( 0x00000000007F0000 ), + LONG2CHARS( 0x0000000000FF0000 ), + LONG2CHARS( 0x0000000001FF0000 ), + LONG2CHARS( 0x0000000003FF0000 ), + LONG2CHARS( 0x0000000007FF0000 ), + LONG2CHARS( 0x000000000FFF0000 ), + LONG2CHARS( 0x000000001FFF0000 ), + LONG2CHARS( 0x000000003FFF0000 ), + LONG2CHARS( 0x000000007FFF0000 ), + LONG2CHARS( 0x00000000FFFF0000 ), + LONG2CHARS( 0x00000001FFFF0000 ), + LONG2CHARS( 0x00000003FFFF0000 ), + LONG2CHARS( 0x00000007FFFF0000 ), + LONG2CHARS( 0x0000000FFFFF0000 ), + LONG2CHARS( 0x0000001FFFFF0000 ), + LONG2CHARS( 0x0000003FFFFF0000 ), + LONG2CHARS( 0x0000007FFFFF0000 ), + LONG2CHARS( 0x000000FFFFFF0000 ), + LONG2CHARS( 0x000001FFFFFF0000 ), + LONG2CHARS( 0x000003FFFFFF0000 ), + LONG2CHARS( 0x000007FFFFFF0000 ), + LONG2CHARS( 0x00000FFFFFFF0000 ), + LONG2CHARS( 0x00001FFFFFFF0000 ), + LONG2CHARS( 0x00003FFFFFFF0000 ), + LONG2CHARS( 0x00007FFFFFFF0000 ), + LONG2CHARS( 0x0000FFFFFFFF0000 ), + LONG2CHARS( 0x0001FFFFFFFF0000 ), + LONG2CHARS( 0x0003FFFFFFFF0000 ), + LONG2CHARS( 0x0007FFFFFFFF0000 ), + LONG2CHARS( 0x000FFFFFFFFF0000 ), + LONG2CHARS( 0x001FFFFFFFFF0000 ), + LONG2CHARS( 0x003FFFFFFFFF0000 ), + LONG2CHARS( 0x007FFFFFFFFF0000 ), + LONG2CHARS( 0x00FFFFFFFFFF0000 ), + LONG2CHARS( 0x01FFFFFFFFFF0000 ), + LONG2CHARS( 0x03FFFFFFFFFF0000 ), + LONG2CHARS( 0x07FFFFFFFFFF0000 ), + LONG2CHARS( 0x0FFFFFFFFFFF0000 ), + LONG2CHARS( 0x1FFFFFFFFFFF0000 ), + LONG2CHARS( 0x3FFFFFFFFFFF0000 ), + LONG2CHARS( 0x7FFFFFFFFFFF0000 ), + LONG2CHARS( 0xFFFFFFFFFFFF0000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000020000 ), + LONG2CHARS( 0x0000000000060000 ), + LONG2CHARS( 0x00000000000E0000 ), + LONG2CHARS( 0x00000000001E0000 ), + LONG2CHARS( 0x00000000003E0000 ), + LONG2CHARS( 0x00000000007E0000 ), + LONG2CHARS( 0x0000000000FE0000 ), + LONG2CHARS( 0x0000000001FE0000 ), + LONG2CHARS( 0x0000000003FE0000 ), + LONG2CHARS( 0x0000000007FE0000 ), + LONG2CHARS( 0x000000000FFE0000 ), + LONG2CHARS( 0x000000001FFE0000 ), + LONG2CHARS( 0x000000003FFE0000 ), + LONG2CHARS( 0x000000007FFE0000 ), + LONG2CHARS( 0x00000000FFFE0000 ), + LONG2CHARS( 0x00000001FFFE0000 ), + LONG2CHARS( 0x00000003FFFE0000 ), + LONG2CHARS( 0x00000007FFFE0000 ), + LONG2CHARS( 0x0000000FFFFE0000 ), + LONG2CHARS( 0x0000001FFFFE0000 ), + LONG2CHARS( 0x0000003FFFFE0000 ), + LONG2CHARS( 0x0000007FFFFE0000 ), + LONG2CHARS( 0x000000FFFFFE0000 ), + LONG2CHARS( 0x000001FFFFFE0000 ), + LONG2CHARS( 0x000003FFFFFE0000 ), + LONG2CHARS( 0x000007FFFFFE0000 ), + LONG2CHARS( 0x00000FFFFFFE0000 ), + LONG2CHARS( 0x00001FFFFFFE0000 ), + LONG2CHARS( 0x00003FFFFFFE0000 ), + LONG2CHARS( 0x00007FFFFFFE0000 ), + LONG2CHARS( 0x0000FFFFFFFE0000 ), + LONG2CHARS( 0x0001FFFFFFFE0000 ), + LONG2CHARS( 0x0003FFFFFFFE0000 ), + LONG2CHARS( 0x0007FFFFFFFE0000 ), + LONG2CHARS( 0x000FFFFFFFFE0000 ), + LONG2CHARS( 0x001FFFFFFFFE0000 ), + LONG2CHARS( 0x003FFFFFFFFE0000 ), + LONG2CHARS( 0x007FFFFFFFFE0000 ), + LONG2CHARS( 0x00FFFFFFFFFE0000 ), + LONG2CHARS( 0x01FFFFFFFFFE0000 ), + LONG2CHARS( 0x03FFFFFFFFFE0000 ), + LONG2CHARS( 0x07FFFFFFFFFE0000 ), + LONG2CHARS( 0x0FFFFFFFFFFE0000 ), + LONG2CHARS( 0x1FFFFFFFFFFE0000 ), + LONG2CHARS( 0x3FFFFFFFFFFE0000 ), + LONG2CHARS( 0x7FFFFFFFFFFE0000 ), + LONG2CHARS( 0xFFFFFFFFFFFE0000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000040000 ), + LONG2CHARS( 0x00000000000C0000 ), + LONG2CHARS( 0x00000000001C0000 ), + LONG2CHARS( 0x00000000003C0000 ), + LONG2CHARS( 0x00000000007C0000 ), + LONG2CHARS( 0x0000000000FC0000 ), + LONG2CHARS( 0x0000000001FC0000 ), + LONG2CHARS( 0x0000000003FC0000 ), + LONG2CHARS( 0x0000000007FC0000 ), + LONG2CHARS( 0x000000000FFC0000 ), + LONG2CHARS( 0x000000001FFC0000 ), + LONG2CHARS( 0x000000003FFC0000 ), + LONG2CHARS( 0x000000007FFC0000 ), + LONG2CHARS( 0x00000000FFFC0000 ), + LONG2CHARS( 0x00000001FFFC0000 ), + LONG2CHARS( 0x00000003FFFC0000 ), + LONG2CHARS( 0x00000007FFFC0000 ), + LONG2CHARS( 0x0000000FFFFC0000 ), + LONG2CHARS( 0x0000001FFFFC0000 ), + LONG2CHARS( 0x0000003FFFFC0000 ), + LONG2CHARS( 0x0000007FFFFC0000 ), + LONG2CHARS( 0x000000FFFFFC0000 ), + LONG2CHARS( 0x000001FFFFFC0000 ), + LONG2CHARS( 0x000003FFFFFC0000 ), + LONG2CHARS( 0x000007FFFFFC0000 ), + LONG2CHARS( 0x00000FFFFFFC0000 ), + LONG2CHARS( 0x00001FFFFFFC0000 ), + LONG2CHARS( 0x00003FFFFFFC0000 ), + LONG2CHARS( 0x00007FFFFFFC0000 ), + LONG2CHARS( 0x0000FFFFFFFC0000 ), + LONG2CHARS( 0x0001FFFFFFFC0000 ), + LONG2CHARS( 0x0003FFFFFFFC0000 ), + LONG2CHARS( 0x0007FFFFFFFC0000 ), + LONG2CHARS( 0x000FFFFFFFFC0000 ), + LONG2CHARS( 0x001FFFFFFFFC0000 ), + LONG2CHARS( 0x003FFFFFFFFC0000 ), + LONG2CHARS( 0x007FFFFFFFFC0000 ), + LONG2CHARS( 0x00FFFFFFFFFC0000 ), + LONG2CHARS( 0x01FFFFFFFFFC0000 ), + LONG2CHARS( 0x03FFFFFFFFFC0000 ), + LONG2CHARS( 0x07FFFFFFFFFC0000 ), + LONG2CHARS( 0x0FFFFFFFFFFC0000 ), + LONG2CHARS( 0x1FFFFFFFFFFC0000 ), + LONG2CHARS( 0x3FFFFFFFFFFC0000 ), + LONG2CHARS( 0x7FFFFFFFFFFC0000 ), + LONG2CHARS( 0xFFFFFFFFFFFC0000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000080000 ), + LONG2CHARS( 0x0000000000180000 ), + LONG2CHARS( 0x0000000000380000 ), + LONG2CHARS( 0x0000000000780000 ), + LONG2CHARS( 0x0000000000F80000 ), + LONG2CHARS( 0x0000000001F80000 ), + LONG2CHARS( 0x0000000003F80000 ), + LONG2CHARS( 0x0000000007F80000 ), + LONG2CHARS( 0x000000000FF80000 ), + LONG2CHARS( 0x000000001FF80000 ), + LONG2CHARS( 0x000000003FF80000 ), + LONG2CHARS( 0x000000007FF80000 ), + LONG2CHARS( 0x00000000FFF80000 ), + LONG2CHARS( 0x00000001FFF80000 ), + LONG2CHARS( 0x00000003FFF80000 ), + LONG2CHARS( 0x00000007FFF80000 ), + LONG2CHARS( 0x0000000FFFF80000 ), + LONG2CHARS( 0x0000001FFFF80000 ), + LONG2CHARS( 0x0000003FFFF80000 ), + LONG2CHARS( 0x0000007FFFF80000 ), + LONG2CHARS( 0x000000FFFFF80000 ), + LONG2CHARS( 0x000001FFFFF80000 ), + LONG2CHARS( 0x000003FFFFF80000 ), + LONG2CHARS( 0x000007FFFFF80000 ), + LONG2CHARS( 0x00000FFFFFF80000 ), + LONG2CHARS( 0x00001FFFFFF80000 ), + LONG2CHARS( 0x00003FFFFFF80000 ), + LONG2CHARS( 0x00007FFFFFF80000 ), + LONG2CHARS( 0x0000FFFFFFF80000 ), + LONG2CHARS( 0x0001FFFFFFF80000 ), + LONG2CHARS( 0x0003FFFFFFF80000 ), + LONG2CHARS( 0x0007FFFFFFF80000 ), + LONG2CHARS( 0x000FFFFFFFF80000 ), + LONG2CHARS( 0x001FFFFFFFF80000 ), + LONG2CHARS( 0x003FFFFFFFF80000 ), + LONG2CHARS( 0x007FFFFFFFF80000 ), + LONG2CHARS( 0x00FFFFFFFFF80000 ), + LONG2CHARS( 0x01FFFFFFFFF80000 ), + LONG2CHARS( 0x03FFFFFFFFF80000 ), + LONG2CHARS( 0x07FFFFFFFFF80000 ), + LONG2CHARS( 0x0FFFFFFFFFF80000 ), + LONG2CHARS( 0x1FFFFFFFFFF80000 ), + LONG2CHARS( 0x3FFFFFFFFFF80000 ), + LONG2CHARS( 0x7FFFFFFFFFF80000 ), + LONG2CHARS( 0xFFFFFFFFFFF80000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000100000 ), + LONG2CHARS( 0x0000000000300000 ), + LONG2CHARS( 0x0000000000700000 ), + LONG2CHARS( 0x0000000000F00000 ), + LONG2CHARS( 0x0000000001F00000 ), + LONG2CHARS( 0x0000000003F00000 ), + LONG2CHARS( 0x0000000007F00000 ), + LONG2CHARS( 0x000000000FF00000 ), + LONG2CHARS( 0x000000001FF00000 ), + LONG2CHARS( 0x000000003FF00000 ), + LONG2CHARS( 0x000000007FF00000 ), + LONG2CHARS( 0x00000000FFF00000 ), + LONG2CHARS( 0x00000001FFF00000 ), + LONG2CHARS( 0x00000003FFF00000 ), + LONG2CHARS( 0x00000007FFF00000 ), + LONG2CHARS( 0x0000000FFFF00000 ), + LONG2CHARS( 0x0000001FFFF00000 ), + LONG2CHARS( 0x0000003FFFF00000 ), + LONG2CHARS( 0x0000007FFFF00000 ), + LONG2CHARS( 0x000000FFFFF00000 ), + LONG2CHARS( 0x000001FFFFF00000 ), + LONG2CHARS( 0x000003FFFFF00000 ), + LONG2CHARS( 0x000007FFFFF00000 ), + LONG2CHARS( 0x00000FFFFFF00000 ), + LONG2CHARS( 0x00001FFFFFF00000 ), + LONG2CHARS( 0x00003FFFFFF00000 ), + LONG2CHARS( 0x00007FFFFFF00000 ), + LONG2CHARS( 0x0000FFFFFFF00000 ), + LONG2CHARS( 0x0001FFFFFFF00000 ), + LONG2CHARS( 0x0003FFFFFFF00000 ), + LONG2CHARS( 0x0007FFFFFFF00000 ), + LONG2CHARS( 0x000FFFFFFFF00000 ), + LONG2CHARS( 0x001FFFFFFFF00000 ), + LONG2CHARS( 0x003FFFFFFFF00000 ), + LONG2CHARS( 0x007FFFFFFFF00000 ), + LONG2CHARS( 0x00FFFFFFFFF00000 ), + LONG2CHARS( 0x01FFFFFFFFF00000 ), + LONG2CHARS( 0x03FFFFFFFFF00000 ), + LONG2CHARS( 0x07FFFFFFFFF00000 ), + LONG2CHARS( 0x0FFFFFFFFFF00000 ), + LONG2CHARS( 0x1FFFFFFFFFF00000 ), + LONG2CHARS( 0x3FFFFFFFFFF00000 ), + LONG2CHARS( 0x7FFFFFFFFFF00000 ), + LONG2CHARS( 0xFFFFFFFFFFF00000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000200000 ), + LONG2CHARS( 0x0000000000600000 ), + LONG2CHARS( 0x0000000000E00000 ), + LONG2CHARS( 0x0000000001E00000 ), + LONG2CHARS( 0x0000000003E00000 ), + LONG2CHARS( 0x0000000007E00000 ), + LONG2CHARS( 0x000000000FE00000 ), + LONG2CHARS( 0x000000001FE00000 ), + LONG2CHARS( 0x000000003FE00000 ), + LONG2CHARS( 0x000000007FE00000 ), + LONG2CHARS( 0x00000000FFE00000 ), + LONG2CHARS( 0x00000001FFE00000 ), + LONG2CHARS( 0x00000003FFE00000 ), + LONG2CHARS( 0x00000007FFE00000 ), + LONG2CHARS( 0x0000000FFFE00000 ), + LONG2CHARS( 0x0000001FFFE00000 ), + LONG2CHARS( 0x0000003FFFE00000 ), + LONG2CHARS( 0x0000007FFFE00000 ), + LONG2CHARS( 0x000000FFFFE00000 ), + LONG2CHARS( 0x000001FFFFE00000 ), + LONG2CHARS( 0x000003FFFFE00000 ), + LONG2CHARS( 0x000007FFFFE00000 ), + LONG2CHARS( 0x00000FFFFFE00000 ), + LONG2CHARS( 0x00001FFFFFE00000 ), + LONG2CHARS( 0x00003FFFFFE00000 ), + LONG2CHARS( 0x00007FFFFFE00000 ), + LONG2CHARS( 0x0000FFFFFFE00000 ), + LONG2CHARS( 0x0001FFFFFFE00000 ), + LONG2CHARS( 0x0003FFFFFFE00000 ), + LONG2CHARS( 0x0007FFFFFFE00000 ), + LONG2CHARS( 0x000FFFFFFFE00000 ), + LONG2CHARS( 0x001FFFFFFFE00000 ), + LONG2CHARS( 0x003FFFFFFFE00000 ), + LONG2CHARS( 0x007FFFFFFFE00000 ), + LONG2CHARS( 0x00FFFFFFFFE00000 ), + LONG2CHARS( 0x01FFFFFFFFE00000 ), + LONG2CHARS( 0x03FFFFFFFFE00000 ), + LONG2CHARS( 0x07FFFFFFFFE00000 ), + LONG2CHARS( 0x0FFFFFFFFFE00000 ), + LONG2CHARS( 0x1FFFFFFFFFE00000 ), + LONG2CHARS( 0x3FFFFFFFFFE00000 ), + LONG2CHARS( 0x7FFFFFFFFFE00000 ), + LONG2CHARS( 0xFFFFFFFFFFE00000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000400000 ), + LONG2CHARS( 0x0000000000C00000 ), + LONG2CHARS( 0x0000000001C00000 ), + LONG2CHARS( 0x0000000003C00000 ), + LONG2CHARS( 0x0000000007C00000 ), + LONG2CHARS( 0x000000000FC00000 ), + LONG2CHARS( 0x000000001FC00000 ), + LONG2CHARS( 0x000000003FC00000 ), + LONG2CHARS( 0x000000007FC00000 ), + LONG2CHARS( 0x00000000FFC00000 ), + LONG2CHARS( 0x00000001FFC00000 ), + LONG2CHARS( 0x00000003FFC00000 ), + LONG2CHARS( 0x00000007FFC00000 ), + LONG2CHARS( 0x0000000FFFC00000 ), + LONG2CHARS( 0x0000001FFFC00000 ), + LONG2CHARS( 0x0000003FFFC00000 ), + LONG2CHARS( 0x0000007FFFC00000 ), + LONG2CHARS( 0x000000FFFFC00000 ), + LONG2CHARS( 0x000001FFFFC00000 ), + LONG2CHARS( 0x000003FFFFC00000 ), + LONG2CHARS( 0x000007FFFFC00000 ), + LONG2CHARS( 0x00000FFFFFC00000 ), + LONG2CHARS( 0x00001FFFFFC00000 ), + LONG2CHARS( 0x00003FFFFFC00000 ), + LONG2CHARS( 0x00007FFFFFC00000 ), + LONG2CHARS( 0x0000FFFFFFC00000 ), + LONG2CHARS( 0x0001FFFFFFC00000 ), + LONG2CHARS( 0x0003FFFFFFC00000 ), + LONG2CHARS( 0x0007FFFFFFC00000 ), + LONG2CHARS( 0x000FFFFFFFC00000 ), + LONG2CHARS( 0x001FFFFFFFC00000 ), + LONG2CHARS( 0x003FFFFFFFC00000 ), + LONG2CHARS( 0x007FFFFFFFC00000 ), + LONG2CHARS( 0x00FFFFFFFFC00000 ), + LONG2CHARS( 0x01FFFFFFFFC00000 ), + LONG2CHARS( 0x03FFFFFFFFC00000 ), + LONG2CHARS( 0x07FFFFFFFFC00000 ), + LONG2CHARS( 0x0FFFFFFFFFC00000 ), + LONG2CHARS( 0x1FFFFFFFFFC00000 ), + LONG2CHARS( 0x3FFFFFFFFFC00000 ), + LONG2CHARS( 0x7FFFFFFFFFC00000 ), + LONG2CHARS( 0xFFFFFFFFFFC00000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000800000 ), + LONG2CHARS( 0x0000000001800000 ), + LONG2CHARS( 0x0000000003800000 ), + LONG2CHARS( 0x0000000007800000 ), + LONG2CHARS( 0x000000000F800000 ), + LONG2CHARS( 0x000000001F800000 ), + LONG2CHARS( 0x000000003F800000 ), + LONG2CHARS( 0x000000007F800000 ), + LONG2CHARS( 0x00000000FF800000 ), + LONG2CHARS( 0x00000001FF800000 ), + LONG2CHARS( 0x00000003FF800000 ), + LONG2CHARS( 0x00000007FF800000 ), + LONG2CHARS( 0x0000000FFF800000 ), + LONG2CHARS( 0x0000001FFF800000 ), + LONG2CHARS( 0x0000003FFF800000 ), + LONG2CHARS( 0x0000007FFF800000 ), + LONG2CHARS( 0x000000FFFF800000 ), + LONG2CHARS( 0x000001FFFF800000 ), + LONG2CHARS( 0x000003FFFF800000 ), + LONG2CHARS( 0x000007FFFF800000 ), + LONG2CHARS( 0x00000FFFFF800000 ), + LONG2CHARS( 0x00001FFFFF800000 ), + LONG2CHARS( 0x00003FFFFF800000 ), + LONG2CHARS( 0x00007FFFFF800000 ), + LONG2CHARS( 0x0000FFFFFF800000 ), + LONG2CHARS( 0x0001FFFFFF800000 ), + LONG2CHARS( 0x0003FFFFFF800000 ), + LONG2CHARS( 0x0007FFFFFF800000 ), + LONG2CHARS( 0x000FFFFFFF800000 ), + LONG2CHARS( 0x001FFFFFFF800000 ), + LONG2CHARS( 0x003FFFFFFF800000 ), + LONG2CHARS( 0x007FFFFFFF800000 ), + LONG2CHARS( 0x00FFFFFFFF800000 ), + LONG2CHARS( 0x01FFFFFFFF800000 ), + LONG2CHARS( 0x03FFFFFFFF800000 ), + LONG2CHARS( 0x07FFFFFFFF800000 ), + LONG2CHARS( 0x0FFFFFFFFF800000 ), + LONG2CHARS( 0x1FFFFFFFFF800000 ), + LONG2CHARS( 0x3FFFFFFFFF800000 ), + LONG2CHARS( 0x7FFFFFFFFF800000 ), + LONG2CHARS( 0xFFFFFFFFFF800000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000001000000 ), + LONG2CHARS( 0x0000000003000000 ), + LONG2CHARS( 0x0000000007000000 ), + LONG2CHARS( 0x000000000F000000 ), + LONG2CHARS( 0x000000001F000000 ), + LONG2CHARS( 0x000000003F000000 ), + LONG2CHARS( 0x000000007F000000 ), + LONG2CHARS( 0x00000000FF000000 ), + LONG2CHARS( 0x00000001FF000000 ), + LONG2CHARS( 0x00000003FF000000 ), + LONG2CHARS( 0x00000007FF000000 ), + LONG2CHARS( 0x0000000FFF000000 ), + LONG2CHARS( 0x0000001FFF000000 ), + LONG2CHARS( 0x0000003FFF000000 ), + LONG2CHARS( 0x0000007FFF000000 ), + LONG2CHARS( 0x000000FFFF000000 ), + LONG2CHARS( 0x000001FFFF000000 ), + LONG2CHARS( 0x000003FFFF000000 ), + LONG2CHARS( 0x000007FFFF000000 ), + LONG2CHARS( 0x00000FFFFF000000 ), + LONG2CHARS( 0x00001FFFFF000000 ), + LONG2CHARS( 0x00003FFFFF000000 ), + LONG2CHARS( 0x00007FFFFF000000 ), + LONG2CHARS( 0x0000FFFFFF000000 ), + LONG2CHARS( 0x0001FFFFFF000000 ), + LONG2CHARS( 0x0003FFFFFF000000 ), + LONG2CHARS( 0x0007FFFFFF000000 ), + LONG2CHARS( 0x000FFFFFFF000000 ), + LONG2CHARS( 0x001FFFFFFF000000 ), + LONG2CHARS( 0x003FFFFFFF000000 ), + LONG2CHARS( 0x007FFFFFFF000000 ), + LONG2CHARS( 0x00FFFFFFFF000000 ), + LONG2CHARS( 0x01FFFFFFFF000000 ), + LONG2CHARS( 0x03FFFFFFFF000000 ), + LONG2CHARS( 0x07FFFFFFFF000000 ), + LONG2CHARS( 0x0FFFFFFFFF000000 ), + LONG2CHARS( 0x1FFFFFFFFF000000 ), + LONG2CHARS( 0x3FFFFFFFFF000000 ), + LONG2CHARS( 0x7FFFFFFFFF000000 ), + LONG2CHARS( 0xFFFFFFFFFF000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000002000000 ), + LONG2CHARS( 0x0000000006000000 ), + LONG2CHARS( 0x000000000E000000 ), + LONG2CHARS( 0x000000001E000000 ), + LONG2CHARS( 0x000000003E000000 ), + LONG2CHARS( 0x000000007E000000 ), + LONG2CHARS( 0x00000000FE000000 ), + LONG2CHARS( 0x00000001FE000000 ), + LONG2CHARS( 0x00000003FE000000 ), + LONG2CHARS( 0x00000007FE000000 ), + LONG2CHARS( 0x0000000FFE000000 ), + LONG2CHARS( 0x0000001FFE000000 ), + LONG2CHARS( 0x0000003FFE000000 ), + LONG2CHARS( 0x0000007FFE000000 ), + LONG2CHARS( 0x000000FFFE000000 ), + LONG2CHARS( 0x000001FFFE000000 ), + LONG2CHARS( 0x000003FFFE000000 ), + LONG2CHARS( 0x000007FFFE000000 ), + LONG2CHARS( 0x00000FFFFE000000 ), + LONG2CHARS( 0x00001FFFFE000000 ), + LONG2CHARS( 0x00003FFFFE000000 ), + LONG2CHARS( 0x00007FFFFE000000 ), + LONG2CHARS( 0x0000FFFFFE000000 ), + LONG2CHARS( 0x0001FFFFFE000000 ), + LONG2CHARS( 0x0003FFFFFE000000 ), + LONG2CHARS( 0x0007FFFFFE000000 ), + LONG2CHARS( 0x000FFFFFFE000000 ), + LONG2CHARS( 0x001FFFFFFE000000 ), + LONG2CHARS( 0x003FFFFFFE000000 ), + LONG2CHARS( 0x007FFFFFFE000000 ), + LONG2CHARS( 0x00FFFFFFFE000000 ), + LONG2CHARS( 0x01FFFFFFFE000000 ), + LONG2CHARS( 0x03FFFFFFFE000000 ), + LONG2CHARS( 0x07FFFFFFFE000000 ), + LONG2CHARS( 0x0FFFFFFFFE000000 ), + LONG2CHARS( 0x1FFFFFFFFE000000 ), + LONG2CHARS( 0x3FFFFFFFFE000000 ), + LONG2CHARS( 0x7FFFFFFFFE000000 ), + LONG2CHARS( 0xFFFFFFFFFE000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000004000000 ), + LONG2CHARS( 0x000000000C000000 ), + LONG2CHARS( 0x000000001C000000 ), + LONG2CHARS( 0x000000003C000000 ), + LONG2CHARS( 0x000000007C000000 ), + LONG2CHARS( 0x00000000FC000000 ), + LONG2CHARS( 0x00000001FC000000 ), + LONG2CHARS( 0x00000003FC000000 ), + LONG2CHARS( 0x00000007FC000000 ), + LONG2CHARS( 0x0000000FFC000000 ), + LONG2CHARS( 0x0000001FFC000000 ), + LONG2CHARS( 0x0000003FFC000000 ), + LONG2CHARS( 0x0000007FFC000000 ), + LONG2CHARS( 0x000000FFFC000000 ), + LONG2CHARS( 0x000001FFFC000000 ), + LONG2CHARS( 0x000003FFFC000000 ), + LONG2CHARS( 0x000007FFFC000000 ), + LONG2CHARS( 0x00000FFFFC000000 ), + LONG2CHARS( 0x00001FFFFC000000 ), + LONG2CHARS( 0x00003FFFFC000000 ), + LONG2CHARS( 0x00007FFFFC000000 ), + LONG2CHARS( 0x0000FFFFFC000000 ), + LONG2CHARS( 0x0001FFFFFC000000 ), + LONG2CHARS( 0x0003FFFFFC000000 ), + LONG2CHARS( 0x0007FFFFFC000000 ), + LONG2CHARS( 0x000FFFFFFC000000 ), + LONG2CHARS( 0x001FFFFFFC000000 ), + LONG2CHARS( 0x003FFFFFFC000000 ), + LONG2CHARS( 0x007FFFFFFC000000 ), + LONG2CHARS( 0x00FFFFFFFC000000 ), + LONG2CHARS( 0x01FFFFFFFC000000 ), + LONG2CHARS( 0x03FFFFFFFC000000 ), + LONG2CHARS( 0x07FFFFFFFC000000 ), + LONG2CHARS( 0x0FFFFFFFFC000000 ), + LONG2CHARS( 0x1FFFFFFFFC000000 ), + LONG2CHARS( 0x3FFFFFFFFC000000 ), + LONG2CHARS( 0x7FFFFFFFFC000000 ), + LONG2CHARS( 0xFFFFFFFFFC000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000008000000 ), + LONG2CHARS( 0x0000000018000000 ), + LONG2CHARS( 0x0000000038000000 ), + LONG2CHARS( 0x0000000078000000 ), + LONG2CHARS( 0x00000000F8000000 ), + LONG2CHARS( 0x00000001F8000000 ), + LONG2CHARS( 0x00000003F8000000 ), + LONG2CHARS( 0x00000007F8000000 ), + LONG2CHARS( 0x0000000FF8000000 ), + LONG2CHARS( 0x0000001FF8000000 ), + LONG2CHARS( 0x0000003FF8000000 ), + LONG2CHARS( 0x0000007FF8000000 ), + LONG2CHARS( 0x000000FFF8000000 ), + LONG2CHARS( 0x000001FFF8000000 ), + LONG2CHARS( 0x000003FFF8000000 ), + LONG2CHARS( 0x000007FFF8000000 ), + LONG2CHARS( 0x00000FFFF8000000 ), + LONG2CHARS( 0x00001FFFF8000000 ), + LONG2CHARS( 0x00003FFFF8000000 ), + LONG2CHARS( 0x00007FFFF8000000 ), + LONG2CHARS( 0x0000FFFFF8000000 ), + LONG2CHARS( 0x0001FFFFF8000000 ), + LONG2CHARS( 0x0003FFFFF8000000 ), + LONG2CHARS( 0x0007FFFFF8000000 ), + LONG2CHARS( 0x000FFFFFF8000000 ), + LONG2CHARS( 0x001FFFFFF8000000 ), + LONG2CHARS( 0x003FFFFFF8000000 ), + LONG2CHARS( 0x007FFFFFF8000000 ), + LONG2CHARS( 0x00FFFFFFF8000000 ), + LONG2CHARS( 0x01FFFFFFF8000000 ), + LONG2CHARS( 0x03FFFFFFF8000000 ), + LONG2CHARS( 0x07FFFFFFF8000000 ), + LONG2CHARS( 0x0FFFFFFFF8000000 ), + LONG2CHARS( 0x1FFFFFFFF8000000 ), + LONG2CHARS( 0x3FFFFFFFF8000000 ), + LONG2CHARS( 0x7FFFFFFFF8000000 ), + LONG2CHARS( 0xFFFFFFFFF8000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000010000000 ), + LONG2CHARS( 0x0000000030000000 ), + LONG2CHARS( 0x0000000070000000 ), + LONG2CHARS( 0x00000000F0000000 ), + LONG2CHARS( 0x00000001F0000000 ), + LONG2CHARS( 0x00000003F0000000 ), + LONG2CHARS( 0x00000007F0000000 ), + LONG2CHARS( 0x0000000FF0000000 ), + LONG2CHARS( 0x0000001FF0000000 ), + LONG2CHARS( 0x0000003FF0000000 ), + LONG2CHARS( 0x0000007FF0000000 ), + LONG2CHARS( 0x000000FFF0000000 ), + LONG2CHARS( 0x000001FFF0000000 ), + LONG2CHARS( 0x000003FFF0000000 ), + LONG2CHARS( 0x000007FFF0000000 ), + LONG2CHARS( 0x00000FFFF0000000 ), + LONG2CHARS( 0x00001FFFF0000000 ), + LONG2CHARS( 0x00003FFFF0000000 ), + LONG2CHARS( 0x00007FFFF0000000 ), + LONG2CHARS( 0x0000FFFFF0000000 ), + LONG2CHARS( 0x0001FFFFF0000000 ), + LONG2CHARS( 0x0003FFFFF0000000 ), + LONG2CHARS( 0x0007FFFFF0000000 ), + LONG2CHARS( 0x000FFFFFF0000000 ), + LONG2CHARS( 0x001FFFFFF0000000 ), + LONG2CHARS( 0x003FFFFFF0000000 ), + LONG2CHARS( 0x007FFFFFF0000000 ), + LONG2CHARS( 0x00FFFFFFF0000000 ), + LONG2CHARS( 0x01FFFFFFF0000000 ), + LONG2CHARS( 0x03FFFFFFF0000000 ), + LONG2CHARS( 0x07FFFFFFF0000000 ), + LONG2CHARS( 0x0FFFFFFFF0000000 ), + LONG2CHARS( 0x1FFFFFFFF0000000 ), + LONG2CHARS( 0x3FFFFFFFF0000000 ), + LONG2CHARS( 0x7FFFFFFFF0000000 ), + LONG2CHARS( 0xFFFFFFFFF0000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000020000000 ), + LONG2CHARS( 0x0000000060000000 ), + LONG2CHARS( 0x00000000E0000000 ), + LONG2CHARS( 0x00000001E0000000 ), + LONG2CHARS( 0x00000003E0000000 ), + LONG2CHARS( 0x00000007E0000000 ), + LONG2CHARS( 0x0000000FE0000000 ), + LONG2CHARS( 0x0000001FE0000000 ), + LONG2CHARS( 0x0000003FE0000000 ), + LONG2CHARS( 0x0000007FE0000000 ), + LONG2CHARS( 0x000000FFE0000000 ), + LONG2CHARS( 0x000001FFE0000000 ), + LONG2CHARS( 0x000003FFE0000000 ), + LONG2CHARS( 0x000007FFE0000000 ), + LONG2CHARS( 0x00000FFFE0000000 ), + LONG2CHARS( 0x00001FFFE0000000 ), + LONG2CHARS( 0x00003FFFE0000000 ), + LONG2CHARS( 0x00007FFFE0000000 ), + LONG2CHARS( 0x0000FFFFE0000000 ), + LONG2CHARS( 0x0001FFFFE0000000 ), + LONG2CHARS( 0x0003FFFFE0000000 ), + LONG2CHARS( 0x0007FFFFE0000000 ), + LONG2CHARS( 0x000FFFFFE0000000 ), + LONG2CHARS( 0x001FFFFFE0000000 ), + LONG2CHARS( 0x003FFFFFE0000000 ), + LONG2CHARS( 0x007FFFFFE0000000 ), + LONG2CHARS( 0x00FFFFFFE0000000 ), + LONG2CHARS( 0x01FFFFFFE0000000 ), + LONG2CHARS( 0x03FFFFFFE0000000 ), + LONG2CHARS( 0x07FFFFFFE0000000 ), + LONG2CHARS( 0x0FFFFFFFE0000000 ), + LONG2CHARS( 0x1FFFFFFFE0000000 ), + LONG2CHARS( 0x3FFFFFFFE0000000 ), + LONG2CHARS( 0x7FFFFFFFE0000000 ), + LONG2CHARS( 0xFFFFFFFFE0000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000040000000 ), + LONG2CHARS( 0x00000000C0000000 ), + LONG2CHARS( 0x00000001C0000000 ), + LONG2CHARS( 0x00000003C0000000 ), + LONG2CHARS( 0x00000007C0000000 ), + LONG2CHARS( 0x0000000FC0000000 ), + LONG2CHARS( 0x0000001FC0000000 ), + LONG2CHARS( 0x0000003FC0000000 ), + LONG2CHARS( 0x0000007FC0000000 ), + LONG2CHARS( 0x000000FFC0000000 ), + LONG2CHARS( 0x000001FFC0000000 ), + LONG2CHARS( 0x000003FFC0000000 ), + LONG2CHARS( 0x000007FFC0000000 ), + LONG2CHARS( 0x00000FFFC0000000 ), + LONG2CHARS( 0x00001FFFC0000000 ), + LONG2CHARS( 0x00003FFFC0000000 ), + LONG2CHARS( 0x00007FFFC0000000 ), + LONG2CHARS( 0x0000FFFFC0000000 ), + LONG2CHARS( 0x0001FFFFC0000000 ), + LONG2CHARS( 0x0003FFFFC0000000 ), + LONG2CHARS( 0x0007FFFFC0000000 ), + LONG2CHARS( 0x000FFFFFC0000000 ), + LONG2CHARS( 0x001FFFFFC0000000 ), + LONG2CHARS( 0x003FFFFFC0000000 ), + LONG2CHARS( 0x007FFFFFC0000000 ), + LONG2CHARS( 0x00FFFFFFC0000000 ), + LONG2CHARS( 0x01FFFFFFC0000000 ), + LONG2CHARS( 0x03FFFFFFC0000000 ), + LONG2CHARS( 0x07FFFFFFC0000000 ), + LONG2CHARS( 0x0FFFFFFFC0000000 ), + LONG2CHARS( 0x1FFFFFFFC0000000 ), + LONG2CHARS( 0x3FFFFFFFC0000000 ), + LONG2CHARS( 0x7FFFFFFFC0000000 ), + LONG2CHARS( 0xFFFFFFFFC0000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000080000000 ), + LONG2CHARS( 0x0000000180000000 ), + LONG2CHARS( 0x0000000380000000 ), + LONG2CHARS( 0x0000000780000000 ), + LONG2CHARS( 0x0000000F80000000 ), + LONG2CHARS( 0x0000001F80000000 ), + LONG2CHARS( 0x0000003F80000000 ), + LONG2CHARS( 0x0000007F80000000 ), + LONG2CHARS( 0x000000FF80000000 ), + LONG2CHARS( 0x000001FF80000000 ), + LONG2CHARS( 0x000003FF80000000 ), + LONG2CHARS( 0x000007FF80000000 ), + LONG2CHARS( 0x00000FFF80000000 ), + LONG2CHARS( 0x00001FFF80000000 ), + LONG2CHARS( 0x00003FFF80000000 ), + LONG2CHARS( 0x00007FFF80000000 ), + LONG2CHARS( 0x0000FFFF80000000 ), + LONG2CHARS( 0x0001FFFF80000000 ), + LONG2CHARS( 0x0003FFFF80000000 ), + LONG2CHARS( 0x0007FFFF80000000 ), + LONG2CHARS( 0x000FFFFF80000000 ), + LONG2CHARS( 0x001FFFFF80000000 ), + LONG2CHARS( 0x003FFFFF80000000 ), + LONG2CHARS( 0x007FFFFF80000000 ), + LONG2CHARS( 0x00FFFFFF80000000 ), + LONG2CHARS( 0x01FFFFFF80000000 ), + LONG2CHARS( 0x03FFFFFF80000000 ), + LONG2CHARS( 0x07FFFFFF80000000 ), + LONG2CHARS( 0x0FFFFFFF80000000 ), + LONG2CHARS( 0x1FFFFFFF80000000 ), + LONG2CHARS( 0x3FFFFFFF80000000 ), + LONG2CHARS( 0x7FFFFFFF80000000 ), + LONG2CHARS( 0xFFFFFFFF80000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000100000000 ), + LONG2CHARS( 0x0000000300000000 ), + LONG2CHARS( 0x0000000700000000 ), + LONG2CHARS( 0x0000000F00000000 ), + LONG2CHARS( 0x0000001F00000000 ), + LONG2CHARS( 0x0000003F00000000 ), + LONG2CHARS( 0x0000007F00000000 ), + LONG2CHARS( 0x000000FF00000000 ), + LONG2CHARS( 0x000001FF00000000 ), + LONG2CHARS( 0x000003FF00000000 ), + LONG2CHARS( 0x000007FF00000000 ), + LONG2CHARS( 0x00000FFF00000000 ), + LONG2CHARS( 0x00001FFF00000000 ), + LONG2CHARS( 0x00003FFF00000000 ), + LONG2CHARS( 0x00007FFF00000000 ), + LONG2CHARS( 0x0000FFFF00000000 ), + LONG2CHARS( 0x0001FFFF00000000 ), + LONG2CHARS( 0x0003FFFF00000000 ), + LONG2CHARS( 0x0007FFFF00000000 ), + LONG2CHARS( 0x000FFFFF00000000 ), + LONG2CHARS( 0x001FFFFF00000000 ), + LONG2CHARS( 0x003FFFFF00000000 ), + LONG2CHARS( 0x007FFFFF00000000 ), + LONG2CHARS( 0x00FFFFFF00000000 ), + LONG2CHARS( 0x01FFFFFF00000000 ), + LONG2CHARS( 0x03FFFFFF00000000 ), + LONG2CHARS( 0x07FFFFFF00000000 ), + LONG2CHARS( 0x0FFFFFFF00000000 ), + LONG2CHARS( 0x1FFFFFFF00000000 ), + LONG2CHARS( 0x3FFFFFFF00000000 ), + LONG2CHARS( 0x7FFFFFFF00000000 ), + LONG2CHARS( 0xFFFFFFFF00000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000200000000 ), + LONG2CHARS( 0x0000000600000000 ), + LONG2CHARS( 0x0000000E00000000 ), + LONG2CHARS( 0x0000001E00000000 ), + LONG2CHARS( 0x0000003E00000000 ), + LONG2CHARS( 0x0000007E00000000 ), + LONG2CHARS( 0x000000FE00000000 ), + LONG2CHARS( 0x000001FE00000000 ), + LONG2CHARS( 0x000003FE00000000 ), + LONG2CHARS( 0x000007FE00000000 ), + LONG2CHARS( 0x00000FFE00000000 ), + LONG2CHARS( 0x00001FFE00000000 ), + LONG2CHARS( 0x00003FFE00000000 ), + LONG2CHARS( 0x00007FFE00000000 ), + LONG2CHARS( 0x0000FFFE00000000 ), + LONG2CHARS( 0x0001FFFE00000000 ), + LONG2CHARS( 0x0003FFFE00000000 ), + LONG2CHARS( 0x0007FFFE00000000 ), + LONG2CHARS( 0x000FFFFE00000000 ), + LONG2CHARS( 0x001FFFFE00000000 ), + LONG2CHARS( 0x003FFFFE00000000 ), + LONG2CHARS( 0x007FFFFE00000000 ), + LONG2CHARS( 0x00FFFFFE00000000 ), + LONG2CHARS( 0x01FFFFFE00000000 ), + LONG2CHARS( 0x03FFFFFE00000000 ), + LONG2CHARS( 0x07FFFFFE00000000 ), + LONG2CHARS( 0x0FFFFFFE00000000 ), + LONG2CHARS( 0x1FFFFFFE00000000 ), + LONG2CHARS( 0x3FFFFFFE00000000 ), + LONG2CHARS( 0x7FFFFFFE00000000 ), + LONG2CHARS( 0xFFFFFFFE00000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000400000000 ), + LONG2CHARS( 0x0000000C00000000 ), + LONG2CHARS( 0x0000001C00000000 ), + LONG2CHARS( 0x0000003C00000000 ), + LONG2CHARS( 0x0000007C00000000 ), + LONG2CHARS( 0x000000FC00000000 ), + LONG2CHARS( 0x000001FC00000000 ), + LONG2CHARS( 0x000003FC00000000 ), + LONG2CHARS( 0x000007FC00000000 ), + LONG2CHARS( 0x00000FFC00000000 ), + LONG2CHARS( 0x00001FFC00000000 ), + LONG2CHARS( 0x00003FFC00000000 ), + LONG2CHARS( 0x00007FFC00000000 ), + LONG2CHARS( 0x0000FFFC00000000 ), + LONG2CHARS( 0x0001FFFC00000000 ), + LONG2CHARS( 0x0003FFFC00000000 ), + LONG2CHARS( 0x0007FFFC00000000 ), + LONG2CHARS( 0x000FFFFC00000000 ), + LONG2CHARS( 0x001FFFFC00000000 ), + LONG2CHARS( 0x003FFFFC00000000 ), + LONG2CHARS( 0x007FFFFC00000000 ), + LONG2CHARS( 0x00FFFFFC00000000 ), + LONG2CHARS( 0x01FFFFFC00000000 ), + LONG2CHARS( 0x03FFFFFC00000000 ), + LONG2CHARS( 0x07FFFFFC00000000 ), + LONG2CHARS( 0x0FFFFFFC00000000 ), + LONG2CHARS( 0x1FFFFFFC00000000 ), + LONG2CHARS( 0x3FFFFFFC00000000 ), + LONG2CHARS( 0x7FFFFFFC00000000 ), + LONG2CHARS( 0xFFFFFFFC00000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000800000000 ), + LONG2CHARS( 0x0000001800000000 ), + LONG2CHARS( 0x0000003800000000 ), + LONG2CHARS( 0x0000007800000000 ), + LONG2CHARS( 0x000000F800000000 ), + LONG2CHARS( 0x000001F800000000 ), + LONG2CHARS( 0x000003F800000000 ), + LONG2CHARS( 0x000007F800000000 ), + LONG2CHARS( 0x00000FF800000000 ), + LONG2CHARS( 0x00001FF800000000 ), + LONG2CHARS( 0x00003FF800000000 ), + LONG2CHARS( 0x00007FF800000000 ), + LONG2CHARS( 0x0000FFF800000000 ), + LONG2CHARS( 0x0001FFF800000000 ), + LONG2CHARS( 0x0003FFF800000000 ), + LONG2CHARS( 0x0007FFF800000000 ), + LONG2CHARS( 0x000FFFF800000000 ), + LONG2CHARS( 0x001FFFF800000000 ), + LONG2CHARS( 0x003FFFF800000000 ), + LONG2CHARS( 0x007FFFF800000000 ), + LONG2CHARS( 0x00FFFFF800000000 ), + LONG2CHARS( 0x01FFFFF800000000 ), + LONG2CHARS( 0x03FFFFF800000000 ), + LONG2CHARS( 0x07FFFFF800000000 ), + LONG2CHARS( 0x0FFFFFF800000000 ), + LONG2CHARS( 0x1FFFFFF800000000 ), + LONG2CHARS( 0x3FFFFFF800000000 ), + LONG2CHARS( 0x7FFFFFF800000000 ), + LONG2CHARS( 0xFFFFFFF800000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000001000000000 ), + LONG2CHARS( 0x0000003000000000 ), + LONG2CHARS( 0x0000007000000000 ), + LONG2CHARS( 0x000000F000000000 ), + LONG2CHARS( 0x000001F000000000 ), + LONG2CHARS( 0x000003F000000000 ), + LONG2CHARS( 0x000007F000000000 ), + LONG2CHARS( 0x00000FF000000000 ), + LONG2CHARS( 0x00001FF000000000 ), + LONG2CHARS( 0x00003FF000000000 ), + LONG2CHARS( 0x00007FF000000000 ), + LONG2CHARS( 0x0000FFF000000000 ), + LONG2CHARS( 0x0001FFF000000000 ), + LONG2CHARS( 0x0003FFF000000000 ), + LONG2CHARS( 0x0007FFF000000000 ), + LONG2CHARS( 0x000FFFF000000000 ), + LONG2CHARS( 0x001FFFF000000000 ), + LONG2CHARS( 0x003FFFF000000000 ), + LONG2CHARS( 0x007FFFF000000000 ), + LONG2CHARS( 0x00FFFFF000000000 ), + LONG2CHARS( 0x01FFFFF000000000 ), + LONG2CHARS( 0x03FFFFF000000000 ), + LONG2CHARS( 0x07FFFFF000000000 ), + LONG2CHARS( 0x0FFFFFF000000000 ), + LONG2CHARS( 0x1FFFFFF000000000 ), + LONG2CHARS( 0x3FFFFFF000000000 ), + LONG2CHARS( 0x7FFFFFF000000000 ), + LONG2CHARS( 0xFFFFFFF000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000002000000000 ), + LONG2CHARS( 0x0000006000000000 ), + LONG2CHARS( 0x000000E000000000 ), + LONG2CHARS( 0x000001E000000000 ), + LONG2CHARS( 0x000003E000000000 ), + LONG2CHARS( 0x000007E000000000 ), + LONG2CHARS( 0x00000FE000000000 ), + LONG2CHARS( 0x00001FE000000000 ), + LONG2CHARS( 0x00003FE000000000 ), + LONG2CHARS( 0x00007FE000000000 ), + LONG2CHARS( 0x0000FFE000000000 ), + LONG2CHARS( 0x0001FFE000000000 ), + LONG2CHARS( 0x0003FFE000000000 ), + LONG2CHARS( 0x0007FFE000000000 ), + LONG2CHARS( 0x000FFFE000000000 ), + LONG2CHARS( 0x001FFFE000000000 ), + LONG2CHARS( 0x003FFFE000000000 ), + LONG2CHARS( 0x007FFFE000000000 ), + LONG2CHARS( 0x00FFFFE000000000 ), + LONG2CHARS( 0x01FFFFE000000000 ), + LONG2CHARS( 0x03FFFFE000000000 ), + LONG2CHARS( 0x07FFFFE000000000 ), + LONG2CHARS( 0x0FFFFFE000000000 ), + LONG2CHARS( 0x1FFFFFE000000000 ), + LONG2CHARS( 0x3FFFFFE000000000 ), + LONG2CHARS( 0x7FFFFFE000000000 ), + LONG2CHARS( 0xFFFFFFE000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000004000000000 ), + LONG2CHARS( 0x000000C000000000 ), + LONG2CHARS( 0x000001C000000000 ), + LONG2CHARS( 0x000003C000000000 ), + LONG2CHARS( 0x000007C000000000 ), + LONG2CHARS( 0x00000FC000000000 ), + LONG2CHARS( 0x00001FC000000000 ), + LONG2CHARS( 0x00003FC000000000 ), + LONG2CHARS( 0x00007FC000000000 ), + LONG2CHARS( 0x0000FFC000000000 ), + LONG2CHARS( 0x0001FFC000000000 ), + LONG2CHARS( 0x0003FFC000000000 ), + LONG2CHARS( 0x0007FFC000000000 ), + LONG2CHARS( 0x000FFFC000000000 ), + LONG2CHARS( 0x001FFFC000000000 ), + LONG2CHARS( 0x003FFFC000000000 ), + LONG2CHARS( 0x007FFFC000000000 ), + LONG2CHARS( 0x00FFFFC000000000 ), + LONG2CHARS( 0x01FFFFC000000000 ), + LONG2CHARS( 0x03FFFFC000000000 ), + LONG2CHARS( 0x07FFFFC000000000 ), + LONG2CHARS( 0x0FFFFFC000000000 ), + LONG2CHARS( 0x1FFFFFC000000000 ), + LONG2CHARS( 0x3FFFFFC000000000 ), + LONG2CHARS( 0x7FFFFFC000000000 ), + LONG2CHARS( 0xFFFFFFC000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000008000000000 ), + LONG2CHARS( 0x0000018000000000 ), + LONG2CHARS( 0x0000038000000000 ), + LONG2CHARS( 0x0000078000000000 ), + LONG2CHARS( 0x00000F8000000000 ), + LONG2CHARS( 0x00001F8000000000 ), + LONG2CHARS( 0x00003F8000000000 ), + LONG2CHARS( 0x00007F8000000000 ), + LONG2CHARS( 0x0000FF8000000000 ), + LONG2CHARS( 0x0001FF8000000000 ), + LONG2CHARS( 0x0003FF8000000000 ), + LONG2CHARS( 0x0007FF8000000000 ), + LONG2CHARS( 0x000FFF8000000000 ), + LONG2CHARS( 0x001FFF8000000000 ), + LONG2CHARS( 0x003FFF8000000000 ), + LONG2CHARS( 0x007FFF8000000000 ), + LONG2CHARS( 0x00FFFF8000000000 ), + LONG2CHARS( 0x01FFFF8000000000 ), + LONG2CHARS( 0x03FFFF8000000000 ), + LONG2CHARS( 0x07FFFF8000000000 ), + LONG2CHARS( 0x0FFFFF8000000000 ), + LONG2CHARS( 0x1FFFFF8000000000 ), + LONG2CHARS( 0x3FFFFF8000000000 ), + LONG2CHARS( 0x7FFFFF8000000000 ), + LONG2CHARS( 0xFFFFFF8000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000010000000000 ), + LONG2CHARS( 0x0000030000000000 ), + LONG2CHARS( 0x0000070000000000 ), + LONG2CHARS( 0x00000F0000000000 ), + LONG2CHARS( 0x00001F0000000000 ), + LONG2CHARS( 0x00003F0000000000 ), + LONG2CHARS( 0x00007F0000000000 ), + LONG2CHARS( 0x0000FF0000000000 ), + LONG2CHARS( 0x0001FF0000000000 ), + LONG2CHARS( 0x0003FF0000000000 ), + LONG2CHARS( 0x0007FF0000000000 ), + LONG2CHARS( 0x000FFF0000000000 ), + LONG2CHARS( 0x001FFF0000000000 ), + LONG2CHARS( 0x003FFF0000000000 ), + LONG2CHARS( 0x007FFF0000000000 ), + LONG2CHARS( 0x00FFFF0000000000 ), + LONG2CHARS( 0x01FFFF0000000000 ), + LONG2CHARS( 0x03FFFF0000000000 ), + LONG2CHARS( 0x07FFFF0000000000 ), + LONG2CHARS( 0x0FFFFF0000000000 ), + LONG2CHARS( 0x1FFFFF0000000000 ), + LONG2CHARS( 0x3FFFFF0000000000 ), + LONG2CHARS( 0x7FFFFF0000000000 ), + LONG2CHARS( 0xFFFFFF0000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000020000000000 ), + LONG2CHARS( 0x0000060000000000 ), + LONG2CHARS( 0x00000E0000000000 ), + LONG2CHARS( 0x00001E0000000000 ), + LONG2CHARS( 0x00003E0000000000 ), + LONG2CHARS( 0x00007E0000000000 ), + LONG2CHARS( 0x0000FE0000000000 ), + LONG2CHARS( 0x0001FE0000000000 ), + LONG2CHARS( 0x0003FE0000000000 ), + LONG2CHARS( 0x0007FE0000000000 ), + LONG2CHARS( 0x000FFE0000000000 ), + LONG2CHARS( 0x001FFE0000000000 ), + LONG2CHARS( 0x003FFE0000000000 ), + LONG2CHARS( 0x007FFE0000000000 ), + LONG2CHARS( 0x00FFFE0000000000 ), + LONG2CHARS( 0x01FFFE0000000000 ), + LONG2CHARS( 0x03FFFE0000000000 ), + LONG2CHARS( 0x07FFFE0000000000 ), + LONG2CHARS( 0x0FFFFE0000000000 ), + LONG2CHARS( 0x1FFFFE0000000000 ), + LONG2CHARS( 0x3FFFFE0000000000 ), + LONG2CHARS( 0x7FFFFE0000000000 ), + LONG2CHARS( 0xFFFFFE0000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000040000000000 ), + LONG2CHARS( 0x00000C0000000000 ), + LONG2CHARS( 0x00001C0000000000 ), + LONG2CHARS( 0x00003C0000000000 ), + LONG2CHARS( 0x00007C0000000000 ), + LONG2CHARS( 0x0000FC0000000000 ), + LONG2CHARS( 0x0001FC0000000000 ), + LONG2CHARS( 0x0003FC0000000000 ), + LONG2CHARS( 0x0007FC0000000000 ), + LONG2CHARS( 0x000FFC0000000000 ), + LONG2CHARS( 0x001FFC0000000000 ), + LONG2CHARS( 0x003FFC0000000000 ), + LONG2CHARS( 0x007FFC0000000000 ), + LONG2CHARS( 0x00FFFC0000000000 ), + LONG2CHARS( 0x01FFFC0000000000 ), + LONG2CHARS( 0x03FFFC0000000000 ), + LONG2CHARS( 0x07FFFC0000000000 ), + LONG2CHARS( 0x0FFFFC0000000000 ), + LONG2CHARS( 0x1FFFFC0000000000 ), + LONG2CHARS( 0x3FFFFC0000000000 ), + LONG2CHARS( 0x7FFFFC0000000000 ), + LONG2CHARS( 0xFFFFFC0000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000080000000000 ), + LONG2CHARS( 0x0000180000000000 ), + LONG2CHARS( 0x0000380000000000 ), + LONG2CHARS( 0x0000780000000000 ), + LONG2CHARS( 0x0000F80000000000 ), + LONG2CHARS( 0x0001F80000000000 ), + LONG2CHARS( 0x0003F80000000000 ), + LONG2CHARS( 0x0007F80000000000 ), + LONG2CHARS( 0x000FF80000000000 ), + LONG2CHARS( 0x001FF80000000000 ), + LONG2CHARS( 0x003FF80000000000 ), + LONG2CHARS( 0x007FF80000000000 ), + LONG2CHARS( 0x00FFF80000000000 ), + LONG2CHARS( 0x01FFF80000000000 ), + LONG2CHARS( 0x03FFF80000000000 ), + LONG2CHARS( 0x07FFF80000000000 ), + LONG2CHARS( 0x0FFFF80000000000 ), + LONG2CHARS( 0x1FFFF80000000000 ), + LONG2CHARS( 0x3FFFF80000000000 ), + LONG2CHARS( 0x7FFFF80000000000 ), + LONG2CHARS( 0xFFFFF80000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000100000000000 ), + LONG2CHARS( 0x0000300000000000 ), + LONG2CHARS( 0x0000700000000000 ), + LONG2CHARS( 0x0000F00000000000 ), + LONG2CHARS( 0x0001F00000000000 ), + LONG2CHARS( 0x0003F00000000000 ), + LONG2CHARS( 0x0007F00000000000 ), + LONG2CHARS( 0x000FF00000000000 ), + LONG2CHARS( 0x001FF00000000000 ), + LONG2CHARS( 0x003FF00000000000 ), + LONG2CHARS( 0x007FF00000000000 ), + LONG2CHARS( 0x00FFF00000000000 ), + LONG2CHARS( 0x01FFF00000000000 ), + LONG2CHARS( 0x03FFF00000000000 ), + LONG2CHARS( 0x07FFF00000000000 ), + LONG2CHARS( 0x0FFFF00000000000 ), + LONG2CHARS( 0x1FFFF00000000000 ), + LONG2CHARS( 0x3FFFF00000000000 ), + LONG2CHARS( 0x7FFFF00000000000 ), + LONG2CHARS( 0xFFFFF00000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000200000000000 ), + LONG2CHARS( 0x0000600000000000 ), + LONG2CHARS( 0x0000E00000000000 ), + LONG2CHARS( 0x0001E00000000000 ), + LONG2CHARS( 0x0003E00000000000 ), + LONG2CHARS( 0x0007E00000000000 ), + LONG2CHARS( 0x000FE00000000000 ), + LONG2CHARS( 0x001FE00000000000 ), + LONG2CHARS( 0x003FE00000000000 ), + LONG2CHARS( 0x007FE00000000000 ), + LONG2CHARS( 0x00FFE00000000000 ), + LONG2CHARS( 0x01FFE00000000000 ), + LONG2CHARS( 0x03FFE00000000000 ), + LONG2CHARS( 0x07FFE00000000000 ), + LONG2CHARS( 0x0FFFE00000000000 ), + LONG2CHARS( 0x1FFFE00000000000 ), + LONG2CHARS( 0x3FFFE00000000000 ), + LONG2CHARS( 0x7FFFE00000000000 ), + LONG2CHARS( 0xFFFFE00000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000400000000000 ), + LONG2CHARS( 0x0000C00000000000 ), + LONG2CHARS( 0x0001C00000000000 ), + LONG2CHARS( 0x0003C00000000000 ), + LONG2CHARS( 0x0007C00000000000 ), + LONG2CHARS( 0x000FC00000000000 ), + LONG2CHARS( 0x001FC00000000000 ), + LONG2CHARS( 0x003FC00000000000 ), + LONG2CHARS( 0x007FC00000000000 ), + LONG2CHARS( 0x00FFC00000000000 ), + LONG2CHARS( 0x01FFC00000000000 ), + LONG2CHARS( 0x03FFC00000000000 ), + LONG2CHARS( 0x07FFC00000000000 ), + LONG2CHARS( 0x0FFFC00000000000 ), + LONG2CHARS( 0x1FFFC00000000000 ), + LONG2CHARS( 0x3FFFC00000000000 ), + LONG2CHARS( 0x7FFFC00000000000 ), + LONG2CHARS( 0xFFFFC00000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000800000000000 ), + LONG2CHARS( 0x0001800000000000 ), + LONG2CHARS( 0x0003800000000000 ), + LONG2CHARS( 0x0007800000000000 ), + LONG2CHARS( 0x000F800000000000 ), + LONG2CHARS( 0x001F800000000000 ), + LONG2CHARS( 0x003F800000000000 ), + LONG2CHARS( 0x007F800000000000 ), + LONG2CHARS( 0x00FF800000000000 ), + LONG2CHARS( 0x01FF800000000000 ), + LONG2CHARS( 0x03FF800000000000 ), + LONG2CHARS( 0x07FF800000000000 ), + LONG2CHARS( 0x0FFF800000000000 ), + LONG2CHARS( 0x1FFF800000000000 ), + LONG2CHARS( 0x3FFF800000000000 ), + LONG2CHARS( 0x7FFF800000000000 ), + LONG2CHARS( 0xFFFF800000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0001000000000000 ), + LONG2CHARS( 0x0003000000000000 ), + LONG2CHARS( 0x0007000000000000 ), + LONG2CHARS( 0x000F000000000000 ), + LONG2CHARS( 0x001F000000000000 ), + LONG2CHARS( 0x003F000000000000 ), + LONG2CHARS( 0x007F000000000000 ), + LONG2CHARS( 0x00FF000000000000 ), + LONG2CHARS( 0x01FF000000000000 ), + LONG2CHARS( 0x03FF000000000000 ), + LONG2CHARS( 0x07FF000000000000 ), + LONG2CHARS( 0x0FFF000000000000 ), + LONG2CHARS( 0x1FFF000000000000 ), + LONG2CHARS( 0x3FFF000000000000 ), + LONG2CHARS( 0x7FFF000000000000 ), + LONG2CHARS( 0xFFFF000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0002000000000000 ), + LONG2CHARS( 0x0006000000000000 ), + LONG2CHARS( 0x000E000000000000 ), + LONG2CHARS( 0x001E000000000000 ), + LONG2CHARS( 0x003E000000000000 ), + LONG2CHARS( 0x007E000000000000 ), + LONG2CHARS( 0x00FE000000000000 ), + LONG2CHARS( 0x01FE000000000000 ), + LONG2CHARS( 0x03FE000000000000 ), + LONG2CHARS( 0x07FE000000000000 ), + LONG2CHARS( 0x0FFE000000000000 ), + LONG2CHARS( 0x1FFE000000000000 ), + LONG2CHARS( 0x3FFE000000000000 ), + LONG2CHARS( 0x7FFE000000000000 ), + LONG2CHARS( 0xFFFE000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0004000000000000 ), + LONG2CHARS( 0x000C000000000000 ), + LONG2CHARS( 0x001C000000000000 ), + LONG2CHARS( 0x003C000000000000 ), + LONG2CHARS( 0x007C000000000000 ), + LONG2CHARS( 0x00FC000000000000 ), + LONG2CHARS( 0x01FC000000000000 ), + LONG2CHARS( 0x03FC000000000000 ), + LONG2CHARS( 0x07FC000000000000 ), + LONG2CHARS( 0x0FFC000000000000 ), + LONG2CHARS( 0x1FFC000000000000 ), + LONG2CHARS( 0x3FFC000000000000 ), + LONG2CHARS( 0x7FFC000000000000 ), + LONG2CHARS( 0xFFFC000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0008000000000000 ), + LONG2CHARS( 0x0018000000000000 ), + LONG2CHARS( 0x0038000000000000 ), + LONG2CHARS( 0x0078000000000000 ), + LONG2CHARS( 0x00F8000000000000 ), + LONG2CHARS( 0x01F8000000000000 ), + LONG2CHARS( 0x03F8000000000000 ), + LONG2CHARS( 0x07F8000000000000 ), + LONG2CHARS( 0x0FF8000000000000 ), + LONG2CHARS( 0x1FF8000000000000 ), + LONG2CHARS( 0x3FF8000000000000 ), + LONG2CHARS( 0x7FF8000000000000 ), + LONG2CHARS( 0xFFF8000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0010000000000000 ), + LONG2CHARS( 0x0030000000000000 ), + LONG2CHARS( 0x0070000000000000 ), + LONG2CHARS( 0x00F0000000000000 ), + LONG2CHARS( 0x01F0000000000000 ), + LONG2CHARS( 0x03F0000000000000 ), + LONG2CHARS( 0x07F0000000000000 ), + LONG2CHARS( 0x0FF0000000000000 ), + LONG2CHARS( 0x1FF0000000000000 ), + LONG2CHARS( 0x3FF0000000000000 ), + LONG2CHARS( 0x7FF0000000000000 ), + LONG2CHARS( 0xFFF0000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0020000000000000 ), + LONG2CHARS( 0x0060000000000000 ), + LONG2CHARS( 0x00E0000000000000 ), + LONG2CHARS( 0x01E0000000000000 ), + LONG2CHARS( 0x03E0000000000000 ), + LONG2CHARS( 0x07E0000000000000 ), + LONG2CHARS( 0x0FE0000000000000 ), + LONG2CHARS( 0x1FE0000000000000 ), + LONG2CHARS( 0x3FE0000000000000 ), + LONG2CHARS( 0x7FE0000000000000 ), + LONG2CHARS( 0xFFE0000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0040000000000000 ), + LONG2CHARS( 0x00C0000000000000 ), + LONG2CHARS( 0x01C0000000000000 ), + LONG2CHARS( 0x03C0000000000000 ), + LONG2CHARS( 0x07C0000000000000 ), + LONG2CHARS( 0x0FC0000000000000 ), + LONG2CHARS( 0x1FC0000000000000 ), + LONG2CHARS( 0x3FC0000000000000 ), + LONG2CHARS( 0x7FC0000000000000 ), + LONG2CHARS( 0xFFC0000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0080000000000000 ), + LONG2CHARS( 0x0180000000000000 ), + LONG2CHARS( 0x0380000000000000 ), + LONG2CHARS( 0x0780000000000000 ), + LONG2CHARS( 0x0F80000000000000 ), + LONG2CHARS( 0x1F80000000000000 ), + LONG2CHARS( 0x3F80000000000000 ), + LONG2CHARS( 0x7F80000000000000 ), + LONG2CHARS( 0xFF80000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0100000000000000 ), + LONG2CHARS( 0x0300000000000000 ), + LONG2CHARS( 0x0700000000000000 ), + LONG2CHARS( 0x0F00000000000000 ), + LONG2CHARS( 0x1F00000000000000 ), + LONG2CHARS( 0x3F00000000000000 ), + LONG2CHARS( 0x7F00000000000000 ), + LONG2CHARS( 0xFF00000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0200000000000000 ), + LONG2CHARS( 0x0600000000000000 ), + LONG2CHARS( 0x0E00000000000000 ), + LONG2CHARS( 0x1E00000000000000 ), + LONG2CHARS( 0x3E00000000000000 ), + LONG2CHARS( 0x7E00000000000000 ), + LONG2CHARS( 0xFE00000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0400000000000000 ), + LONG2CHARS( 0x0C00000000000000 ), + LONG2CHARS( 0x1C00000000000000 ), + LONG2CHARS( 0x3C00000000000000 ), + LONG2CHARS( 0x7C00000000000000 ), + LONG2CHARS( 0xFC00000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0800000000000000 ), + LONG2CHARS( 0x1800000000000000 ), + LONG2CHARS( 0x3800000000000000 ), + LONG2CHARS( 0x7800000000000000 ), + LONG2CHARS( 0xF800000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x1000000000000000 ), + LONG2CHARS( 0x3000000000000000 ), + LONG2CHARS( 0x7000000000000000 ), + LONG2CHARS( 0xF000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x2000000000000000 ), + LONG2CHARS( 0x6000000000000000 ), + LONG2CHARS( 0xE000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x4000000000000000 ), + LONG2CHARS( 0xC000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, + { + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x8000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + LONG2CHARS( 0x0000000000000000 ), + }, +}; +#endif /* PPW */ +#endif + + +/* used for masking bits in bresenham lines + mask[n] is used to mask out all but bit n in a longword (n is a +screen position). + rmask[n] is used to mask out the single bit at position n (n +is a screen posiotion.) +*/ + +#define _1_ ((PixelType)1) + +#if (BITMAP_BIT_ORDER == MSBFirst) +PixelType mask[PPW] = + { +#if PPW == 64 + LONG2CHARS( _1_<<63 ), LONG2CHARS( 1L<<62 ), LONG2CHARS( 1L<<61 ), + LONG2CHARS( 1L<<60 ), LONG2CHARS( 1L<<59 ), + LONG2CHARS( 1L<<58 ), LONG2CHARS( 1L<<57 ), LONG2CHARS( 1L<<56 ), + LONG2CHARS( 1L<<55 ), LONG2CHARS( 1L<<54 ), LONG2CHARS( 1L<<53 ), + LONG2CHARS( 1L<<52 ), LONG2CHARS( 1L<<51 ), LONG2CHARS( 1L<<50 ), + LONG2CHARS( 1L<<49 ), LONG2CHARS( 1L<<48 ), LONG2CHARS( 1L<<47 ), + LONG2CHARS( 1L<<46 ), LONG2CHARS( 1L<<45 ), LONG2CHARS( 1L<<44 ), + LONG2CHARS( 1L<<43 ), LONG2CHARS( 1L<<42 ), LONG2CHARS( 1L<<41 ), + LONG2CHARS( 1L<<40 ), LONG2CHARS( 1L<<39 ), LONG2CHARS( 1L<<38 ), + LONG2CHARS( 1L<<37 ), LONG2CHARS( 1L<<36 ), LONG2CHARS( 1L<<35 ), + LONG2CHARS( 1L<<34 ), LONG2CHARS( 1L<<33 ), LONG2CHARS( 1L<<32 ), +#endif /* PPW */ + LONG2CHARS( _1_<<31 ), LONG2CHARS( 1<<30 ), LONG2CHARS( 1<<29 ), + LONG2CHARS( 1<<28 ), LONG2CHARS( 1<<27 ), LONG2CHARS( 1<<26 ), + LONG2CHARS( 1<<25 ), LONG2CHARS( 1<<24 ), LONG2CHARS( 1<<23 ), + LONG2CHARS( 1<<22 ), LONG2CHARS( 1<<21 ), LONG2CHARS( 1<<20 ), + LONG2CHARS( 1<<19 ), LONG2CHARS( 1<<18 ), LONG2CHARS( 1<<17 ), + LONG2CHARS( 1<<16 ), LONG2CHARS( 1<<15 ), LONG2CHARS( 1<<14 ), + LONG2CHARS( 1<<13 ), LONG2CHARS( 1<<12 ), LONG2CHARS( 1<<11 ), + LONG2CHARS( 1<<10 ), LONG2CHARS( 1<<9 ), LONG2CHARS( 1<<8 ), + LONG2CHARS( 1<<7 ), LONG2CHARS( 1<<6 ), LONG2CHARS( 1<<5 ), + LONG2CHARS( 1<<4 ), LONG2CHARS( 1<<3 ), LONG2CHARS( 1<<2 ), + LONG2CHARS( 1<<1 ), LONG2CHARS( 1<<0 ) + }; + +PixelType rmask[] = + { +#if PPW == 64 + 0xffffffffffffffff ^ LONG2CHARS( _1_<<63 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<62 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<61 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<60 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<59 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<58 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<57 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<56 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<55 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<54 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<53 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<52 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<51 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<50 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<49 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<48 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<47 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<46 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<45 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<44 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<43 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<42 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<41 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<40 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<39 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<38 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<37 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<36 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<35 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<34 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<33 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<32 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<31 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<30 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<29 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<28 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<27 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<26 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<25 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<24 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<23 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<22 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<21 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<20 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<19 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<18 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<17 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<16 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<15 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<14 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<13 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<12 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<11 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<10 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<9 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<8 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<7 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<6 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<5 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<4 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<3 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<2 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<1 ), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<0 ) +#else /* PPW */ + 0xffffffff ^ LONG2CHARS( _1_<<31 ), 0xffffffff ^ LONG2CHARS( 1<<30 ), + 0xffffffff ^ LONG2CHARS( 1<<29 ), 0xffffffff ^ LONG2CHARS( 1<<28), + 0xffffffff ^ LONG2CHARS( 1<<27 ), 0xffffffff ^ LONG2CHARS( 1<<26), + 0xffffffff ^ LONG2CHARS( 1<<25 ), 0xffffffff ^ LONG2CHARS( 1<<24 ), + 0xffffffff ^ LONG2CHARS( 1<<23 ), 0xffffffff ^ LONG2CHARS( 1<<22), + 0xffffffff ^ LONG2CHARS( 1<<21 ), 0xffffffff ^ LONG2CHARS( 1<<20), + 0xffffffff ^ LONG2CHARS( 1<<19 ), 0xffffffff ^ LONG2CHARS( 1<<18 ), + 0xffffffff ^ LONG2CHARS( 1<<17 ), 0xffffffff ^ LONG2CHARS( 1<<16), + 0xffffffff ^ LONG2CHARS( 1<<15 ), 0xffffffff ^ LONG2CHARS( 1<<14), + 0xffffffff ^ LONG2CHARS( 1<<13 ), 0xffffffff ^ LONG2CHARS( 1<<12 ), + 0xffffffff ^ LONG2CHARS( 1<<11 ), 0xffffffff ^ LONG2CHARS( 1<<10), + 0xffffffff ^ LONG2CHARS( 1<<9 ), 0xffffffff ^ LONG2CHARS( 1<<8), + 0xffffffff ^ LONG2CHARS( 1<<7 ), 0xffffffff ^ LONG2CHARS( 1<<6), + 0xffffffff ^ LONG2CHARS( 1<<5 ), 0xffffffff ^ LONG2CHARS( 1<<4), + 0xffffffff ^ LONG2CHARS( 1<<3 ), 0xffffffff ^ LONG2CHARS( 1<<2), + 0xffffffff ^ LONG2CHARS( 1<<1 ), 0xffffffff ^ LONG2CHARS( 1<<0) +#endif /* PPW */ + }; +#else /* LSBFirst */ +PixelType mask[] = + { + LONG2CHARS( 1<<0 ), LONG2CHARS( 1<<1 ), LONG2CHARS( 1<<2), + LONG2CHARS( 1<<3 ), LONG2CHARS( 1<<4 ), LONG2CHARS( 1<<5), + LONG2CHARS( 1<<6 ), LONG2CHARS( 1<<7 ), LONG2CHARS( 1<<8), + LONG2CHARS( 1<<9 ), LONG2CHARS( 1<<10 ), LONG2CHARS( 1<<11), + LONG2CHARS( 1<<12 ), LONG2CHARS( 1<<13 ), LONG2CHARS( 1<<14), + LONG2CHARS( 1<<15 ), LONG2CHARS( 1<<16 ), LONG2CHARS( 1<<17), + LONG2CHARS( 1<<18 ), LONG2CHARS( 1<<19 ), LONG2CHARS( 1<<20), + LONG2CHARS( 1<<21 ), LONG2CHARS( 1<<22 ), LONG2CHARS( 1<<23), + LONG2CHARS( 1<<24 ), LONG2CHARS( 1<<25 ), LONG2CHARS( 1<<26), + LONG2CHARS( 1<<27 ), LONG2CHARS( 1<<28 ), LONG2CHARS( 1<<29), + LONG2CHARS( 1<<30 ), LONG2CHARS( _1_<<31 ) +#if PPW == 64 + , + LONG2CHARS( 1L<<32), + LONG2CHARS( 1L<<33 ), LONG2CHARS( 1L<<34 ), LONG2CHARS( 1L<<35), + LONG2CHARS( 1L<<36 ), LONG2CHARS( 1L<<37 ), LONG2CHARS( 1L<<38), + LONG2CHARS( 1L<<39 ), LONG2CHARS( 1L<<40 ), LONG2CHARS( 1L<<41), + LONG2CHARS( 1L<<42 ), LONG2CHARS( 1L<<43 ), LONG2CHARS( 1L<<44), + LONG2CHARS( 1L<<45 ), LONG2CHARS( 1L<<46 ), LONG2CHARS( 1L<<47), + LONG2CHARS( 1L<<48 ), LONG2CHARS( 1L<<49 ), LONG2CHARS( 1L<<50), + LONG2CHARS( 1L<<51 ), LONG2CHARS( 1L<<52 ), LONG2CHARS( 1L<<53), + LONG2CHARS( 1L<<54 ), LONG2CHARS( 1L<<55 ), LONG2CHARS( 1L<<56), + LONG2CHARS( 1L<<57 ), LONG2CHARS( 1L<<58 ), LONG2CHARS( 1L<<59), + LONG2CHARS( 1L<<60 ), LONG2CHARS( 1L<<61 ), + LONG2CHARS( 1L<<62 ), LONG2CHARS( _1_<<63 ), +#endif /* PPW */ + }; +PixelType rmask[] = + { +#if PPW == 32 + 0xffffffff ^ LONG2CHARS( 1<<0), 0xffffffff ^ LONG2CHARS( 1<<1), + 0xffffffff ^ LONG2CHARS( 1<<2), 0xffffffff ^ LONG2CHARS( 1<<3), + 0xffffffff ^ LONG2CHARS( 1<<4), 0xffffffff ^ LONG2CHARS( 1<<5), + 0xffffffff ^ LONG2CHARS( 1<<6), 0xffffffff ^ LONG2CHARS( 1<<7), + 0xffffffff ^ LONG2CHARS( 1<<8), 0xffffffff ^ LONG2CHARS( 1<<9), + 0xffffffff ^ LONG2CHARS( 1<<10), 0xffffffff ^ LONG2CHARS( 1<<11), + 0xffffffff ^ LONG2CHARS( 1<<12), 0xffffffff ^ LONG2CHARS( 1<<13), + 0xffffffff ^ LONG2CHARS( 1<<14), 0xffffffff ^ LONG2CHARS( 1<<15), + 0xffffffff ^ LONG2CHARS( 1<<16), 0xffffffff ^ LONG2CHARS( 1<<17), + 0xffffffff ^ LONG2CHARS( 1<<18), 0xffffffff ^ LONG2CHARS( 1<<19), + 0xffffffff ^ LONG2CHARS( 1<<20), 0xffffffff ^ LONG2CHARS( 1<<21), + 0xffffffff ^ LONG2CHARS( 1<<22), 0xffffffff ^ LONG2CHARS( 1<<23), + 0xffffffff ^ LONG2CHARS( 1<<24), 0xffffffff ^ LONG2CHARS( 1<<25), + 0xffffffff ^ LONG2CHARS( 1<<26), 0xffffffff ^ LONG2CHARS( 1<<27), + 0xffffffff ^ LONG2CHARS( 1<<28), 0xffffffff ^ LONG2CHARS( 1<<29), + 0xffffffff ^ LONG2CHARS( 1<<30), 0xffffffff ^ LONG2CHARS( _1_<<31) +#else /* PPW */ + 0xffffffffffffffff ^ LONG2CHARS( 1L<<0), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<1), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<2), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<3), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<4), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<5), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<6), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<7), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<8), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<9), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<10), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<11), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<12), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<13), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<14), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<15), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<16), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<17), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<18), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<19), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<20), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<21), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<22), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<23), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<24), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<25), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<26), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<27), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<28), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<29), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<30), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<31), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<32), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<33), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<34), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<35), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<36), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<37), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<38), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<39), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<40), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<41), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<42), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<43), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<44), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<45), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<46), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<47), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<48), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<49), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<50), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<51), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<52), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<53), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<54), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<55), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<56), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<57), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<58), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<59), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<60), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<61), + 0xffffffffffffffff ^ LONG2CHARS( 1L<<62), + 0xffffffffffffffff ^ LONG2CHARS( _1_<<63), +#endif /* PPW */ + }; +#endif /* BITMAP_BIT_ORDER */ + +#undef _1_ + +/* + * Merge raster ops for full src + dest + plane mask + * + * More clever usage of boolean arithmetic to reduce the + * cost of complex raster ops. This is for bitblt and + * reduces all 16 raster ops + planemask to a single + * expression: + * + * dst = dst & (src & ca1 ^ cx1) ^ (src & ca2 ^ cx2) + * + * The array below contains the values for c?? for each + * raster op. Those values are further modified by + * planemasks on multi-plane displays as follows: + * + * ca1 &= pm; + * cx1 |= ~pm; + * ca2 &= pm; + * cx2 &= pm; + */ + +#include "mergerop.h" + +#define O 0 +#define I ~((unsigned long)0) + +mergeRopRec mergeRopBits[16] = { +O,O,O,O, /* clear 0x0 0 */ +I,O,O,O, /* and 0x1 src AND dst */ +I,O,I,O, /* andReverse 0x2 src AND NOT dst */ +O,O,I,O, /* copy 0x3 src */ +I,I,O,O, /* andInverted 0x4 NOT src AND dst */ +O,I,O,O, /* noop 0x5 dst */ +O,I,I,O, /* xor 0x6 src XOR dst */ +I,I,I,O, /* or 0x7 src OR dst */ +I,I,I,I, /* nor 0x8 NOT src AND NOT dst */ +O,I,I,I, /* equiv 0x9 NOT src XOR dst */ +O,I,O,I, /* invert 0xa NOT dst */ +I,I,O,I, /* orReverse 0xb src OR NOT dst */ +O,O,I,I, /* copyInverted 0xc NOT src */ +I,O,I,I, /* orInverted 0xd NOT src OR dst */ +I,O,O,I, /* nand 0xe NOT src OR NOT dst */ +O,O,O,I, /* set 0xf 1 */ +}; + +#undef O +#undef I diff --git a/mfb/maskbits.h b/mfb/maskbits.h new file mode 100644 index 000000000..e8a7faa90 --- /dev/null +++ b/mfb/maskbits.h @@ -0,0 +1,711 @@ +/* Combined Purdue/PurduePlus patches, level 2.1, 1/24/89 */ +/*********************************************************** +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ +/* $Xorg: maskbits.h,v 1.3 2000/08/17 19:53:34 cpqbld Exp $ */ +#include "X.h" +#include "Xmd.h" +#include "servermd.h" + + +/* the following notes use the following conventions: +SCREEN LEFT SCREEN RIGHT +in this file and maskbits.c, left and right refer to screen coordinates, +NOT bit numbering in registers. + +starttab[n] + bits[0,n-1] = 0 bits[n,PLST] = 1 +endtab[n] = + bits[0,n-1] = 1 bits[n,PLST] = 0 + +startpartial[], endpartial[] + these are used as accelerators for doing putbits and masking out +bits that are all contained between longword boudaries. the extra +256 bytes of data seems a small price to pay -- code is smaller, +and narrow things (e.g. window borders) go faster. + +the names may seem misleading; they are derived not from which end +of the word the bits are turned on, but at which end of a scanline +the table tends to be used. + +look at the tables and macros to understand boundary conditions. +(careful readers will note that starttab[n] = ~endtab[n] for n != 0) + +----------------------------------------------------------------------- +these two macros depend on the screen's bit ordering. +in both of them x is a screen position. they are used to +combine bits collected from multiple longwords into a +single destination longword, and to unpack a single +source longword into multiple destinations. + +SCRLEFT(dst, x) + takes dst[x, PPW] and moves them to dst[0, PPW-x] + the contents of the rest of dst are 0. + this is a right shift on LSBFirst (forward-thinking) + machines like the VAX, and left shift on MSBFirst + (backwards) machines like the 680x0 and pc/rt. + +SCRRIGHT(dst, x) + takes dst[0,x] and moves them to dst[PPW-x, PPW] + the contents of the rest of dst are 0. + this is a left shift on LSBFirst, right shift + on MSBFirst. + + +the remaining macros are cpu-independent; all bit order dependencies +are built into the tables and the two macros above. + +maskbits(x, w, startmask, endmask, nlw) + for a span of width w starting at position x, returns +a mask for ragged bits at start, mask for ragged bits at end, +and the number of whole longwords between the ends. + +maskpartialbits(x, w, mask) + works like maskbits(), except all the bits are in the + same longword (i.e. (x&PIM + w) <= PPW) + +maskPPWbits(x, w, startmask, endmask, nlw) + as maskbits, but does not calculate nlw. it is used by + mfbGlyphBlt to put down glyphs <= PPW bits wide. + +------------------------------------------------------------------- + +NOTE + any pointers passed to the following 4 macros are + guranteed to be PPW-bit aligned. + The only non-PPW-bit-aligned references ever made are + to font glyphs, and those are made with getleftbits() + and getshiftedleftbits (qq.v.) + + For 64-bit server, it is assumed that we will never have font padding + of more than 4 bytes. The code uses int's to access the fonts + intead of longs. + +getbits(psrc, x, w, dst) + starting at position x in psrc (x < PPW), collect w + bits and put them in the screen left portion of dst. + psrc is a longword pointer. this may span longword boundaries. + it special-cases fetching all w bits from one longword. + + +--------+--------+ +--------+ + | | m |n| | ==> | m |n| | + +--------+--------+ +--------+ + x x+w 0 w + psrc psrc+1 dst + m = PPW - x + n = w - m + + implementation: + get m bits, move to screen-left of dst, zeroing rest of dst; + get n bits from next word, move screen-right by m, zeroing + lower m bits of word. + OR the two things together. + +putbits(src, x, w, pdst) + starting at position x in pdst, put down the screen-leftmost + w bits of src. pdst is a longword pointer. this may + span longword boundaries. + it special-cases putting all w bits into the same longword. + + +--------+ +--------+--------+ + | m |n| | ==> | | m |n| | + +--------+ +--------+--------+ + 0 w x x+w + dst pdst pdst+1 + m = PPW - x + n = w - m + + implementation: + get m bits, shift screen-right by x, zero screen-leftmost x + bits; zero rightmost m bits of *pdst and OR in stuff + from before the semicolon. + shift src screen-left by m, zero bits n-PPW; + zero leftmost n bits of *(pdst+1) and OR in the + stuff from before the semicolon. + +putbitsrop(src, x, w, pdst, ROP) + like putbits but calls DoRop with the rasterop ROP (see mfb.h for + DoRop) + +putbitsrrop(src, x, w, pdst, ROP) + like putbits but calls DoRRop with the reduced rasterop ROP + (see mfb.h for DoRRop) + +----------------------------------------------------------------------- + The two macros below are used only for getting bits from glyphs +in fonts, and glyphs in fonts are gotten only with the following two +mcros. + You should tune these macros toyour font format and cpu +byte ordering. + +NOTE +getleftbits(psrc, w, dst) + get the leftmost w (w<=32) bits from *psrc and put them + in dst. this is used by the mfbGlyphBlt code for glyphs + <=PPW bits wide. + psrc is declared (unsigned char *) + + psrc is NOT guaranteed to be PPW-bit aligned. on many + machines this will cause problems, so there are several + versions of this macro. + + this macro is called ONLY for getting bits from font glyphs, + and depends on the server-natural font padding. + + for blazing text performance, you want this macro + to touch memory as infrequently as possible (e.g. + fetch longwords) and as efficiently as possible + (e.g. don't fetch misaligned longwords) + +getshiftedleftbits(psrc, offset, w, dst) + used by the font code; like getleftbits, but shifts the + bits SCRLEFT by offset. + this is implemented portably, calling getleftbits() + and SCRLEFT(). + psrc is declared (unsigned char *). +*/ + +/* to match CFB and allow algorithm sharing ... + * name mfb32 mfb64 explanation + * ---- ------ ----- ----------- + * PGSZ 32 64 pixel group size (in bits; same as PPW for mfb) + * PGSZB 4 8 pixel group size (in bytes) + * PPW 32 64 pixels per word (pixels per pixel group) + * PLST 31 63 index of last pixel in a word (should be PPW-1) + * PIM 0x1f 0x3f pixel index mask (index within a pixel group) + * PWSH 5 6 pixel-to-word shift (should be log2(PPW)) + * + * The MFB_ versions are here so that cfb can include maskbits.h to get + * the bitmap constants without conflicting with its own P* constants. + */ + +/* warning: PixelType definition duplicated in mfb.h */ +#ifndef PixelType +#define PixelType unsigned long +#endif /* PixelType */ + +#ifdef LONG64 +#define MFB_PGSZB 8 +#else +#define MFB_PGSZB 4 +#endif /* LONG64 */ +#define MFB_PPW (MFB_PGSZB<<3) /* assuming 8 bits per byte */ +#define MFB_PGSZ MFB_PPW +#define MFB_PLST (MFB_PPW-1) +#define MFB_PIM MFB_PLST + +/* set PWSH = log2(PPW) using brute force */ + +#if MFB_PPW == 32 +#define MFB_PWSH 5 +#else +#if MFB_PPW == 64 +#define MFB_PWSH 6 +#endif /* MFB_PPW == 64 */ +#endif /* MFB_PPW == 32 */ + +extern PixelType starttab[]; +extern PixelType endtab[]; +extern PixelType partmasks[MFB_PPW][MFB_PPW]; +extern PixelType rmask[]; +extern PixelType mask[]; + +#ifndef MFB_CONSTS_ONLY + +#define PGSZB MFB_PGSZB +#define PPW MFB_PPW +#define PGSZ MFB_PGSZ +#define PLST MFB_PLST +#define PIM MFB_PIM +#define PWSH MFB_PWSH + +#define BitLeft(b,s) SCRLEFT(b,s) +#define BitRight(b,s) SCRRIGHT(b,s) + +#if (BITMAP_BIT_ORDER == IMAGE_BYTE_ORDER) +#define LONG2CHARS(x) (x) +#else +/* + * the unsigned case below is for compilers like + * the Danbury C and i386cc + */ +#if PPW == 32 +#define LONG2CHARS( x ) ( ( ( ( x ) & 0x000000FF ) << 0x18 ) \ + | ( ( ( x ) & 0x0000FF00 ) << 0x08 ) \ + | ( ( ( x ) & 0x00FF0000 ) >> 0x08 ) \ + | ( ( ( x ) & (unsigned long)0xFF000000 ) >> 0x18 ) ) +#else /* PPW == 64 */ +#define LONG2CHARS( x ) \ + ( ( ( ( x ) & 0x000000FF) << 0x18 ) \ + | ( ( ( x ) & 0x0000FF00) << 0x08 ) \ + | ( ( ( x ) & 0x00FF0000) >> 0x08 ) \ + | ( ( ( x ) & (unsigned long)0xFF000000) >> 0x18 ) \ + | ( ( ( x ) & 0x000000FF00000000) << 0x18 ) \ + | ( ( ( x ) & 0x0000FF0000000000) << 0x08 ) \ + | ( ( ( x ) & 0x00FF000000000000) >> 0x08 ) \ + | ( ( ( x ) & (unsigned long)0xFF00000000000000) >> 0x18 ) ) +#endif /* PPW */ +#endif /* BITMAP_BIT_ORDER */ + +#ifdef STRICT_ANSI_SHIFT +#define SHL(x,y) ((y) >= PPW ? 0 : LONG2CHARS(LONG2CHARS(x) << (y))) +#define SHR(x,y) ((y) >= PPW ? 0 : LONG2CHARS(LONG2CHARS(x) >> (y))) +#else +#define SHL(x,y) LONG2CHARS(LONG2CHARS(x) << (y)) +#define SHR(x,y) LONG2CHARS(LONG2CHARS(x) >> (y)) +#endif + +#if (BITMAP_BIT_ORDER == MSBFirst) /* pc/rt, 680x0 */ +#define SCRLEFT(lw, n) SHL((PixelType)(lw),(n)) +#define SCRRIGHT(lw, n) SHR((PixelType)(lw),(n)) +#else /* vax, intel */ +#define SCRLEFT(lw, n) SHR((PixelType)(lw),(n)) +#define SCRRIGHT(lw, n) SHL((PixelType)(lw),(n)) +#endif + +#define DoRRop(alu, src, dst) \ +(((alu) == RROP_BLACK) ? ((dst) & ~(src)) : \ + ((alu) == RROP_WHITE) ? ((dst) | (src)) : \ + ((alu) == RROP_INVERT) ? ((dst) ^ (src)) : \ + (dst)) + +#if PPW == 32 +/* A generalized form of a x4 Duff's Device */ +#define Duff(counter, block) { \ + while (counter >= 4) {\ + { block; } \ + { block; } \ + { block; } \ + { block; } \ + counter -= 4; \ + } \ + switch (counter & 3) { \ + case 3: { block; } \ + case 2: { block; } \ + case 1: { block; } \ + case 0: \ + counter = 0; \ + } \ +} +#else /* PPW == 64 */ +/* A generalized form of a x8 Duff's Device */ +#define Duff(counter, block) { \ + while (counter >= 8) {\ + { block; } \ + { block; } \ + { block; } \ + { block; } \ + { block; } \ + { block; } \ + { block; } \ + { block; } \ + counter -= 8; \ + } \ + switch (counter & 7) { \ + case 7: { block; } \ + case 6: { block; } \ + case 5: { block; } \ + case 4: { block; } \ + case 3: { block; } \ + case 2: { block; } \ + case 1: { block; } \ + case 0: \ + counter = 0; \ + } \ +} +#endif /* PPW */ + + +#define maskbits(x, w, startmask, endmask, nlw) \ + startmask = starttab[(x) & PIM]; \ + endmask = endtab[((x)+(w)) & PIM]; \ + if (startmask) \ + nlw = (((w) - (PPW - ((x) & PIM))) >> PWSH); \ + else \ + nlw = (w) >> PWSH; + +#define maskpartialbits(x, w, mask) \ + mask = partmasks[(x) & PIM][(w) & PIM]; + +#define maskPPWbits(x, w, startmask, endmask) \ + startmask = starttab[(x) & PIM]; \ + endmask = endtab[((x)+(w)) & PIM]; + +#ifdef __GNUC__ /* XXX don't want for Alpha? */ +#ifdef vax +#define FASTGETBITS(psrc,x,w,dst) \ + __asm ("extzv %1,%2,%3,%0" \ + : "=g" (dst) \ + : "g" (x), "g" (w), "m" (*(char *)(psrc))) +#define getbits(psrc,x,w,dst) FASTGETBITS(psrc,x,w,dst) + +#define FASTPUTBITS(src, x, w, pdst) \ + __asm ("insv %3,%1,%2,%0" \ + : "=m" (*(char *)(pdst)) \ + : "g" (x), "g" (w), "g" (src)) +#define putbits(src, x, w, pdst) FASTPUTBITS(src, x, w, pdst) +#endif /* vax */ +#ifdef mc68020 +#define FASTGETBITS(psrc, x, w, dst) \ + __asm ("bfextu %3{%1:%2},%0" \ + : "=d" (dst) : "di" (x), "di" (w), "o" (*(char *)(psrc))) + +#define getbits(psrc,x,w,dst) \ +{ \ + FASTGETBITS(psrc, x, w, dst);\ + dst = SHL(dst,(32-(w))); \ +} + +#define FASTPUTBITS(src, x, w, pdst) \ + __asm ("bfins %3,%0{%1:%2}" \ + : "=o" (*(char *)(pdst)) \ + : "di" (x), "di" (w), "d" (src), "0" (*(char *) (pdst))) + +#define putbits(src, x, w, pdst) FASTPUTBITS(SHR((src),32-(w)), x, w, pdst) + +#endif /* mc68020 */ +#endif /* __GNUC__ */ + +/* The following flag is used to override a bugfix for sun 3/60+CG4 machines, + */ + +/* We don't need to be careful about this unless we're dealing with sun3's + * We will default its usage for those who do not know anything, but will + * override its effect if the machine doesn't look like a sun3 + */ +#if !defined(mc68020) || !defined(sun) +#define NO_3_60_CG4 +#endif + +/* This is gross. We want to #define u_putbits as something which can be used + * in the case of the 3/60+CG4, but if we use /bin/cc or are on another + * machine type, we want nothing to do with u_putbits. What a hastle. Here + * I used slo_putbits as something which either u_putbits or putbits could be + * defined as. + * + * putbits gets it iff it is not already defined with FASTPUTBITS above. + * u_putbits gets it if we have FASTPUTBITS (putbits) from above and have not + * overridden the NO_3_60_CG4 flag. + */ + +#define slo_putbits(src, x, w, pdst) \ +{ \ + register int n = (x)+(w)-PPW; \ + \ + if (n <= 0) \ + { \ + register PixelType tmpmask; \ + maskpartialbits((x), (w), tmpmask); \ + *(pdst) = (*(pdst) & ~tmpmask) | \ + (SCRRIGHT(src, x) & tmpmask); \ + } \ + else \ + { \ + *(pdst) = (*(pdst) & endtab[x]) | (SCRRIGHT((src), x)); \ + (pdst)[1] = ((pdst)[1] & starttab[n]) | \ + (SCRLEFT(src, PPW-(x)) & endtab[n]); \ + } \ +} + +#if defined(putbits) && !defined(NO_3_60_CG4) +#define u_putbits(src, x, w, pdst) slo_putbits(src, x, w, pdst) +#else +#define u_putbits(src, x, w, pdst) putbits(src, x, w, pdst) +#endif + +#if !defined(putbits) +#define putbits(src, x, w, pdst) slo_putbits(src, x, w, pdst) +#endif + +/* Now if we have not gotten any really good bitfield macros, try some + * moderately fast macros. Alas, I don't know how to do asm instructions + * without gcc. + */ + +#ifndef getbits +#define getbits(psrc, x, w, dst) \ +{ \ + dst = SCRLEFT(*(psrc), (x)); \ + if ( ((x) + (w)) > PPW) \ + dst |= (SCRRIGHT(*((psrc)+1), PPW-(x))); \ +} +#endif + +/* We have to special-case putbitsrop because of 3/60+CG4 combos + */ + +#define u_putbitsrop(src, x, w, pdst, rop) \ +{\ + register PixelType t1, t2; \ + register int n = (x)+(w)-PPW; \ + \ + t1 = SCRRIGHT((src), (x)); \ + DoRop(t2, rop, t1, *(pdst)); \ + \ + if (n <= 0) \ + { \ + register PixelType tmpmask; \ + \ + maskpartialbits((x), (w), tmpmask); \ + *(pdst) = (*(pdst) & ~tmpmask) | (t2 & tmpmask); \ + } \ + else \ + { \ + int m = PPW-(x); \ + *(pdst) = (*(pdst) & endtab[x]) | (t2 & starttab[x]); \ + t1 = SCRLEFT((src), m); \ + DoRop(t2, rop, t1, (pdst)[1]); \ + (pdst)[1] = ((pdst)[1] & starttab[n]) | (t2 & endtab[n]); \ + } \ +} + +/* If our getbits and putbits are FAST enough, + * do this brute force, it's faster + */ + +#if defined(FASTPUTBITS) && defined(FASTGETBITS) && defined(NO_3_60_CG4) +#if (BITMAP_BIT_ORDER == MSBFirst) +#define putbitsrop(src, x, w, pdst, rop) \ +{ \ + register PixelType _tmp, _tmp2; \ + FASTGETBITS(pdst, x, w, _tmp); \ + _tmp2 = SCRRIGHT(src, PPW-(w)); \ + DoRop(_tmp, rop, _tmp2, _tmp) \ + FASTPUTBITS(_tmp, x, w, pdst); \ +} +#define putbitsrrop(src, x, w, pdst, rop) \ +{ \ + register PixelType _tmp, _tmp2; \ + \ + FASTGETBITS(pdst, x, w, _tmp); \ + _tmp2 = SCRRIGHT(src, PPW-(w)); \ + _tmp= DoRRop(rop, _tmp2, _tmp); \ + FASTPUTBITS(_tmp, x, w, pdst); \ +} +#undef u_putbitsrop +#else +#define putbitsrop(src, x, w, pdst, rop) \ +{ \ + register PixelType _tmp; \ + FASTGETBITS(pdst, x, w, _tmp); \ + DoRop(_tmp, rop, src, _tmp) \ + FASTPUTBITS(_tmp, x, w, pdst); \ +} +#define putbitsrrop(src, x, w, pdst, rop) \ +{ \ + register PixelType _tmp; \ + \ + FASTGETBITS(pdst, x, w, _tmp); \ + _tmp= DoRRop(rop, src, _tmp); \ + FASTPUTBITS(_tmp, x, w, pdst); \ +} +#undef u_putbitsrop +#endif +#endif + +#ifndef putbitsrop +#define putbitsrop(src, x, w, pdst, rop) u_putbitsrop(src, x, w, pdst, rop) +#endif + +#ifndef putbitsrrop +#define putbitsrrop(src, x, w, pdst, rop) \ +{\ + register PixelType t1, t2; \ + register int n = (x)+(w)-PPW; \ + \ + t1 = SCRRIGHT((src), (x)); \ + t2 = DoRRop(rop, t1, *(pdst)); \ + \ + if (n <= 0) \ + { \ + register PixelType tmpmask; \ + \ + maskpartialbits((x), (w), tmpmask); \ + *(pdst) = (*(pdst) & ~tmpmask) | (t2 & tmpmask); \ + } \ + else \ + { \ + int m = PPW-(x); \ + *(pdst) = (*(pdst) & endtab[x]) | (t2 & starttab[x]); \ + t1 = SCRLEFT((src), m); \ + t2 = DoRRop(rop, t1, (pdst)[1]); \ + (pdst)[1] = ((pdst)[1] & starttab[n]) | (t2 & endtab[n]); \ + } \ +} +#endif + +#if GETLEFTBITS_ALIGNMENT == 1 +#define getleftbits(psrc, w, dst) dst = *((CARD32 *) psrc) +#endif /* GETLEFTBITS_ALIGNMENT == 1 */ + +#if GETLEFTBITS_ALIGNMENT == 2 +#define getleftbits(psrc, w, dst) \ + { \ + if ( ((int)(psrc)) & 0x01 ) \ + getbits( ((CARD32 *)(((char *)(psrc))-1)), 8, (w), (dst) ); \ + else \ + getbits(psrc, 0, w, dst); \ + } +#endif /* GETLEFTBITS_ALIGNMENT == 2 */ + +#if GETLEFTBITS_ALIGNMENT == 4 +#define getleftbits(psrc, w, dst) \ + { \ + int off, off_b; \ + off_b = (off = ( ((int)(psrc)) & 0x03)) << 3; \ + getbits( \ + (CARD32 *)( ((char *)(psrc)) - off), \ + (off_b), (w), (dst) \ + ); \ + } +#endif /* GETLEFTBITS_ALIGNMENT == 4 */ + + +#define getshiftedleftbits(psrc, offset, w, dst) \ + getleftbits((psrc), (w), (dst)); \ + dst = SCRLEFT((dst), (offset)); + +/* FASTGETBITS and FASTPUTBITS are not necessarily correct implementations of + * getbits and putbits, but they work if used together. + * + * On a MSBFirst machine, a cpu bitfield extract instruction (like bfextu) + * could normally assign its result to a long word register in the screen + * right position. This saves canceling register shifts by not fighting the + * natural cpu byte order. + * + * Unfortunately, these fail on a 3/60+CG4 and cannot be used unmodified. Sigh. + */ +#if defined(FASTGETBITS) && defined(FASTPUTBITS) +#ifdef NO_3_60_CG4 +#define u_FASTPUT(aa, bb, cc, dd) FASTPUTBITS(aa, bb, cc, dd) +#else +#define u_FASTPUT(aa, bb, cc, dd) u_putbits(SCRLEFT(aa, PPW-(cc)), bb, cc, dd) +#endif + +#define getandputbits(psrc, srcbit, dstbit, width, pdst) \ +{ \ + register PixelType _tmpbits; \ + FASTGETBITS(psrc, srcbit, width, _tmpbits); \ + u_FASTPUT(_tmpbits, dstbit, width, pdst); \ +} + +#define getandputrop(psrc, srcbit, dstbit, width, pdst, rop) \ +{ \ + register PixelType _tmpsrc, _tmpdst; \ + FASTGETBITS(pdst, dstbit, width, _tmpdst); \ + FASTGETBITS(psrc, srcbit, width, _tmpsrc); \ + DoRop(_tmpdst, rop, _tmpsrc, _tmpdst); \ + u_FASTPUT(_tmpdst, dstbit, width, pdst); \ +} + +#define getandputrrop(psrc, srcbit, dstbit, width, pdst, rop) \ +{ \ + register PixelType _tmpsrc, _tmpdst; \ + FASTGETBITS(pdst, dstbit, width, _tmpdst); \ + FASTGETBITS(psrc, srcbit, width, _tmpsrc); \ + _tmpdst = DoRRop(rop, _tmpsrc, _tmpdst); \ + u_FASTPUT(_tmpdst, dstbit, width, pdst); \ +} + +#define getandputbits0(psrc, srcbit, width, pdst) \ + getandputbits(psrc, srcbit, 0, width, pdst) + +#define getandputrop0(psrc, srcbit, width, pdst, rop) \ + getandputrop(psrc, srcbit, 0, width, pdst, rop) + +#define getandputrrop0(psrc, srcbit, width, pdst, rop) \ + getandputrrop(psrc, srcbit, 0, width, pdst, rop) + + +#else /* Slow poke */ + +/* pairs of getbits/putbits happen frequently. Some of the code can + * be shared or avoided in a few specific instances. It gets us a + * small advantage, so we do it. The getandput...0 macros are the only ones + * which speed things here. The others are here for compatibility w/the above + * FAST ones + */ + +#define getandputbits(psrc, srcbit, dstbit, width, pdst) \ +{ \ + register PixelType _tmpbits; \ + getbits(psrc, srcbit, width, _tmpbits); \ + putbits(_tmpbits, dstbit, width, pdst); \ +} + +#define getandputrop(psrc, srcbit, dstbit, width, pdst, rop) \ +{ \ + register PixelType _tmpbits; \ + getbits(psrc, srcbit, width, _tmpbits) \ + putbitsrop(_tmpbits, dstbit, width, pdst, rop) \ +} + +#define getandputrrop(psrc, srcbit, dstbit, width, pdst, rop) \ +{ \ + register PixelType _tmpbits; \ + getbits(psrc, srcbit, width, _tmpbits) \ + putbitsrrop(_tmpbits, dstbit, width, pdst, rop) \ +} + + +#define getandputbits0(psrc, sbindex, width, pdst) \ +{ /* unroll the whole damn thing to see how it * behaves */ \ + register int _flag = PPW - (sbindex); \ + register PixelType _src; \ + \ + _src = SCRLEFT (*(psrc), (sbindex)); \ + if ((width) > _flag) \ + _src |= SCRRIGHT (*((psrc) + 1), _flag); \ + \ + *(pdst) = (*(pdst) & starttab[(width)]) | (_src & endtab[(width)]); \ +} + + +#define getandputrop0(psrc, sbindex, width, pdst, rop) \ +{ \ + register int _flag = PPW - (sbindex); \ + register PixelType _src; \ + \ + _src = SCRLEFT (*(psrc), (sbindex)); \ + if ((width) > _flag) \ + _src |= SCRRIGHT (*((psrc) + 1), _flag); \ + DoRop(_src, rop, _src, *(pdst)); \ + \ + *(pdst) = (*(pdst) & starttab[(width)]) | (_src & endtab[(width)]); \ +} + +#define getandputrrop0(psrc, sbindex, width, pdst, rop) \ +{ \ + int _flag = PPW - (sbindex); \ + register PixelType _src; \ + \ + _src = SCRLEFT (*(psrc), (sbindex)); \ + if ((width) > _flag) \ + _src |= SCRRIGHT (*((psrc) + 1), _flag); \ + _src = DoRRop(rop, _src, *(pdst)); \ + \ + *(pdst) = (*(pdst) & starttab[(width)]) | (_src & endtab[(width)]); \ +} + +#endif /* FASTGETBITS && FASTPUTBITS */ + +#endif /* MFB_CONSTS_ONLY */ diff --git a/mfb/mergerop.h b/mfb/mergerop.h new file mode 100644 index 000000000..b797c245a --- /dev/null +++ b/mfb/mergerop.h @@ -0,0 +1,186 @@ +/* + * $Xorg: mergerop.h,v 1.4 2001/02/09 02:05:18 xorgcvs Exp $ + * +Copyright 1989, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + * + * Author: Keith Packard, MIT X Consortium + */ + +#ifndef _MERGEROP_H_ +#define _MERGEROP_H_ + +#ifndef GXcopy +#include "X.h" +#endif + +typedef struct _mergeRopBits { + unsigned long ca1, cx1, ca2, cx2; +} mergeRopRec, *mergeRopPtr; + +extern mergeRopRec mergeRopBits[16]; + +#define DeclareMergeRop() unsigned long _ca1, _cx1, _ca2, _cx2; +#define DeclarePrebuiltMergeRop() unsigned long _cca, _ccx; + +#if PPW != PGSZ /* cfb */ +#define InitializeMergeRop(alu,pm) {\ + unsigned long _pm; \ + mergeRopPtr _bits; \ + _pm = PFILL(pm); \ + _bits = &mergeRopBits[alu]; \ + _ca1 = _bits->ca1 & _pm; \ + _cx1 = _bits->cx1 | ~_pm; \ + _ca2 = _bits->ca2 & _pm; \ + _cx2 = _bits->cx2 & _pm; \ +} +#else /* mfb */ +#define InitializeMergeRop(alu,pm) {\ + mergeRopPtr _bits; \ + _bits = &mergeRopBits[alu]; \ + _ca1 = _bits->ca1; \ + _cx1 = _bits->cx1; \ + _ca2 = _bits->ca2; \ + _cx2 = _bits->cx2; \ +} +#endif + +/* AND has higher precedence than XOR */ + +#define DoMergeRop(src, dst) \ + ((dst) & ((src) & _ca1 ^ _cx1) ^ ((src) & _ca2 ^ _cx2)) + +#define DoPrebuiltMergeRop(dst) ((dst) & _cca ^ _ccx) + +#define DoMaskPrebuiltMergeRop(dst,mask) \ + ((dst) & (_cca | ~(mask)) ^ (_ccx & (mask))) + +#define PrebuildMergeRop(src) ((_cca = (src) & _ca1 ^ _cx1), \ + (_ccx = (src) & _ca2 ^ _cx2)) + +#define DoMaskMergeRop(src, dst, mask) \ + ((dst) & (((src) & _ca1 ^ _cx1) | ~(mask)) ^ (((src) & _ca2 ^ _cx2) & (mask))) + +#ifndef MROP +#define MROP 0 +#endif + +#define Mclear (1<<GXclear) +#define Mand (1<<GXand) +#define MandReverse (1<<GXandReverse) +#define Mcopy (1<<GXcopy) +#define MandInverted (1<<GXandInverted) +#define Mnoop (1<<GXnoop) +#define Mxor (1<<GXxor) +#define Mor (1<<GXor) +#define Mnor (1<<GXnor) +#define Mequiv (1<<GXequiv) +#define Minvert (1<<GXinvert) +#define MorReverse (1<<GXorReverse) +#define McopyInverted (1<<GXcopyInverted) +#define MorInverted (1<<GXorInverted) +#define Mnand (1<<GXnand) +#define Mset (1<<GXset) + +#if (MROP) == Mcopy +#define MROP_DECLARE() +#define MROP_DECLARE_REG() +#define MROP_INITIALIZE(alu,pm) +#define MROP_SOLID(src,dst) (src) +#define MROP_MASK(src,dst,mask) ((dst) & ~(mask) | (src) & (mask)) +#define MROP_NAME(prefix) MROP_NAME_CAT(prefix,Copy) +#endif + +#if (MROP) == McopyInverted +#define MROP_DECLARE() +#define MROP_DECLARE_REG() +#define MROP_INITIALIZE(alu,pm) +#define MROP_SOLID(src,dst) (~(src)) +#define MROP_MASK(src,dst,mask) ((dst) & ~(mask) | (~(src)) & (mask)) +#define MROP_NAME(prefix) MROP_NAME_CAT(prefix,CopyInverted) +#endif + +#if (MROP) == Mxor +#define MROP_DECLARE() +#define MROP_DECLARE_REG() +#define MROP_INITIALIZE(alu,pm) +#define MROP_SOLID(src,dst) ((src) ^ (dst)) +#define MROP_MASK(src,dst,mask) (((src) & (mask)) ^ (dst)) +#define MROP_NAME(prefix) MROP_NAME_CAT(prefix,Xor) +#endif + +#if (MROP) == Mor +#define MROP_DECLARE() +#define MROP_DECLARE_REG() +#define MROP_INITIALIZE(alu,pm) +#define MROP_SOLID(src,dst) ((src) | (dst)) +#define MROP_MASK(src,dst,mask) (((src) & (mask)) | (dst)) +#define MROP_NAME(prefix) MROP_NAME_CAT(prefix,Or) +#endif + +#if (MROP) == (Mcopy|Mxor|MandReverse|Mor) +#define MROP_DECLARE() unsigned long _ca1, _cx1; +#define MROP_DECLARE_REG() register MROP_DECLARE() +#define MROP_INITIALIZE(alu,pm) { \ + mergeRopPtr _bits; \ + _bits = &mergeRopBits[alu]; \ + _ca1 = _bits->ca1; \ + _cx1 = _bits->cx1; \ +} +#define MROP_SOLID(src,dst) \ + ((dst) & ((src) & _ca1 ^ _cx1) ^ (src)) +#define MROP_MASK(src,dst,mask) \ + ((dst) & (((src) & _ca1 ^ _cx1) | ~(mask)) ^ ((src) & (mask))) +#define MROP_NAME(prefix) MROP_NAME_CAT(prefix,CopyXorAndReverseOr) +#define MROP_PREBUILD(src) PrebuildMergeRop(src) +#define MROP_PREBUILT_DECLARE() DeclarePrebuiltMergeRop() +#define MROP_PREBUILT_SOLID(src,dst) DoPrebuiltMergeRop(dst) +#define MROP_PREBUILT_MASK(src,dst,mask) DoMaskPrebuiltMergeRop(dst,mask) +#endif + +#if (MROP) == 0 +#define MROP_DECLARE() DeclareMergeRop() +#define MROP_DECLARE_REG() register DeclareMergeRop() +#define MROP_INITIALIZE(alu,pm) InitializeMergeRop(alu,pm) +#define MROP_SOLID(src,dst) DoMergeRop(src,dst) +#define MROP_MASK(src,dst,mask) DoMaskMergeRop(src, dst, mask) +#define MROP_NAME(prefix) MROP_NAME_CAT(prefix,General) +#define MROP_PREBUILD(src) PrebuildMergeRop(src) +#define MROP_PREBUILT_DECLARE() DeclarePrebuiltMergeRop() +#define MROP_PREBUILT_SOLID(src,dst) DoPrebuiltMergeRop(dst) +#define MROP_PREBUILT_MASK(src,dst,mask) DoMaskPrebuiltMergeRop(dst,mask) +#endif + +#ifndef MROP_PREBUILD +#define MROP_PREBUILD(src) +#define MROP_PREBUILT_DECLARE() +#define MROP_PREBUILT_SOLID(src,dst) MROP_SOLID(src,dst) +#define MROP_PREBUILT_MASK(src,dst,mask) MROP_MASK(src,dst,mask) +#endif + +#if (defined(__STDC__) && !defined(UNIXCPP)) || defined(ANSICPP) +#define MROP_NAME_CAT(prefix,suffix) prefix##suffix +#else +#define MROP_NAME_CAT(prefix,suffix) prefix/**/suffix +#endif + +#endif diff --git a/mfb/mfb.h b/mfb/mfb.h new file mode 100644 index 000000000..56c0f9667 --- /dev/null +++ b/mfb/mfb.h @@ -0,0 +1,1250 @@ +/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */ +/*********************************************************** + +Copyright 1987, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ +/* $Xorg: mfb.h,v 1.4 2001/02/09 02:05:18 xorgcvs Exp $ */ +/* Monochrome Frame Buffer definitions + written by drewry, september 1986 +*/ +#include "pixmap.h" +#include "region.h" +#include "gc.h" +#include "colormap.h" +#include "miscstruct.h" +#include "mibstore.h" + +extern int InverseAlu[]; + +/* warning: PixelType definition duplicated in maskbits.h */ +#ifndef PixelType +#define PixelType unsigned long +#endif /* PixelType */ + +/* mfbbitblt.c */ + +extern void mfbDoBitblt( +#if NeedFunctionPrototypes + DrawablePtr /*pSrc*/, + DrawablePtr /*pDst*/, + int /*alu*/, + RegionPtr /*prgnDst*/, + DDXPointPtr /*pptSrc*/ +#endif +); + +extern RegionPtr mfbCopyArea( +#if NeedFunctionPrototypes + DrawablePtr /*pSrcDrawable*/, + DrawablePtr /*pDstDrawable*/, + GCPtr/*pGC*/, + int /*srcx*/, + int /*srcy*/, + int /*width*/, + int /*height*/, + int /*dstx*/, + int /*dsty*/ +#endif +); + +extern Bool mfbRegisterCopyPlaneProc( +#if NeedFunctionPrototypes + ScreenPtr /*pScreen*/, + RegionPtr (* /*proc*/)() +#endif +); + +extern RegionPtr mfbCopyPlane( +#if NeedFunctionPrototypes + DrawablePtr /*pSrcDrawable*/, + DrawablePtr /*pDstDrawable*/, + GCPtr/*pGC*/, + int /*srcx*/, + int /*srcy*/, + int /*width*/, + int /*height*/, + int /*dstx*/, + int /*dsty*/, + unsigned long /*plane*/ +#endif +); +/* mfbbltC.c */ + +extern void mfbDoBitbltCopy( +#if NeedFunctionPrototypes + DrawablePtr /*pSrc*/, + DrawablePtr /*pDst*/, + int /*alu*/, + RegionPtr /*prgnDst*/, + DDXPointPtr /*pptSrc*/ +#endif +); +/* mfbbltCI.c */ + +extern void mfbDoBitbltCopyInverted( +#if NeedFunctionPrototypes + DrawablePtr /*pSrc*/, + DrawablePtr /*pDst*/, + int /*alu*/, + RegionPtr /*prgnDst*/, + DDXPointPtr /*pptSrc*/ +#endif +); +/* mfbbltG.c */ + +extern void mfbDoBitbltGeneral( +#if NeedFunctionPrototypes + DrawablePtr /*pSrc*/, + DrawablePtr /*pDst*/, + int /*alu*/, + RegionPtr /*prgnDst*/, + DDXPointPtr /*pptSrc*/ +#endif +); +/* mfbbltO.c */ + +extern void mfbDoBitbltOr( +#if NeedFunctionPrototypes + DrawablePtr /*pSrc*/, + DrawablePtr /*pDst*/, + int /*alu*/, + RegionPtr /*prgnDst*/, + DDXPointPtr /*pptSrc*/ +#endif +); +/* mfbbltX.c */ + +extern void mfbDoBitbltXor( +#if NeedFunctionPrototypes + DrawablePtr /*pSrc*/, + DrawablePtr /*pDst*/, + int /*alu*/, + RegionPtr /*prgnDst*/, + DDXPointPtr /*pptSrc*/ +#endif +); +/* mfbbres.c */ + +extern void mfbBresS( +#if NeedFunctionPrototypes + int /*rop*/, + PixelType * /*addrl*/, + int /*nlwidth*/, + int /*signdx*/, + int /*signdy*/, + int /*axis*/, + int /*x1*/, + int /*y1*/, + int /*e*/, + int /*e1*/, + int /*e2*/, + int /*len*/ +#endif +); +/* mfbbresd.c */ + +extern void mfbBresD( +#if NeedFunctionPrototypes + int /*fgrop*/, + int /*bgrop*/, + int * /*pdashIndex*/, + unsigned char * /*pDash*/, + int /*numInDashList*/, + int * /*pdashOffset*/, + int /*isDoubleDash*/, + PixelType * /*addrl*/, + int /*nlwidth*/, + int /*signdx*/, + int /*signdy*/, + int /*axis*/, + int /*x1*/, + int /*y1*/, + int /*e*/, + int /*e1*/, + int /*e2*/, + int /*len*/ +#endif +); +/* mfbbstore.c */ + +extern void mfbSaveAreas( +#if NeedFunctionPrototypes + PixmapPtr /*pPixmap*/, + RegionPtr /*prgnSave*/, + int /*xorg*/, + int /*yorg*/, + WindowPtr /*pWin*/ +#endif +); + +extern void mfbRestoreAreas( +#if NeedFunctionPrototypes + PixmapPtr /*pPixmap*/, + RegionPtr /*prgnRestore*/, + int /*xorg*/, + int /*yorg*/, + WindowPtr /*pWin*/ +#endif +); +/* mfbclip.c */ + +extern RegionPtr mfbPixmapToRegion( +#if NeedFunctionPrototypes + PixmapPtr /*pPix*/ +#endif +); +/* mfbcmap.c */ + +extern int mfbListInstalledColormaps( +#if NeedFunctionPrototypes + ScreenPtr /*pScreen*/, + Colormap * /*pmaps*/ +#endif +); + +extern void mfbInstallColormap( +#if NeedFunctionPrototypes + ColormapPtr /*pmap*/ +#endif +); + +extern void mfbUninstallColormap( +#if NeedFunctionPrototypes + ColormapPtr /*pmap*/ +#endif +); + +extern void mfbResolveColor( +#if NeedFunctionPrototypes + unsigned short * /*pred*/, + unsigned short * /*pgreen*/, + unsigned short * /*pblue*/, + VisualPtr /*pVisual*/ +#endif +); + +extern Bool mfbCreateColormap( +#if NeedFunctionPrototypes + ColormapPtr /*pMap*/ +#endif +); + +extern void mfbDestroyColormap( +#if NeedFunctionPrototypes + ColormapPtr /*pMap*/ +#endif +); + +extern Bool mfbCreateDefColormap( +#if NeedFunctionPrototypes + ScreenPtr /*pScreen*/ +#endif +); +/* mfbfillarc.c */ + +extern void mfbPolyFillArcSolid( +#if NeedFunctionPrototypes + DrawablePtr /*pDraw*/, + GCPtr /*pGC*/, + int /*narcs*/, + xArc * /*parcs*/ +#endif +); +/* mfbfillrct.c */ + +extern void mfbPolyFillRect( +#if NeedFunctionPrototypes + DrawablePtr /*pDrawable*/, + GCPtr /*pGC*/, + int /*nrectFill*/, + xRectangle * /*prectInit*/ +#endif +); +/* mfbfillsp.c */ + +extern void mfbBlackSolidFS( +#if NeedFunctionPrototypes + DrawablePtr /*pDrawable*/, + GCPtr /*pGC*/, + int /*nInit*/, + DDXPointPtr /*pptInit*/, + int * /*pwidthInit*/, + int /*fSorted*/ +#endif +); + +extern void mfbWhiteSolidFS( +#if NeedFunctionPrototypes + DrawablePtr /*pDrawable*/, + GCPtr /*pGC*/, + int /*nInit*/, + DDXPointPtr /*pptInit*/, + int * /*pwidthInit*/, + int /*fSorted*/ +#endif +); + +extern void mfbInvertSolidFS( +#if NeedFunctionPrototypes + DrawablePtr /*pDrawable*/, + GCPtr /*pGC*/, + int /*nInit*/, + DDXPointPtr /*pptInit*/, + int * /*pwidthInit*/, + int /*fSorted*/ +#endif +); + +extern void mfbWhiteStippleFS( +#if NeedFunctionPrototypes + DrawablePtr /*pDrawable*/, + GCPtr/*pGC*/, + int /*nInit*/, + DDXPointPtr /*pptInit*/, + int * /*pwidthInit*/, + int /*fSorted*/ +#endif +); + +extern void mfbBlackStippleFS( +#if NeedFunctionPrototypes + DrawablePtr /*pDrawable*/, + GCPtr/*pGC*/, + int /*nInit*/, + DDXPointPtr /*pptInit*/, + int * /*pwidthInit*/, + int /*fSorted*/ +#endif +); + +extern void mfbInvertStippleFS( +#if NeedFunctionPrototypes + DrawablePtr /*pDrawable*/, + GCPtr/*pGC*/, + int /*nInit*/, + DDXPointPtr /*pptInit*/, + int * /*pwidthInit*/, + int /*fSorted*/ +#endif +); + +extern void mfbTileFS( +#if NeedFunctionPrototypes + DrawablePtr /*pDrawable*/, + GCPtr/*pGC*/, + int /*nInit*/, + DDXPointPtr /*pptInit*/, + int * /*pwidthInit*/, + int /*fSorted*/ +#endif +); + +extern void mfbUnnaturalTileFS( +#if NeedFunctionPrototypes + DrawablePtr /*pDrawable*/, + GCPtr/*pGC*/, + int /*nInit*/, + DDXPointPtr /*pptInit*/, + int * /*pwidthInit*/, + int /*fSorted*/ +#endif +); + +extern void mfbUnnaturalStippleFS( +#if NeedFunctionPrototypes + DrawablePtr /*pDrawable*/, + GCPtr/*pGC*/, + int /*nInit*/, + DDXPointPtr /*pptInit*/, + int * /*pwidthInit*/, + int /*fSorted*/ +#endif +); +/* mfbfont.c */ + +extern Bool mfbRealizeFont( +#if NeedFunctionPrototypes + ScreenPtr /*pscr*/, + FontPtr /*pFont*/ +#endif +); + +extern Bool mfbUnrealizeFont( +#if NeedFunctionPrototypes + ScreenPtr /*pscr*/, + FontPtr /*pFont*/ +#endif +); +/* mfbgc.c */ + +extern Bool mfbCreateGC( +#if NeedFunctionPrototypes + GCPtr /*pGC*/ +#endif +); + +extern void mfbValidateGC( +#if NeedFunctionPrototypes + GCPtr /*pGC*/, + unsigned long /*changes*/, + DrawablePtr /*pDrawable*/ +#endif +); + +extern int mfbReduceRop( +#if NeedFunctionPrototypes + int /*alu*/, + Pixel /*src*/ +#endif +); + +/* mfbgetsp.c */ + +extern void mfbGetSpans( +#if NeedFunctionPrototypes + DrawablePtr /*pDrawable*/, + int /*wMax*/, + DDXPointPtr /*ppt*/, + int * /*pwidth*/, + int /*nspans*/, + char * /*pdstStart*/ +#endif +); +/* mfbhrzvert.c */ + +extern int mfbHorzS( +#if NeedFunctionPrototypes + int /*rop*/, + PixelType * /*addrl*/, + int /*nlwidth*/, + int /*x1*/, + int /*y1*/, + int /*len*/ +#endif +); + +extern int mfbVertS( +#if NeedFunctionPrototypes + int /*rop*/, + PixelType * /*addrl*/, + int /*nlwidth*/, + int /*x1*/, + int /*y1*/, + int /*len*/ +#endif +); +/* mfbigbblak.c */ + +extern void mfbImageGlyphBltBlack( +#if NeedFunctionPrototypes + DrawablePtr /*pDrawable*/, + GCPtr/*pGC*/, + int /*x*/, + int /*y*/, + unsigned int /*nglyph*/, + CharInfoPtr * /*ppci*/, + pointer /*pglyphBase*/ +#endif +); +/* mfbigbwht.c */ + +extern void mfbImageGlyphBltWhite( +#if NeedFunctionPrototypes + DrawablePtr /*pDrawable*/, + GCPtr/*pGC*/, + int /*x*/, + int /*y*/, + unsigned int /*nglyph*/, + CharInfoPtr * /*ppci*/, + pointer /*pglyphBase*/ +#endif +); +/* mfbimage.c */ + +extern void mfbPutImage( +#if NeedFunctionPrototypes + DrawablePtr /*dst*/, + GCPtr /*pGC*/, + int /*depth*/, + int /*x*/, + int /*y*/, + int /*w*/, + int /*h*/, + int /*leftPad*/, + int /*format*/, + char * /*pImage*/ +#endif +); + +extern void mfbGetImage( +#if NeedFunctionPrototypes + DrawablePtr /*pDrawable*/, + int /*sx*/, + int /*sy*/, + int /*w*/, + int /*h*/, + unsigned int /*format*/, + unsigned long /*planeMask*/, + char * /*pdstLine*/ +#endif +); +/* mfbline.c */ + +extern void mfbLineSS( +#if NeedFunctionPrototypes + DrawablePtr /*pDrawable*/, + GCPtr /*pGC*/, + int /*mode*/, + int /*npt*/, + DDXPointPtr /*pptInit*/ +#endif +); + +extern void mfbLineSD( +#if NeedFunctionPrototypes + DrawablePtr /*pDrawable*/, + GCPtr /*pGC*/, + int /*mode*/, + int /*npt*/, + DDXPointPtr /*pptInit*/ +#endif +); + +/* mfbmisc.c */ + +extern void mfbQueryBestSize( +#if NeedFunctionPrototypes + int /*class*/, + unsigned short * /*pwidth*/, + unsigned short * /*pheight*/, + ScreenPtr /*pScreen*/ +#endif +); +/* mfbpablack.c */ + +extern void mfbSolidBlackArea( +#if NeedFunctionPrototypes + DrawablePtr /*pDraw*/, + int /*nbox*/, + BoxPtr /*pbox*/, + int /*alu*/, + PixmapPtr /*nop*/ +#endif +); + +extern void mfbStippleBlackArea( +#if NeedFunctionPrototypes + DrawablePtr /*pDraw*/, + int /*nbox*/, + BoxPtr /*pbox*/, + int /*alu*/, + PixmapPtr /*pstipple*/ +#endif +); +/* mfbpainv.c */ + +extern void mfbSolidInvertArea( +#if NeedFunctionPrototypes + DrawablePtr /*pDraw*/, + int /*nbox*/, + BoxPtr /*pbox*/, + int /*alu*/, + PixmapPtr /*nop*/ +#endif +); + +extern void mfbStippleInvertArea( +#if NeedFunctionPrototypes + DrawablePtr /*pDraw*/, + int /*nbox*/, + BoxPtr /*pbox*/, + int /*alu*/, + PixmapPtr /*pstipple*/ +#endif +); +/* mfbpawhite.c */ + +extern void mfbSolidWhiteArea( +#if NeedFunctionPrototypes + DrawablePtr /*pDraw*/, + int /*nbox*/, + BoxPtr /*pbox*/, + int /*alu*/, + PixmapPtr /*nop*/ +#endif +); + +extern void mfbStippleWhiteArea( +#if NeedFunctionPrototypes + DrawablePtr /*pDraw*/, + int /*nbox*/, + BoxPtr /*pbox*/, + int /*alu*/, + PixmapPtr /*pstipple*/ +#endif +); +/* mfbpgbblak.c */ + +extern void mfbPolyGlyphBltBlack( +#if NeedFunctionPrototypes + DrawablePtr /*pDrawable*/, + GCPtr /*pGC*/, + int /*x*/, + int /*y*/, + unsigned int /*nglyph*/, + CharInfoPtr * /*ppci*/, + pointer /*pglyphBase*/ +#endif +); +/* mfbpgbinv.c */ + +extern void mfbPolyGlyphBltInvert( +#if NeedFunctionPrototypes + DrawablePtr /*pDrawable*/, + GCPtr /*pGC*/, + int /*x*/, + int /*y*/, + unsigned int /*nglyph*/, + CharInfoPtr * /*ppci*/, + pointer /*pglyphBase*/ +#endif +); +/* mfbpgbwht.c */ + +extern void mfbPolyGlyphBltWhite( +#if NeedFunctionPrototypes + DrawablePtr /*pDrawable*/, + GCPtr /*pGC*/, + int /*x*/, + int /*y*/, + unsigned int /*nglyph*/, + CharInfoPtr * /*ppci*/, + pointer /*pglyphBase*/ +#endif +); +/* mfbpixmap.c */ + +extern PixmapPtr mfbCreatePixmap( +#if NeedFunctionPrototypes + ScreenPtr /*pScreen*/, + int /*width*/, + int /*height*/, + int /*depth*/ +#endif +); + +extern Bool mfbDestroyPixmap( +#if NeedFunctionPrototypes + PixmapPtr /*pPixmap*/ +#endif +); + +extern PixmapPtr mfbCopyPixmap( +#if NeedFunctionPrototypes + PixmapPtr /*pSrc*/ +#endif +); + +extern void mfbPadPixmap( +#if NeedFunctionPrototypes + PixmapPtr /*pPixmap*/ +#endif +); + +extern void mfbXRotatePixmap( +#if NeedFunctionPrototypes + PixmapPtr /*pPix*/, + int /*rw*/ +#endif +); + +extern void mfbYRotatePixmap( +#if NeedFunctionPrototypes + PixmapPtr /*pPix*/, + int /*rh*/ +#endif +); + +extern void mfbCopyRotatePixmap( +#if NeedFunctionPrototypes + PixmapPtr /*psrcPix*/, + PixmapPtr * /*ppdstPix*/, + int /*xrot*/, + int /*yrot*/ +#endif +); +/* mfbplyblack.c */ + +extern void mfbFillPolyBlack( +#if NeedFunctionPrototypes + DrawablePtr /*pDrawable*/, + GCPtr /*pGC*/, + int /*shape*/, + int /*mode*/, + int /*count*/, + DDXPointPtr /*ptsIn*/ +#endif +); +/* mfbplyinv.c */ + +extern void mfbFillPolyInvert( +#if NeedFunctionPrototypes + DrawablePtr /*pDrawable*/, + GCPtr /*pGC*/, + int /*shape*/, + int /*mode*/, + int /*count*/, + DDXPointPtr /*ptsIn*/ +#endif +); +/* mfbplywhite.c */ + +extern void mfbFillPolyWhite( +#if NeedFunctionPrototypes + DrawablePtr /*pDrawable*/, + GCPtr /*pGC*/, + int /*shape*/, + int /*mode*/, + int /*count*/, + DDXPointPtr /*ptsIn*/ +#endif +); +/* mfbpntwin.c */ + +extern void mfbPaintWindow( +#if NeedFunctionPrototypes + WindowPtr /*pWin*/, + RegionPtr /*pRegion*/, + int /*what*/ +#endif +); +/* mfbpolypnt.c */ + +extern void mfbPolyPoint( +#if NeedFunctionPrototypes + DrawablePtr /*pDrawable*/, + GCPtr /*pGC*/, + int /*mode*/, + int /*npt*/, + xPoint * /*pptInit*/ +#endif +); +/* mfbpushpxl.c */ + +extern void mfbSolidPP( +#if NeedFunctionPrototypes + GCPtr /*pGC*/, + PixmapPtr /*pBitMap*/, + DrawablePtr /*pDrawable*/, + int /*dx*/, + int /*dy*/, + int /*xOrg*/, + int /*yOrg*/ +#endif +); + +extern void mfbPushPixels( +#if NeedFunctionPrototypes + GCPtr /*pGC*/, + PixmapPtr /*pBitMap*/, + DrawablePtr /*pDrawable*/, + int /*dx*/, + int /*dy*/, + int /*xOrg*/, + int /*yOrg*/ +#endif +); +/* mfbscrclse.c */ + +extern Bool mfbCloseScreen( +#if NeedFunctionPrototypes + int /*index*/, + ScreenPtr /*pScreen*/ +#endif +); +/* mfbscrinit.c */ + +extern Bool mfbAllocatePrivates( +#if NeedFunctionPrototypes + ScreenPtr /*pScreen*/, + int * /*pWinIndex*/, + int * /*pGCIndex*/ +#endif +); + +extern Bool mfbScreenInit( +#if NeedFunctionPrototypes + ScreenPtr /*pScreen*/, + pointer /*pbits*/, + int /*xsize*/, + int /*ysize*/, + int /*dpix*/, + int /*dpiy*/, + int /*width*/ +#endif +); +/* mfbseg.c */ + +extern void mfbSegmentSS( +#if NeedFunctionPrototypes + DrawablePtr /*pDrawable*/, + GCPtr /*pGC*/, + int /*nseg*/, + xSegment * /*pSeg*/ +#endif +); + +extern void mfbSegmentSD( +#if NeedFunctionPrototypes + DrawablePtr /*pDrawable*/, + GCPtr /*pGC*/, + int /*nseg*/, + xSegment * /*pSeg*/ +#endif +); +/* mfbsetsp.c */ + +extern int mfbSetScanline( +#if NeedFunctionPrototypes + int /*y*/, + int /*xOrigin*/, + int /*xStart*/, + int /*xEnd*/, + PixelType * /*psrc*/, + int /*alu*/, + PixelType * /*pdstBase*/, + int /*widthDst*/ +#endif +); + +extern void mfbSetSpans( +#if NeedFunctionPrototypes + DrawablePtr /*pDrawable*/, + GCPtr /*pGC*/, + char * /*psrc*/, + DDXPointPtr /*ppt*/, + int * /*pwidth*/, + int /*nspans*/, + int /*fSorted*/ +#endif +); +/* mfbteblack.c */ + +extern void mfbTEGlyphBltBlack( +#if NeedFunctionPrototypes + DrawablePtr /*pDrawable*/, + GCPtr/*pGC*/, + int /*x*/, + int /*y*/, + unsigned int /*nglyph*/, + CharInfoPtr * /*ppci*/, + pointer /*pglyphBase*/ +#endif +); +/* mfbtewhite.c */ + +extern void mfbTEGlyphBltWhite( +#if NeedFunctionPrototypes + DrawablePtr /*pDrawable*/, + GCPtr/*pGC*/, + int /*x*/, + int /*y*/, + unsigned int /*nglyph*/, + CharInfoPtr * /*ppci*/, + pointer /*pglyphBase*/ +#endif +); +/* mfbtileC.c */ + +extern void mfbTileAreaPPWCopy( +#if NeedFunctionPrototypes + DrawablePtr /*pDraw*/, + int /*nbox*/, + BoxPtr /*pbox*/, + int /*alu*/, + PixmapPtr /*ptile*/ +#endif +); +/* mfbtileG.c */ + +extern void mfbTileAreaPPWGeneral( +#if NeedFunctionPrototypes + DrawablePtr /*pDraw*/, + int /*nbox*/, + BoxPtr /*pbox*/, + int /*alu*/, + PixmapPtr /*ptile*/ +#endif +); + +extern void mfbTileAreaPPW( +#if NeedFunctionPrototypes + DrawablePtr /*pDraw*/, + int /*nbox*/, + BoxPtr /*pbox*/, + int /*alu*/, + PixmapPtr /*ptile*/ +#endif +); +/* mfbwindow.c */ + +extern Bool mfbCreateWindow( +#if NeedFunctionPrototypes + WindowPtr /*pWin*/ +#endif +); + +extern Bool mfbDestroyWindow( +#if NeedFunctionPrototypes + WindowPtr /*pWin*/ +#endif +); + +extern Bool mfbMapWindow( +#if NeedFunctionPrototypes + WindowPtr /*pWindow*/ +#endif +); + +extern Bool mfbPositionWindow( +#if NeedFunctionPrototypes + WindowPtr /*pWin*/, + int /*x*/, + int /*y*/ +#endif +); + +extern Bool mfbUnmapWindow( +#if NeedFunctionPrototypes + WindowPtr /*pWindow*/ +#endif +); + +extern void mfbCopyWindow( +#if NeedFunctionPrototypes + WindowPtr /*pWin*/, + DDXPointRec /*ptOldOrg*/, + RegionPtr /*prgnSrc*/ +#endif +); + +extern Bool mfbChangeWindowAttributes( +#if NeedFunctionPrototypes + WindowPtr /*pWin*/, + unsigned long /*mask*/ +#endif +); +/* mfbzerarc.c */ + +extern void mfbZeroPolyArcSS( +#if NeedFunctionPrototypes + DrawablePtr /*pDraw*/, + GCPtr /*pGC*/, + int /*narcs*/, + xArc * /*parcs*/ +#endif +); + +/* + private filed of pixmap + pixmap.devPrivate = (PixelType *)pointer_to_bits + pixmap.devKind = width_of_pixmap_in_bytes + + private field of screen + a pixmap, for which we allocate storage. devPrivate is a pointer to +the bits in the hardware framebuffer. note that devKind can be poked to +make the code work for framebuffers that are wider than their +displayable screen (e.g. the early vsII, which displayed 960 pixels +across, but was 1024 in the hardware.) + + private field of GC + Freeing pCompositeClip is done based on the value of +freeCompClip; if freeCompClip is not carefully maintained, we will end +up losing storage or freeing something that isn't ours. +*/ + +typedef struct { + unsigned char rop; /* reduction of rasterop to 1 of 3 */ + unsigned char ropOpStip; /* rop for opaque stipple */ + unsigned char ropFillArea; /* == alu, rop, or ropOpStip */ + unsigned fExpose:1; /* callexposure handling ? */ + unsigned freeCompClip:1; + PixmapPtr pRotatedPixmap; /* tile/stipple rotated to align */ + RegionPtr pCompositeClip; /* free this based on freeCompClip + flag rather than NULLness */ + void (* FillArea)(); /* fills regions; look at the code */ + } mfbPrivGC; +typedef mfbPrivGC *mfbPrivGCPtr; + +extern int mfbGCPrivateIndex; /* index into GC private array */ +extern int mfbWindowPrivateIndex; /* index into Window private array */ +#ifdef PIXMAP_PER_WINDOW +extern int frameWindowPrivateIndex; /* index into Window private array */ +#endif + +/* private field of window */ +typedef struct { + unsigned char fastBorder; /* non-zero if border tile is 32 bits wide */ + unsigned char fastBackground; + unsigned short unused; /* pad for alignment with Sun compiler */ + DDXPointRec oldRotate; + PixmapPtr pRotatedBackground; + PixmapPtr pRotatedBorder; + } mfbPrivWin; + +/* Common macros for extracting drawing information */ + +#define mfbGetTypedWidth(pDrawable,type) (\ + (((pDrawable)->type == DRAWABLE_WINDOW) ? \ + (int) (((PixmapPtr)((pDrawable)->pScreen->devPrivate))->devKind) : \ + (int)(((PixmapPtr)pDrawable)->devKind)) / sizeof (type)) + +#define mfbGetByteWidth(pDrawable) mfbGetTypedWidth(pDrawable, unsigned char) + +#define mfbGetPixelWidth(pDrawable) mfbGetTypedWidth(pDrawable, PixelType) + +#define mfbGetTypedWidthAndPointer(pDrawable, width, pointer, wtype, ptype) {\ + PixmapPtr _pPix; \ + if ((pDrawable)->type == DRAWABLE_WINDOW) \ + _pPix = (PixmapPtr) (pDrawable)->pScreen->devPrivate; \ + else \ + _pPix = (PixmapPtr) (pDrawable); \ + (pointer) = (ptype *) _pPix->devPrivate.ptr; \ + (width) = ((int) _pPix->devKind) / sizeof (wtype); \ +} + +#define mfbGetByteWidthAndPointer(pDrawable, width, pointer) \ + mfbGetTypedWidthAndPointer(pDrawable, width, pointer, unsigned char, unsigned char) + +#define mfbGetPixelWidthAndPointer(pDrawable, width, pointer) \ + mfbGetTypedWidthAndPointer(pDrawable, width, pointer, PixelType, PixelType) + +#define mfbGetWindowTypedWidthAndPointer(pWin, width, pointer, wtype, ptype) {\ + PixmapPtr _pPix = (PixmapPtr) (pWin)->drawable.pScreen->devPrivate; \ + (pointer) = (ptype *) _pPix->devPrivate.ptr; \ + (width) = ((int) _pPix->devKind) / sizeof (wtype); \ +} + +#define mfbGetWindowPixelWidthAndPointer(pWin, width, pointer) \ + mfbGetWindowTypedWidthAndPointer(pWin, width, pointer, PixelType, PixelType) + +#define mfbGetWindowByteWidthAndPointer(pWin, width, pointer) \ + mfbGetWindowTypedWidthAndPointer(pWin, width, pointer, char, char) + +/* mfb uses the following macros to calculate addresses in drawables. + * To support banked framebuffers, the macros come in four flavors. + * All four collapse into the same definition on unbanked devices. + * + * mfbScanlineFoo - calculate address and do bank switching + * mfbScanlineFooNoBankSwitch - calculate address, don't bank switch + * mfbScanlineFooSrc - calculate address, switch source bank + * mfbScanlineFooDst - calculate address, switch destination bank + */ + +/* The NoBankSwitch versions are the same for banked and unbanked cases */ + +#define mfbScanlineIncNoBankSwitch(_ptr, _off) _ptr += (_off) +#define mfbScanlineOffsetNoBankSwitch(_ptr, _off) ((_ptr) + (_off)) +#define mfbScanlineDeltaNoBankSwitch(_ptr, _y, _w) \ + mfbScanlineOffsetNoBankSwitch(_ptr, (_y) * (_w)) +#define mfbScanlineNoBankSwitch(_ptr, _x, _y, _w) \ + mfbScanlineOffsetNoBankSwitch(_ptr, (_y) * (_w) + ((_x) >> MFB_PWSH)) + +#ifdef MFB_LINE_BANK + +#include "mfblinebank.h" /* get macro definitions from this file */ + +#else /* !MFB_LINE_BANK - unbanked case */ + +#define mfbScanlineInc(_ptr, _off) mfbScanlineIncNoBankSwitch(_ptr, _off) +#define mfbScanlineIncSrc(_ptr, _off) mfbScanlineInc(_ptr, _off) +#define mfbScanlineIncDst(_ptr, _off) mfbScanlineInc(_ptr, _off) + +#define mfbScanlineOffset(_ptr, _off) mfbScanlineOffsetNoBankSwitch(_ptr, _off) +#define mfbScanlineOffsetSrc(_ptr, _off) mfbScanlineOffset(_ptr, _off) +#define mfbScanlineOffsetDst(_ptr, _off) mfbScanlineOffset(_ptr, _off) + +#define mfbScanlineSrc(_ptr, _x, _y, _w) mfbScanline(_ptr, _x, _y, _w) +#define mfbScanlineDst(_ptr, _x, _y, _w) mfbScanline(_ptr, _x, _y, _w) + +#define mfbScanlineDeltaSrc(_ptr, _y, _w) mfbScanlineDelta(_ptr, _y, _w) +#define mfbScanlineDeltaDst(_ptr, _y, _w) mfbScanlineDelta(_ptr, _y, _w) + +#endif /* MFB_LINE_BANK */ + +#define mfbScanlineDelta(_ptr, _y, _w) \ + mfbScanlineOffset(_ptr, (_y) * (_w)) + +#define mfbScanline(_ptr, _x, _y, _w) \ + mfbScanlineOffset(_ptr, (_y) * (_w) + ((_x) >> MFB_PWSH)) + + +/* precomputed information about each glyph for GlyphBlt code. + this saves recalculating the per glyph information for each box. +*/ +typedef struct _pos{ + int xpos; /* xposition of glyph's origin */ + int xchar; /* x position mod 32 */ + int leftEdge; + int rightEdge; + int topEdge; + int bottomEdge; + PixelType *pdstBase; /* longword with character origin */ + int widthGlyph; /* width in bytes of this glyph */ +} TEXTPOS; + +/* reduced raster ops for mfb */ +#define RROP_BLACK GXclear +#define RROP_WHITE GXset +#define RROP_NOP GXnoop +#define RROP_INVERT GXinvert + +/* macros for mfbbitblt.c, mfbfillsp.c + these let the code do one switch on the rop per call, rather +than a switch on the rop per item (span or rectangle.) +*/ + +#define fnCLEAR(src, dst) (0) +#define fnAND(src, dst) (src & dst) +#define fnANDREVERSE(src, dst) (src & ~dst) +#define fnCOPY(src, dst) (src) +#define fnANDINVERTED(src, dst) (~src & dst) +#define fnNOOP(src, dst) (dst) +#define fnXOR(src, dst) (src ^ dst) +#define fnOR(src, dst) (src | dst) +#define fnNOR(src, dst) (~(src | dst)) +#define fnEQUIV(src, dst) (~src ^ dst) +#define fnINVERT(src, dst) (~dst) +#define fnORREVERSE(src, dst) (src | ~dst) +#define fnCOPYINVERTED(src, dst)(~src) +#define fnORINVERTED(src, dst) (~src | dst) +#define fnNAND(src, dst) (~(src & dst)) +#define fnSET(src, dst) (~0) + +/* Using a "switch" statement is much faster in most cases + * since the compiler can do a look-up table or multi-way branch + * instruction, depending on the architecture. The result on + * A Sun 3/50 is at least 2.5 times faster, assuming a uniform + * distribution of RasterOp operation types. + * + * However, doing some profiling on a running system reveals + * GXcopy is the operation over 99.5% of the time and + * GXxor is the next most frequent (about .4%), so we make special + * checks for those first. + * + * Note that this requires a change to the "calling sequence" + * since we can't engineer a "switch" statement to have an lvalue. + */ +#define DoRop(result, alu, src, dst) \ +{ \ + if (alu == GXcopy) \ + result = fnCOPY (src, dst); \ + else if (alu == GXxor) \ + result = fnXOR (src, dst); \ + else \ + switch (alu) \ + { \ + case GXclear: \ + result = fnCLEAR (src, dst); \ + break; \ + case GXand: \ + result = fnAND (src, dst); \ + break; \ + case GXandReverse: \ + result = fnANDREVERSE (src, dst); \ + break; \ + case GXandInverted: \ + result = fnANDINVERTED (src, dst); \ + break; \ + case GXnoop: \ + result = fnNOOP (src, dst); \ + break; \ + case GXor: \ + result = fnOR (src, dst); \ + break; \ + case GXnor: \ + result = fnNOR (src, dst); \ + break; \ + case GXequiv: \ + result = fnEQUIV (src, dst); \ + break; \ + case GXinvert: \ + result = fnINVERT (src, dst); \ + break; \ + case GXorReverse: \ + result = fnORREVERSE (src, dst); \ + break; \ + case GXcopyInverted: \ + result = fnCOPYINVERTED (src, dst); \ + break; \ + case GXorInverted: \ + result = fnORINVERTED (src, dst); \ + break; \ + case GXnand: \ + result = fnNAND (src, dst); \ + break; \ + case GXset: \ + result = fnSET (src, dst); \ + break; \ + } \ +} + + +/* C expression fragments for various operations. These get passed in + * as -D's on the compile command line. See mfb/Imakefile. This + * fixes XBUG 6319. + * + * This seems like a good place to point out that mfb's use of the + * words black and white is an unfortunate misnomer. In mfb code, black + * means zero, and white means one. + */ +#define MFB_OPEQ_WHITE |= +#define MFB_OPEQ_BLACK &=~ +#define MFB_OPEQ_INVERT ^= +#define MFB_EQWHOLEWORD_WHITE =~0 +#define MFB_EQWHOLEWORD_BLACK =0 +#define MFB_EQWHOLEWORD_INVERT ^=~0 +#define MFB_OP_WHITE /* nothing */ +#define MFB_OP_BLACK ~ diff --git a/mfb/mfbbitblt.c b/mfb/mfbbitblt.c new file mode 100644 index 000000000..7fe20aec2 --- /dev/null +++ b/mfb/mfbbitblt.c @@ -0,0 +1,485 @@ +/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */ +/*********************************************************** + +Copyright 1987, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ +/* $Xorg: mfbbitblt.c,v 1.4 2001/02/09 02:05:18 xorgcvs Exp $ */ +#include "X.h" +#include "Xprotostr.h" + +#include "miscstruct.h" +#include "regionstr.h" +#include "gcstruct.h" +#include "windowstr.h" +#include "pixmapstr.h" +#include "scrnintstr.h" + +#include "mi.h" + +#include "mfb.h" +#include "maskbits.h" + + +/* CopyArea and CopyPlane for a monchrome frame buffer + + + clip the source rectangle to the source's available bits. (this +avoids copying unnecessary pieces that will just get exposed anyway.) +this becomes the new shape of the destination. + clip the destination region to the composite clip in the +GC. this requires translating the destination region to (dstx, dsty). + build a list of source points, one for each rectangle in the +destination. this is a simple translation. + go do the multiple rectangle copies + do graphics exposures +*/ +/** Optimized for drawing pixmaps into windows, especially when drawing into + ** unobscured windows. Calls to the general-purpose region code were + ** replaced with rectangle-to-rectangle clipping comparisions. This is + ** possible, since the pixmap is a single rectangle. In an unobscured + ** window, the destination clip is also a single rectangle, and region + ** code can be avoided entirely. This is a big savings, since the region + ** code uses XAlloc() and makes many function calls. + ** + ** In addition, if source is a pixmap, there is no need to call the + ** expensive miHandleExposures() routine. Instead, we simply return NULL. + ** + ** Previously, drawing a pixmap into an unobscured window executed at least + ** 8 XAlloc()'s, 30 function calls, and hundreds of lines of code. + ** + ** Now, the same operation requires no XAlloc()'s, no region function calls, + ** and much less overhead. Nice for drawing lots of small pixmaps. + */ + +#ifndef LOWMEMFTPT + +void +mfbDoBitblt (pSrc, pDst, alu, prgnDst, pptSrc) + DrawablePtr pSrc, pDst; + int alu; + RegionPtr prgnDst; + DDXPointPtr pptSrc; +{ + switch (alu) + { + case GXcopy: + mfbDoBitbltCopy (pSrc, pDst, alu, prgnDst, pptSrc); + break; + case GXxor: + mfbDoBitbltXor (pSrc, pDst, alu, prgnDst, pptSrc); + break; + case GXcopyInverted: + mfbDoBitbltCopyInverted (pSrc, pDst, alu, prgnDst, pptSrc); + break; + case GXor: + mfbDoBitbltOr (pSrc, pDst, alu, prgnDst, pptSrc); + break; + default: + mfbDoBitbltGeneral (pSrc, pDst, alu, prgnDst, pptSrc); + break; + } +} + +RegionPtr +mfbCopyArea(pSrcDrawable, pDstDrawable, + pGC, srcx, srcy, width, height, dstx, dsty) +register DrawablePtr pSrcDrawable; +register DrawablePtr pDstDrawable; +register GC *pGC; +int srcx, srcy; +int width, height; +int dstx, dsty; +{ + RegionPtr prgnSrcClip; /* may be a new region, or just a copy */ + Bool freeSrcClip = FALSE; + + RegionPtr prgnExposed; + RegionRec rgnDst; + DDXPointPtr pptSrc; + register DDXPointPtr ppt; + register BoxPtr pbox; + int i; + register int dx; + register int dy; + xRectangle origSource; + DDXPointRec origDest; + int numRects; + BoxRec fastBox; + int fastClip = 0; /* for fast clipping with pixmap source */ + int fastExpose = 0; /* for fast exposures with pixmap source */ + void (*localDoBitBlt)(); + + origSource.x = srcx; + origSource.y = srcy; + origSource.width = width; + origSource.height = height; + origDest.x = dstx; + origDest.y = dsty; + + if ((pSrcDrawable != pDstDrawable) && + pSrcDrawable->pScreen->SourceValidate) + { + (*pSrcDrawable->pScreen->SourceValidate) (pSrcDrawable, srcx, srcy, width, height); + } + + switch (pGC->alu) { + case GXcopy: + localDoBitBlt = mfbDoBitbltCopy; + break; + case GXcopyInverted: + localDoBitBlt = mfbDoBitbltCopyInverted; + break; + case GXxor: + localDoBitBlt = mfbDoBitbltXor; + break; + case GXor: + localDoBitBlt = mfbDoBitbltOr; + break; + default: + localDoBitBlt = mfbDoBitbltGeneral; + break; + } + + srcx += pSrcDrawable->x; + srcy += pSrcDrawable->y; + + /* clip the source */ + + if (pSrcDrawable->type == DRAWABLE_PIXMAP) + { + if ((pSrcDrawable == pDstDrawable) && + (pGC->clientClipType == CT_NONE)) + { + prgnSrcClip = ((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pCompositeClip; + } + else + { + fastClip = 1; + } + } + else + { + if (pGC->subWindowMode == IncludeInferiors) + { + if (!((WindowPtr) pSrcDrawable)->parent) + { + /* + * special case bitblt from root window in + * IncludeInferiors mode; just like from a pixmap + */ + fastClip = 1; + } + else if ((pSrcDrawable == pDstDrawable) && + (pGC->clientClipType == CT_NONE)) + { + prgnSrcClip = ((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pCompositeClip; + } + else + { + prgnSrcClip = NotClippedByChildren((WindowPtr)pSrcDrawable); + freeSrcClip = TRUE; + } + } + else + { + prgnSrcClip = &((WindowPtr)pSrcDrawable)->clipList; + } + } + + fastBox.x1 = srcx; + fastBox.y1 = srcy; + fastBox.x2 = srcx + width; + fastBox.y2 = srcy + height; + + /* Don't create a source region if we are doing a fast clip */ + if (fastClip) + { + fastExpose = 1; + /* + * clip the source; if regions extend beyond the source size, + * make sure exposure events get sent + */ + if (fastBox.x1 < pSrcDrawable->x) + { + fastBox.x1 = pSrcDrawable->x; + fastExpose = 0; + } + if (fastBox.y1 < pSrcDrawable->y) + { + fastBox.y1 = pSrcDrawable->y; + fastExpose = 0; + } + if (fastBox.x2 > pSrcDrawable->x + (int) pSrcDrawable->width) + { + fastBox.x2 = pSrcDrawable->x + (int) pSrcDrawable->width; + fastExpose = 0; + } + if (fastBox.y2 > pSrcDrawable->y + (int) pSrcDrawable->height) + { + fastBox.y2 = pSrcDrawable->y + (int) pSrcDrawable->height; + fastExpose = 0; + } + } + else + { + REGION_INIT(pGC->pScreen, &rgnDst, &fastBox, 1); + REGION_INTERSECT(pGC->pScreen, &rgnDst, &rgnDst, prgnSrcClip); + } + + dstx += pDstDrawable->x; + dsty += pDstDrawable->y; + + if (pDstDrawable->type == DRAWABLE_WINDOW) + { + if (!((WindowPtr)pDstDrawable)->realized) + { + if (!fastClip) + REGION_UNINIT(pGC->pScreen, &rgnDst); + if (freeSrcClip) + REGION_DESTROY(pGC->pScreen, prgnSrcClip); + return NULL; + } + } + + dx = srcx - dstx; + dy = srcy - dsty; + + /* Translate and clip the dst to the destination composite clip */ + if (fastClip) + { + RegionPtr cclip; + + /* Translate the region directly */ + fastBox.x1 -= dx; + fastBox.x2 -= dx; + fastBox.y1 -= dy; + fastBox.y2 -= dy; + + /* If the destination composite clip is one rectangle we can + do the clip directly. Otherwise we have to create a full + blown region and call intersect */ + cclip = ((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pCompositeClip; + if (REGION_NUM_RECTS(cclip) == 1) + { + BoxPtr pBox = REGION_RECTS(cclip); + + if (fastBox.x1 < pBox->x1) fastBox.x1 = pBox->x1; + if (fastBox.x2 > pBox->x2) fastBox.x2 = pBox->x2; + if (fastBox.y1 < pBox->y1) fastBox.y1 = pBox->y1; + if (fastBox.y2 > pBox->y2) fastBox.y2 = pBox->y2; + + /* Check to see if the region is empty */ + if (fastBox.x1 >= fastBox.x2 || fastBox.y1 >= fastBox.y2) + { + REGION_INIT(pGC->pScreen, &rgnDst, NullBox, 0); + } + else + { + REGION_INIT(pGC->pScreen, &rgnDst, &fastBox, 1); + } + } + else + { + /* We must turn off fastClip now, since we must create + a full blown region. It is intersected with the + composite clip below. */ + fastClip = 0; + REGION_INIT(pGC->pScreen, &rgnDst, &fastBox,1); + } + } + else + { + REGION_TRANSLATE(pGC->pScreen, &rgnDst, -dx, -dy); + } + + if (!fastClip) + { + REGION_INTERSECT(pGC->pScreen, &rgnDst, &rgnDst, + ((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pCompositeClip); + } + + /* Do bit blitting */ + numRects = REGION_NUM_RECTS(&rgnDst); + if (numRects && width && height) + { + if(!(pptSrc = (DDXPointPtr)ALLOCATE_LOCAL(numRects * + sizeof(DDXPointRec)))) + { + REGION_UNINIT(pGC->pScreen, &rgnDst); + if (freeSrcClip) + REGION_DESTROY(pGC->pScreen, prgnSrcClip); + return NULL; + } + pbox = REGION_RECTS(&rgnDst); + ppt = pptSrc; + for (i = numRects; --i >= 0; pbox++, ppt++) + { + ppt->x = pbox->x1 + dx; + ppt->y = pbox->y1 + dy; + } + + if (pGC->planemask & 1) + (*localDoBitBlt) (pSrcDrawable, pDstDrawable, pGC->alu, &rgnDst, pptSrc); + + DEALLOCATE_LOCAL(pptSrc); + } + + prgnExposed = NULL; + if (((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->fExpose) + { + /* Pixmap sources generate a NoExposed (we return NULL to do this) */ + if (!fastExpose) + prgnExposed = + miHandleExposures(pSrcDrawable, pDstDrawable, pGC, + origSource.x, origSource.y, + (int)origSource.width, + (int)origSource.height, + origDest.x, origDest.y, (unsigned long)0); + } + REGION_UNINIT(pGC->pScreen, &rgnDst); + if (freeSrcClip) + REGION_DESTROY(pGC->pScreen, prgnSrcClip); + return prgnExposed; +} + +#endif /* ifndef LOWMEMFTPT */ + +/* + * Devices which use mfb for 1-bit pixmap support + * must register a function for n-to-1 copy operations + */ + +static unsigned long copyPlaneGeneration; +static int copyPlaneScreenIndex = -1; + +Bool +mfbRegisterCopyPlaneProc (pScreen, proc) + ScreenPtr pScreen; + RegionPtr (*proc)(); +{ + if (copyPlaneGeneration != serverGeneration) + { + copyPlaneScreenIndex = AllocateScreenPrivateIndex(); + if (copyPlaneScreenIndex < 0) + return FALSE; + copyPlaneGeneration = serverGeneration; + } + pScreen->devPrivates[copyPlaneScreenIndex].fptr = (pointer (*)()) proc; + return TRUE; +} + +/* + if fg == 1 and bg ==0, we can do an ordinary CopyArea. + if fg == bg, we can do a CopyArea with alu = mfbReduceRop(alu, fg) + if fg == 0 and bg == 1, we use the same rasterop, with + source operand inverted. + + CopyArea deals with all of the graphics exposure events. + This code depends on knowing that we can change the +alu in the GC without having to call ValidateGC() before calling +CopyArea(). + +*/ + +#ifndef LOWMEMFTPT + +RegionPtr +mfbCopyPlane(pSrcDrawable, pDstDrawable, + pGC, srcx, srcy, width, height, dstx, dsty, plane) +DrawablePtr pSrcDrawable, pDstDrawable; +register GC *pGC; +int srcx, srcy; +int width, height; +int dstx, dsty; +unsigned long plane; +{ + int alu; + RegionPtr prgnExposed; + RegionPtr (*copyPlane)(); + + if (pSrcDrawable->depth != 1) + { + if (copyPlaneScreenIndex >= 0 && + (copyPlane = (RegionPtr (*)()) + pSrcDrawable->pScreen->devPrivates[copyPlaneScreenIndex].fptr) + ) + { + return (*copyPlane) (pSrcDrawable, pDstDrawable, + pGC, srcx, srcy, width, height, dstx, dsty, plane); + } + else + { + FatalError ("No copyPlane proc registered for depth %d\n", + pSrcDrawable->depth); + } + } + if (plane != 1) + return NULL; + + if ((pGC->fgPixel & 1) == 1 && (pGC->bgPixel & 1) == 0) + { + prgnExposed = (*pGC->ops->CopyArea)(pSrcDrawable, pDstDrawable, + pGC, srcx, srcy, width, height, dstx, dsty); + } + else if ((pGC->fgPixel & 1) == (pGC->bgPixel & 1)) + { + alu = pGC->alu; + pGC->alu = mfbReduceRop(pGC->alu, pGC->fgPixel); + prgnExposed = (*pGC->ops->CopyArea)(pSrcDrawable, pDstDrawable, + pGC, srcx, srcy, width, height, dstx, dsty); + pGC->alu = alu; + } + else /* need to invert the src */ + { + alu = pGC->alu; + pGC->alu = InverseAlu[alu]; + prgnExposed = (*pGC->ops->CopyArea)(pSrcDrawable, pDstDrawable, + pGC, srcx, srcy, width, height, dstx, dsty); + pGC->alu = alu; + } + return prgnExposed; +} + +#endif /* ifndef LOWMEMFTPT */ diff --git a/mfb/mfbblt.c b/mfb/mfbblt.c new file mode 100644 index 000000000..28f16febc --- /dev/null +++ b/mfb/mfbblt.c @@ -0,0 +1,587 @@ +/* + * mfb copy area + */ + +/* + +Copyright 1989, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + +Author: Keith Packard + +*/ +/* $Xorg: mfbblt.c,v 1.4 2001/02/09 02:05:18 xorgcvs Exp $ */ + +#include "X.h" +#include "Xmd.h" +#include "Xproto.h" +#include "mfb.h" +#include "gcstruct.h" +#include "windowstr.h" +#include "scrnintstr.h" +#include "pixmapstr.h" +#include "regionstr.h" +#include "maskbits.h" +#include "fastblt.h" +#include "mergerop.h" + +void +MROP_NAME(mfbDoBitblt)(pSrc, pDst, alu, prgnDst, pptSrc) + DrawablePtr pSrc, pDst; + int alu; + RegionPtr prgnDst; + DDXPointPtr pptSrc; +{ + PixelType *psrcBase, *pdstBase; + /* start of src and dst bitmaps */ + int widthSrc, widthDst; /* add to get to same position in next line */ + + BoxPtr pbox; + int nbox; + + BoxPtr pboxTmp, pboxNext, pboxBase, pboxNew1, pboxNew2; + /* temporaries for shuffling rectangles */ + DDXPointPtr pptTmp, pptNew1, pptNew2; + /* shuffling boxes entails shuffling the + source points too */ + int w, h; + int xdir; /* 1 = left right, -1 = right left/ */ + int ydir; /* 1 = top down, -1 = bottom up */ + + PixelType *psrcLine, *pdstLine; + /* pointers to line with current src and dst */ + register PixelType *psrc;/* pointer to current src longword */ + register PixelType *pdst;/* pointer to current dst longword */ + + MROP_DECLARE_REG() + + /* following used for looping through a line */ + PixelType startmask, endmask; /* masks for writing ends of dst */ + int nlMiddle; /* whole longwords in dst */ + int xoffSrc, xoffDst; + register int leftShift, rightShift; + register PixelType bits; + register PixelType bits1; + register int nl; /* temp copy of nlMiddle */ + + /* place to store full source word */ + int nstart; /* number of ragged bits at start of dst */ + int nend; /* number of ragged bits at end of dst */ + int srcStartOver; /* pulling nstart bits from src + overflows into the next word? */ + int careful; + int tmpSrc; + + MROP_INITIALIZE(alu,0); + + mfbGetPixelWidthAndPointer(pSrc, widthSrc, psrcBase); + + mfbGetPixelWidthAndPointer(pDst, widthDst, pdstBase); + + /* XXX we have to err on the side of safety when both are windows, + * because we don't know if IncludeInferiors is being used. + */ + careful = ((pSrc == pDst) || + ((pSrc->type == DRAWABLE_WINDOW) && + (pDst->type == DRAWABLE_WINDOW))); + + pbox = REGION_RECTS(prgnDst); + nbox = REGION_NUM_RECTS(prgnDst); + + pboxNew1 = NULL; + pptNew1 = NULL; + pboxNew2 = NULL; + pptNew2 = NULL; + if (careful && (pptSrc->y < pbox->y1)) + { + /* walk source botttom to top */ + ydir = -1; + widthSrc = -widthSrc; + widthDst = -widthDst; + + if (nbox > 1) + { + /* keep ordering in each band, reverse order of bands */ + pboxNew1 = (BoxPtr)ALLOCATE_LOCAL(sizeof(BoxRec) * nbox); + if(!pboxNew1) + return; + pptNew1 = (DDXPointPtr)ALLOCATE_LOCAL(sizeof(DDXPointRec) * nbox); + if(!pptNew1) + { + DEALLOCATE_LOCAL(pboxNew1); + return; + } + pboxBase = pboxNext = pbox+nbox-1; + while (pboxBase >= pbox) + { + while ((pboxNext >= pbox) && + (pboxBase->y1 == pboxNext->y1)) + pboxNext--; + pboxTmp = pboxNext+1; + pptTmp = pptSrc + (pboxTmp - pbox); + while (pboxTmp <= pboxBase) + { + *pboxNew1++ = *pboxTmp++; + *pptNew1++ = *pptTmp++; + } + pboxBase = pboxNext; + } + pboxNew1 -= nbox; + pbox = pboxNew1; + pptNew1 -= nbox; + pptSrc = pptNew1; + } + } + else + { + /* walk source top to bottom */ + ydir = 1; + } + + if (careful && (pptSrc->x < pbox->x1)) + { + /* walk source right to left */ + xdir = -1; + + if (nbox > 1) + { + /* reverse order of rects in each band */ + pboxNew2 = (BoxPtr)ALLOCATE_LOCAL(sizeof(BoxRec) * nbox); + pptNew2 = (DDXPointPtr)ALLOCATE_LOCAL(sizeof(DDXPointRec) * nbox); + if(!pboxNew2 || !pptNew2) + { + if (pptNew2) DEALLOCATE_LOCAL(pptNew2); + if (pboxNew2) DEALLOCATE_LOCAL(pboxNew2); + if (pboxNew1) + { + DEALLOCATE_LOCAL(pptNew1); + DEALLOCATE_LOCAL(pboxNew1); + } + return; + } + pboxBase = pboxNext = pbox; + while (pboxBase < pbox+nbox) + { + while ((pboxNext < pbox+nbox) && + (pboxNext->y1 == pboxBase->y1)) + pboxNext++; + pboxTmp = pboxNext; + pptTmp = pptSrc + (pboxTmp - pbox); + while (pboxTmp != pboxBase) + { + *pboxNew2++ = *--pboxTmp; + *pptNew2++ = *--pptTmp; + } + pboxBase = pboxNext; + } + pboxNew2 -= nbox; + pbox = pboxNew2; + pptNew2 -= nbox; + pptSrc = pptNew2; + } + } + else + { + /* walk source left to right */ + xdir = 1; + } + + while(nbox--) + { + w = pbox->x2 - pbox->x1; + h = pbox->y2 - pbox->y1; + + if (ydir == -1) /* start at last scanline of rectangle */ + { + psrcLine = mfbScanlineDeltaSrc(psrcBase, -(pptSrc->y+h-1), widthSrc); + pdstLine = mfbScanlineDeltaDst(pdstBase, -(pbox->y2-1), widthDst); + } + else /* start at first scanline */ + { + psrcLine = mfbScanlineDeltaSrc(psrcBase, pptSrc->y, widthSrc); + pdstLine = mfbScanlineDeltaDst(pdstBase, pbox->y1, widthDst); + } + if ((pbox->x1 & PIM) + w <= PPW) + { + maskpartialbits (pbox->x1, w, startmask); + endmask = 0; + nlMiddle = 0; + } + else + { + maskbits(pbox->x1, w, startmask, endmask, nlMiddle); + } + if (xdir == 1) + { + xoffSrc = pptSrc->x & PIM; + xoffDst = pbox->x1 & PIM; + pdstLine += (pbox->x1 >> PWSH); + psrcLine += (pptSrc->x >> PWSH); +#ifdef DO_UNALIGNED_BITBLT + nl = xoffSrc - xoffDst; + psrcLine = (PixelType *) + (((unsigned char *) psrcLine) + nl); +#else + if (xoffSrc == xoffDst) +#endif + { + while (h--) + { + psrc = psrcLine; + pdst = pdstLine; + if (startmask) + { + *pdst = MROP_MASK(*psrc, *pdst, startmask); + psrc++; + pdst++; + } + nl = nlMiddle; + +#ifdef LARGE_INSTRUCTION_CACHE +#ifdef FAST_CONSTANT_OFFSET_MODE + + psrc += nl & (UNROLL-1); + pdst += nl & (UNROLL-1); + +#define BodyOdd(n) pdst[-n] = MROP_SOLID (psrc[-n], pdst[-n]); +#define BodyEven(n) pdst[-n] = MROP_SOLID (psrc[-n], pdst[-n]); + +#define LoopReset \ +pdst += UNROLL; \ +psrc += UNROLL; + +#else + +#define BodyOdd(n) *pdst = MROP_SOLID (*psrc, *pdst); pdst++; psrc++; +#define BodyEven(n) BodyOdd(n) + +#define LoopReset ; + +#endif + PackedLoop + +#undef BodyOdd +#undef BodyEven +#undef LoopReset + +#else +#ifdef NOTDEF + /* you'd think this would be faster -- + * a single instruction instead of 6 + * but measurements show it to be ~15% slower + */ + while ((nl -= 6) >= 0) + { + asm ("moveml %1+,#0x0c0f;moveml#0x0c0f,%0" + : "=m" (*(char *)pdst) + : "m" (*(char *)psrc) + : "d0", "d1", "d2", "d3", + "a2", "a3"); + pdst += 6; + } + nl += 6; + while (nl--) + *pdst++ = *psrc++; +#endif + DuffL(nl, label1, + *pdst = MROP_SOLID (*psrc, *pdst); + pdst++; psrc++;) +#endif + + if (endmask) + *pdst = MROP_MASK(*psrc, *pdst, endmask); + mfbScanlineIncDst(pdstLine, widthDst); + mfbScanlineIncSrc(psrcLine, widthSrc); + } + } +#ifndef DO_UNALIGNED_BITBLT + else + { + if (xoffSrc > xoffDst) + { + leftShift = (xoffSrc - xoffDst); + rightShift = PPW - leftShift; + } + else + { + rightShift = (xoffDst - xoffSrc); + leftShift = PPW - rightShift; + } + while (h--) + { + psrc = psrcLine; + pdst = pdstLine; + bits = 0; + if (xoffSrc > xoffDst) + bits = *psrc++; + if (startmask) + { + bits1 = BitLeft(bits,leftShift); + bits = *psrc++; + bits1 |= BitRight(bits,rightShift); + *pdst = MROP_MASK(bits1, *pdst, startmask); + pdst++; + } + nl = nlMiddle; + +#ifdef LARGE_INSTRUCTION_CACHE + bits1 = bits; + +#ifdef FAST_CONSTANT_OFFSET_MODE + + psrc += nl & (UNROLL-1); + pdst += nl & (UNROLL-1); + +#define BodyOdd(n) \ +bits = psrc[-n]; \ +pdst[-n] = MROP_SOLID(BitLeft(bits1, leftShift) | BitRight(bits, rightShift), pdst[-n]); + +#define BodyEven(n) \ +bits1 = psrc[-n]; \ +pdst[-n] = MROP_SOLID(BitLeft(bits, leftShift) | BitRight(bits1, rightShift), pdst[-n]); + +#define LoopReset \ +pdst += UNROLL; \ +psrc += UNROLL; + +#else + +#define BodyOdd(n) \ +bits = *psrc++; \ +*pdst = MROP_SOLID(BitLeft(bits1, leftShift) | BitRight(bits, rightShift), *pdst); \ +pdst++; + +#define BodyEven(n) \ +bits1 = *psrc++; \ +*pdst = MROP_SOLID(BitLeft(bits, leftShift) | BitRight(bits1, rightShift), *pdst); \ +pdst++; + +#define LoopReset ; + +#endif /* !FAST_CONSTANT_OFFSET_MODE */ + + PackedLoop + +#undef BodyOdd +#undef BodyEven +#undef LoopReset + +#else + DuffL (nl,label2, + bits1 = BitLeft(bits, leftShift); + bits = *psrc++; + *pdst = MROP_SOLID (bits1 | BitRight(bits, rightShift), *pdst); + pdst++; + ) +#endif + + if (endmask) + { + bits1 = BitLeft(bits, leftShift); + if (BitLeft(endmask, rightShift)) + { + bits = *psrc; + bits1 |= BitRight(bits, rightShift); + } + *pdst = MROP_MASK (bits1, *pdst, endmask); + } + mfbScanlineIncDst(pdstLine, widthDst); + mfbScanlineIncSrc(psrcLine, widthSrc); + } + } +#endif /* DO_UNALIGNED_BITBLT */ + } + else /* xdir == -1 */ + { + xoffSrc = (pptSrc->x + w - 1) & PIM; + xoffDst = (pbox->x2 - 1) & PIM; + pdstLine += ((pbox->x2-1) >> PWSH) + 1; + psrcLine += ((pptSrc->x+w - 1) >> PWSH) + 1; +#ifdef DO_UNALIGNED_BITBLT + nl = xoffSrc - xoffDst; + psrcLine = (PixelType *) + (((unsigned char *) psrcLine) + nl); +#else + if (xoffSrc == xoffDst) +#endif + { + while (h--) + { + psrc = psrcLine; + pdst = pdstLine; + if (endmask) + { + pdst--; + psrc--; + *pdst = MROP_MASK (*psrc, *pdst, endmask); + } + nl = nlMiddle; + +#ifdef LARGE_INSTRUCTION_CACHE +#ifdef FAST_CONSTANT_OFFSET_MODE + psrc -= nl & (UNROLL - 1); + pdst -= nl & (UNROLL - 1); + +#define BodyOdd(n) pdst[n-1] = MROP_SOLID (psrc[n-1], pdst[n-1]); + +#define BodyEven(n) BodyOdd(n) + +#define LoopReset \ +pdst -= UNROLL;\ +psrc -= UNROLL; + +#else + +#define BodyOdd(n) --pdst; --psrc; *pdst = MROP_SOLID(*psrc, *pdst); +#define BodyEven(n) BodyOdd(n) +#define LoopReset ; + +#endif + PackedLoop + +#undef BodyOdd +#undef BodyEven +#undef LoopReset + +#else + DuffL(nl,label3, + --pdst; --psrc; *pdst = MROP_SOLID (*psrc, *pdst);) +#endif + + if (startmask) + { + --pdst; + --psrc; + *pdst = MROP_MASK(*psrc, *pdst, startmask); + } + mfbScanlineIncDst(pdstLine, widthDst); + mfbScanlineIncSrc(psrcLine, widthSrc); + } + } +#ifndef DO_UNALIGNED_BITBLT + else + { + if (xoffDst > xoffSrc) + { + rightShift = (xoffDst - xoffSrc); + leftShift = PPW - rightShift; + } + else + { + leftShift = (xoffSrc - xoffDst); + rightShift = PPW - leftShift; + } + while (h--) + { + psrc = psrcLine; + pdst = pdstLine; + bits = 0; + if (xoffDst > xoffSrc) + bits = *--psrc; + if (endmask) + { + bits1 = BitRight(bits, rightShift); + bits = *--psrc; + bits1 |= BitLeft(bits, leftShift); + pdst--; + *pdst = MROP_MASK(bits1, *pdst, endmask); + } + nl = nlMiddle; + +#ifdef LARGE_INSTRUCTION_CACHE + bits1 = bits; +#ifdef FAST_CONSTANT_OFFSET_MODE + psrc -= nl & (UNROLL - 1); + pdst -= nl & (UNROLL - 1); + +#define BodyOdd(n) \ +bits = psrc[n-1]; \ +pdst[n-1] = MROP_SOLID(BitRight(bits1, rightShift) | BitLeft(bits, leftShift),pdst[n-1]); + +#define BodyEven(n) \ +bits1 = psrc[n-1]; \ +pdst[n-1] = MROP_SOLID(BitRight(bits, rightShift) | BitLeft(bits1, leftShift),pdst[n-1]); + +#define LoopReset \ +pdst -= UNROLL; \ +psrc -= UNROLL; + +#else + +#define BodyOdd(n) \ +bits = *--psrc; --pdst; \ +*pdst = MROP_SOLID(BitRight(bits1, rightShift) | BitLeft(bits, leftShift),*pdst); + +#define BodyEven(n) \ +bits1 = *--psrc; --pdst; \ +*pdst = MROP_SOLID(BitRight(bits, rightShift) | BitLeft(bits1, leftShift),*pdst); + +#define LoopReset ; + +#endif + + PackedLoop + +#undef BodyOdd +#undef BodyEven +#undef LoopReset + +#else + DuffL (nl, label4, + bits1 = BitRight(bits, rightShift); + bits = *--psrc; + --pdst; + *pdst = MROP_SOLID(bits1 | BitLeft(bits, leftShift),*pdst); + ) +#endif + + if (startmask) + { + bits1 = BitRight(bits, rightShift); + if (BitRight (startmask, leftShift)) + { + bits = *--psrc; + bits1 |= BitLeft(bits, leftShift); + } + --pdst; + *pdst = MROP_MASK(bits1, *pdst, startmask); + } + mfbScanlineIncDst(pdstLine, widthDst); + mfbScanlineIncSrc(psrcLine, widthSrc); + } + } +#endif + } + pbox++; + pptSrc++; + } + if (pboxNew2) + { + DEALLOCATE_LOCAL(pptNew2); + DEALLOCATE_LOCAL(pboxNew2); + } + if (pboxNew1) + { + DEALLOCATE_LOCAL(pptNew1); + DEALLOCATE_LOCAL(pboxNew1); + } +} diff --git a/mfb/mfbbres.c b/mfb/mfbbres.c new file mode 100644 index 000000000..6eb954281 --- /dev/null +++ b/mfb/mfbbres.c @@ -0,0 +1,365 @@ +/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */ +/*********************************************************** + +Copyright 1987, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ +/* $Xorg: mfbbres.c,v 1.4 2001/02/09 02:05:18 xorgcvs Exp $ */ +#include "X.h" +#include "misc.h" +#include "mfb.h" +#include "maskbits.h" +#include "miline.h" + +/* Solid bresenham line */ +/* NOTES + e2 is used less often than e1, so it's not in a register +*/ + +void +mfbBresS(rop, addrlbase, nlwidth, signdx, signdy, axis, x1, y1, e, e1, e2, len) +int rop; /* a reduced rasterop */ +PixelType *addrlbase; /* pointer to base of bitmap */ +int nlwidth; /* width in longwords of bitmap */ +int signdx, signdy; /* signs of directions */ +int axis; /* major axis (Y_AXIS or X_AXIS) */ +int x1, y1; /* initial point */ +register int e; /* error accumulator */ +register int e1; /* bresenham increments */ +int e2; +int len; /* length of line */ +{ + register int yinc; /* increment to next scanline, in bytes */ + register PixelType *addrl; /* bitmask long pointer */ + register PixelType bit; /* current bit being set/cleared/etc. */ + PixelType leftbit = mask[0]; /* leftmost bit to process in new word */ + PixelType rightbit = mask[PPW-1]; /* rightmost bit to process in new word */ + + register int e3 = e2-e1; + PixelType tmp; + + /* point to longword containing first point */ + addrl = mfbScanline(addrlbase, x1, y1, nlwidth); + yinc = signdy * nlwidth; + e = e-e1; /* to make looping easier */ + bit = mask[x1 & PIM]; + + if (!len) + return; + if (rop == RROP_BLACK) + { + if (axis == X_AXIS) + { + if (signdx > 0) + { + tmp = *addrl; + for (;;) + { + tmp &= ~bit; + if (!--len) + break; + bit = SCRRIGHT(bit,1); + e += e1; + if (e >= 0) + { + *addrl = tmp; + mfbScanlineInc(addrl, yinc); + e += e3; + if (!bit) + { + bit = leftbit; + addrl ++; + } + tmp = *addrl; + } + else if (!bit) + { + *addrl = tmp; + bit = leftbit; + addrl ++; + tmp = *addrl; + } + } + *addrl = tmp; + } + else + { + tmp = *addrl; + for (;;) + { + tmp &= ~bit; + if (!--len) + break; + e += e1; + bit = SCRLEFT(bit,1); + if (e >= 0) + { + *addrl = tmp; + mfbScanlineInc(addrl, yinc); + e += e3; + if (!bit) + { + bit = rightbit; + addrl --; + } + tmp = *addrl; + } + else if (!bit) + { + *addrl = tmp; + bit = rightbit; + addrl --; + tmp = *addrl; + } + } + *addrl = tmp; + } + } /* if X_AXIS */ + else + { + if (signdx > 0) + { + while(len--) + { + *addrl &= ~bit; + e += e1; + if (e >= 0) + { + bit = SCRRIGHT(bit,1); + if (!bit) { bit = leftbit;addrl ++; } + e += e3; + } + mfbScanlineInc(addrl, yinc); + } + } + else + { + while(len--) + { + *addrl &= ~bit; + e += e1; + if (e >= 0) + { + bit = SCRLEFT(bit,1); + if (!bit) { bit = rightbit;addrl --; } + e += e3; + } + mfbScanlineInc(addrl, yinc); + } + } + } /* else Y_AXIS */ + } + else if (rop == RROP_WHITE) + { + if (axis == X_AXIS) + { + if (signdx > 0) + { + tmp = *addrl; + for (;;) + { + tmp |= bit; + if (!--len) + break; + e += e1; + bit = SCRRIGHT(bit,1); + if (e >= 0) + { + *addrl = tmp; + mfbScanlineInc(addrl, yinc); + e += e3; + if (!bit) + { + bit = leftbit; + addrl ++; + } + tmp = *addrl; + } + else if (!bit) + { + *addrl = tmp; + bit = leftbit; + addrl ++; + tmp = *addrl; + } + } + *addrl = tmp; + } + else + { + tmp = *addrl; + for (;;) + { + tmp |= bit; + if (!--len) + break; + e += e1; + bit = SCRLEFT(bit,1); + if (e >= 0) + { + *addrl = tmp; + mfbScanlineInc(addrl, yinc); + e += e3; + if (!bit) + { + bit = rightbit; + addrl --; + } + tmp = *addrl; + } + else if (!bit) + { + *addrl = tmp; + bit = rightbit; + addrl --; + tmp = *addrl; + } + } + *addrl = tmp; + } + } /* if X_AXIS */ + else + { + if (signdx > 0) + { + while(len--) + { + *addrl |= bit; + e += e1; + if (e >= 0) + { + bit = SCRRIGHT(bit,1); + if (!bit) { bit = leftbit;addrl ++; } + e += e3; + } + mfbScanlineInc(addrl, yinc); + } + } + else + { + while(len--) + { + *addrl |= bit; + e += e1; + if (e >= 0) + { + bit = SCRLEFT(bit,1); + if (!bit) { bit = rightbit;addrl --; } + e += e3; + } + mfbScanlineInc(addrl, yinc); + } + } + } /* else Y_AXIS */ + } + else if (rop == RROP_INVERT) + { + if (axis == X_AXIS) + { + if (signdx > 0) + { + while(len--) + { + *addrl ^= bit; + e += e1; + if (e >= 0) + { + mfbScanlineInc(addrl, yinc); + e += e3; + } + bit = SCRRIGHT(bit,1); + if (!bit) { bit = leftbit;addrl ++; } + } + } + else + { + while(len--) + { + *addrl ^= bit; + e += e1; + if (e >= 0) + { + mfbScanlineInc(addrl, yinc); + e += e3; + } + bit = SCRLEFT(bit,1); + if (!bit) { bit = rightbit;addrl --; } + } + } + } /* if X_AXIS */ + else + { + if (signdx > 0) + { + while(len--) + { + *addrl ^= bit; + e += e1; + if (e >= 0) + { + bit = SCRRIGHT(bit,1); + if (!bit) { bit = leftbit;addrl ++; } + e += e3; + } + mfbScanlineInc(addrl, yinc); + } + } + else + { + while(len--) + { + *addrl ^= bit; + e += e1; + if (e >= 0) + { + bit = SCRLEFT(bit,1); + if (!bit) { bit = rightbit; addrl --; } + e += e3; + } + mfbScanlineInc(addrl, yinc); + } + } + } /* else Y_AXIS */ + } +} diff --git a/mfb/mfbbresd.c b/mfb/mfbbresd.c new file mode 100644 index 000000000..f71070773 --- /dev/null +++ b/mfb/mfbbresd.c @@ -0,0 +1,204 @@ +/*********************************************************** + +Copyright 1987, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ +/* $Xorg: mfbbresd.c,v 1.4 2001/02/09 02:05:18 xorgcvs Exp $ */ +#include "X.h" +#include "misc.h" +#include "mfb.h" +#include "maskbits.h" +#include "miline.h" + +/* Dashed bresenham line */ + +#define StepDash\ + if (!--dashRemaining) { \ + if (++ dashIndex == numInDashList) \ + dashIndex = 0; \ + dashRemaining = pDash[dashIndex]; \ + rop = fgrop; \ + if (dashIndex & 1) \ + rop = bgrop; \ + } + +void +mfbBresD(fgrop, bgrop, + pdashIndex, pDash, numInDashList, pdashOffset, isDoubleDash, + addrlbase, nlwidth, + signdx, signdy, axis, x1, y1, e, e1, e2, len) +int fgrop, bgrop; +int *pdashIndex; /* current dash */ +unsigned char *pDash; /* dash list */ +int numInDashList; /* total length of dash list */ +int *pdashOffset; /* offset into current dash */ +int isDoubleDash; +PixelType *addrlbase; /* pointer to base of bitmap */ +int nlwidth; /* width in longwords of bitmap */ +int signdx, signdy; /* signs of directions */ +int axis; /* major axis (Y_AXIS or X_AXIS) */ +int x1, y1; /* initial point */ +register int e; /* error accumulator */ +register int e1; /* bresenham increments */ +int e2; +int len; /* length of line */ +{ + register int yinc; /* increment to next scanline, in bytes */ + register PixelType *addrl; + register int e3 = e2-e1; + register unsigned long bit; + PixelType leftbit = mask[0]; /* leftmost bit to process in new word */ + PixelType rightbit = mask[PPW-1]; /* rightmost bit to process in new word */ + int dashIndex; + int dashOffset; + int dashRemaining; + int rop; + + dashOffset = *pdashOffset; + dashIndex = *pdashIndex; + dashRemaining = pDash[dashIndex] - dashOffset; + rop = fgrop; + if (!isDoubleDash) + bgrop = -1; + if (dashIndex & 1) + rop = bgrop; + + /* point to longword containing first point */ + addrl = mfbScanline(addrlbase, x1, y1, nlwidth); + yinc = signdy * nlwidth; + e = e-e1; /* to make looping easier */ + bit = mask[x1 & PIM]; + if (axis == X_AXIS) + { + if (signdx > 0) + { + while(len--) + { + if (rop == RROP_BLACK) + *addrl &= ~bit; + else if (rop == RROP_WHITE) + *addrl |= bit; + else if (rop == RROP_INVERT) + *addrl ^= bit; + e += e1; + if (e >= 0) + { + mfbScanlineInc(addrl, yinc); + e += e3; + } + bit = SCRRIGHT(bit,1); + if (!bit) { bit = leftbit;addrl ++; } + StepDash + } + } + else + { + while(len--) + { + if (rop == RROP_BLACK) + *addrl &= ~bit; + else if (rop == RROP_WHITE) + *addrl |= bit; + else if (rop == RROP_INVERT) + *addrl ^= bit; + e += e1; + if (e >= 0) + { + mfbScanlineInc(addrl, yinc); + e += e3; + } + bit = SCRLEFT(bit,1); + if (!bit) { bit = rightbit;addrl --; } + StepDash + } + } + } /* if X_AXIS */ + else + { + if (signdx > 0) + { + while(len--) + { + if (rop == RROP_BLACK) + *addrl &= ~bit; + else if (rop == RROP_WHITE) + *addrl |= bit; + else if (rop == RROP_INVERT) + *addrl ^= bit; + e += e1; + if (e >= 0) + { + bit = SCRRIGHT(bit,1); + if (!bit) { bit = leftbit;addrl ++; } + e += e3; + } + mfbScanlineInc(addrl, yinc); + StepDash + } + } + else + { + while(len--) + { + if (rop == RROP_BLACK) + *addrl &= ~bit; + else if (rop == RROP_WHITE) + *addrl |= bit; + else if (rop == RROP_INVERT) + *addrl ^= bit; + e += e1; + if (e >= 0) + { + bit = SCRLEFT(bit,1); + if (!bit) { bit = rightbit;addrl --; } + e += e3; + } + mfbScanlineInc(addrl, yinc); + StepDash + } + } + } /* else Y_AXIS */ + *pdashIndex = dashIndex; + *pdashOffset = pDash[dashIndex] - dashRemaining; +} diff --git a/mfb/mfbbstore.c b/mfb/mfbbstore.c new file mode 100644 index 000000000..661ed0827 --- /dev/null +++ b/mfb/mfbbstore.c @@ -0,0 +1,151 @@ +/* $Xorg: mfbbstore.c,v 1.4 2001/02/09 02:05:18 xorgcvs Exp $ */ +/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */ +/* + +Copyright 1987, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall +not be used in advertising or otherwise to promote the sale, use or +other dealings in this Software without prior written authorization +from The Open Group. + +*/ + +#include "mfb.h" +#include "X.h" +#include "mibstore.h" +#include "regionstr.h" +#include "scrnintstr.h" +#include "pixmapstr.h" +#include "windowstr.h" + +/*- + *----------------------------------------------------------------------- + * mfbSaveAreas -- + * Function called by miSaveAreas to actually fetch the areas to be + * saved into the backing pixmap. This is very simple to do, since + * mfbDoBitblt is designed for this very thing. The region to save is + * already destination-relative and we're given the offset to the + * window origin, so we have only to create an array of points of the + * u.l. corners of the boxes in the region translated to the screen + * coordinate system and fetch the screen pixmap out of its devPrivate + * field.... + * + * Results: + * None. + * + * Side Effects: + * Data are copied from the screen into the pixmap. + * + *----------------------------------------------------------------------- + */ +void +mfbSaveAreas(pPixmap, prgnSave, xorg, yorg, pWin) + PixmapPtr pPixmap; /* Backing pixmap */ + RegionPtr prgnSave; /* Region to save (pixmap-relative) */ + int xorg; /* X origin of region */ + int yorg; /* Y origin of region */ + WindowPtr pWin; +{ + register DDXPointPtr pPt; + DDXPointPtr pPtsInit; + register BoxPtr pBox; + register int numRects; + + numRects = REGION_NUM_RECTS(prgnSave); + pPtsInit = (DDXPointPtr)ALLOCATE_LOCAL(numRects * sizeof(DDXPointRec)); + if (!pPtsInit) + return; + + pBox = REGION_RECTS(prgnSave); + pPt = pPtsInit; + while (numRects--) + { + pPt->x = pBox->x1 + xorg; + pPt->y = pBox->y1 + yorg; + pPt++; + pBox++; + } + + mfbDoBitblt((DrawablePtr)pPixmap->drawable.pScreen->devPrivate, + (DrawablePtr)pPixmap, + GXcopy, + prgnSave, + pPtsInit); + + DEALLOCATE_LOCAL(pPtsInit); +} + +/*- + *----------------------------------------------------------------------- + * mfbRestoreAreas -- + * Function called by miRestoreAreas to actually fetch the areas to be + * restored from the backing pixmap. This is very simple to do, since + * mfbDoBitblt is designed for this very thing. The region to restore is + * already destination-relative and we're given the offset to the + * window origin, so we have only to create an array of points of the + * u.l. corners of the boxes in the region translated to the pixmap + * coordinate system and fetch the screen pixmap out of its devPrivate + * field.... + * + * Results: + * None. + * + * Side Effects: + * Data are copied from the pixmap into the screen. + * + *----------------------------------------------------------------------- + */ +void +mfbRestoreAreas(pPixmap, prgnRestore, xorg, yorg, pWin) + PixmapPtr pPixmap; /* Backing pixmap */ + RegionPtr prgnRestore; /* Region to restore (screen-relative)*/ + int xorg; /* X origin of window */ + int yorg; /* Y origin of window */ + WindowPtr pWin; +{ + register DDXPointPtr pPt; + DDXPointPtr pPtsInit; + register BoxPtr pBox; + register int numRects; + + numRects = REGION_NUM_RECTS(prgnRestore); + pPtsInit = (DDXPointPtr)ALLOCATE_LOCAL(numRects*sizeof(DDXPointRec)); + if (!pPtsInit) + return; + + pBox = REGION_RECTS(prgnRestore); + pPt = pPtsInit; + while (numRects--) + { + pPt->x = pBox->x1 - xorg; + pPt->y = pBox->y1 - yorg; + pPt++; + pBox++; + } + + mfbDoBitblt((DrawablePtr)pPixmap, + (DrawablePtr)pPixmap->drawable.pScreen->devPrivate, + GXcopy, + prgnRestore, + pPtsInit); + + DEALLOCATE_LOCAL(pPtsInit); +} diff --git a/mfb/mfbclip.c b/mfb/mfbclip.c new file mode 100644 index 000000000..65d902162 --- /dev/null +++ b/mfb/mfbclip.c @@ -0,0 +1,268 @@ +/*********************************************************** + +Copyright 1987, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ +/* $Xorg: mfbclip.c,v 1.4 2001/02/09 02:05:18 xorgcvs Exp $ */ +#include "X.h" +#include "miscstruct.h" +#include "pixmapstr.h" +#include "scrnintstr.h" +#include "regionstr.h" +#include "gc.h" +#include "maskbits.h" +#include "mi.h" + +#define ADDRECT(reg,r,fr,rx1,ry1,rx2,ry2) \ +if (((rx1) < (rx2)) && ((ry1) < (ry2)) && \ + (!((reg)->data->numRects && \ + ((r-1)->y1 == (ry1)) && \ + ((r-1)->y2 == (ry2)) && \ + ((r-1)->x1 <= (rx1)) && \ + ((r-1)->x2 >= (rx2))))) \ +{ \ + if ((reg)->data->numRects == (reg)->data->size) \ + { \ + miRectAlloc(reg, 1); \ + fr = REGION_BOXPTR(reg); \ + r = fr + (reg)->data->numRects; \ + } \ + r->x1 = (rx1); \ + r->y1 = (ry1); \ + r->x2 = (rx2); \ + r->y2 = (ry2); \ + (reg)->data->numRects++; \ + if(r->x1 < (reg)->extents.x1) \ + (reg)->extents.x1 = r->x1; \ + if(r->x2 > (reg)->extents.x2) \ + (reg)->extents.x2 = r->x2; \ + r++; \ +} + +/* Convert bitmap clip mask into clipping region. + * First, goes through each line and makes boxes by noting the transitions + * from 0 to 1 and 1 to 0. + * Then it coalesces the current line with the previous if they have boxes + * at the same X coordinates. + */ +RegionPtr +mfbPixmapToRegion(pPix) + PixmapPtr pPix; +{ + register RegionPtr pReg; + register PixelType *pw, w; + register int ib; + int width, h, base, rx1, crects; + PixelType *pwLineEnd; + int irectPrevStart, irectLineStart; + register BoxPtr prectO, prectN; + BoxPtr FirstRect, rects, prectLineStart; + Bool fInBox, fSame; + register PixelType mask0 = mask[0]; + PixelType *pwLine; + int nWidth; + + pReg = REGION_CREATE(pPix->drawable.pScreen, NULL, 1); + if(!pReg) + return NullRegion; + FirstRect = REGION_BOXPTR(pReg); + rects = FirstRect; + + pwLine = (PixelType *) pPix->devPrivate.ptr; + nWidth = pPix->devKind / PGSZB; + + width = pPix->drawable.width; + pReg->extents.x1 = width - 1; + pReg->extents.x2 = 0; + irectPrevStart = -1; + for(h = 0; h < pPix->drawable.height; h++) + { + pw = pwLine; + pwLine += nWidth; + irectLineStart = rects - FirstRect; + /* If the Screen left most bit of the word is set, we're starting in + * a box */ + if(*pw & mask0) + { + fInBox = TRUE; + rx1 = 0; + } + else + fInBox = FALSE; + /* Process all words which are fully in the pixmap */ + pwLineEnd = pw + (width >> PWSH); + for (base = 0; pw < pwLineEnd; base += PPW) + { + w = *pw++; + if (fInBox) + { + if (!~w) + continue; + } + else + { + if (!w) + continue; + } + for(ib = 0; ib < PPW; ib++) + { + /* If the Screen left most bit of the word is set, we're + * starting a box */ + if(w & mask0) + { + if(!fInBox) + { + rx1 = base + ib; + /* start new box */ + fInBox = TRUE; + } + } + else + { + if(fInBox) + { + /* end box */ + ADDRECT(pReg, rects, FirstRect, + rx1, h, base + ib, h + 1); + fInBox = FALSE; + } + } + /* Shift the word VISUALLY left one. */ + w = SCRLEFT(w, 1); + } + } + if(width & PIM) + { + /* Process final partial word on line */ + w = *pw++; + for(ib = 0; ib < (width & PIM); ib++) + { + /* If the Screen left most bit of the word is set, we're + * starting a box */ + if(w & mask0) + { + if(!fInBox) + { + rx1 = base + ib; + /* start new box */ + fInBox = TRUE; + } + } + else + { + if(fInBox) + { + /* end box */ + ADDRECT(pReg, rects, FirstRect, + rx1, h, base + ib, h + 1); + fInBox = FALSE; + } + } + /* Shift the word VISUALLY left one. */ + w = SCRLEFT(w, 1); + } + } + /* If scanline ended with last bit set, end the box */ + if(fInBox) + { + ADDRECT(pReg, rects, FirstRect, + rx1, h, base + (width & PIM), h + 1); + } + /* if all rectangles on this line have the same x-coords as + * those on the previous line, then add 1 to all the previous y2s and + * throw away all the rectangles from this line + */ + fSame = FALSE; + if(irectPrevStart != -1) + { + crects = irectLineStart - irectPrevStart; + if(crects == ((rects - FirstRect) - irectLineStart)) + { + prectO = FirstRect + irectPrevStart; + prectN = prectLineStart = FirstRect + irectLineStart; + fSame = TRUE; + while(prectO < prectLineStart) + { + if((prectO->x1 != prectN->x1) || (prectO->x2 != prectN->x2)) + { + fSame = FALSE; + break; + } + prectO++; + prectN++; + } + if (fSame) + { + prectO = FirstRect + irectPrevStart; + while(prectO < prectLineStart) + { + prectO->y2 += 1; + prectO++; + } + rects -= crects; + pReg->data->numRects -= crects; + } + } + } + if(!fSame) + irectPrevStart = irectLineStart; + } + if (!pReg->data->numRects) + pReg->extents.x1 = pReg->extents.x2 = 0; + else + { + pReg->extents.y1 = REGION_BOXPTR(pReg)->y1; + pReg->extents.y2 = REGION_END(pReg)->y2; + if (pReg->data->numRects == 1) + { + xfree(pReg->data); + pReg->data = (RegDataPtr)NULL; + } + } +#ifdef DEBUG + if (!miValidRegion(pReg)) + FatalError("Assertion failed file %s, line %d: expr\n", __FILE__, __LINE__); +#endif + return(pReg); +} diff --git a/mfb/mfbcmap.c b/mfb/mfbcmap.c new file mode 100644 index 000000000..656c9daf6 --- /dev/null +++ b/mfb/mfbcmap.c @@ -0,0 +1,198 @@ +/*********************************************************** + +Copyright 1987, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ +/* $Xorg: mfbcmap.c,v 1.4 2001/02/09 02:05:18 xorgcvs Exp $ */ +#include "X.h" +#include "scrnintstr.h" +#include "colormapst.h" +#include "resource.h" + +/* A monochrome frame buffer is a static gray colormap with two entries. + * We have a "required list" of length 1. Because we can only support 1 + * colormap, we never have to change it, but we may have to change the + * name we call it. If someone installs a new colormap, we know it must + * look just like the old one (because we've checked in dispatch that it was + * a valid colormap identifier, and all the colormap IDs for this device + * look the same). Nevertheless, we still have to uninstall the old colormap + * and install the new one. Similarly, if someone uninstalls a colormap, + * we have to install the default map, even though we know those two looked + * alike. + * The required list concept is pretty much irrelevant when you can only + * have one map installed at a time. + */ +static ColormapPtr InstalledMaps[MAXSCREENS]; + +int +mfbListInstalledColormaps(pScreen, pmaps) + ScreenPtr pScreen; + Colormap *pmaps; +{ + /* By the time we are processing requests, we can guarantee that there + * is always a colormap installed */ + *pmaps = InstalledMaps[pScreen->myNum]->mid; + return (1); +} + + +void +mfbInstallColormap(pmap) + ColormapPtr pmap; +{ + int index = pmap->pScreen->myNum; + ColormapPtr oldpmap = InstalledMaps[index]; + + if(pmap != oldpmap) + { + /* Uninstall pInstalledMap. No hardware changes required, just + * notify all interested parties. */ + if(oldpmap != (ColormapPtr)None) + WalkTree(pmap->pScreen, TellLostMap, (pointer)&oldpmap->mid); + /* Install pmap */ + InstalledMaps[index] = pmap; + WalkTree(pmap->pScreen, TellGainedMap, (pointer)&pmap->mid); + + } +} + +void +mfbUninstallColormap(pmap) + ColormapPtr pmap; +{ + int index = pmap->pScreen->myNum; + ColormapPtr curpmap = InstalledMaps[index]; + + if(pmap == curpmap) + { + if (pmap->mid != pmap->pScreen->defColormap) + { + curpmap = (ColormapPtr) LookupIDByType(pmap->pScreen->defColormap, + RT_COLORMAP); + (*pmap->pScreen->InstallColormap)(curpmap); + } + } +} + +/*ARGSUSED*/ +void +mfbResolveColor (pred, pgreen, pblue, pVisual) + unsigned short *pred; + unsigned short *pgreen; + unsigned short *pblue; + VisualPtr pVisual; +{ + /* + * Gets intensity from RGB. If intensity is >= half, pick white, else + * pick black. This may well be more trouble than it's worth. + */ + *pred = *pgreen = *pblue = + (((30L * *pred + + 59L * *pgreen + + 11L * *pblue) >> 8) >= (((1<<8)-1)*50)) ? ~0 : 0; +} + +Bool +mfbCreateColormap(pMap) + ColormapPtr pMap; +{ + ScreenPtr pScreen; + unsigned short red0, green0, blue0; + unsigned short red1, green1, blue1; + Pixel pix; + + pScreen = pMap->pScreen; + if (pScreen->whitePixel == 0) + { + red0 = green0 = blue0 = ~0; + red1 = green1 = blue1 = 0; + } + else + { + red0 = green0 = blue0 = 0; + red1 = green1 = blue1 = ~0; + } + + /* this is a monochrome colormap, it only has two entries, just fill + * them in by hand. If it were a more complex static map, it would be + * worth writing a for loop or three to initialize it */ + + /* this will be pixel 0 */ + pix = 0; + if (AllocColor(pMap, &red0, &green0, &blue0, &pix, 0) != Success) + return FALSE; + + /* this will be pixel 1 */ + if (AllocColor(pMap, &red1, &green1, &blue1, &pix, 0) != Success) + return FALSE; + return TRUE; +} + +/*ARGSUSED*/ +void +mfbDestroyColormap (pMap) + ColormapPtr pMap; +{ + return; +} + +Bool +mfbCreateDefColormap (pScreen) + ScreenPtr pScreen; +{ + VisualPtr pVisual; + ColormapPtr pColormap; + + for (pVisual = pScreen->visuals; + pVisual->vid != pScreen->rootVisual; + pVisual++) + ; + if (CreateColormap (pScreen->defColormap, pScreen, pVisual, + &pColormap, AllocNone, 0) != Success) + { + return FALSE; + } + (*pScreen->InstallColormap) (pColormap); + return TRUE; +} diff --git a/mfb/mfbfillarc.c b/mfb/mfbfillarc.c new file mode 100644 index 000000000..0d78decf1 --- /dev/null +++ b/mfb/mfbfillarc.c @@ -0,0 +1,328 @@ +/************************************************************ + +Copyright 1989, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + +********************************************************/ + +/* $Xorg: mfbfillarc.c,v 1.4 2001/02/09 02:05:18 xorgcvs Exp $ */ + +#include "X.h" +#include "Xprotostr.h" +#include "miscstruct.h" +#include "gcstruct.h" +#include "pixmapstr.h" +#include "scrnintstr.h" +#include "mfb.h" +#include "maskbits.h" +#include "mifillarc.h" +#include "mi.h" + +static void +mfbFillEllipseSolid(pDraw, arc, rop) + DrawablePtr pDraw; + xArc *arc; + register int rop; +{ + int x, y, e; + int yk, xk, ym, xm, dx, dy, xorg, yorg; + register int slw; + miFillArcRec info; + PixelType *addrlt, *addrlb; + register PixelType *addrl; + register int n; + int nlwidth; + register int xpos; + PixelType startmask, endmask; + int nlmiddle; + + mfbGetPixelWidthAndPointer(pDraw, nlwidth, addrlt); + miFillArcSetup(arc, &info); + MIFILLARCSETUP(); + xorg += pDraw->x; + yorg += pDraw->y; + addrlb = addrlt; + addrlt += nlwidth * (yorg - y); + addrlb += nlwidth * (yorg + y + dy); + while (y) + { + addrlt += nlwidth; + addrlb -= nlwidth; + MIFILLARCSTEP(slw); + if (!slw) + continue; + xpos = xorg - x; + addrl = mfbScanlineOffset(addrlt, (xpos >> PWSH)); + if (((xpos & PIM) + slw) < PPW) + { + maskpartialbits(xpos, slw, startmask); + if (rop == RROP_BLACK) + *addrl &= ~startmask; + else if (rop == RROP_WHITE) + *addrl |= startmask; + else + *addrl ^= startmask; + if (miFillArcLower(slw)) + { + addrl = mfbScanlineOffset(addrlb, (xpos >> PWSH)); + if (rop == RROP_BLACK) + *addrl &= ~startmask; + else if (rop == RROP_WHITE) + *addrl |= startmask; + else + *addrl ^= startmask; + } + continue; + } + maskbits(xpos, slw, startmask, endmask, nlmiddle); + if (startmask) + { + if (rop == RROP_BLACK) + *addrl++ &= ~startmask; + else if (rop == RROP_WHITE) + *addrl++ |= startmask; + else + *addrl++ ^= startmask; + } + n = nlmiddle; + if (rop == RROP_BLACK) + while (n--) + *addrl++ = 0; + else if (rop == RROP_WHITE) + while (n--) + *addrl++ = ~0; + else + while (n--) + *addrl++ ^= ~0; + if (endmask) + { + if (rop == RROP_BLACK) + *addrl &= ~endmask; + else if (rop == RROP_WHITE) + *addrl |= endmask; + else + *addrl ^= endmask; + } + if (!miFillArcLower(slw)) + continue; + addrl = mfbScanlineOffset(addrlb, (xpos >> PWSH)); + if (startmask) + { + if (rop == RROP_BLACK) + *addrl++ &= ~startmask; + else if (rop == RROP_WHITE) + *addrl++ |= startmask; + else + *addrl++ ^= startmask; + } + n = nlmiddle; + if (rop == RROP_BLACK) + while (n--) + *addrl++ = 0; + else if (rop == RROP_WHITE) + while (n--) + *addrl++ = ~0; + else + while (n--) + *addrl++ ^= ~0; + if (endmask) + { + if (rop == RROP_BLACK) + *addrl &= ~endmask; + else if (rop == RROP_WHITE) + *addrl |= endmask; + else + *addrl ^= endmask; + } + } +} + +#define FILLSPAN(xl,xr,addr) \ + if (xr >= xl) \ + { \ + width = xr - xl + 1; \ + addrl = mfbScanlineOffset(addr, (xl >> PWSH)); \ + if (((xl & PIM) + width) < PPW) \ + { \ + maskpartialbits(xl, width, startmask); \ + if (rop == RROP_BLACK) \ + *addrl &= ~startmask; \ + else if (rop == RROP_WHITE) \ + *addrl |= startmask; \ + else \ + *addrl ^= startmask; \ + } \ + else \ + { \ + maskbits(xl, width, startmask, endmask, nlmiddle); \ + if (startmask) \ + { \ + if (rop == RROP_BLACK) \ + *addrl++ &= ~startmask; \ + else if (rop == RROP_WHITE) \ + *addrl++ |= startmask; \ + else \ + *addrl++ ^= startmask; \ + } \ + n = nlmiddle; \ + if (rop == RROP_BLACK) \ + while (n--) \ + *addrl++ = 0; \ + else if (rop == RROP_WHITE) \ + while (n--) \ + *addrl++ = ~0; \ + else \ + while (n--) \ + *addrl++ ^= ~0; \ + if (endmask) \ + { \ + if (rop == RROP_BLACK) \ + *addrl &= ~endmask; \ + else if (rop == RROP_WHITE) \ + *addrl |= endmask; \ + else \ + *addrl ^= endmask; \ + } \ + } \ + } + +#define FILLSLICESPANS(flip,addr) \ + if (!flip) \ + { \ + FILLSPAN(xl, xr, addr); \ + } \ + else \ + { \ + xc = xorg - x; \ + FILLSPAN(xc, xr, addr); \ + xc += slw - 1; \ + FILLSPAN(xl, xc, addr); \ + } + +static void +mfbFillArcSliceSolidCopy(pDraw, pGC, arc, rop) + DrawablePtr pDraw; + GCPtr pGC; + xArc *arc; + register int rop; +{ + register PixelType *addrl; + register int n; + int yk, xk, ym, xm, dx, dy, xorg, yorg, slw; + register int x, y, e; + miFillArcRec info; + miArcSliceRec slice; + int xl, xr, xc; + PixelType *addrlt, *addrlb; + int nlwidth; + int width; + PixelType startmask, endmask; + int nlmiddle; + + mfbGetPixelWidthAndPointer(pDraw, nlwidth, addrlt); + miFillArcSetup(arc, &info); + miFillArcSliceSetup(arc, &slice, pGC); + MIFILLARCSETUP(); + xorg += pDraw->x; + yorg += pDraw->y; + addrlb = addrlt; + addrlt = mfbScanlineDeltaNoBankSwitch(addrlt, yorg - y, nlwidth); + addrlb = mfbScanlineDeltaNoBankSwitch(addrlb, yorg + y + dy, nlwidth); + slice.edge1.x += pDraw->x; + slice.edge2.x += pDraw->x; + while (y > 0) + { + mfbScanlineIncNoBankSwitch(addrlt, nlwidth); + mfbScanlineIncNoBankSwitch(addrlb, -nlwidth); + MIFILLARCSTEP(slw); + MIARCSLICESTEP(slice.edge1); + MIARCSLICESTEP(slice.edge2); + if (miFillSliceUpper(slice)) + { + MIARCSLICEUPPER(xl, xr, slice, slw); + FILLSLICESPANS(slice.flip_top, addrlt); + } + if (miFillSliceLower(slice)) + { + MIARCSLICELOWER(xl, xr, slice, slw); + FILLSLICESPANS(slice.flip_bot, addrlb); + } + } +} + +void +mfbPolyFillArcSolid(pDraw, pGC, narcs, parcs) + register DrawablePtr pDraw; + GCPtr pGC; + int narcs; + xArc *parcs; +{ + mfbPrivGC *priv; + register xArc *arc; + register int i; + BoxRec box; + int x2, y2; + RegionPtr cclip; + int rop; + + priv = (mfbPrivGC *) pGC->devPrivates[mfbGCPrivateIndex].ptr; + rop = priv->rop; + if ((rop == RROP_NOP) || !(pGC->planemask & 1)) + return; + cclip = priv->pCompositeClip; + for (arc = parcs, i = narcs; --i >= 0; arc++) + { + if (miFillArcEmpty(arc)) + continue; + if (miCanFillArc(arc)) + { + box.x1 = arc->x + pDraw->x; + box.y1 = arc->y + pDraw->y; + /* + * Because box.x2 and box.y2 get truncated to 16 bits, and the + * RECT_IN_REGION test treats the resulting number as a signed + * integer, the RECT_IN_REGION test alone can go the wrong way. + * This can result in a server crash because the rendering + * routines in this file deal directly with cpu addresses + * of pixels to be stored, and do not clip or otherwise check + * that all such addresses are within their respective pixmaps. + * So we only allow the RECT_IN_REGION test to be used for + * values that can be expressed correctly in a signed short. + */ + x2 = box.x1 + (int)arc->width + 1; + box.x2 = x2; + y2 = box.y1 + (int)arc->height + 1; + box.y2 = y2; + if ( (x2 <= MAXSHORT) && (y2 <= MAXSHORT) && + (RECT_IN_REGION(pDraw->pScreen, cclip, &box) == rgnIN) ) + { + if ((arc->angle2 >= FULLCIRCLE) || + (arc->angle2 <= -FULLCIRCLE)) + mfbFillEllipseSolid(pDraw, arc, rop); + else + mfbFillArcSliceSolidCopy(pDraw, pGC, arc, rop); + continue; + } + } + miPolyFillArc(pDraw, pGC, 1, arc); + } +} diff --git a/mfb/mfbfillrct.c b/mfb/mfbfillrct.c new file mode 100644 index 000000000..1c4c2e617 --- /dev/null +++ b/mfb/mfbfillrct.c @@ -0,0 +1,224 @@ +/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */ +/*********************************************************** + +Copyright 1987, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ +/* $Xorg: mfbfillrct.c,v 1.4 2001/02/09 02:05:18 xorgcvs Exp $ */ +#include "X.h" +#include "Xprotostr.h" +#include "pixmapstr.h" +#include "gcstruct.h" +#include "windowstr.h" +#include "miscstruct.h" +#include "regionstr.h" +#include "scrnintstr.h" + +#include "mfb.h" +#include "maskbits.h" + +#define MODEQ(a, b) ((a) %= (b)) +void mfbPaintOddSize(); + +/* + filled rectangles. + translate the rectangles, clip them, and call the +helper function in the GC. +*/ + +#define NUM_STACK_RECTS 1024 + +void +mfbPolyFillRect(pDrawable, pGC, nrectFill, prectInit) + DrawablePtr pDrawable; + GCPtr pGC; + int nrectFill; /* number of rectangles to fill */ + xRectangle *prectInit; /* Pointer to first rectangle to fill */ +{ + xRectangle *prect; + RegionPtr prgnClip; + register BoxPtr pbox; + register BoxPtr pboxClipped; + BoxPtr pboxClippedBase; + BoxPtr pextent; + BoxRec stackRects[NUM_STACK_RECTS]; + int numRects; + int n; + int xorg, yorg; + mfbPrivGC *priv; + int alu; + void (* pfn) (); + PixmapPtr ppix; + + if (!(pGC->planemask & 1)) + return; + + priv = (mfbPrivGC *) pGC->devPrivates[mfbGCPrivateIndex].ptr; + alu = priv->ropFillArea; + pfn = priv->FillArea; + ppix = priv->pRotatedPixmap; + prgnClip = priv->pCompositeClip; + + prect = prectInit; + xorg = pDrawable->x; + yorg = pDrawable->y; + if (xorg || yorg) + { + prect = prectInit; + n = nrectFill; + Duff (n, prect->x += xorg; prect->y += yorg; prect++); + } + + + prect = prectInit; + + numRects = REGION_NUM_RECTS(prgnClip) * nrectFill; + if (numRects > NUM_STACK_RECTS) + { + pboxClippedBase = (BoxPtr)ALLOCATE_LOCAL(numRects * sizeof(BoxRec)); + if (!pboxClippedBase) + return; + } + else + pboxClippedBase = stackRects; + + pboxClipped = pboxClippedBase; + + if (REGION_NUM_RECTS(prgnClip) == 1) + { + int x1, y1, x2, y2, bx2, by2; + + pextent = REGION_RECTS(prgnClip); + x1 = pextent->x1; + y1 = pextent->y1; + x2 = pextent->x2; + y2 = pextent->y2; + while (nrectFill--) + { + if ((pboxClipped->x1 = prect->x) < x1) + pboxClipped->x1 = x1; + + if ((pboxClipped->y1 = prect->y) < y1) + pboxClipped->y1 = y1; + + bx2 = (int) prect->x + (int) prect->width; + if (bx2 > x2) + bx2 = x2; + pboxClipped->x2 = bx2; + + by2 = (int) prect->y + (int) prect->height; + if (by2 > y2) + by2 = y2; + pboxClipped->y2 = by2; + + prect++; + if ((pboxClipped->x1 < pboxClipped->x2) && + (pboxClipped->y1 < pboxClipped->y2)) + { + pboxClipped++; + } + } + } + else + { + int x1, y1, x2, y2, bx2, by2; + + pextent = REGION_EXTENTS(pGC->pScreen, prgnClip); + x1 = pextent->x1; + y1 = pextent->y1; + x2 = pextent->x2; + y2 = pextent->y2; + while (nrectFill--) + { + BoxRec box; + + if ((box.x1 = prect->x) < x1) + box.x1 = x1; + + if ((box.y1 = prect->y) < y1) + box.y1 = y1; + + bx2 = (int) prect->x + (int) prect->width; + if (bx2 > x2) + bx2 = x2; + box.x2 = bx2; + + by2 = (int) prect->y + (int) prect->height; + if (by2 > y2) + by2 = y2; + box.y2 = by2; + + prect++; + + if ((box.x1 >= box.x2) || (box.y1 >= box.y2)) + continue; + + n = REGION_NUM_RECTS (prgnClip); + pbox = REGION_RECTS(prgnClip); + + /* clip the rectangle to each box in the clip region + this is logically equivalent to calling Intersect() + */ + while(n--) + { + pboxClipped->x1 = max(box.x1, pbox->x1); + pboxClipped->y1 = max(box.y1, pbox->y1); + pboxClipped->x2 = min(box.x2, pbox->x2); + pboxClipped->y2 = min(box.y2, pbox->y2); + pbox++; + + /* see if clipping left anything */ + if(pboxClipped->x1 < pboxClipped->x2 && + pboxClipped->y1 < pboxClipped->y2) + { + pboxClipped++; + } + } + } + } + if (pboxClipped != pboxClippedBase) + (*pfn) (pDrawable,pboxClipped-pboxClippedBase, pboxClippedBase, alu, ppix); + if (pboxClippedBase != stackRects) + DEALLOCATE_LOCAL(pboxClippedBase); +} diff --git a/mfb/mfbfillsp.c b/mfb/mfbfillsp.c new file mode 100644 index 000000000..0ba5fc9a7 --- /dev/null +++ b/mfb/mfbfillsp.c @@ -0,0 +1,1024 @@ +/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */ +/*********************************************************** + +Copyright 1987, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ +/* $Xorg: mfbfillsp.c,v 1.4 2001/02/09 02:05:18 xorgcvs Exp $ */ +#include "X.h" +#include "Xmd.h" +#include "gcstruct.h" +#include "window.h" +#include "pixmapstr.h" +#include "scrnintstr.h" +#include "windowstr.h" +#include "mfb.h" +#include "maskbits.h" + +#include "mergerop.h" + +#include "servermd.h" +#include "mi.h" +#include "mispans.h" + +/* scanline filling for monochrome frame buffer + written by drewry, oct 1986 + + these routines all clip. they assume that anything that has called +them has already translated the points (i.e. pGC->miTranslate is +non-zero, which is howit gets set in mfbCreateGC().) + + the number of new scnalines created by clipping == +MaxRectsPerBand * nSpans. + + FillSolid is overloaded to be used for OpaqueStipple as well, +if fgPixel == bgPixel. + + + FillTiled is overloaded to be used for OpaqueStipple, if +fgPixel != bgPixel. based on the fill style, it uses +{RotatedPixmap, gc.alu} or {RotatedPixmap, PrivGC.ropOpStip} +*/ + + +void +mfbBlackSolidFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted) + DrawablePtr pDrawable; + GCPtr pGC; + int nInit; /* number of spans to fill */ + DDXPointPtr pptInit; /* pointer to list of start points */ + int *pwidthInit; /* pointer to list of n widths */ + int fSorted; +{ + /* next three parameters are post-clip */ + int n; /* number of spans to fill */ + register DDXPointPtr ppt; /* pointer to list of start points */ + register int *pwidth; /* pointer to list of n widths */ + PixelType *addrlBase; /* pointer to start of bitmap */ + int nlwidth; /* width in longwords of bitmap */ + register PixelType *addrl;/* pointer to current longword in bitmap */ + register int nlmiddle; + register PixelType startmask; + register PixelType endmask; + int *pwidthFree; /* copies of the pointers to free */ + DDXPointPtr pptFree; + + if (!(pGC->planemask & 1)) + return; + + n = nInit * miFindMaxBand(((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pCompositeClip); + pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int)); + pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec)); + if(!pptFree || !pwidthFree) + { + if (pptFree) DEALLOCATE_LOCAL(pptFree); + if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree); + return; + } + pwidth = pwidthFree; + ppt = pptFree; + n = miClipSpans(((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pCompositeClip, + pptInit, pwidthInit, nInit, + ppt, pwidth, fSorted); + + mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrlBase); + + while (n--) + { + addrl = mfbScanline(addrlBase, ppt->x, ppt->y, nlwidth); + + if (*pwidth) + { + if ( ((ppt->x & PIM) + *pwidth) < PPW) + { + /* all bits inside same longword */ + maskpartialbits(ppt->x, *pwidth, startmask); + *addrl &= ~startmask; + } + else + { + maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle); + if (startmask) + *addrl++ &= ~startmask; + Duff (nlmiddle, *addrl++ = 0x0); + if (endmask) + *addrl &= ~endmask; + } + } + pwidth++; + ppt++; + } + DEALLOCATE_LOCAL(pptFree); + DEALLOCATE_LOCAL(pwidthFree); +} + + + +void +mfbWhiteSolidFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted) + DrawablePtr pDrawable; + GCPtr pGC; + int nInit; /* number of spans to fill */ + DDXPointPtr pptInit; /* pointer to list of start points */ + int *pwidthInit; /* pointer to list of n widths */ + int fSorted; +{ + /* next three parameters are post-clip */ + int n; /* number of spans to fill */ + register DDXPointPtr ppt; /* pointer to list of start points */ + register int *pwidth; /* pointer to list of n widths */ + PixelType *addrlBase; /* pointer to start of bitmap */ + int nlwidth; /* width in longwords of bitmap */ + register PixelType *addrl;/* pointer to current longword in bitmap */ + register int nlmiddle; + register PixelType startmask; + register PixelType endmask; + int *pwidthFree; /* copies of the pointers to free */ + DDXPointPtr pptFree; + + if (!(pGC->planemask & 1)) + return; + + n = nInit * miFindMaxBand(((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pCompositeClip); + pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int)); + pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec)); + if(!pptFree || !pwidthFree) + { + if (pptFree) DEALLOCATE_LOCAL(pptFree); + if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree); + return; + } + pwidth = pwidthFree; + ppt = pptFree; + n = miClipSpans(((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pCompositeClip, + pptInit, pwidthInit, nInit, + ppt, pwidth, fSorted); + + mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrlBase); + + while (n--) + { + addrl = mfbScanline(addrlBase, ppt->x, ppt->y, nlwidth); + + if (*pwidth) + { + if ( ((ppt->x & PIM) + *pwidth) < PPW) + { + /* all bits inside same longword */ + maskpartialbits(ppt->x, *pwidth, startmask); + *addrl |= startmask; + } + else + { + maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle); + if (startmask) + *addrl++ |= startmask; + Duff (nlmiddle, *addrl++ = ~0); + if (endmask) + *addrl |= endmask; + } + } + pwidth++; + ppt++; + } + DEALLOCATE_LOCAL(pptFree); + DEALLOCATE_LOCAL(pwidthFree); +} + + + +void +mfbInvertSolidFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted) + DrawablePtr pDrawable; + GCPtr pGC; + int nInit; /* number of spans to fill */ + DDXPointPtr pptInit; /* pointer to list of start points */ + int *pwidthInit; /* pointer to list of n widths */ + int fSorted; +{ + /* next three parameters are post-clip */ + int n; /* number of spans to fill */ + register DDXPointPtr ppt; /* pointer to list of start points */ + register int *pwidth; /* pointer to list of n widths */ + PixelType *addrlBase; /* pointer to start of bitmap */ + int nlwidth; /* width in longwords of bitmap */ + register PixelType *addrl;/* pointer to current longword in bitmap */ + register int nlmiddle; + register PixelType startmask; + register PixelType endmask; + int *pwidthFree; /* copies of the pointers to free */ + DDXPointPtr pptFree; + + if (!(pGC->planemask & 1)) + return; + + n = nInit * miFindMaxBand(((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pCompositeClip); + pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int)); + pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec)); + if(!pptFree || !pwidthFree) + { + if (pptFree) DEALLOCATE_LOCAL(pptFree); + if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree); + return; + } + pwidth = pwidthFree; + ppt = pptFree; + n = miClipSpans(((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pCompositeClip, + pptInit, pwidthInit, nInit, + ppt, pwidth, fSorted); + + mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrlBase); + + while (n--) + { + addrl = mfbScanline(addrlBase, ppt->x, ppt->y, nlwidth); + + if (*pwidth) + { + if ( ((ppt->x & PIM) + *pwidth) < PPW) + { + /* all bits inside same longword */ + maskpartialbits(ppt->x, *pwidth, startmask); + *addrl ^= startmask; + } + else + { + maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle); + if (startmask) + *addrl++ ^= startmask; + Duff (nlmiddle, *addrl++ ^= ~0); + if (endmask) + *addrl ^= endmask; + } + } + pwidth++; + ppt++; + } + DEALLOCATE_LOCAL(pptFree); + DEALLOCATE_LOCAL(pwidthFree); +} + + +void +mfbWhiteStippleFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted) + DrawablePtr pDrawable; + GC *pGC; + int nInit; /* number of spans to fill */ + DDXPointPtr pptInit; /* pointer to list of start points */ + int *pwidthInit; /* pointer to list of n widths */ + int fSorted; +{ + /* next three parameters are post-clip */ + int n; /* number of spans to fill */ + register DDXPointPtr ppt; /* pointer to list of start points */ + register int *pwidth; /* pointer to list of n widths */ + PixelType *addrlBase; /* pointer to start of bitmap */ + int nlwidth; /* width in longwords of bitmap */ + register PixelType *addrl;/* pointer to current longword in bitmap */ + register PixelType src; + register int nlmiddle; + register PixelType startmask; + register PixelType endmask; + PixmapPtr pStipple; + PixelType *psrc; + int tileHeight; + int *pwidthFree; /* copies of the pointers to free */ + DDXPointPtr pptFree; + + if (!(pGC->planemask & 1)) + return; + + n = nInit * miFindMaxBand(((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pCompositeClip); + pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int)); + pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec)); + if(!pptFree || !pwidthFree) + { + if (pptFree) DEALLOCATE_LOCAL(pptFree); + if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree); + return; + } + pwidth = pwidthFree; + ppt = pptFree; + n = miClipSpans(((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pCompositeClip, + pptInit, pwidthInit, nInit, + ppt, pwidth, fSorted); + + mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrlBase); + + pStipple = ((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pRotatedPixmap; + tileHeight = pStipple->drawable.height; + psrc = (PixelType *)(pStipple->devPrivate.ptr); + + while (n--) + { + addrl = mfbScanline(addrlBase, ppt->x, ppt->y, nlwidth); + src = psrc[ppt->y % tileHeight]; + + /* all bits inside same longword */ + if ( ((ppt->x & PIM) + *pwidth) < PPW) + { + maskpartialbits(ppt->x, *pwidth, startmask); + *addrl |= (src & startmask); + } + else + { + maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle); + if (startmask) + *addrl++ |= (src & startmask); + Duff (nlmiddle, *addrl++ |= src); + if (endmask) + *addrl |= (src & endmask); + } + pwidth++; + ppt++; + } + DEALLOCATE_LOCAL(pptFree); + DEALLOCATE_LOCAL(pwidthFree); +} + + +void +mfbBlackStippleFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted) + DrawablePtr pDrawable; + GC *pGC; + int nInit; /* number of spans to fill */ + DDXPointPtr pptInit; /* pointer to list of start points */ + int *pwidthInit; /* pointer to list of n widths */ + int fSorted; +{ + /* next three parameters are post-clip */ + int n; /* number of spans to fill */ + register DDXPointPtr ppt; /* pointer to list of start points */ + register int *pwidth; /* pointer to list of n widths */ + PixelType *addrlBase; /* pointer to start of bitmap */ + int nlwidth; /* width in longwords of bitmap */ + register PixelType *addrl; /* pointer to current longword in bitmap */ + register PixelType src; + register int nlmiddle; + register PixelType startmask; + register PixelType endmask; + PixmapPtr pStipple; + PixelType *psrc; + int tileHeight; + int *pwidthFree; /* copies of the pointers to free */ + DDXPointPtr pptFree; + + if (!(pGC->planemask & 1)) + return; + + n = nInit * miFindMaxBand(((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pCompositeClip); + pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int)); + pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec)); + if(!pptFree || !pwidthFree) + { + if (pptFree) DEALLOCATE_LOCAL(pptFree); + if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree); + return; + } + pwidth = pwidthFree; + ppt = pptFree; + n = miClipSpans(((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pCompositeClip, + pptInit, pwidthInit, nInit, + ppt, pwidth, fSorted); + + mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrlBase); + + pStipple = ((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pRotatedPixmap; + tileHeight = pStipple->drawable.height; + psrc = (PixelType *)(pStipple->devPrivate.ptr); + + while (n--) + { + addrl = mfbScanline(addrlBase, ppt->x, ppt->y, nlwidth); + src = psrc[ppt->y % tileHeight]; + + /* all bits inside same longword */ + if ( ((ppt->x & PIM) + *pwidth) < PPW) + { + maskpartialbits(ppt->x, *pwidth, startmask); + *addrl &= ~(src & startmask); + } + else + { + maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle); + if (startmask) + *addrl++ &= ~(src & startmask); + Duff (nlmiddle, *addrl++ &= ~src); + if (endmask) + *addrl &= ~(src & endmask); + } + pwidth++; + ppt++; + } + DEALLOCATE_LOCAL(pptFree); + DEALLOCATE_LOCAL(pwidthFree); +} + + +void +mfbInvertStippleFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted) + DrawablePtr pDrawable; + GC *pGC; + int nInit; /* number of spans to fill */ + DDXPointPtr pptInit; /* pointer to list of start points */ + int *pwidthInit; /* pointer to list of n widths */ + int fSorted; +{ + /* next three parameters are post-clip */ + int n; /* number of spans to fill */ + register DDXPointPtr ppt; /* pointer to list of start points */ + register int *pwidth; /* pointer to list of n widths */ + PixelType *addrlBase; /* pointer to start of bitmap */ + int nlwidth; /* width in longwords of bitmap */ + register PixelType *addrl; /* pointer to current longword in bitmap */ + register PixelType src; + register int nlmiddle; + register PixelType startmask; + register PixelType endmask; + PixmapPtr pStipple; + PixelType *psrc; + int tileHeight; + int *pwidthFree; /* copies of the pointers to free */ + DDXPointPtr pptFree; + + if (!(pGC->planemask & 1)) + return; + + n = nInit * miFindMaxBand(((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pCompositeClip); + pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int)); + pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec)); + if(!pptFree || !pwidthFree) + { + if (pptFree) DEALLOCATE_LOCAL(pptFree); + if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree); + return; + } + pwidth = pwidthFree; + ppt = pptFree; + n = miClipSpans(((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pCompositeClip, + pptInit, pwidthInit, nInit, + ppt, pwidth, fSorted); + + mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrlBase); + + pStipple = ((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pRotatedPixmap; + tileHeight = pStipple->drawable.height; + psrc = (PixelType *)(pStipple->devPrivate.ptr); + + while (n--) + { + addrl = mfbScanline(addrlBase, ppt->x, ppt->y, nlwidth); + src = psrc[ppt->y % tileHeight]; + + /* all bits inside same longword */ + if ( ((ppt->x & PIM) + *pwidth) < PPW) + { + maskpartialbits(ppt->x, *pwidth, startmask); + *addrl ^= (src & startmask); + } + else + { + maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle); + if (startmask) + *addrl++ ^= (src & startmask); + Duff(nlmiddle, *addrl++ ^= src); + if (endmask) + *addrl ^= (src & endmask); + } + pwidth++; + ppt++; + } + DEALLOCATE_LOCAL(pptFree); + DEALLOCATE_LOCAL(pwidthFree); +} + + +/* this works with tiles of width == PPW */ +#define FILLSPANPPW(ROP) \ + while (n--) \ + { \ + if (*pwidth) \ + { \ + addrl = mfbScanline(addrlBase, ppt->x, ppt->y, nlwidth); \ + src = psrc[ppt->y % tileHeight]; \ + if ( ((ppt->x & PIM) + *pwidth) < PPW) \ + { \ + maskpartialbits(ppt->x, *pwidth, startmask); \ + *addrl = (*addrl & ~startmask) | \ + (ROP(src, *addrl) & startmask); \ + } \ + else \ + { \ + maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle); \ + if (startmask) \ + { \ + *addrl = (*addrl & ~startmask) | \ + (ROP(src, *addrl) & startmask); \ + addrl++; \ + } \ + while (nlmiddle--) \ + { \ + *addrl = ROP(src, *addrl); \ + addrl++; \ + } \ + if (endmask) \ + *addrl = (*addrl & ~endmask) | \ + (ROP(src, *addrl) & endmask); \ + } \ + } \ + pwidth++; \ + ppt++; \ + } + + + +void +mfbTileFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted) + DrawablePtr pDrawable; + GC *pGC; + int nInit; /* number of spans to fill */ + DDXPointPtr pptInit; /* pointer to list of start points */ + int *pwidthInit; /* pointer to list of n widths */ + int fSorted; +{ + /* next three parameters are post-clip */ + int n; /* number of spans to fill */ + register DDXPointPtr ppt; /* pointer to list of start points */ + register int *pwidth; /* pointer to list of n widths */ + PixelType *addrlBase; /* pointer to start of bitmap */ + int nlwidth; /* width in longwords of bitmap */ + register PixelType *addrl; /* pointer to current longword in bitmap */ + register PixelType src; + register int nlmiddle; + register PixelType startmask; + register PixelType endmask; + PixmapPtr pTile; + PixelType *psrc; + int tileHeight; + int rop; + int *pwidthFree; /* copies of the pointers to free */ + DDXPointPtr pptFree; + unsigned long flip; + + + if (!(pGC->planemask & 1)) + return; + + n = nInit * miFindMaxBand(((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pCompositeClip); + pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int)); + pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec)); + if(!pptFree || !pwidthFree) + { + if (pptFree) DEALLOCATE_LOCAL(pptFree); + if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree); + return; + } + pwidth = pwidthFree; + ppt = pptFree; + n = miClipSpans(((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pCompositeClip, + pptInit, pwidthInit, nInit, + ppt, pwidth, fSorted); + + mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrlBase); + + pTile = ((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pRotatedPixmap; + tileHeight = pTile->drawable.height; + psrc = (PixelType *)(pTile->devPrivate.ptr); + if (pGC->fillStyle == FillTiled) + rop = pGC->alu; + else + rop = ((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->ropOpStip; + + flip = 0; + switch(rop) + { + case GXcopyInverted: /* for opaque stipples */ + flip = ~0; + case GXcopy: + { + +#define DoMaskCopyRop(src,dst,mask) ((dst) & ~(mask) | (src) & (mask)) + + while (n--) + { + if (*pwidth) + { + addrl = mfbScanline(addrlBase, ppt->x, ppt->y, nlwidth); + src = psrc[ppt->y % tileHeight] ^ flip; + if ( ((ppt->x & PIM) + *pwidth) < PPW) + { + maskpartialbits(ppt->x, *pwidth, startmask); + *addrl = DoMaskCopyRop (src, *addrl, startmask); + } + else + { + maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle); + if (startmask) + { + *addrl = DoMaskCopyRop (src, *addrl, startmask); + addrl++; + } + while (nlmiddle--) + { + *addrl = src; + addrl++; + } + if (endmask) + *addrl = DoMaskCopyRop (src, *addrl, endmask); + } + } + pwidth++; + ppt++; + } + } + break; + default: + { + register DeclareMergeRop (); + + InitializeMergeRop(rop,~0); + while (n--) + { + if (*pwidth) + { + addrl = mfbScanline(addrlBase, ppt->x, ppt->y, nlwidth); + src = psrc[ppt->y % tileHeight]; + if ( ((ppt->x & PIM) + *pwidth) < PPW) + { + maskpartialbits(ppt->x, *pwidth, startmask); + *addrl = DoMaskMergeRop (src, *addrl, startmask); + } + else + { + maskbits(ppt->x, *pwidth, startmask, endmask, nlmiddle); + if (startmask) + { + *addrl = DoMaskMergeRop (src, *addrl, startmask); + addrl++; + } + while (nlmiddle--) + { + *addrl = DoMergeRop (src, *addrl); + addrl++; + } + if (endmask) + *addrl = DoMaskMergeRop (src, *addrl, endmask); + } + } + pwidth++; + ppt++; + } + } + break; + } + DEALLOCATE_LOCAL(pptFree); + DEALLOCATE_LOCAL(pwidthFree); +} + + +/* Fill spans with tiles that aren't PPW bits wide */ +void +mfbUnnaturalTileFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted) + DrawablePtr pDrawable; + GC *pGC; + int nInit; /* number of spans to fill */ + DDXPointPtr pptInit; /* pointer to list of start points */ + int *pwidthInit; /* pointer to list of n widths */ + int fSorted; +{ + int iline; /* first line of tile to use */ + /* next three parameters are post-clip */ + int n; /* number of spans to fill */ + register DDXPointPtr ppt; /* pointer to list of start points */ + register int *pwidth; /* pointer to list of n widths */ + PixelType *addrlBase; /* pointer to start of bitmap */ + int nlwidth; /* width in longwords of bitmap */ + register PixelType *pdst;/* pointer to current word in bitmap */ + register PixelType *psrc;/* pointer to current word in tile */ + register int nlMiddle; + register int rop, nstart; + PixelType startmask; + PixmapPtr pTile; /* pointer to tile we want to fill with */ + int w, width, x, xSrc, ySrc, srcStartOver, nend; + int tlwidth, rem, tileWidth, tileHeight, endinc; + PixelType endmask, *psrcT; + int *pwidthFree; /* copies of the pointers to free */ + DDXPointPtr pptFree; + + if (!(pGC->planemask & 1)) + return; + + n = nInit * miFindMaxBand(((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pCompositeClip); + pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int)); + pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec)); + if(!pptFree || !pwidthFree) + { + if (pptFree) DEALLOCATE_LOCAL(pptFree); + if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree); + return; + } + pwidth = pwidthFree; + ppt = pptFree; + n = miClipSpans(((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pCompositeClip, + pptInit, pwidthInit, nInit, + ppt, pwidth, fSorted); + + if (pGC->fillStyle == FillTiled) + { + pTile = pGC->tile.pixmap; + tlwidth = pTile->devKind / PGSZB; + rop = pGC->alu; + } + else + { + pTile = pGC->stipple; + tlwidth = pTile->devKind / PGSZB; + rop = ((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->ropOpStip; + } + + xSrc = pDrawable->x; + ySrc = pDrawable->y; + + mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrlBase); + + tileWidth = pTile->drawable.width; + tileHeight = pTile->drawable.height; + + /* this replaces rotating the tile. Instead we just adjust the offset + * at which we start grabbing bits from the tile. + * Ensure that ppt->x - xSrc >= 0 and ppt->y - ySrc >= 0, + * so that iline and rem always stay within the tile bounds. + */ + xSrc += (pGC->patOrg.x % tileWidth) - tileWidth; + ySrc += (pGC->patOrg.y % tileHeight) - tileHeight; + + while (n--) + { + iline = (ppt->y - ySrc) % tileHeight; + pdst = mfbScanline(addrlBase, ppt->x, ppt->y, nlwidth); + psrcT = (PixelType *) pTile->devPrivate.ptr + (iline * tlwidth); + x = ppt->x; + + if (*pwidth) + { + width = *pwidth; + while(width > 0) + { + psrc = psrcT; + w = min(tileWidth, width); + if((rem = (x - xSrc) % tileWidth) != 0) + { + /* if we're in the middle of the tile, get + as many bits as will finish the span, or + as many as will get to the left edge of the tile, + or a longword worth, starting at the appropriate + offset in the tile. + */ + w = min(min(tileWidth - rem, width), BITMAP_SCANLINE_PAD); + endinc = rem / BITMAP_SCANLINE_PAD; + getandputrop((psrc+endinc), (rem&PIM), (x & PIM), w, pdst, rop); + if((x & PIM) + w >= PPW) + pdst++; + } + else if(((x & PIM) + w) < PPW) + { + /* doing < PPW bits is easy, and worth special-casing */ + putbitsrop(*psrc, x & PIM, w, pdst, rop); + } + else + { + /* start at the left edge of the tile, + and put down as much as we can + */ + maskbits(x, w, startmask, endmask, nlMiddle); + + if (startmask) + nstart = PPW - (x & PIM); + else + nstart = 0; + if (endmask) + nend = (x + w) & PIM; + else + nend = 0; + + srcStartOver = nstart > PLST; + + if(startmask) + { + putbitsrop(*psrc, (x & PIM), nstart, pdst, rop); + pdst++; + if(srcStartOver) + psrc++; + } + + while(nlMiddle--) + { + getandputrop0(psrc, nstart, PPW, pdst, rop); + pdst++; + psrc++; + } + if(endmask) + { + getandputrop0(psrc, nstart, nend, pdst, rop); + } + } + x += w; + width -= w; + } + } + ppt++; + pwidth++; + } + DEALLOCATE_LOCAL(pptFree); + DEALLOCATE_LOCAL(pwidthFree); +} + + +/* Fill spans with stipples that aren't PPW bits wide */ +void +mfbUnnaturalStippleFS(pDrawable, pGC, nInit, pptInit, pwidthInit, fSorted) + DrawablePtr pDrawable; + GC *pGC; + int nInit; /* number of spans to fill */ + DDXPointPtr pptInit; /* pointer to list of start points */ + int *pwidthInit; /* pointer to list of n widths */ + int fSorted; +{ + /* next three parameters are post-clip */ + int n; /* number of spans to fill */ + register DDXPointPtr ppt; /* pointer to list of start points */ + register int *pwidth; /* pointer to list of n widths */ + int iline; /* first line of tile to use */ + PixelType *addrlBase; /* pointer to start of bitmap */ + int nlwidth; /* width in longwords of bitmap */ + register PixelType *pdst; /* pointer to current word in bitmap */ + register PixelType *psrc; /* pointer to current word in tile */ + register int nlMiddle; + register int rop, nstart; + PixelType startmask; + PixmapPtr pTile; /* pointer to tile we want to fill with */ + int w, width, x, xSrc, ySrc, srcStartOver, nend; + PixelType endmask, *psrcT; + int tlwidth, rem, tileWidth, endinc; + int tileHeight; + int *pwidthFree; /* copies of the pointers to free */ + DDXPointPtr pptFree; + + if (!(pGC->planemask & 1)) + return; + + n = nInit * miFindMaxBand(((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pCompositeClip); + pwidthFree = (int *)ALLOCATE_LOCAL(n * sizeof(int)); + pptFree = (DDXPointRec *)ALLOCATE_LOCAL(n * sizeof(DDXPointRec)); + if(!pptFree || !pwidthFree) + { + if (pptFree) DEALLOCATE_LOCAL(pptFree); + if (pwidthFree) DEALLOCATE_LOCAL(pwidthFree); + return; + } + pwidth = pwidthFree; + ppt = pptFree; + n = miClipSpans(((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pCompositeClip, + pptInit, pwidthInit, nInit, + ppt, pwidth, fSorted); + + pTile = pGC->stipple; + rop = ((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->rop; + tlwidth = pTile->devKind / PGSZB; + xSrc = pDrawable->x; + ySrc = pDrawable->y; + mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrlBase); + + tileWidth = pTile->drawable.width; + tileHeight = pTile->drawable.height; + + /* this replaces rotating the stipple. Instead, we just adjust the offset + * at which we start grabbing bits from the stipple. + * Ensure that ppt->x - xSrc >= 0 and ppt->y - ySrc >= 0, + * so that iline and rem always stay within the tile bounds. + */ + xSrc += (pGC->patOrg.x % tileWidth) - tileWidth; + ySrc += (pGC->patOrg.y % tileHeight) - tileHeight; + while (n--) + { + iline = (ppt->y - ySrc) % tileHeight; + pdst = mfbScanline(addrlBase, ppt->x, ppt->y, nlwidth); + psrcT = (PixelType *) pTile->devPrivate.ptr + (iline * tlwidth); + x = ppt->x; + + if (*pwidth) + { + width = *pwidth; + while(width > 0) + { + psrc = psrcT; + w = min(tileWidth, width); + if((rem = (x - xSrc) % tileWidth) != 0) + { + /* if we're in the middle of the tile, get + as many bits as will finish the span, or + as many as will get to the left edge of the tile, + or a longword worth, starting at the appropriate + offset in the tile. + */ + w = min(min(tileWidth - rem, width), BITMAP_SCANLINE_PAD); + endinc = rem / BITMAP_SCANLINE_PAD; + getandputrrop((psrc + endinc), (rem & PIM), (x & PIM), + w, pdst, rop) + if((x & PIM) + w >= PPW) + pdst++; + } + + else if(((x & PIM) + w) < PPW) + { + /* doing < PPW bits is easy, and worth special-casing */ + putbitsrrop(*psrc, x & PIM, w, pdst, rop); + } + else + { + /* start at the left edge of the tile, + and put down as much as we can + */ + maskbits(x, w, startmask, endmask, nlMiddle); + + if (startmask) + nstart = PPW - (x & PIM); + else + nstart = 0; + if (endmask) + nend = (x + w) & PIM; + else + nend = 0; + + srcStartOver = nstart > PLST; + + if(startmask) + { + putbitsrrop(*psrc, (x & PIM), nstart, pdst, rop); + pdst++; + if(srcStartOver) + psrc++; + } + + while(nlMiddle--) + { + getandputrrop0(psrc, nstart, PPW, pdst, rop); + pdst++; + psrc++; + } + if(endmask) + { + getandputrrop0(psrc, nstart, nend, pdst, rop); + } + } + x += w; + width -= w; + } + } + ppt++; + pwidth++; + } + DEALLOCATE_LOCAL(pptFree); + DEALLOCATE_LOCAL(pwidthFree); +} diff --git a/mfb/mfbfont.c b/mfb/mfbfont.c new file mode 100644 index 000000000..499dac52a --- /dev/null +++ b/mfb/mfbfont.c @@ -0,0 +1,72 @@ +/* + +Copyright 1987, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +*/ +/* $Xorg: mfbfont.c,v 1.4 2001/02/09 02:05:18 xorgcvs Exp $ */ +#include "X.h" +#include "Xmd.h" +#include "Xproto.h" +#include "mfb.h" +#include "fontstruct.h" +#include "dixfontstr.h" +#include "scrnintstr.h" + +/*ARGSUSED*/ +Bool +mfbRealizeFont( pscr, pFont) + ScreenPtr pscr; + FontPtr pFont; +{ + return (TRUE); +} + +/*ARGSUSED*/ +Bool +mfbUnrealizeFont( pscr, pFont) + ScreenPtr pscr; + FontPtr pFont; +{ + return (TRUE); +} diff --git a/mfb/mfbgc.c b/mfb/mfbgc.c new file mode 100644 index 000000000..8ab76ad37 --- /dev/null +++ b/mfb/mfbgc.c @@ -0,0 +1,1527 @@ +/*********************************************************** + +Copyright 1987, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ +/* $Xorg: mfbgc.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */ +#include "X.h" +#include "Xmd.h" +#include "Xproto.h" +#include "mfb.h" +#include "dixfontstr.h" +#include "fontstruct.h" +#include "gcstruct.h" +#include "windowstr.h" +#include "pixmapstr.h" +#include "scrnintstr.h" +#include "region.h" + +#include "mistruct.h" +#include "migc.h" + +#include "maskbits.h" + +static GCFuncs mfbFuncs = { + mfbValidateGC, + miChangeGC, + miCopyGC, + miDestroyGC, + miChangeClip, + miDestroyClip, + miCopyClip +}; + +#ifndef LOWMEMFTPT + +static GCOps whiteTECopyOps = { + mfbWhiteSolidFS, + mfbSetSpans, + mfbPutImage, + mfbCopyArea, + mfbCopyPlane, + mfbPolyPoint, + mfbLineSS, + mfbSegmentSS, + miPolyRectangle, + mfbZeroPolyArcSS, + mfbFillPolyWhite, + mfbPolyFillRect, + mfbPolyFillArcSolid, + miPolyText8, + miPolyText16, + miImageText8, + miImageText16, + mfbTEGlyphBltWhite, + mfbPolyGlyphBltWhite, + mfbSolidPP +#ifdef NEED_LINEHELPER + ,NULL +#endif +}; + +static GCOps blackTECopyOps = { + mfbBlackSolidFS, + mfbSetSpans, + mfbPutImage, + mfbCopyArea, + mfbCopyPlane, + mfbPolyPoint, + mfbLineSS, + mfbSegmentSS, + miPolyRectangle, + mfbZeroPolyArcSS, + mfbFillPolyBlack, + mfbPolyFillRect, + mfbPolyFillArcSolid, + miPolyText8, + miPolyText16, + miImageText8, + miImageText16, + mfbTEGlyphBltBlack, + mfbPolyGlyphBltBlack, + mfbSolidPP +#ifdef NEED_LINEHELPER + ,NULL +#endif +}; + +static GCOps whiteTEInvertOps = { + mfbInvertSolidFS, + mfbSetSpans, + mfbPutImage, + miCopyArea, + miCopyPlane, + mfbPolyPoint, + mfbLineSS, + mfbSegmentSS, + miPolyRectangle, + miZeroPolyArc, + mfbFillPolyInvert, + mfbPolyFillRect, + mfbPolyFillArcSolid, + miPolyText8, + miPolyText16, + miImageText8, + miImageText16, + mfbTEGlyphBltWhite, + mfbPolyGlyphBltInvert, + mfbSolidPP +#ifdef NEED_LINEHELPER + ,NULL +#endif +}; + +static GCOps blackTEInvertOps = { + mfbInvertSolidFS, + mfbSetSpans, + mfbPutImage, + mfbCopyArea, + mfbCopyPlane, + mfbPolyPoint, + mfbLineSS, + mfbSegmentSS, + miPolyRectangle, + miZeroPolyArc, + mfbFillPolyInvert, + mfbPolyFillRect, + mfbPolyFillArcSolid, + miPolyText8, + miPolyText16, + miImageText8, + miImageText16, + mfbTEGlyphBltBlack, + mfbPolyGlyphBltInvert, + mfbSolidPP +#ifdef NEED_LINEHELPER + ,NULL +#endif +}; + +static GCOps whiteCopyOps = { + mfbWhiteSolidFS, + mfbSetSpans, + mfbPutImage, + mfbCopyArea, + mfbCopyPlane, + mfbPolyPoint, + mfbLineSS, + mfbSegmentSS, + miPolyRectangle, + mfbZeroPolyArcSS, + mfbFillPolyWhite, + mfbPolyFillRect, + mfbPolyFillArcSolid, + miPolyText8, + miPolyText16, + miImageText8, + miImageText16, + mfbImageGlyphBltWhite, + mfbPolyGlyphBltWhite, + mfbSolidPP +#ifdef NEED_LINEHELPER + ,NULL +#endif +}; + +static GCOps blackCopyOps = { + mfbBlackSolidFS, + mfbSetSpans, + mfbPutImage, + mfbCopyArea, + mfbCopyPlane, + mfbPolyPoint, + mfbLineSS, + mfbSegmentSS, + miPolyRectangle, + mfbZeroPolyArcSS, + mfbFillPolyBlack, + mfbPolyFillRect, + mfbPolyFillArcSolid, + miPolyText8, + miPolyText16, + miImageText8, + miImageText16, + mfbImageGlyphBltBlack, + mfbPolyGlyphBltBlack, + mfbSolidPP +#ifdef NEED_LINEHELPER + ,NULL +#endif +}; + +static GCOps whiteInvertOps = { + mfbInvertSolidFS, + mfbSetSpans, + mfbPutImage, + mfbCopyArea, + mfbCopyPlane, + mfbPolyPoint, + mfbLineSS, + mfbSegmentSS, + miPolyRectangle, + miZeroPolyArc, + mfbFillPolyInvert, + mfbPolyFillRect, + mfbPolyFillArcSolid, + miPolyText8, + miPolyText16, + miImageText8, + miImageText16, + mfbImageGlyphBltWhite, + mfbPolyGlyphBltInvert, + mfbSolidPP +#ifdef NEED_LINEHELPER + ,NULL +#endif +}; + +static GCOps blackInvertOps = { + mfbInvertSolidFS, + mfbSetSpans, + mfbPutImage, + mfbCopyArea, + mfbCopyPlane, + mfbPolyPoint, + mfbLineSS, + mfbSegmentSS, + miPolyRectangle, + miZeroPolyArc, + mfbFillPolyInvert, + mfbPolyFillRect, + mfbPolyFillArcSolid, + miPolyText8, + miPolyText16, + miImageText8, + miImageText16, + mfbImageGlyphBltBlack, + mfbPolyGlyphBltInvert, + mfbSolidPP +#ifdef NEED_LINEHELPER + ,NULL +#endif +}; + +static GCOps whiteWhiteCopyOps = { + mfbWhiteSolidFS, + mfbSetSpans, + mfbPutImage, + mfbCopyArea, + mfbCopyPlane, + mfbPolyPoint, + mfbLineSS, + mfbSegmentSS, + miPolyRectangle, + mfbZeroPolyArcSS, + mfbFillPolyWhite, + mfbPolyFillRect, + mfbPolyFillArcSolid, + miPolyText8, + miPolyText16, + miImageText8, + miImageText16, + miImageGlyphBlt, + mfbPolyGlyphBltWhite, + mfbSolidPP +#ifdef NEED_LINEHELPER + ,NULL +#endif +}; + +static GCOps blackBlackCopyOps = { + mfbBlackSolidFS, + mfbSetSpans, + mfbPutImage, + mfbCopyArea, + mfbCopyPlane, + mfbPolyPoint, + mfbLineSS, + mfbSegmentSS, + miPolyRectangle, + mfbZeroPolyArcSS, + mfbFillPolyBlack, + mfbPolyFillRect, + mfbPolyFillArcSolid, + miPolyText8, + miPolyText16, + miImageText8, + miImageText16, + miImageGlyphBlt, + mfbPolyGlyphBltBlack, + mfbSolidPP +#ifdef NEED_LINEHELPER + ,NULL +#endif +}; + +static GCOps fgEqBgInvertOps = { + mfbInvertSolidFS, + mfbSetSpans, + mfbPutImage, + mfbCopyArea, + mfbCopyPlane, + mfbPolyPoint, + mfbLineSS, + mfbSegmentSS, + miPolyRectangle, + miZeroPolyArc, + mfbFillPolyInvert, + mfbPolyFillRect, + mfbPolyFillArcSolid, + miPolyText8, + miPolyText16, + miImageText8, + miImageText16, + miImageGlyphBlt, + mfbPolyGlyphBltInvert, + mfbSolidPP +#ifdef NEED_LINEHELPER + ,NULL +#endif +}; + +#else + +static GCOps whiteTECopyOps = { + mfbWhiteSolidFS, + mfbSetSpans, + miPutImage, + miCopyArea, + miCopyPlane, + miPolyPoint, + miZeroLine, + miPolySegment, + miPolyRectangle, + miZeroPolyArc, + mfbFillPolyWhite, + mfbPolyFillRect, + miPolyFillArc, + miPolyText8, + miPolyText16, + miImageText8, + miImageText16, + mfbTEGlyphBltWhite, + mfbPolyGlyphBltWhite, + miPushPixels +#ifdef NEED_LINEHELPER + ,NULL +#endif +}; + +static GCOps blackTECopyOps = { + mfbBlackSolidFS, + mfbSetSpans, + miPutImage, + miCopyArea, + miCopyPlane, + miPolyPoint, + miZeroLine, + miPolySegment, + miPolyRectangle, + miZeroPolyArc, + mfbFillPolyBlack, + mfbPolyFillRect, + miPolyFillArc, + miPolyText8, + miPolyText16, + miImageText8, + miImageText16, + mfbTEGlyphBltBlack, + mfbPolyGlyphBltBlack, + miPushPixels +#ifdef NEED_LINEHELPER + ,NULL +#endif +}; + +static GCOps whiteTEInvertOps = { + mfbInvertSolidFS, + mfbSetSpans, + miPutImage, + miCopyArea, + miCopyPlane, + miPolyPoint, + miZeroLine, + miPolySegment, + miPolyRectangle, + miZeroPolyArc, + mfbFillPolyInvert, + mfbPolyFillRect, + miPolyFillArc, + miPolyText8, + miPolyText16, + miImageText8, + miImageText16, + mfbTEGlyphBltWhite, + mfbPolyGlyphBltInvert, + miPushPixels +#ifdef NEED_LINEHELPER + ,NULL +#endif +}; + +static GCOps blackTEInvertOps = { + mfbInvertSolidFS, + mfbSetSpans, + miPutImage, + miCopyArea, + miCopyPlane, + miPolyPoint, + miZeroLine, + miPolySegment, + miPolyRectangle, + miZeroPolyArc, + mfbFillPolyInvert, + mfbPolyFillRect, + miPolyFillArc, + miPolyText8, + miPolyText16, + miImageText8, + miImageText16, + mfbTEGlyphBltBlack, + mfbPolyGlyphBltInvert, + miPushPixels +#ifdef NEED_LINEHELPER + ,NULL +#endif +}; + +static GCOps whiteCopyOps = { + mfbWhiteSolidFS, + mfbSetSpans, + miPutImage, + miCopyArea, + miCopyPlane, + miPolyPoint, + miZeroLine, + miPolySegment, + miPolyRectangle, + miZeroPolyArc, + mfbFillPolyWhite, + mfbPolyFillRect, + miPolyFillArc, + miPolyText8, + miPolyText16, + miImageText8, + miImageText16, + mfbImageGlyphBltWhite, + mfbPolyGlyphBltWhite, + miPushPixels +#ifdef NEED_LINEHELPER + ,NULL +#endif +}; + +static GCOps blackCopyOps = { + mfbBlackSolidFS, + mfbSetSpans, + miPutImage, + miCopyArea, + miCopyPlane, + miPolyPoint, + miZeroLine, + miPolySegment, + miPolyRectangle, + miZeroPolyArc, + mfbFillPolyBlack, + mfbPolyFillRect, + miPolyFillArc, + miPolyText8, + miPolyText16, + miImageText8, + miImageText16, + mfbImageGlyphBltBlack, + mfbPolyGlyphBltBlack, + miPushPixels +#ifdef NEED_LINEHELPER + ,NULL +#endif +}; + +static GCOps whiteInvertOps = { + mfbInvertSolidFS, + mfbSetSpans, + miPutImage, + miCopyArea, + miCopyPlane, + miPolyPoint, + miZeroLine, + miPolySegment, + miPolyRectangle, + miZeroPolyArc, + mfbFillPolyInvert, + mfbPolyFillRect, + miPolyFillArc, + miPolyText8, + miPolyText16, + miImageText8, + miImageText16, + mfbImageGlyphBltWhite, + mfbPolyGlyphBltInvert, + miPushPixels +#ifdef NEED_LINEHELPER + ,NULL +#endif +}; + +static GCOps blackInvertOps = { + mfbInvertSolidFS, + mfbSetSpans, + miPutImage, + miCopyArea, + miCopyPlane, + miPolyPoint, + miZeroLine, + miPolySegment, + miPolyRectangle, + miZeroPolyArc, + mfbFillPolyInvert, + mfbPolyFillRect, + miPolyFillArc, + miPolyText8, + miPolyText16, + miImageText8, + miImageText16, + mfbImageGlyphBltBlack, + mfbPolyGlyphBltInvert, + miPushPixels +#ifdef NEED_LINEHELPER + ,NULL +#endif +}; + +static GCOps whiteWhiteCopyOps = { + mfbWhiteSolidFS, + mfbSetSpans, + miPutImage, + miCopyArea, + miCopyPlane, + miPolyPoint, + miZeroLine, + miPolySegment, + miPolyRectangle, + miZeroPolyArc, + mfbFillPolyWhite, + mfbPolyFillRect, + miPolyFillArc, + miPolyText8, + miPolyText16, + miImageText8, + miImageText16, + miImageGlyphBlt, + mfbPolyGlyphBltWhite, + miPushPixels +#ifdef NEED_LINEHELPER + ,NULL +#endif +}; + +static GCOps blackBlackCopyOps = { + mfbBlackSolidFS, + mfbSetSpans, + miPutImage, + miCopyArea, + miCopyPlane, + miPolyPoint, + miZeroLine, + miPolySegment, + miPolyRectangle, + miZeroPolyArc, + mfbFillPolyBlack, + mfbPolyFillRect, + miPolyFillArc, + miPolyText8, + miPolyText16, + miImageText8, + miImageText16, + miImageGlyphBlt, + mfbPolyGlyphBltBlack, + miPushPixels +#ifdef NEED_LINEHELPER + ,NULL +#endif +}; + +static GCOps fgEqBgInvertOps = { + mfbInvertSolidFS, + mfbSetSpans, + miPutImage, + miCopyArea, + miCopyPlane, + miPolyPoint, + miZeroLine, + miPolySegment, + miPolyRectangle, + miZeroPolyArc, + mfbFillPolyInvert, + mfbPolyFillRect, + miPolyFillArc, + miPolyText8, + miPolyText16, + miImageText8, + miImageText16, + miImageGlyphBlt, + mfbPolyGlyphBltInvert, + miPushPixels +#ifdef NEED_LINEHELPER + ,NULL +#endif +}; + +#endif /* ifndef LOWMEMFTPT */ + +struct commonOps { + int fg, bg; + int rrop; + int terminalFont; + GCOps *ops; + void (*fillArea)(); +}; + +static struct commonOps mfbCommonOps[] = { + { 1, 0, RROP_WHITE, 1, &whiteTECopyOps, mfbSolidWhiteArea }, + { 0, 1, RROP_BLACK, 1, &blackTECopyOps, mfbSolidBlackArea }, + { 1, 0, RROP_INVERT, 1, &whiteTEInvertOps, mfbSolidInvertArea }, + { 0, 1, RROP_INVERT, 1, &blackTEInvertOps, mfbSolidInvertArea }, + { 1, 0, RROP_WHITE, 0, &whiteCopyOps, mfbSolidWhiteArea }, + { 0, 1, RROP_BLACK, 0, &blackCopyOps, mfbSolidBlackArea }, + { 1, 0, RROP_INVERT, 0, &whiteInvertOps, mfbSolidInvertArea }, + { 0, 1, RROP_INVERT, 0, &blackInvertOps, mfbSolidInvertArea }, + { 1, 1, RROP_WHITE, 0, &whiteWhiteCopyOps, mfbSolidWhiteArea }, + { 0, 0, RROP_BLACK, 0, &blackBlackCopyOps, mfbSolidBlackArea }, + { 1, 1, RROP_INVERT, 0, &fgEqBgInvertOps, mfbSolidInvertArea }, + { 0, 0, RROP_INVERT, 0, &fgEqBgInvertOps, mfbSolidInvertArea }, +}; + +#define numberCommonOps (sizeof (mfbCommonOps) / sizeof (mfbCommonOps[0])) + +static GCOps * +matchCommon (pGC) + GCPtr pGC; +{ + int i; + struct commonOps *cop; + mfbPrivGC *priv; + + if (pGC->lineWidth != 0) + return 0; + if (pGC->lineStyle != LineSolid) + return 0; + if (pGC->fillStyle != FillSolid) + return 0; + if (!pGC->font || + FONTMAXBOUNDS(pGC->font,rightSideBearing) - + FONTMINBOUNDS(pGC->font,leftSideBearing) > 32 || + FONTMINBOUNDS(pGC->font,characterWidth) < 0) + return 0; + priv = (mfbPrivGC *) pGC->devPrivates[mfbGCPrivateIndex].ptr; + for (i = 0; i < numberCommonOps; i++) { + cop = &mfbCommonOps[i]; + if ((pGC->fgPixel & 1) != cop->fg) + continue; + if ((pGC->bgPixel & 1) != cop->bg) + continue; + if (priv->rop != cop->rrop) + continue; + if (cop->terminalFont && !TERMINALFONT(pGC->font)) + continue; + priv->FillArea = cop->fillArea; + return cop->ops; + } + return 0; +} + + +Bool +mfbCreateGC(pGC) + register GCPtr pGC; +{ + mfbPrivGC *pPriv; + + pGC->clientClip = NULL; + pGC->clientClipType = CT_NONE; + + /* some of the output primitives aren't really necessary, since + they will be filled in ValidateGC because of dix/CreateGC() + setting all the change bits. Others are necessary because although + they depend on being a monochrome frame buffer, they don't change + */ + + pGC->ops = &whiteCopyOps; + pGC->funcs = &mfbFuncs; + + /* mfb wants to translate before scan convesion */ + pGC->miTranslate = 1; + + pPriv = (mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr); + pPriv->rop = mfbReduceRop(pGC->alu, pGC->fgPixel); + pPriv->fExpose = TRUE; + pPriv->pRotatedPixmap = NullPixmap; + pPriv->freeCompClip = FALSE; + pPriv->FillArea = mfbSolidWhiteArea; + return TRUE; +} + +/* Clipping conventions + if the drawable is a window + CT_REGION ==> pCompositeClip really is the composite + CT_other ==> pCompositeClip is the window clip region + if the drawable is a pixmap + CT_REGION ==> pCompositeClip is the translated client region + clipped to the pixmap boundary + CT_other ==> pCompositeClip is the pixmap bounding box +*/ + +/*ARGSUSED*/ +void +mfbValidateGC(pGC, changes, pDrawable) + register GCPtr pGC; + unsigned long changes; + DrawablePtr pDrawable; +{ + register mfbPrivGCPtr devPriv; + int mask; /* stateChanges */ + int index; /* used for stepping through bitfields */ + int xrot, yrot; /* rotations for tile and stipple pattern */ + int rrop; /* reduced rasterop */ + /* flags for changing the proc vector + and updating things in devPriv + */ + int new_rotate, new_rrop, new_line, new_text, new_fill; + DDXPointRec oldOrg; /* origin of thing GC was last used with */ + + oldOrg = pGC->lastWinOrg; + + pGC->lastWinOrg.x = pDrawable->x; + pGC->lastWinOrg.y = pDrawable->y; + + /* we need to re-rotate the tile if the previous window/pixmap + origin (oldOrg) differs from the new window/pixmap origin + (pGC->lastWinOrg) + */ + new_rotate = (oldOrg.x != pGC->lastWinOrg.x) || + (oldOrg.y != pGC->lastWinOrg.y); + + devPriv = ((mfbPrivGCPtr) (pGC->devPrivates[mfbGCPrivateIndex].ptr)); + + /* + if the client clip is different or moved OR + the subwindowMode has changed OR + the window's clip has changed since the last validation + we need to recompute the composite clip + */ + if ((changes & (GCClipXOrigin|GCClipYOrigin|GCClipMask|GCSubwindowMode)) || + (pDrawable->serialNumber != (pGC->serialNumber & DRAWABLE_SERIAL_BITS)) + ) + { + miComputeCompositeClip(pGC, pDrawable); + } + + new_rrop = FALSE; + new_line = FALSE; + new_text = FALSE; + new_fill = FALSE; + + mask = changes; + while (mask) + { + index = lowbit (mask); + mask &= ~index; + + /* this switch acculmulates a list of which procedures + might have to change due to changes in the GC. in + some cases (e.g. changing one 16 bit tile for another) + we might not really need a change, but the code is + being paranoid. + this sort of batching wins if, for example, the alu + and the font have been changed, or any other pair + of items that both change the same thing. + */ + switch (index) + { + case GCFunction: + case GCForeground: + new_rrop = TRUE; + break; + case GCPlaneMask: + break; + case GCBackground: + new_rrop = TRUE; /* for opaque stipples */ + break; + case GCLineStyle: + case GCLineWidth: + case GCJoinStyle: + new_line = TRUE; + break; + case GCCapStyle: + break; + case GCFillStyle: + new_fill = TRUE; + break; + case GCFillRule: + break; + case GCTile: + if(pGC->tileIsPixel) + break; + new_rotate = TRUE; + new_fill = TRUE; + break; + + case GCStipple: + if(pGC->stipple == (PixmapPtr)NULL) + break; + new_rotate = TRUE; + new_fill = TRUE; + break; + + case GCTileStipXOrigin: + new_rotate = TRUE; + break; + + case GCTileStipYOrigin: + new_rotate = TRUE; + break; + + case GCFont: + new_text = TRUE; + break; + case GCSubwindowMode: + break; + case GCGraphicsExposures: + break; + case GCClipXOrigin: + break; + case GCClipYOrigin: + break; + case GCClipMask: + break; + case GCDashOffset: + break; + case GCDashList: + break; + case GCArcMode: + break; + default: + break; + } + } + + /* deal with the changes we've collected . + new_rrop must be done first because subsequent things + depend on it. + */ + + if(new_rotate || new_fill) + { + Bool new_pix = FALSE; + + /* figure out how much to rotate */ + xrot = pGC->patOrg.x; + yrot = pGC->patOrg.y; + xrot += pDrawable->x; + yrot += pDrawable->y; + + switch (pGC->fillStyle) + { + case FillTiled: + /* copy current tile and stipple */ + if (!pGC->tileIsPixel && (pGC->tile.pixmap->drawable.width <= PPW) && + !(pGC->tile.pixmap->drawable.width & (pGC->tile.pixmap->drawable.width - 1))) + { + mfbCopyRotatePixmap(pGC->tile.pixmap, + &devPriv->pRotatedPixmap, xrot, yrot); + new_pix = TRUE; + } + break; + case FillStippled: + case FillOpaqueStippled: + if (pGC->stipple && (pGC->stipple->drawable.width <= PPW) && + !(pGC->stipple->drawable.width & (pGC->stipple->drawable.width - 1))) + { + mfbCopyRotatePixmap(pGC->stipple, + &devPriv->pRotatedPixmap, xrot, yrot); + new_pix = TRUE; + } + } + /* destroy any previously rotated tile or stipple */ + if (!new_pix && devPriv->pRotatedPixmap) + { + (*pDrawable->pScreen->DestroyPixmap)(devPriv->pRotatedPixmap); + devPriv->pRotatedPixmap = (PixmapPtr)NULL; + } + } + + /* + * duck out here when the GC is unchanged + */ + + if (!changes) + return; + + if (new_rrop || new_fill) + { + rrop = mfbReduceRop(pGC->alu, pGC->fgPixel); + devPriv->rop = rrop; + new_fill = TRUE; + /* FillArea raster op is GC's for tile filling, + and the reduced rop for solid and stipple + */ + if (pGC->fillStyle == FillTiled) + devPriv->ropFillArea = pGC->alu; + else + devPriv->ropFillArea = rrop; + + /* opaque stipples: + fg bg ropOpStip fill style + 1 0 alu tile + 0 1 inverseAlu tile + 1 1 rrop(fg, alu) solid + 0 0 rrop(fg, alu) solid + Note that rrop(fg, alu) == mfbPrivGC.rop, so we don't really need to + compute it. + */ + if (pGC->fillStyle == FillOpaqueStippled) + { + if ((pGC->fgPixel & 1) != (pGC->bgPixel & 1)) + { + if (pGC->fgPixel & 1) + devPriv->ropOpStip = pGC->alu; + else + devPriv->ropOpStip = InverseAlu[pGC->alu]; + } + else + devPriv->ropOpStip = rrop; + devPriv->ropFillArea = devPriv->ropOpStip; + } + } + else + rrop = devPriv->rop; + + if (new_line || new_fill || new_text) + { + GCOps *newops; + + if (newops = matchCommon (pGC)) + { + if (pGC->ops->devPrivate.val) + miDestroyGCOps (pGC->ops); + pGC->ops = newops; + new_line = new_fill = new_text = 0; + } + else + { + if (!pGC->ops->devPrivate.val) + { + pGC->ops = miCreateGCOps (pGC->ops); + pGC->ops->devPrivate.val = 1; + } + } + } + + if (new_line || new_fill) + { + if (pGC->lineWidth == 0) + { +#ifndef LOWMEMFTPT + if ((pGC->lineStyle == LineSolid) && (pGC->fillStyle == FillSolid) + && ((rrop == RROP_WHITE) || (rrop == RROP_BLACK))) + pGC->ops->PolyArc = mfbZeroPolyArcSS; + else +#endif /* ifndef LOWMEMFTPT */ + pGC->ops->PolyArc = miZeroPolyArc; + } + else + pGC->ops->PolyArc = miPolyArc; + if (pGC->lineStyle == LineSolid) + { + if(pGC->lineWidth == 0) + { +#ifndef LOWMEMFTPT + if (pGC->fillStyle == FillSolid) + { + pGC->ops->PolySegment = mfbSegmentSS; + pGC->ops->Polylines = mfbLineSS; + } + else +#endif /* ifndef LOWMEMFTPT */ + { + pGC->ops->PolySegment = miPolySegment; + pGC->ops->Polylines = miZeroLine; + } + } + else + { + pGC->ops->PolySegment = miPolySegment; + pGC->ops->Polylines = miWideLine; + } + } + else + { +#ifndef LOWMEMFTPT + if(pGC->lineWidth == 0 && pGC->fillStyle == FillSolid) + { + pGC->ops->Polylines = mfbLineSD; + pGC->ops->PolySegment = mfbSegmentSD; + } + else +#endif /* ifndef LOWMEMFTPT */ + { + pGC->ops->Polylines = miWideDash; + pGC->ops->PolySegment = miPolySegment; + } + } + } + + if (new_text || new_fill) + { + if ((pGC->font) && + (FONTMAXBOUNDS(pGC->font,rightSideBearing) - + FONTMINBOUNDS(pGC->font,leftSideBearing) > 32 || + FONTMINBOUNDS(pGC->font,characterWidth) < 0)) + { + pGC->ops->PolyGlyphBlt = miPolyGlyphBlt; + pGC->ops->ImageGlyphBlt = miImageGlyphBlt; + } + else + { + /* special case ImageGlyphBlt for terminal emulator fonts */ + +#ifndef LOWMEMFTPT + + if ((pGC->font) && + TERMINALFONT(pGC->font) && + ((pGC->fgPixel & 1) != (pGC->bgPixel & 1))) + { + /* pcc bug makes this not compile... + pGC->ops->ImageGlyphBlt = (pGC->fgPixel & 1) ? mfbTEGlyphBltWhite : + mfbTEGlyphBltBlack; + */ + if (pGC->fgPixel & 1) + pGC->ops->ImageGlyphBlt = mfbTEGlyphBltWhite; + else + pGC->ops->ImageGlyphBlt = mfbTEGlyphBltBlack; + } + else + +#endif /* ifndef LOWMEMFTPT */ + + { + if (pGC->fgPixel & 1) + pGC->ops->ImageGlyphBlt = mfbImageGlyphBltWhite; + else + pGC->ops->ImageGlyphBlt = mfbImageGlyphBltBlack; + } + + /* now do PolyGlyphBlt */ + if (pGC->fillStyle == FillSolid || + (pGC->fillStyle == FillOpaqueStippled && + (pGC->fgPixel & 1) == (pGC->bgPixel & 1) + ) + ) + { + if (rrop == RROP_WHITE) + pGC->ops->PolyGlyphBlt = mfbPolyGlyphBltWhite; + else if (rrop == RROP_BLACK) + pGC->ops->PolyGlyphBlt = mfbPolyGlyphBltBlack; + else if (rrop == RROP_INVERT) + pGC->ops->PolyGlyphBlt = mfbPolyGlyphBltInvert; + else + pGC->ops->PolyGlyphBlt = (void (*)())NoopDDA; + } + else + { + pGC->ops->PolyGlyphBlt = miPolyGlyphBlt; + } + } + } + + if (new_fill) + +#ifndef LOWMEMFTPT + + { + /* install a suitable fillspans and pushpixels */ + pGC->ops->PushPixels = mfbPushPixels; + pGC->ops->FillPolygon = miFillPolygon; + if ((pGC->fillStyle == FillSolid) || + ((pGC->fillStyle == FillOpaqueStippled) && + ((pGC->fgPixel & 1) == (pGC->bgPixel & 1)))) + { + pGC->ops->PushPixels = mfbSolidPP; + switch(devPriv->rop) + { + case RROP_WHITE: + pGC->ops->FillSpans = mfbWhiteSolidFS; + pGC->ops->FillPolygon = mfbFillPolyWhite; + break; + case RROP_BLACK: + pGC->ops->FillSpans = mfbBlackSolidFS; + pGC->ops->FillPolygon = mfbFillPolyBlack; + break; + case RROP_INVERT: + pGC->ops->FillSpans = mfbInvertSolidFS; + pGC->ops->FillPolygon = mfbFillPolyInvert; + break; + case RROP_NOP: + pGC->ops->FillSpans = (void (*)())NoopDDA; + pGC->ops->FillPolygon = (void (*)())NoopDDA; + break; + } + } + /* beyond this point, opaqueStippled ==> fg != bg */ + else if (((pGC->fillStyle == FillTiled) || + (pGC->fillStyle == FillOpaqueStippled)) && + !devPriv->pRotatedPixmap) + { + pGC->ops->FillSpans = mfbUnnaturalTileFS; + } + else if ((pGC->fillStyle == FillStippled) && !devPriv->pRotatedPixmap) + { + pGC->ops->FillSpans = mfbUnnaturalStippleFS; + } + else if (pGC->fillStyle == FillStippled) + { + switch(devPriv->rop) + { + case RROP_WHITE: + pGC->ops->FillSpans = mfbWhiteStippleFS; + break; + case RROP_BLACK: + pGC->ops->FillSpans = mfbBlackStippleFS; + break; + case RROP_INVERT: + pGC->ops->FillSpans = mfbInvertStippleFS; + break; + case RROP_NOP: + pGC->ops->FillSpans = (void (*)())NoopDDA; + break; + } + } + else /* overload tiles to do parti-colored opaque stipples */ + { + pGC->ops->FillSpans = mfbTileFS; + } + if (pGC->fillStyle == FillSolid) + pGC->ops->PolyFillArc = mfbPolyFillArcSolid; + else + pGC->ops->PolyFillArc = miPolyFillArc; + /* the rectangle code doesn't deal with opaque stipples that + are two colors -- we can fool it for fg==bg, though + */ + if ((((pGC->fillStyle == FillTiled) || + (pGC->fillStyle == FillStippled)) && + !devPriv->pRotatedPixmap) || + ((pGC->fillStyle == FillOpaqueStippled) && + ((pGC->fgPixel & 1) != (pGC->bgPixel & 1))) + ) + { + pGC->ops->PolyFillRect = miPolyFillRect; + } + else /* deal with solids and natural stipples and tiles */ + { + pGC->ops->PolyFillRect = mfbPolyFillRect; + + if ((pGC->fillStyle == FillSolid) || + ((pGC->fillStyle == FillOpaqueStippled) && + ((pGC->fgPixel & 1) == (pGC->bgPixel & 1)))) + { + switch(devPriv->rop) + { + case RROP_WHITE: + devPriv->FillArea = mfbSolidWhiteArea; + break; + case RROP_BLACK: + devPriv->FillArea = mfbSolidBlackArea; + break; + case RROP_INVERT: + devPriv->FillArea = mfbSolidInvertArea; + break; + case RROP_NOP: + devPriv->FillArea = (void (*)())NoopDDA; + break; + } + } + else if (pGC->fillStyle == FillStippled) + { + switch(devPriv->rop) + { + case RROP_WHITE: + devPriv->FillArea = mfbStippleWhiteArea; + break; + case RROP_BLACK: + devPriv->FillArea = mfbStippleBlackArea; + break; + case RROP_INVERT: + devPriv->FillArea = mfbStippleInvertArea; + break; + case RROP_NOP: + devPriv->FillArea = (void (*)())NoopDDA; + break; + } + } + else /* deal with tiles */ + { + switch (pGC->alu) + { + case GXcopy: + devPriv->FillArea = mfbTileAreaPPWCopy; + break; + default: + devPriv->FillArea = mfbTileAreaPPWGeneral; + break; + } + } + } /* end of natural rectangles */ + } /* end of new_fill */ + +#else + + { + /* install a suitable fillspans and pushpixels */ + pGC->ops->PushPixels = miPushPixels; + pGC->ops->FillPolygon = miFillPolygon; + if ((pGC->fillStyle == FillSolid) || + ((pGC->fillStyle == FillOpaqueStippled) && + ((pGC->fgPixel & 1) == (pGC->bgPixel & 1)))) + { + pGC->ops->PushPixels = miPushPixels; + switch(devPriv->rop) + { + case RROP_WHITE: + pGC->ops->FillSpans = mfbWhiteSolidFS; + pGC->ops->FillPolygon = mfbFillPolyWhite; + break; + case RROP_BLACK: + pGC->ops->FillSpans = mfbBlackSolidFS; + pGC->ops->FillPolygon = mfbFillPolyBlack; + break; + case RROP_INVERT: + pGC->ops->FillSpans = mfbInvertSolidFS; + pGC->ops->FillPolygon = mfbFillPolyInvert; + break; + case RROP_NOP: + pGC->ops->FillSpans = (void (*)())NoopDDA; + pGC->ops->FillPolygon = (void (*)())NoopDDA; + break; + } + } + /* beyond this point, opaqueStippled ==> fg != bg */ + else if (((pGC->fillStyle == FillTiled) || + (pGC->fillStyle == FillOpaqueStippled)) && + !devPriv->pRotatedPixmap) + { + pGC->ops->FillSpans = mfbUnnaturalTileFS; + } + else if ((pGC->fillStyle == FillStippled) && !devPriv->pRotatedPixmap) + { + pGC->ops->FillSpans = mfbUnnaturalStippleFS; + } + else if (pGC->fillStyle == FillStippled) + { + switch(devPriv->rop) + { + case RROP_WHITE: + pGC->ops->FillSpans = mfbWhiteStippleFS; + case RROP_BLACK: + pGC->ops->FillSpans = mfbBlackStippleFS; + case RROP_INVERT: + pGC->ops->FillSpans = mfbInvertStippleFS; + case RROP_NOP: + pGC->ops->FillSpans = (void (*)())NoopDDA; + break; + } + } + else /* overload tiles to do parti-colored opaque stipples */ + { + pGC->ops->FillSpans = mfbTileFS; + } + pGC->ops->PolyFillArc = miPolyFillArc; + /* the rectangle code doesn't deal with opaque stipples that + are two colors -- we can fool it for fg==bg, though + */ + if ((((pGC->fillStyle == FillTiled) || + (pGC->fillStyle == FillStippled)) && + !devPriv->pRotatedPixmap) || + ((pGC->fillStyle == FillOpaqueStippled) && + ((pGC->fgPixel & 1) != (pGC->bgPixel & 1))) + ) + { + pGC->ops->PolyFillRect = miPolyFillRect; + } + else /* deal with solids and natural stipples and tiles */ + { + pGC->ops->PolyFillRect = mfbPolyFillRect; + + if ((pGC->fillStyle == FillSolid) || + ((pGC->fillStyle == FillOpaqueStippled) && + ((pGC->fgPixel & 1) == (pGC->bgPixel & 1)))) + { + switch(devPriv->rop) + { + case RROP_WHITE: + devPriv->FillArea = mfbSolidWhiteArea; + break; + case RROP_BLACK: + devPriv->FillArea = mfbSolidBlackArea; + break; + case RROP_INVERT: + devPriv->FillArea = mfbSolidInvertArea; + break; + case RROP_NOP: + devPriv->FillArea = (void (*)())NoopDDA; + break; + } + } + else if (pGC->fillStyle == FillStippled) + { + switch(devPriv->rop) + { + case RROP_WHITE: + devPriv->FillArea = mfbStippleWhiteArea; + break; + case RROP_BLACK: + devPriv->FillArea = mfbStippleBlackArea; + break; + case RROP_INVERT: + devPriv->FillArea = mfbStippleInvertArea; + break; + case RROP_NOP: + devPriv->FillArea = (void (*)())NoopDDA; + break; + } + } + else /* deal with tiles */ + { + switch (pGC->alu) + { + case GXcopy: + devPriv->FillArea = mfbTileAreaPPWCopy; + break; + default: + devPriv->FillArea = mfbTileAreaPPWGeneral; + break; + } + } + } /* end of natural rectangles */ + } /* end of new_fill */ + +#endif /* ifndef LOWMEMFTPT */ + +} + +/* table to map alu(src, dst) to alu(~src, dst) */ +int InverseAlu[16] = { + GXclear, + GXandInverted, + GXnor, + GXcopyInverted, + GXand, + GXnoop, + GXequiv, + GXorInverted, + GXandReverse, + GXxor, + GXinvert, + GXnand, + GXcopy, + GXor, + GXorReverse, + GXset +}; + +int +mfbReduceRop(alu, src) + register int alu; + register Pixel src; +{ + int rop; + if ((src & 1) == 0) /* src is black */ + { + switch(alu) + { + case GXclear: + rop = RROP_BLACK; + break; + case GXand: + rop = RROP_BLACK; + break; + case GXandReverse: + rop = RROP_BLACK; + break; + case GXcopy: + rop = RROP_BLACK; + break; + case GXandInverted: + rop = RROP_NOP; + break; + case GXnoop: + rop = RROP_NOP; + break; + case GXxor: + rop = RROP_NOP; + break; + case GXor: + rop = RROP_NOP; + break; + case GXnor: + rop = RROP_INVERT; + break; + case GXequiv: + rop = RROP_INVERT; + break; + case GXinvert: + rop = RROP_INVERT; + break; + case GXorReverse: + rop = RROP_INVERT; + break; + case GXcopyInverted: + rop = RROP_WHITE; + break; + case GXorInverted: + rop = RROP_WHITE; + break; + case GXnand: + rop = RROP_WHITE; + break; + case GXset: + rop = RROP_WHITE; + break; + } + } + else /* src is white */ + { + switch(alu) + { + case GXclear: + rop = RROP_BLACK; + break; + case GXand: + rop = RROP_NOP; + break; + case GXandReverse: + rop = RROP_INVERT; + break; + case GXcopy: + rop = RROP_WHITE; + break; + case GXandInverted: + rop = RROP_BLACK; + break; + case GXnoop: + rop = RROP_NOP; + break; + case GXxor: + rop = RROP_INVERT; + break; + case GXor: + rop = RROP_WHITE; + break; + case GXnor: + rop = RROP_BLACK; + break; + case GXequiv: + rop = RROP_NOP; + break; + case GXinvert: + rop = RROP_INVERT; + break; + case GXorReverse: + rop = RROP_WHITE; + break; + case GXcopyInverted: + rop = RROP_BLACK; + break; + case GXorInverted: + rop = RROP_NOP; + break; + case GXnand: + rop = RROP_INVERT; + break; + case GXset: + rop = RROP_WHITE; + break; + } + } + return rop; +} diff --git a/mfb/mfbgetsp.c b/mfb/mfbgetsp.c new file mode 100644 index 000000000..9e0a5b513 --- /dev/null +++ b/mfb/mfbgetsp.c @@ -0,0 +1,154 @@ +/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */ +/*********************************************************** + +Copyright 1987, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ +/* $Xorg: mfbgetsp.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */ +#include "X.h" +#include "Xmd.h" + +#include "misc.h" +#include "region.h" +#include "gc.h" +#include "windowstr.h" +#include "pixmapstr.h" +#include "scrnintstr.h" + +#include "mfb.h" +#include "maskbits.h" + +#include "servermd.h" + +/* GetSpans -- for each span, gets bits from drawable starting at ppt[i] + * and continuing for pwidth[i] bits + * Each scanline returned will be server scanline padded, i.e., it will come + * out to an integral number of words. + */ +/*ARGSUSED*/ +void +mfbGetSpans(pDrawable, wMax, ppt, pwidth, nspans, pchardstStart) + DrawablePtr pDrawable; /* drawable from which to get bits */ + int wMax; /* largest value of all *pwidths */ + register DDXPointPtr ppt; /* points to start copying from */ + int *pwidth; /* list of number of bits to copy */ + int nspans; /* number of scanlines to copy */ + char *pchardstStart; /* where to put the bits */ +{ + PixelType *pdstStart = (PixelType *)pchardstStart; + register PixelType *pdst; /* where to put the bits */ + register PixelType *psrc; /* where to get the bits */ + register PixelType tmpSrc; /* scratch buffer for bits */ + PixelType *psrcBase; /* start of src bitmap */ + int widthSrc; /* width of pixmap in bytes */ + register DDXPointPtr pptLast; /* one past last point to get */ + int xEnd; /* last pixel to copy from */ + register int nstart; + int nend; + int srcStartOver; + PixelType startmask, endmask; + unsigned int srcBit; + int nlMiddle, nl; + int w; + + pptLast = ppt + nspans; + + mfbGetPixelWidthAndPointer(pDrawable, widthSrc, psrcBase); + pdst = pdstStart; + + while(ppt < pptLast) + { + /* XXX should this really be << PWSH, or * 8, or * PGSZB? */ + xEnd = min(ppt->x + *pwidth, widthSrc << PWSH); + pwidth++; + psrc = mfbScanline(psrcBase, ppt->x, ppt->y, widthSrc); + w = xEnd - ppt->x; + srcBit = ppt->x & PIM; + + if (srcBit + w <= PPW) + { + getandputbits0(psrc, srcBit, w, pdst); + pdst++; + } + else + { + + maskbits(ppt->x, w, startmask, endmask, nlMiddle); + if (startmask) + nstart = PPW - srcBit; + else + nstart = 0; + if (endmask) + nend = xEnd & PIM; + srcStartOver = srcBit + nstart > PLST; + if (startmask) + { + getandputbits0(psrc, srcBit, nstart, pdst); + if(srcStartOver) + psrc++; + } + nl = nlMiddle; +#ifdef FASTPUTBITS + Duff(nl, putbits(*psrc, nstart, PPW, pdst); psrc++; pdst++;); +#else + while (nl--) + { + tmpSrc = *psrc; + putbits(tmpSrc, nstart, PPW, pdst); + psrc++; + pdst++; + } +#endif + if (endmask) + { + putbits(*psrc, nstart, nend, pdst); + if(nstart + nend > PPW) + pdst++; + } + if (startmask || endmask) + pdst++; + } + ppt++; + } +} diff --git a/mfb/mfbhrzvert.c b/mfb/mfbhrzvert.c new file mode 100644 index 000000000..5498a4c0b --- /dev/null +++ b/mfb/mfbhrzvert.c @@ -0,0 +1,172 @@ +/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */ +/*********************************************************** + +Copyright 1987, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ +/* $Xorg: mfbhrzvert.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */ +#include "X.h" + +#include "gc.h" +#include "window.h" +#include "pixmap.h" +#include "region.h" + +#include "mfb.h" +#include "maskbits.h" + +/* horizontal solid line + abs(len) > 1 +*/ +mfbHorzS(rop, addrl, nlwidth, x1, y1, len) +int rop; /* a reduced rasterop */ +register PixelType *addrl; /* pointer to base of bitmap */ +register int nlwidth; /* width in longwords of bitmap */ +int x1; /* initial point */ +int y1; +int len; /* length of line */ +{ + register PixelType startmask; + register PixelType endmask; + register int nlmiddle; + + + /* force the line to go left to right + but don't draw the last point + */ + if (len < 0) + { + x1 += len; + x1 += 1; + len = -len; + } + + addrl = mfbScanline(addrl, x1, y1, nlwidth); + + /* all bits inside same longword */ + if ( ((x1 & PIM) + len) < PPW) + { + maskpartialbits(x1, len, startmask); + if (rop == RROP_BLACK) + { + *addrl &= ~startmask; + } + else if (rop == RROP_WHITE) + { + *addrl |= startmask; + } + else if (rop == RROP_INVERT) + { + *addrl ^= startmask; + } + } + else + { + maskbits(x1, len, startmask, endmask, nlmiddle); + if (rop == RROP_BLACK) + { + if (startmask) + *addrl++ &= ~startmask; + Duff (nlmiddle, *addrl++ = 0x0); + if (endmask) + *addrl &= ~endmask; + } + else if (rop == RROP_WHITE) + { + if (startmask) + *addrl++ |= startmask; + Duff (nlmiddle, *addrl++ = ~0); + if (endmask) + *addrl |= endmask; + } + else if (rop == RROP_INVERT) + { + if (startmask) + *addrl++ ^= startmask; + Duff (nlmiddle, *addrl++ ^= ~0); + if (endmask) + *addrl ^= endmask; + } + } +} + +/* vertical solid line + this uses do loops because pcc (Ultrix 1.2, bsd 4.2) generates + better code. sigh. we know that len will never be 0 or 1, so + it's OK to use it. +*/ + +mfbVertS(rop, addrl, nlwidth, x1, y1, len) +int rop; /* a reduced rasterop */ +register PixelType *addrl; /* pointer to base of bitmap */ +register int nlwidth; /* width in longwords of bitmap */ +int x1, y1; /* initial point */ +register int len; /* length of line */ +{ + register PixelType bitmask; + + addrl = mfbScanline(addrl, x1, y1, nlwidth); + + if (len < 0) + { + nlwidth = -nlwidth; + len = -len; + } + + if (rop == RROP_BLACK) + { + bitmask = rmask[x1 & PIM]; + Duff(len, *addrl &= bitmask; mfbScanlineInc(addrl, nlwidth) ); + } + else if (rop == RROP_WHITE) + { + bitmask = mask[x1 & PIM]; + Duff(len, *addrl |= bitmask; mfbScanlineInc(addrl, nlwidth) ); + } + else if (rop == RROP_INVERT) + { + bitmask = mask[x1 & PIM]; + Duff(len, *addrl ^= bitmask; mfbScanlineInc(addrl, nlwidth) ); + } +} diff --git a/mfb/mfbimage.c b/mfb/mfbimage.c new file mode 100644 index 000000000..93b01db02 --- /dev/null +++ b/mfb/mfbimage.c @@ -0,0 +1,173 @@ +/*********************************************************** + +Copyright 1987, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ +/* $Xorg: mfbimage.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */ + +#include "X.h" + +#include "windowstr.h" +#include "pixmapstr.h" +#include "scrnintstr.h" +#include "gcstruct.h" + +#include "mfb.h" +#include "mi.h" +#include "Xmd.h" + +#include "maskbits.h" + +#include "servermd.h" + +/* Put and Get images on a monochrome frame buffer + * + * we do this by creating a temporary pixmap and making its + * pointer to bits point to the buffer read in from the client. + * this works because of the padding rules specified at startup + * + * Note that CopyArea must know how to copy a bitmap into the server-format + * temporary pixmap. + * + * For speed, mfbPutImage should allocate the temporary pixmap on the stack. + * + * even though an XYBitmap and an XYPixmap have the same + * format (for this device), PutImage has different semantics for the + * two. XYPixmap just does the copy; XYBitmap takes gc.fgPixel for + * a 1 bit, gc.bgPixel for a 0 bit, which we notice is exactly + * like CopyPlane. + * + * written by drewry, september 1986 + */ + + + +/*ARGSUSED*/ +void +mfbPutImage(dst, pGC, depth, x, y, w, h, leftPad, format, pImage) + DrawablePtr dst; + GCPtr pGC; + int depth, x, y, w, h; + int leftPad; + int format; + char *pImage; +{ + PixmapPtr pPixmap; + + if (!(pGC->planemask & 1)) + return; + + /* 0 may confuse CreatePixmap, and will sometimes be + passed by the mi text code + */ + if ((w == 0) || (h == 0)) + return; + + pPixmap = GetScratchPixmapHeader(dst->pScreen, w+leftPad, h, 1, 1, + BitmapBytePad(w+leftPad), (pointer)pImage); + if (!pPixmap) + return; + + ((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->fExpose = FALSE; + if (format != XYBitmap) + (*pGC->ops->CopyArea)((DrawablePtr)pPixmap, dst, pGC, leftPad, 0, + w, h, x, y); + else + (*pGC->ops->CopyPlane)((DrawablePtr)pPixmap, dst, pGC, leftPad, 0, + w, h, x, y, 1); + ((mfbPrivGC*)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->fExpose = TRUE; + FreeScratchPixmapHeader(pPixmap); +} + + +/* + * pdstLine points to space allocated by caller, which he can do since + * he knows dimensions of the pixmap + * we can call mfbDoBitblt because the dispatcher has promised not to send us + * anything that would require going over the edge of the screen. + * + * XYPixmap and ZPixmap are the same for mfb. + * For any planemask with bit 0 == 0, just fill the dst with 0. + */ +/*ARGSUSED*/ +void +mfbGetImage( pDrawable, sx, sy, w, h, format, planeMask, pdstLine) + DrawablePtr pDrawable; + int sx, sy, w, h; + unsigned int format; + unsigned long planeMask; + char *pdstLine; +{ + PixmapPtr pPixmap; + BoxRec box; + DDXPointRec ptSrc; + RegionRec rgnDst; + + if (planeMask & 0x1) + { + ScreenPtr pScreen = pDrawable->pScreen; + PixmapPtr pPixmap; + + pPixmap = GetScratchPixmapHeader(pScreen, w, h, /*depth*/ 1, /*bpp*/ 1, + BitmapBytePad(w), (pointer)pdstLine); + if (!pPixmap) + return; + + ptSrc.x = sx + pDrawable->x; + ptSrc.y = sy + pDrawable->y; + box.x1 = 0; + box.y1 = 0; + box.x2 = w; + box.y2 = h; + REGION_INIT(pScreen, &rgnDst, &box, 1); + mfbDoBitblt(pDrawable, (DrawablePtr)pPixmap, + GXcopy, &rgnDst, &ptSrc); + REGION_UNINIT(pScreen, &rgnDst); + FreeScratchPixmapHeader(pPixmap); + } + else + { + bzero(pdstLine, BitmapBytePad(w) * h); + } +} diff --git a/mfb/mfbimggblt.c b/mfb/mfbimggblt.c new file mode 100644 index 000000000..9542b5556 --- /dev/null +++ b/mfb/mfbimggblt.c @@ -0,0 +1,440 @@ +/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */ +/*********************************************************** + +Copyright 1987, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ +/* $Xorg: mfbimggblt.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */ +#include "X.h" +#include "Xmd.h" +#include "Xproto.h" +#include "mfb.h" +#include "fontstruct.h" +#include "dixfontstr.h" +#include "gcstruct.h" +#include "windowstr.h" +#include "scrnintstr.h" +#include "pixmapstr.h" +#include "regionstr.h" +#include "maskbits.h" + +/* + we should eventually special-case fixed-width fonts for ImageText. + + this works for fonts with glyphs <= 32 bits wide. + + the clipping calculations are done for worst-case fonts. +we make no assumptions about the heights, widths, or bearings +of the glyphs. if we knew that the glyphs are all the same height, +we could clip the tops and bottoms per clipping box, rather +than per character per clipping box. if we knew that the glyphs' +left and right bearings were wlle-behaved, we could clip a single +character at the start, output until the last unclipped +character, and then clip the last one. this is all straightforward +to determine based on max-bounds and min-bounds from the font. + there is some inefficiency introduced in the per-character +clipping to make what's going on clearer. + + (it is possible, for example, for a font to be defined in which the +next-to-last character in a font would be clipped out, but the last +one wouldn't. the code below deals with this.) + + Image text looks at the bits in the glyph and the fg and bg in the +GC. it paints a rectangle, as defined in the protocol dcoument, +and the paints the characters. + + to avoid source proliferation, this file is compiled +three times: + MFBIMAGEGLYPHBLT OPEQ + mfbImageGlyphBltWhite |= + mfbImageGlyphBltBlack &=~ + + the register allocations for startmask and endmask may not +be the right thing. are there two other deserving candidates? +xoff, pdst, pglyph, and tmpSrc seem like the right things, though. +*/ + +void +MFBIMAGEGLYPHBLT(pDrawable, pGC, x, y, nglyph, ppci, pglyphBase) + DrawablePtr pDrawable; + GC *pGC; + int x, y; + unsigned int nglyph; + CharInfoPtr *ppci; /* array of character info */ + pointer pglyphBase; /* start of array of glyphs */ +{ + ExtentInfoRec info; /* used by QueryGlyphExtents() */ + BoxRec bbox; /* string's bounding box */ + xRectangle backrect;/* backing rectangle to paint. + in the general case, NOT necessarily + the same as the string's bounding box + */ + + CharInfoPtr pci; + int xorg, yorg; /* origin of drawable in bitmap */ + int widthDst; /* width of dst in longwords */ + + /* these keep track of the character origin */ + PixelType *pdstBase; + /* points to longword with character origin */ + int xchar; /* xorigin of char (mod 32) */ + + /* these are used for placing the glyph */ + register int xoff; /* x offset of left edge of glyph (mod 32) */ + register PixelType *pdst; + /* pointer to current longword in dst */ + + int w; /* width of glyph in bits */ + int h; /* height of glyph */ + int widthGlyph; /* width of glyph, in bytes */ + register unsigned char *pglyph; + /* pointer to current row of glyph */ + + /* used for putting down glyph */ + register PixelType tmpSrc; + /* for getting bits from glyph */ + register PixelType startmask; + register PixelType endmask; + + register int nFirst;/* bits of glyph in current longword */ + void (* oldFillArea)(); + /* we might temporarily usurp this + field in devPriv */ + + if (!(pGC->planemask & 1)) + return; + + xorg = pDrawable->x; + yorg = pDrawable->y; + mfbGetPixelWidthAndPointer(pDrawable, widthDst, pdstBase); + + QueryGlyphExtents(pGC->font, ppci, (unsigned long)nglyph, &info); + + backrect.x = x; + backrect.y = y - FONTASCENT(pGC->font); + backrect.width = info.overallWidth; + backrect.height = FONTASCENT(pGC->font) + FONTDESCENT(pGC->font); + + x += xorg; + y += yorg; + + bbox.x1 = x + info.overallLeft; + bbox.x2 = x + info.overallRight; + bbox.y1 = y - info.overallAscent; + bbox.y2 = y + info.overallDescent; + + /* UNCLEAN CODE + we know the mfbPolyFillRect uses only three fields in + devPrivate[mfbGCPrivateIndex].ptr, two of which (the rotated + tile/stipple and the ropFillArea) are + irrelevant for solid filling, so we just poke the FillArea + field. the GC is now in an inconsistent state, but we'll fix + it as soon as PolyFillRect returns. fortunately, the server + is single threaded. + + NOTE: + if you are not using the standard mfbFillRectangle code, you + need to poke any fields in the GC the rectangle stuff need + (probably alu, fgPixel, and fillStyle) and in devPrivate[mfbGCPrivateIndex].ptr + (probably rop or ropFillArea.) You could just call ValidateGC, + but that is usually not a cheap thing to do. + */ + + oldFillArea = ((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->FillArea; + +/* pcc doesn't like this. why? + ((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->FillArea = + ((pGC->bgPixel & 1) ? mfbSolidWhiteArea : mfbSolidBlackArea); +*/ + if (pGC->bgPixel & 1) + ((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->FillArea = mfbSolidWhiteArea; + else + ((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->FillArea = mfbSolidBlackArea; + +#ifndef LOWMEMFTPT + mfbPolyFillRect(pDrawable, pGC, 1, &backrect); +#else + miPolyFillRect(pDrawable, pGC, 1, &backrect); +#endif + ((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->FillArea = oldFillArea; + + /* the faint-hearted can open their eyes now */ + switch (RECT_IN_REGION(pGC->pScreen, + ((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pCompositeClip, &bbox)) + { + case rgnOUT: + break; + case rgnIN: + pdstBase = mfbScanlineNoBankSwitch(pdstBase, x, y, widthDst); + xchar = x & PIM; + + while(nglyph--) + { + pci = *ppci; + pglyph = FONTGLYPHBITS(pglyphBase, pci); + w = pci->metrics.rightSideBearing - pci->metrics.leftSideBearing; + h = pci->metrics.ascent + pci->metrics.descent; + widthGlyph = GLYPHWIDTHBYTESPADDED(pci); + + /* start at top scanline of glyph */ + pdst = mfbScanlineDelta(pdstBase, -pci->metrics.ascent, widthDst); + + /* find correct word in scanline and x offset within it + for left edge of glyph + */ + xoff = xchar + pci->metrics.leftSideBearing; + if (xoff > PLST) + { + pdst++; + xoff &= PIM; + } + else if (xoff < 0) + { + xoff += PPW; + pdst--; + } + + if ((xoff + w) <= PPW) + { + /* glyph all in one longword */ + maskpartialbits(xoff, w, startmask); + while (h--) + { + getleftbits(pglyph, w, tmpSrc); + *pdst OPEQ (SCRRIGHT(tmpSrc, xoff) & startmask); + pglyph += widthGlyph; + mfbScanlineInc(pdst, widthDst); + } + } + else + { + /* glyph crosses longword boundary */ + maskPPWbits(xoff, w, startmask, endmask); + nFirst = PPW - xoff; + while (h--) + { + getleftbits(pglyph, w, tmpSrc); + *pdst OPEQ (SCRRIGHT(tmpSrc, xoff) & startmask); + *(pdst+1) OPEQ (SCRLEFT(tmpSrc, nFirst) & endmask); + pglyph += widthGlyph; + mfbScanlineInc(pdst, widthDst); + } + } /* glyph crosses longwords boundary */ + + /* update character origin */ + x += pci->metrics.characterWidth; + xchar += pci->metrics.characterWidth; + if (xchar > PLST) + { + xchar -= PPW; + pdstBase++; + } + else if (xchar < 0) + { + xchar += PPW; + pdstBase--; + } + ppci++; + } /* while nglyph-- */ + break; + case rgnPART: + { + TEXTPOS *ppos; + int nbox; + BoxPtr pbox; + RegionPtr cclip; + int xpos; /* x position of char origin */ + int i; + BoxRec clip; + int leftEdge, rightEdge; + int topEdge, bottomEdge; + int glyphRow; /* first row of glyph not wholly + clipped out */ + int glyphCol; /* leftmost visible column of glyph */ + int getWidth; /* bits to get from glyph */ + + if(!(ppos = (TEXTPOS *)ALLOCATE_LOCAL(nglyph * sizeof(TEXTPOS)))) + return; + + pdstBase = mfbScanlineNoBankSwitch(pdstBase, x, y, widthDst); + xpos = x; + xchar = xpos & PIM; + + for (i=0; i<nglyph; i++) + { + pci = ppci[i]; + + ppos[i].xpos = xpos; + ppos[i].xchar = xchar; + ppos[i].leftEdge = xpos + pci->metrics.leftSideBearing; + ppos[i].rightEdge = xpos + pci->metrics.rightSideBearing; + ppos[i].topEdge = y - pci->metrics.ascent; + ppos[i].bottomEdge = y + pci->metrics.descent; + ppos[i].pdstBase = pdstBase; + ppos[i].widthGlyph = GLYPHWIDTHBYTESPADDED(pci); + + xpos += pci->metrics.characterWidth; + xchar += pci->metrics.characterWidth; + if (xchar > PLST) + { + xchar &= PIM; + pdstBase++; + } + else if (xchar < 0) + { + xchar += PPW; + pdstBase--; + } + } + + cclip = ((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pCompositeClip; + pbox = REGION_RECTS(cclip); + nbox = REGION_NUM_RECTS(cclip); + + /* HACK ALERT + since we continue out of the loop below so often, it + is easier to increment pbox at the top than at the end. + don't try this at home. + */ + pbox--; + while(nbox--) + { + pbox++; + clip.x1 = max(bbox.x1, pbox->x1); + clip.y1 = max(bbox.y1, pbox->y1); + clip.x2 = min(bbox.x2, pbox->x2); + clip.y2 = min(bbox.y2, pbox->y2); + if ((clip.x2<=clip.x1) || (clip.y2<=clip.y1)) + continue; + + for(i=0; i<nglyph; i++) + { + pci = ppci[i]; + xchar = ppos[i].xchar; + + /* clip the left and right edges */ + if (ppos[i].leftEdge < clip.x1) + leftEdge = clip.x1; + else + leftEdge = ppos[i].leftEdge; + + if (ppos[i].rightEdge > clip.x2) + rightEdge = clip.x2; + else + rightEdge = ppos[i].rightEdge; + + w = rightEdge - leftEdge; + if (w <= 0) + continue; + + /* clip the top and bottom edges */ + if (ppos[i].topEdge < clip.y1) + topEdge = clip.y1; + else + topEdge = ppos[i].topEdge; + + if (ppos[i].bottomEdge > clip.y2) + bottomEdge = clip.y2; + else + bottomEdge = ppos[i].bottomEdge; + + h = bottomEdge - topEdge; + if (h <= 0) + continue; + + glyphRow = (topEdge - y) + pci->metrics.ascent; + widthGlyph = ppos[i].widthGlyph; + pglyph = FONTGLYPHBITS(pglyphBase, pci); + pglyph += (glyphRow * widthGlyph); + + pdst = mfbScanlineDelta(ppos[i].pdstBase, -(y-topEdge), widthDst); + + glyphCol = (leftEdge - ppos[i].xpos) - + (pci->metrics.leftSideBearing); + getWidth = w + glyphCol; + xoff = xchar + (leftEdge - ppos[i].xpos); + if (xoff > PLST) + { + xoff &= PIM; + pdst++; + } + else if (xoff < 0) + { + xoff += PPW; + pdst--; + } + + if ((xoff + w) <= PPW) + { + maskpartialbits(xoff, w, startmask); + while (h--) + { + getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc); + *pdst OPEQ (SCRRIGHT(tmpSrc, xoff) & startmask); + pglyph += widthGlyph; + mfbScanlineInc(pdst, widthDst); + } + } + else + { + maskPPWbits(xoff, w, startmask, endmask); + nFirst = PPW - xoff; + while (h--) + { + getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc); + *pdst OPEQ (SCRRIGHT(tmpSrc, xoff) & startmask); + *(pdst+1) OPEQ (SCRLEFT(tmpSrc, nFirst) & endmask); + pglyph += widthGlyph; + mfbScanlineInc(pdst, widthDst); + } + } + } /* for each glyph */ + } /* while nbox-- */ + DEALLOCATE_LOCAL(ppos); + break; + } + default: + break; + } +} diff --git a/mfb/mfbline.c b/mfb/mfbline.c new file mode 100644 index 000000000..70e61e6ed --- /dev/null +++ b/mfb/mfbline.c @@ -0,0 +1,750 @@ +/*********************************************************** + +Copyright 1987, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ +/* $Xorg: mfbline.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */ +#include "X.h" + +#include "gcstruct.h" +#include "windowstr.h" +#include "pixmapstr.h" +#include "regionstr.h" +#include "scrnintstr.h" +#include "mistruct.h" + +#include "mfb.h" +#include "maskbits.h" +#include "miline.h" + +/* single-pixel lines on a color frame buffer + + NON-SLOPED LINES + horizontal lines are always drawn left to right; we have to +move the endpoints right by one after they're swapped. + horizontal lines will be confined to a single band of a +region. the code finds that band (giving up if the lower +bound of the band is above the line we're drawing); then it +finds the first box in that band that contains part of the +line. we clip the line to subsequent boxes in that band. + vertical lines are always drawn top to bottom (y-increasing.) +this requires adding one to the y-coordinate of each endpoint +after swapping. + + SLOPED LINES + when clipping a sloped line, we bring the second point inside +the clipping box, rather than one beyond it, and then add 1 to +the length of the line before drawing it. this lets us use +the same box for finding the outcodes for both endpoints. since +the equation for clipping the second endpoint to an edge gives us +1 beyond the edge, we then have to move the point towards the +first point by one step on the major axis. + eventually, there will be a diagram here to explain what's going +on. the method uses Cohen-Sutherland outcodes to determine +outsideness, and a method similar to Pike's layers for doing the +actual clipping. + +*/ + +void +#ifdef POLYSEGMENT +mfbSegmentSS (pDrawable, pGC, nseg, pSeg) + DrawablePtr pDrawable; + GCPtr pGC; + int nseg; + register xSegment *pSeg; +#else +mfbLineSS (pDrawable, pGC, mode, npt, pptInit) + DrawablePtr pDrawable; + GCPtr pGC; + int mode; /* Origin or Previous */ + int npt; /* number of points */ + DDXPointPtr pptInit; +#endif +{ + int nboxInit; + register int nbox; + BoxPtr pboxInit; + register BoxPtr pbox; +#ifndef POLYSEGMENT + register DDXPointPtr ppt; /* pointer to list of translated points */ +#endif + + unsigned int oc1; /* outcode of point 1 */ + unsigned int oc2; /* outcode of point 2 */ + + PixelType *addrlBase; /* pointer to start of drawable */ + PixelType *addrl; /* address of destination pixmap */ + int nlwidth; /* width in longwords of destination pixmap */ + int xorg, yorg; /* origin of window */ + + int adx; /* abs values of dx and dy */ + int ady; + int signdx; /* sign of dx and dy */ + int signdy; + int e, e1, e2; /* bresenham error and increments */ + int len; /* length of segment */ + int axis; /* major axis */ + int octant; + unsigned int bias = miGetZeroLineBias(pDrawable->pScreen); + + /* a bunch of temporaries */ + register int y1, y2; + register int x1, x2; + RegionPtr cclip; + int alu; + + if (!(pGC->planemask & 1)) + return; + + cclip = ((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pCompositeClip; + alu = ((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->rop; + pboxInit = REGION_RECTS(cclip); + nboxInit = REGION_NUM_RECTS(cclip); + + mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrlBase); + + xorg = pDrawable->x; + yorg = pDrawable->y; +#ifdef POLYSEGMENT + while (nseg--) +#else + ppt = pptInit; + x2 = ppt->x + xorg; + y2 = ppt->y + yorg; + while(--npt) +#endif + { + nbox = nboxInit; + pbox = pboxInit; + +#ifdef POLYSEGMENT + x1 = pSeg->x1 + xorg; + y1 = pSeg->y1 + yorg; + x2 = pSeg->x2 + xorg; + y2 = pSeg->y2 + yorg; + pSeg++; +#else + x1 = x2; + y1 = y2; + ++ppt; + if (mode == CoordModePrevious) + { + xorg = x1; + yorg = y1; + } + x2 = ppt->x + xorg; + y2 = ppt->y + yorg; +#endif + + if (x1 == x2) /* vertical line */ + { + /* make the line go top to bottom of screen, keeping + endpoint semantics + */ + if (y1 > y2) + { + register int tmp; + + tmp = y2; + y2 = y1 + 1; + y1 = tmp + 1; +#ifdef POLYSEGMENT + if (pGC->capStyle != CapNotLast) + y1--; +#endif + } +#ifdef POLYSEGMENT + else if (pGC->capStyle != CapNotLast) + y2++; +#endif + /* get to first band that might contain part of line */ + while ((nbox) && (pbox->y2 <= y1)) + { + pbox++; + nbox--; + } + + if (nbox) + { + /* stop when lower edge of box is beyond end of line */ + while((nbox) && (y2 >= pbox->y1)) + { + if ((x1 >= pbox->x1) && (x1 < pbox->x2)) + { + int y1t, y2t; + /* this box has part of the line in it */ + y1t = max(y1, pbox->y1); + y2t = min(y2, pbox->y2); + if (y1t != y2t) + { + mfbVertS (alu, + addrlBase, nlwidth, + x1, y1t, y2t-y1t); + } + } + nbox--; + pbox++; + } + } +#ifndef POLYSEGMENT + y2 = ppt->y + yorg; +#endif + } + else if (y1 == y2) /* horizontal line */ + { + /* force line from left to right, keeping + endpoint semantics + */ + if (x1 > x2) + { + register int tmp; + + tmp = x2; + x2 = x1 + 1; + x1 = tmp + 1; +#ifdef POLYSEGMENT + if (pGC->capStyle != CapNotLast) + x1--; +#endif + } +#ifdef POLYSEGMENT + else if (pGC->capStyle != CapNotLast) + x2++; +#endif + + /* find the correct band */ + while( (nbox) && (pbox->y2 <= y1)) + { + pbox++; + nbox--; + } + + /* try to draw the line, if we haven't gone beyond it */ + if ((nbox) && (pbox->y1 <= y1)) + { + int tmp; + + /* when we leave this band, we're done */ + tmp = pbox->y1; + while((nbox) && (pbox->y1 == tmp)) + { + int x1t, x2t; + + if (pbox->x2 <= x1) + { + /* skip boxes until one might contain start point */ + nbox--; + pbox++; + continue; + } + + /* stop if left of box is beyond right of line */ + if (pbox->x1 >= x2) + { + nbox = 0; + break; + } + + x1t = max(x1, pbox->x1); + x2t = min(x2, pbox->x2); + if (x1t != x2t) + { + mfbHorzS (alu, + addrlBase, nlwidth, + x1t, y1, x2t-x1t); + } + nbox--; + pbox++; + } + } +#ifndef POLYSEGMENT + x2 = ppt->x + xorg; +#endif + } + else /* sloped line */ + { + CalcLineDeltas(x1, y1, x2, y2, adx, ady, signdx, signdy, + 1, 1, octant); + + if (adx > ady) + { + axis = X_AXIS; + e1 = ady << 1; + e2 = e1 - (adx << 1); + e = e1 - adx; + } + else + { + axis = Y_AXIS; + e1 = adx << 1; + e2 = e1 - (ady << 1); + e = e1 - ady; + SetYMajorOctant(octant); + } + + FIXUP_ERROR(e, octant, bias); + + /* we have bresenham parameters and two points. + all we have to do now is clip and draw. + */ + + while(nbox--) + { + oc1 = 0; + oc2 = 0; + OUTCODES(oc1, x1, y1, pbox); + OUTCODES(oc2, x2, y2, pbox); + if ((oc1 | oc2) == 0) + { + if (axis == X_AXIS) + len = adx; + else + len = ady; +#ifdef POLYSEGMENT + if (pGC->capStyle != CapNotLast) + len++; +#endif + mfbBresS (alu, + addrlBase, nlwidth, + signdx, signdy, axis, x1, y1, + e, e1, e2, len); + break; + } + else if (oc1 & oc2) + { + pbox++; + } + else + { + int new_x1 = x1, new_y1 = y1, new_x2 = x2, new_y2 = y2; + int clip1 = 0, clip2 = 0; + int clipdx, clipdy; + int err; + + if (miZeroClipLine(pbox->x1, pbox->y1, pbox->x2-1, + pbox->y2-1, + &new_x1, &new_y1, &new_x2, &new_y2, + adx, ady, &clip1, &clip2, + octant, bias, oc1, oc2) == -1) + { + pbox++; + continue; + } + + if (axis == X_AXIS) + len = abs(new_x2 - new_x1); + else + len = abs(new_y2 - new_y1); +#ifdef POLYSEGMENT + if (clip2 != 0 || pGC->capStyle != CapNotLast) + len++; +#else + len += (clip2 != 0); +#endif + if (len) + { + /* unwind bresenham error term to first point */ + if (clip1) + { + clipdx = abs(new_x1 - x1); + clipdy = abs(new_y1 - y1); + if (axis == X_AXIS) + err = e+((clipdy*e2) + ((clipdx-clipdy)*e1)); + else + err = e+((clipdx*e2) + ((clipdy-clipdx)*e1)); + } + else + err = e; + mfbBresS + (alu, + addrlBase, nlwidth, + signdx, signdy, axis, new_x1, new_y1, + err, e1, e2, len); + } + pbox++; + } + } /* while (nbox--) */ + } /* sloped line */ + } /* while (nline--) */ + +#ifndef POLYSEGMENT + + /* paint the last point if the end style isn't CapNotLast. + (Assume that a projecting, butt, or round cap that is one + pixel wide is the same as the single pixel of the endpoint.) + */ + + if ((pGC->capStyle != CapNotLast) && + ((ppt->x + xorg != pptInit->x + pDrawable->x) || + (ppt->y + yorg != pptInit->y + pDrawable->y) || + (ppt == pptInit + 1))) + { + PixelType _mask; + + if (alu == RROP_BLACK) + _mask = rmask[x2 & PIM]; + else + _mask = mask[x2 & PIM]; + + nbox = nboxInit; + pbox = pboxInit; + while (nbox--) + { + if ((x2 >= pbox->x1) && + (y2 >= pbox->y1) && + (x2 < pbox->x2) && + (y2 < pbox->y2)) + { + addrl = mfbScanline(addrlBase, x2, y2, nlwidth); + switch(alu) + { + case RROP_BLACK: + *addrl &= _mask; + break; + case RROP_WHITE: + *addrl |= _mask; + break; + case RROP_INVERT: + *addrl ^= _mask; + break; + } + break; + } + else + pbox++; + } + } +#endif +} + +/* + * Draw dashed 1-pixel lines. + */ + +void +#ifdef POLYSEGMENT +mfbSegmentSD (pDrawable, pGC, nseg, pSeg) + DrawablePtr pDrawable; + register GCPtr pGC; + int nseg; + register xSegment *pSeg; +#else +mfbLineSD( pDrawable, pGC, mode, npt, pptInit) + DrawablePtr pDrawable; + register GCPtr pGC; + int mode; /* Origin or Previous */ + int npt; /* number of points */ + DDXPointPtr pptInit; +#endif +{ + int nboxInit; + register int nbox; + BoxPtr pboxInit; + register BoxPtr pbox; +#ifndef POLYSEGMENT + register DDXPointPtr ppt; /* pointer to list of translated points */ +#endif + + register unsigned int oc1; /* outcode of point 1 */ + register unsigned int oc2; /* outcode of point 2 */ + + PixelType *addrl; /* address of destination pixmap */ + int nlwidth; /* width in longwords of destination pixmap */ + int xorg, yorg; /* origin of window */ + + int adx; /* abs values of dx and dy */ + int ady; + int signdx; /* sign of dx and dy */ + int signdy; + int e, e1, e2; /* bresenham error and increments */ + int len; /* length of segment */ + int axis; /* major axis */ + int octant; + unsigned int bias = miGetZeroLineBias(pDrawable->pScreen); + int x1, x2, y1, y2; + RegionPtr cclip; + int fgrop, bgrop; + unsigned char *pDash; + int dashOffset; + int numInDashList; + int dashIndex; + int isDoubleDash; + int dashIndexTmp, dashOffsetTmp; + int unclippedlen; + + if (!(pGC->planemask & 1)) + return; + + cclip = ((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pCompositeClip; + fgrop = ((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->rop; + pboxInit = REGION_RECTS(cclip); + nboxInit = REGION_NUM_RECTS(cclip); + + mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrl); + + /* compute initial dash values */ + + pDash = (unsigned char *) pGC->dash; + numInDashList = pGC->numInDashList; + isDoubleDash = (pGC->lineStyle == LineDoubleDash); + dashIndex = 0; + dashOffset = 0; + miStepDash ((int)pGC->dashOffset, &dashIndex, pDash, + numInDashList, &dashOffset); + + if (isDoubleDash) + bgrop = mfbReduceRop(pGC->alu, pGC->bgPixel); + + xorg = pDrawable->x; + yorg = pDrawable->y; +#ifdef POLYSEGMENT + while (nseg--) +#else + ppt = pptInit; + x2 = ppt->x + xorg; + y2 = ppt->y + yorg; + while(--npt) +#endif + { + nbox = nboxInit; + pbox = pboxInit; + +#ifdef POLYSEGMENT + x1 = pSeg->x1 + xorg; + y1 = pSeg->y1 + yorg; + x2 = pSeg->x2 + xorg; + y2 = pSeg->y2 + yorg; + pSeg++; +#else + x1 = x2; + y1 = y2; + ++ppt; + if (mode == CoordModePrevious) + { + xorg = x1; + yorg = y1; + } + x2 = ppt->x + xorg; + y2 = ppt->y + yorg; +#endif + + CalcLineDeltas(x1, y1, x2, y2, adx, ady, signdx, signdy, 1, 1, octant); + + if (adx > ady) + { + axis = X_AXIS; + e1 = ady << 1; + e2 = e1 - (adx << 1); + e = e1 - adx; + unclippedlen = adx; + } + else + { + axis = Y_AXIS; + e1 = adx << 1; + e2 = e1 - (ady << 1); + e = e1 - ady; + unclippedlen = ady; + SetYMajorOctant(octant); + } + + FIXUP_ERROR(e, octant, bias); + + /* we have bresenham parameters and two points. + all we have to do now is clip and draw. + */ + + while(nbox--) + { + oc1 = 0; + oc2 = 0; + OUTCODES(oc1, x1, y1, pbox); + OUTCODES(oc2, x2, y2, pbox); + if ((oc1 | oc2) == 0) + { +#ifdef POLYSEGMENT + if (pGC->capStyle != CapNotLast) + unclippedlen++; + dashIndexTmp = dashIndex; + dashOffsetTmp = dashOffset; + mfbBresD (fgrop, bgrop, + &dashIndexTmp, pDash, numInDashList, + &dashOffsetTmp, isDoubleDash, + addrl, nlwidth, + signdx, signdy, axis, x1, y1, + e, e1, e2, unclippedlen); + break; +#else + mfbBresD (fgrop, bgrop, + &dashIndex, pDash, numInDashList, + &dashOffset, isDoubleDash, + addrl, nlwidth, + signdx, signdy, axis, x1, y1, + e, e1, e2, unclippedlen); + goto dontStep; +#endif + } + else if (oc1 & oc2) + { + pbox++; + } + else /* have to clip */ + { + int new_x1 = x1, new_y1 = y1, new_x2 = x2, new_y2 = y2; + int clip1 = 0, clip2 = 0; + int clipdx, clipdy; + int err; + + if (miZeroClipLine(pbox->x1, pbox->y1, pbox->x2-1, pbox->y2-1, + &new_x1, &new_y1, &new_x2, &new_y2, + adx, ady, &clip1, &clip2, + octant, bias, oc1, oc2) == -1) + { + pbox++; + continue; + } + dashIndexTmp = dashIndex; + dashOffsetTmp = dashOffset; + if (clip1) + { + int dlen; + + if (axis == X_AXIS) + dlen = abs(new_x1 - x1); + else + dlen = abs(new_y1 - y1); + miStepDash (dlen, &dashIndexTmp, pDash, + numInDashList, &dashOffsetTmp); + } + if (axis == X_AXIS) + len = abs(new_x2 - new_x1); + else + len = abs(new_y2 - new_y1); +#ifdef POLYSEGMENT + if (clip2 != 0 || pGC->capStyle != CapNotLast) + len++; +#else + len += (clip2 != 0); +#endif + if (len) + { + /* unwind bresenham error term to first point */ + if (clip1) + { + clipdx = abs(new_x1 - x1); + clipdy = abs(new_y1 - y1); + if (axis == X_AXIS) + err = e+((clipdy*e2) + ((clipdx-clipdy)*e1)); + else + err = e+((clipdx*e2) + ((clipdy-clipdx)*e1)); + } + else + err = e; + mfbBresD (fgrop, bgrop, + &dashIndexTmp, pDash, numInDashList, + &dashOffsetTmp, isDoubleDash, + addrl, nlwidth, + signdx, signdy, axis, new_x1, new_y1, + err, e1, e2, len); + } + pbox++; + } + } /* while (nbox--) */ +#ifndef POLYSEGMENT + /* + * walk the dash list around to the next line + */ + miStepDash (unclippedlen, &dashIndex, pDash, + numInDashList, &dashOffset); +dontStep: ; +#endif + } /* while (nline--) */ + +#ifndef POLYSEGMENT + /* paint the last point if the end style isn't CapNotLast. + (Assume that a projecting, butt, or round cap that is one + pixel wide is the same as the single pixel of the endpoint.) + */ + + if ((pGC->capStyle != CapNotLast) && + ((dashIndex & 1) == 0 || isDoubleDash) && + ((ppt->x + xorg != pptInit->x + pDrawable->x) || + (ppt->y + yorg != pptInit->y + pDrawable->y) || + (ppt == pptInit + 1))) + { + nbox = nboxInit; + pbox = pboxInit; + while (nbox--) + { + if ((x2 >= pbox->x1) && + (y2 >= pbox->y1) && + (x2 < pbox->x2) && + (y2 < pbox->y2)) + { + unsigned long _mask; + int rop; + + rop = fgrop; + if (dashIndex & 1) + rop = bgrop; + if (rop == RROP_BLACK) + _mask = rmask[x2 & PIM]; + else + _mask = mask[x2 & PIM]; + addrl = mfbScanline(addrl, x2, y2, nlwidth); + if (rop == RROP_BLACK) + *addrl &= _mask; + else if (rop == RROP_WHITE) + *addrl |= _mask; + else + *addrl ^= _mask; + break; + } + else + pbox++; + } + } +#endif +} diff --git a/mfb/mfbmisc.c b/mfb/mfbmisc.c new file mode 100644 index 000000000..67cbf6fc6 --- /dev/null +++ b/mfb/mfbmisc.c @@ -0,0 +1,91 @@ +/*********************************************************** + +Copyright 1987, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ +/* $Xorg: mfbmisc.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */ +#include "X.h" +#include "misc.h" +#include "cursor.h" +#include "scrnintstr.h" + +#include "mfb.h" + +/*ARGSUSED*/ +void +mfbQueryBestSize(class, pwidth, pheight, pScreen) +int class; +unsigned short *pwidth; +unsigned short *pheight; +ScreenPtr pScreen; +{ + unsigned width, test; + + switch(class) + { + case CursorShape: + if (*pwidth > pScreen->width) + *pwidth = pScreen->width; + if (*pheight > pScreen->height) + *pheight = pScreen->height; + break; + case TileShape: + case StippleShape: + width = *pwidth; + if (!width) break; + /* Return the closes power of two not less than what they gave me */ + test = 0x80000000; + /* Find the highest 1 bit in the width given */ + while(!(test & width)) + test >>= 1; + /* If their number is greater than that, bump up to the next + * power of two */ + if((test - 1) & width) + test <<= 1; + *pwidth = test; + /* We don't care what height they use */ + break; + } +} + diff --git a/mfb/mfbpixmap.c b/mfb/mfbpixmap.c new file mode 100644 index 000000000..b6ff40292 --- /dev/null +++ b/mfb/mfbpixmap.c @@ -0,0 +1,294 @@ +/*********************************************************** + +Copyright 1987, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ +/* $Xorg: mfbpixmap.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */ + +/* pixmap management + written by drewry, september 1986 + + on a monchrome device, a pixmap is a bitmap. +*/ + +#include "Xmd.h" +#include "scrnintstr.h" +#include "pixmapstr.h" +#include "maskbits.h" + +#include "mfb.h" +#include "mi.h" + +#include "servermd.h" + +#ifndef LOWMEMFTPT + +PixmapPtr +mfbCreatePixmap (pScreen, width, height, depth) + ScreenPtr pScreen; + int width; + int height; + int depth; +{ + PixmapPtr pPixmap; + int datasize; + int paddedWidth; + + if (depth != 1) + return NullPixmap; + paddedWidth = BitmapBytePad(width); + datasize = height * paddedWidth; + pPixmap = AllocatePixmap(pScreen, datasize); + if (!pPixmap) + return NullPixmap; + pPixmap->drawable.type = DRAWABLE_PIXMAP; + pPixmap->drawable.class = 0; + pPixmap->drawable.pScreen = pScreen; + pPixmap->drawable.depth = depth; + pPixmap->drawable.bitsPerPixel = depth; + pPixmap->drawable.id = 0; + pPixmap->drawable.serialNumber = NEXT_SERIAL_NUMBER; + pPixmap->drawable.x = 0; + pPixmap->drawable.y = 0; + pPixmap->drawable.width = width; + pPixmap->drawable.height = height; + pPixmap->devKind = paddedWidth; + pPixmap->refcnt = 1; +#ifdef PIXPRIV + pPixmap->devPrivate.ptr = datasize ? + (pointer)((char *)pPixmap + pScreen->totalPixmapSize) : NULL; +#else + pPixmap->devPrivate.ptr = (pointer)(pPixmap + 1); +#endif + return pPixmap; +} + +#endif /* ifndef LOWMEMFTPT */ + +Bool +mfbDestroyPixmap(pPixmap) + PixmapPtr pPixmap; +{ + if(--pPixmap->refcnt) + return TRUE; + xfree(pPixmap); + return TRUE; +} + + +PixmapPtr +mfbCopyPixmap(pSrc) + register PixmapPtr pSrc; +{ + register PixmapPtr pDst; + int size; + ScreenPtr pScreen; + + size = pSrc->drawable.height * pSrc->devKind; + pScreen = pSrc->drawable.pScreen; + pDst = (*pScreen->CreatePixmap) (pScreen, pSrc->drawable.width, + pSrc->drawable.height, pSrc->drawable.depth); + if (!pDst) + return NullPixmap; + memmove((char *)pDst->devPrivate.ptr, (char *)pSrc->devPrivate.ptr, size); + return pDst; +} + + +/* replicates a pattern to be a full 32 bits wide. + relies on the fact that each scnaline is longword padded. + doesn't do anything if pixmap is not a factor of 32 wide. + changes width field of pixmap if successful, so that the fast + XRotatePixmap code gets used if we rotate the pixmap later. + + calculate number of times to repeat + for each scanline of pattern + zero out area to be filled with replicate + left shift and or in original as many times as needed +*/ +void +mfbPadPixmap(pPixmap) + PixmapPtr pPixmap; +{ + register int width = pPixmap->drawable.width; + register int h; + register PixelType mask; + register PixelType *p; + register PixelType bits; /* real pattern bits */ + register int i; + int rep; /* repeat count for pattern */ + + if (width >= PPW) + return; + + rep = PPW/width; + if (rep*width != PPW) + return; + + mask = endtab[width]; + + p = (PixelType *)(pPixmap->devPrivate.ptr); + for (h=0; h < pPixmap->drawable.height; h++) + { + *p &= mask; + bits = *p; + for(i=1; i<rep; i++) + { + bits = SCRRIGHT(bits, width); + *p |= bits; + } + p++; + } + pPixmap->drawable.width = PPW; +} + +/* Rotates pixmap pPix by w pixels to the right on the screen. Assumes that + * words are PPW bits wide, and that the least significant bit appears on the + * left. + */ +void +mfbXRotatePixmap(pPix, rw) + PixmapPtr pPix; + register int rw; +{ + register PixelType *pw, *pwFinal; + register PixelType t; + + if (pPix == NullPixmap) + return; + + pw = (PixelType *)pPix->devPrivate.ptr; + rw %= (int)pPix->drawable.width; + if (rw < 0) + rw += (int)pPix->drawable.width; + if(pPix->drawable.width == PPW) + { + pwFinal = pw + pPix->drawable.height; + while(pw < pwFinal) + { + t = *pw; + *pw++ = SCRRIGHT(t, rw) | + (SCRLEFT(t, (PPW-rw)) & endtab[rw]); + } + } + else + { + /* We no longer do this. Validate doesn't try to rotate odd-size + * tiles or stipples. mfbUnnatural<tile/stipple>FS works directly off + * the unrotate tile/stipple in the GC + */ + ErrorF("X internal error: trying to rotate odd-sized pixmap.\n"); + } + +} + +/* Rotates pixmap pPix by h lines. Assumes that h is always less than + pPix->height + works on any width. + */ +void +mfbYRotatePixmap(pPix, rh) + register PixmapPtr pPix; + int rh; +{ + int nbyDown; /* bytes to move down to row 0; also offset of + row rh */ + int nbyUp; /* bytes to move up to line rh; also + offset of first line moved down to 0 */ + char *pbase; + char *ptmp; + int height; + + if (pPix == NullPixmap) + return; + height = (int) pPix->drawable.height; + rh %= height; + if (rh < 0) + rh += height; + + pbase = (char *)pPix->devPrivate.ptr; + + nbyDown = rh * pPix->devKind; + nbyUp = (pPix->devKind * height) - nbyDown; + if(!(ptmp = (char *)ALLOCATE_LOCAL(nbyUp))) + return; + + memmove(ptmp, pbase, nbyUp); /* save the low rows */ + memmove(pbase, pbase+nbyUp, nbyDown); /* slide the top rows down */ + memmove(pbase+nbyDown, ptmp, nbyUp); /* move lower rows up to row rh */ + DEALLOCATE_LOCAL(ptmp); +} + +void +mfbCopyRotatePixmap(psrcPix, ppdstPix, xrot, yrot) + register PixmapPtr psrcPix, *ppdstPix; + int xrot, yrot; +{ + register PixmapPtr pdstPix; + + if ((pdstPix = *ppdstPix) && + (pdstPix->devKind == psrcPix->devKind) && + (pdstPix->drawable.height == psrcPix->drawable.height)) + { + memmove((char *)pdstPix->devPrivate.ptr, + (char *)psrcPix->devPrivate.ptr, + psrcPix->drawable.height * psrcPix->devKind); + pdstPix->drawable.width = psrcPix->drawable.width; + pdstPix->drawable.serialNumber = NEXT_SERIAL_NUMBER; + } + else + { + if (pdstPix) + /* FIX XBUG 6168 */ + (*pdstPix->drawable.pScreen->DestroyPixmap)(pdstPix); + *ppdstPix = pdstPix = mfbCopyPixmap(psrcPix); + if (!pdstPix) + return; + } + mfbPadPixmap(pdstPix); + if (xrot) + mfbXRotatePixmap(pdstPix, xrot); + if (yrot) + mfbYRotatePixmap(pdstPix, yrot); +} diff --git a/mfb/mfbply1rct.c b/mfb/mfbply1rct.c new file mode 100644 index 000000000..5cb81df53 --- /dev/null +++ b/mfb/mfbply1rct.c @@ -0,0 +1,255 @@ +/* + * $Xorg: mfbply1rct.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ + * +Copyright 1990, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + * + * Author: Keith Packard, MIT X Consortium + */ + +#include "X.h" + +#include "gcstruct.h" +#include "windowstr.h" +#include "pixmapstr.h" +#include "regionstr.h" +#include "scrnintstr.h" +#include "mistruct.h" + +#include "mfb.h" +#include "maskbits.h" + +#if defined(mips) || defined(sparc) +#define GetHighWord(x) (((int) (x)) >> 16) +#else +#define GetHighWord(x) (((int) (x)) / 65536) +#endif + +#if IMAGE_BYTE_ORDER == MSBFirst +#define intToCoord(i,x,y) (((x) = GetHighWord(i)), ((y) = (int) ((short) (i)))) +#define coordToInt(x,y) (((x) << 16) | (y)) +#define intToX(i) (GetHighWord(i)) +#define intToY(i) ((int) ((short) i)) +#else +#define intToCoord(i,x,y) (((x) = (int) ((short) (i))), ((y) = GetHighWord(i))) +#define coordToInt(x,y) (((y) << 16) | (x)) +#define intToX(i) ((int) ((short) (i))) +#define intToY(i) (GetHighWord(i)) +#endif + +void +MFBFILLPOLY1RECT (pDrawable, pGC, shape, mode, count, ptsIn) + DrawablePtr pDrawable; + GCPtr pGC; + int count; + DDXPointPtr ptsIn; +{ + mfbPrivGCPtr devPriv; + int nlwidth; + PixelType *addrl, *addr; + int maxy; + int origin; + register int vertex1, vertex2; + int c; + BoxPtr extents; + int clip; + int y; + int *vertex1p, *vertex2p; + int *endp; + int x1, x2; + int dx1, dx2; + int dy1, dy2; + int e1, e2; + int step1, step2; + int sign1, sign2; + int h; + int l, r; + PixelType mask, bits = ~((PixelType)0); + int nmiddle; + + devPriv = (mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr); + if (mode == CoordModePrevious || shape != Convex || + REGION_NUM_RECTS(devPriv->pCompositeClip) != 1) + { + miFillPolygon (pDrawable, pGC, shape, mode, count, ptsIn); + return; + } + origin = *((int *) &pDrawable->x); + vertex2 = origin - ((origin & 0x8000) << 1); + extents = &devPriv->pCompositeClip->extents; + vertex1 = *((int *) &extents->x1) - vertex2; + vertex2 = *((int *) &extents->x2) - vertex2 - 0x00010001; + clip = 0; + y = 32767; + maxy = 0; + vertex2p = (int *) ptsIn; + endp = vertex2p + count; + while (count--) + { + c = *vertex2p; + clip |= (c - vertex1) | (vertex2 - c); + c = intToY(c); + if (c < y) + { + y = c; + vertex1p = vertex2p; + } + vertex2p++; + if (c > maxy) + maxy = c; + } + if (y == maxy) + return; + + if (clip & 0x80008000) + { + miFillPolygon (pDrawable, pGC, shape, mode, vertex2p - (int *) ptsIn, ptsIn); + return; + } + + mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrl); + addrl = mfbScanlineDelta(addrl, y + pDrawable->y, nlwidth); + origin = intToX(origin); + vertex2p = vertex1p; + vertex2 = vertex1 = *vertex2p++; + if (vertex2p == endp) + vertex2p = (int *) ptsIn; +#define Setup(c,x,vertex,dx,dy,e,sign,step) {\ + x = intToX(vertex); \ + if (dy = intToY(c) - y) { \ + dx = intToX(c) - x; \ + step = 0; \ + if (dx >= 0) \ + { \ + e = 0; \ + sign = 1; \ + if (dx >= dy) {\ + step = dx / dy; \ + dx = dx % dy; \ + } \ + } \ + else \ + { \ + e = 1 - dy; \ + sign = -1; \ + dx = -dx; \ + if (dx >= dy) { \ + step = - (dx / dy); \ + dx = dx % dy; \ + } \ + } \ + } \ + x += origin; \ + vertex = c; \ +} + +#define Step(x,dx,dy,e,sign,step) {\ + x += step; \ + if ((e += dx) > 0) \ + { \ + x += sign; \ + e -= dy; \ + } \ +} + for (;;) + { + if (y == intToY(vertex1)) + { + do + { + if (vertex1p == (int *) ptsIn) + vertex1p = endp; + c = *--vertex1p; + Setup (c,x1,vertex1,dx1,dy1,e1,sign1,step1) + } while (y >= intToY(vertex1)); + h = dy1; + } + else + { + Step(x1,dx1,dy1,e1,sign1,step1) + h = intToY(vertex1) - y; + } + if (y == intToY(vertex2)) + { + do + { + c = *vertex2p++; + if (vertex2p == endp) + vertex2p = (int *) ptsIn; + Setup (c,x2,vertex2,dx2,dy2,e2,sign2,step2) + } while (y >= intToY(vertex2)); + if (dy2 < h) + h = dy2; + } + else + { + Step(x2,dx2,dy2,e2,sign2,step2) + if ((c = (intToY(vertex2) - y)) < h) + h = c; + } + /* fill spans for this segment */ + y += h; + for (;;) + { + l = x1; + r = x2; + nmiddle = x2 - x1; + if (nmiddle < 0) + { + nmiddle = -nmiddle; + l = x2; + r = x1; + } + c = l & PIM; + l -= c; + l = l >> PWSH; + addr = addrl + l; + if (c + nmiddle < PPW) + { + mask = SCRRIGHT (bits,c) ^ SCRRIGHT (bits,c+nmiddle); + *addr OPEQ mask; + } + else + { + if (c) + { + mask = SCRRIGHT(bits, c); + *addr OPEQ mask; + nmiddle += c - PPW; + addr++; + } + nmiddle >>= PWSH; + Duff (nmiddle, *addr++ EQWHOLEWORD) + if (mask = ~SCRRIGHT(bits, r & PIM)) + *addr OPEQ mask; + } + if (!--h) + break; + mfbScanlineInc(addrl, nlwidth); + Step(x1,dx1,dy1,e1,sign1,step1) + Step(x2,dx2,dy2,e2,sign2,step2) + } + if (y == maxy) + break; + mfbScanlineInc(addrl, nlwidth); + } +} diff --git a/mfb/mfbplygblt.c b/mfb/mfbplygblt.c new file mode 100644 index 000000000..f8931b5c2 --- /dev/null +++ b/mfb/mfbplygblt.c @@ -0,0 +1,387 @@ +/*********************************************************** + +Copyright 1987, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ +/* $Xorg: mfbplygblt.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */ + +#include "X.h" +#include "Xmd.h" +#include "Xproto.h" +#include "mfb.h" +#include "fontstruct.h" +#include "dixfontstr.h" +#include "gcstruct.h" +#include "windowstr.h" +#include "pixmapstr.h" +#include "scrnintstr.h" +#include "regionstr.h" +#include "maskbits.h" +#include "miscstruct.h" + +/* + we should eventually special-case fixed-width fonts, although +its more important for ImageText, which is meant for terminal +emulators. + + this works for fonts with glyphs <= 32 bits wide. + + the clipping calculations are done for worst-case fonts. +we make no assumptions about the heights, widths, or bearings +of the glyphs. if we knew that the glyphs are all the same height, +we could clip the tops and bottoms per clipping box, rather +than per character per clipping box. if we knew that the glyphs' +left and right bearings were well-behaved, we could clip a single +character at the start, output until the last unclipped +character, and then clip the last one. this is all straightforward +to determine based on max-bounds and min-bounds from the font. + there is some inefficiency introduced in the per-character +clipping to make what's going on clearer. + + (it is possible, for example, for a font to be defined in which the +next-to-last character in a font would be clipped out, but the last +one wouldn't. the code below deals with this.) + + PolyText looks at the fg color and the rasterop; mfbValidateGC +swaps in the right routine after looking at the reduced ratserop +in the private field of the GC. + + the register allocations are provisional; in particualr startmask and +endmask might not be the right things. pglyph, xoff, pdst, and tmpSrc +are fairly obvious, though. + + to avoid source proliferation, this file is compiled +three times: + MFBPOLYGLYPHBLT OPEQ + mfbPolyGlyphBltWhite |= + mfbPolyGlyphBltBlack &=~ + mfbPolyGlyphBltInvert ^= +*/ + +void +MFBPOLYGLYPHBLT(pDrawable, pGC, x, y, nglyph, ppci, pglyphBase) + DrawablePtr pDrawable; + GCPtr pGC; + int x, y; + unsigned int nglyph; + CharInfoPtr *ppci; /* array of character info */ + pointer pglyphBase; /* start of array of glyphs (unused in R5) */ +{ + ExtentInfoRec info; /* used by QueryGlyphExtents() */ + BoxRec bbox; /* string's bounding box */ + + CharInfoPtr pci; + int xorg, yorg; /* origin of drawable in bitmap */ + int widthDst; /* width of dst in longwords */ + + /* these keep track of the character origin */ + PixelType *pdstBase; + /* points to longword with character origin */ + int xchar; /* xorigin of char (mod 32) */ + + /* these are used for placing the glyph */ + register int xoff; /* x offset of left edge of glyph (mod 32) */ + register PixelType *pdst; + /* pointer to current longword in dst */ + + int w; /* width of glyph in bits */ + int h; /* height of glyph */ + int widthGlyph; /* width of glyph, in bytes */ + register unsigned char *pglyph; + /* pointer to current row of glyph */ + + /* used for putting down glyph */ + register PixelType tmpSrc; + /* for getting bits from glyph */ + register PixelType startmask; + register PixelType endmask; + register int nFirst;/* bits of glyph in current longword */ + + if (!(pGC->planemask & 1)) + return; + + xorg = pDrawable->x; + yorg = pDrawable->y; + mfbGetPixelWidthAndPointer(pDrawable, widthDst, pdstBase); + + x += xorg; + y += yorg; + + QueryGlyphExtents(pGC->font, ppci, (unsigned long)nglyph, &info); + bbox.x1 = x + info.overallLeft; + bbox.x2 = x + info.overallRight; + bbox.y1 = y - info.overallAscent; + bbox.y2 = y + info.overallDescent; + + switch (RECT_IN_REGION(pGC->pScreen, + ((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pCompositeClip, &bbox)) + { + case rgnOUT: + break; + case rgnIN: + pdstBase = mfbScanlineNoBankSwitch(pdstBase, x, y, widthDst); + xchar = x & PIM; + + while(nglyph--) + { + pci = *ppci; + pglyph = FONTGLYPHBITS(pglyphBase, pci); + w = pci->metrics.rightSideBearing - pci->metrics.leftSideBearing; + h = pci->metrics.ascent + pci->metrics.descent; + widthGlyph = GLYPHWIDTHBYTESPADDED(pci); + + /* start at top scanline of glyph */ + pdst = mfbScanlineDelta(pdstBase, -pci->metrics.ascent, widthDst); + + /* find correct word in scanline and x offset within it + for left edge of glyph + */ + xoff = xchar + pci->metrics.leftSideBearing; + if (xoff > PLST) + { + pdst++; + xoff &= PIM; + } + else if (xoff < 0) + { + xoff += PPW; + pdst--; + } + + if ((xoff + w) <= PPW) + { + /* glyph all in one longword */ + maskpartialbits(xoff, w, startmask); + while (h--) + { + getleftbits(pglyph, w, tmpSrc); + *pdst OPEQ (SCRRIGHT(tmpSrc, xoff) & startmask); + pglyph += widthGlyph; + mfbScanlineInc(pdst, widthDst); + } + } + else + { + /* glyph crosses longword boundary */ + maskPPWbits(xoff, w, startmask, endmask); + nFirst = PPW - xoff; + while (h--) + { + getleftbits(pglyph, w, tmpSrc); + *pdst OPEQ (SCRRIGHT(tmpSrc, xoff) & startmask); + *(pdst+1) OPEQ (SCRLEFT(tmpSrc, nFirst) & endmask); + pglyph += widthGlyph; + mfbScanlineInc(pdst, widthDst); + } + } /* glyph crosses longwords boundary */ + + /* update character origin */ + x += pci->metrics.characterWidth; + xchar += pci->metrics.characterWidth; + if (xchar > PLST) + { + xchar -= PPW; + pdstBase++; + } + else if (xchar < 0) + { + xchar += PPW; + pdstBase--; + } + ppci++; + } /* while nglyph-- */ + break; + case rgnPART: + { + TEXTPOS *ppos; + RegionPtr cclip; + int nbox; + BoxPtr pbox; + int xpos; /* x position of char origin */ + int i; + BoxRec clip; + int leftEdge, rightEdge; + int topEdge, bottomEdge; + int glyphRow; /* first row of glyph not wholly + clipped out */ + int glyphCol; /* leftmost visible column of glyph */ + int getWidth; /* bits to get from glyph */ + + if(!(ppos = (TEXTPOS *)ALLOCATE_LOCAL(nglyph * sizeof(TEXTPOS)))) + return; + + pdstBase = mfbScanlineNoBankSwitch(pdstBase, x, y, widthDst); + xpos = x; + xchar = xpos & PIM; + + for (i=0; i<nglyph; i++) + { + pci = ppci[i]; + + ppos[i].xpos = xpos; + ppos[i].xchar = xchar; + ppos[i].leftEdge = xpos + pci->metrics.leftSideBearing; + ppos[i].rightEdge = xpos + pci->metrics.rightSideBearing; + ppos[i].topEdge = y - pci->metrics.ascent; + ppos[i].bottomEdge = y + pci->metrics.descent; + ppos[i].pdstBase = pdstBase; + ppos[i].widthGlyph = GLYPHWIDTHBYTESPADDED(pci); + + xpos += pci->metrics.characterWidth; + xchar += pci->metrics.characterWidth; + if (xchar > PLST) + { + xchar &= PIM; + pdstBase++; + } + else if (xchar < 0) + { + xchar += PPW; + pdstBase--; + } + } + + cclip = ((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pCompositeClip; + pbox = REGION_RECTS(cclip); + nbox = REGION_NUM_RECTS(cclip); + + for (; --nbox >= 0; pbox++) + { + clip.x1 = max(bbox.x1, pbox->x1); + clip.y1 = max(bbox.y1, pbox->y1); + clip.x2 = min(bbox.x2, pbox->x2); + clip.y2 = min(bbox.y2, pbox->y2); + if ((clip.x2<=clip.x1) || (clip.y2<=clip.y1)) + continue; + + for(i=0; i<nglyph; i++) + { + pci = ppci[i]; + xchar = ppos[i].xchar; + + /* clip the left and right edges */ + if (ppos[i].leftEdge < clip.x1) + leftEdge = clip.x1; + else + leftEdge = ppos[i].leftEdge; + + if (ppos[i].rightEdge > clip.x2) + rightEdge = clip.x2; + else + rightEdge = ppos[i].rightEdge; + + w = rightEdge - leftEdge; + if (w <= 0) + continue; + + /* clip the top and bottom edges */ + if (ppos[i].topEdge < clip.y1) + topEdge = clip.y1; + else + topEdge = ppos[i].topEdge; + + if (ppos[i].bottomEdge > clip.y2) + bottomEdge = clip.y2; + else + bottomEdge = ppos[i].bottomEdge; + + h = bottomEdge - topEdge; + if (h <= 0) + continue; + + glyphRow = (topEdge - y) + pci->metrics.ascent; + widthGlyph = ppos[i].widthGlyph; + pglyph = FONTGLYPHBITS(pglyphBase, pci); + pglyph += (glyphRow * widthGlyph); + + pdst = mfbScanlineDelta(ppos[i].pdstBase, -(y-topEdge), widthDst); + + glyphCol = (leftEdge - ppos[i].xpos) - + (pci->metrics.leftSideBearing); + getWidth = w + glyphCol; + xoff = xchar + (leftEdge - ppos[i].xpos); + if (xoff > PLST) + { + xoff &= PIM; + pdst++; + } + else if (xoff < 0) + { + xoff += PPW; + pdst--; + } + + if ((xoff + w) <= PPW) + { + maskpartialbits(xoff, w, startmask); + while (h--) + { + getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc); + *pdst OPEQ (SCRRIGHT(tmpSrc, xoff) & startmask); + pglyph += widthGlyph; + mfbScanlineInc(pdst, widthDst); + } + } + else + { + maskPPWbits(xoff, w, startmask, endmask); + nFirst = PPW - xoff; + while (h--) + { + getshiftedleftbits(pglyph, glyphCol, getWidth, tmpSrc); + *pdst OPEQ (SCRRIGHT(tmpSrc, xoff) & startmask); + *(pdst+1) OPEQ (SCRLEFT(tmpSrc, nFirst) & endmask); + pglyph += widthGlyph; + mfbScanlineInc(pdst, widthDst); + } + } + } /* for each glyph */ + } /* while nbox-- */ + DEALLOCATE_LOCAL(ppos); + break; + } + default: + break; + } +} diff --git a/mfb/mfbpntarea.c b/mfb/mfbpntarea.c new file mode 100644 index 000000000..6b45d3f48 --- /dev/null +++ b/mfb/mfbpntarea.c @@ -0,0 +1,296 @@ +/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */ +/*********************************************************** + +Copyright 1987, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ +/* $Xorg: mfbpntarea.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */ +#include "X.h" + +#include "windowstr.h" +#include "regionstr.h" +#include "pixmapstr.h" +#include "scrnintstr.h" + +#include "mfb.h" +#include "maskbits.h" + +/* + the solid fillers are called for rectangles and window backgrounds. + the boxes are already translated. + maybe this should always take a pixmap instead of a drawable? + + NOTE: + iy = ++iy < tileHeight ? iy : 0 +is equivalent to iy%= tileheight, and saves a division. +*/ + +/* + MFBSOLIDFILLAREA OPEQ EQWHOLEOWRD + mfbSolidWhiteArea |= = ~0 + mfbSolidBlackArea &=~ = 0 + mfbSolidInvertArea ^= ^= ~0 + +EQWHOLEWORD is used to write whole longwords. it could use OPEQ, +but *p++ |= ~0 on at least two compilers generates much +worse code than *p++ = ~0. similarly for *p++ &= ~~0 +and *p++ = 0. + +*/ + +/*ARGSUSED*/ +void +MFBSOLIDFILLAREA(pDraw, nbox, pbox, alu, nop) + DrawablePtr pDraw; + int nbox; + BoxPtr pbox; + int alu; + PixmapPtr nop; +{ + int nlwidth; /* width in longwords of the drawable */ + int w; /* width of current box */ + register int h; /* height of current box */ + register PixelType *p; /* pointer to bits we're writing */ + register int nlw; /* loop version of nlwMiddle */ + register PixelType startmask; + register PixelType endmask;/* masks for reggedy bits at either end of line */ + register int nlwExtra; + /* to get from right of box to left of next span */ + int nlwMiddle; /* number of longwords between sides of boxes */ + PixelType *pbits; /* pointer to start of drawable */ + + mfbGetPixelWidthAndPointer(pDraw, nlwidth, pbits); + + while (nbox--) + { + w = pbox->x2 - pbox->x1; + h = pbox->y2 - pbox->y1; + p = mfbScanline(pbits, pbox->x1, pbox->y1, nlwidth); + + if ( ((pbox->x1 & PIM) + w) < PPW) + { + maskpartialbits(pbox->x1, w, startmask); + nlwExtra = nlwidth; + Duff(h, *p OPEQ startmask; mfbScanlineInc(p, nlwExtra)); + } + else + { + maskbits(pbox->x1, w, startmask, endmask, nlwMiddle); + nlwExtra = nlwidth - nlwMiddle; + + if (startmask && endmask) + { + nlwExtra -= 1; + while (h--) + { + nlw = nlwMiddle; + *p OPEQ startmask; + p++; + Duff(nlw, *p++ EQWHOLEWORD); + *p OPEQ endmask; + mfbScanlineInc(p, nlwExtra); + } + } + else if (startmask && !endmask) + { + nlwExtra -= 1; + while (h--) + { + nlw = nlwMiddle; + *p OPEQ startmask; + p++; + Duff(nlw, *p++ EQWHOLEWORD); + mfbScanlineInc(p, nlwExtra); + } + } + else if (!startmask && endmask) + { + while (h--) + { + nlw = nlwMiddle; + Duff(nlw, *p++ EQWHOLEWORD); + *p OPEQ endmask; + mfbScanlineInc(p, nlwExtra); + } + } + else /* no ragged bits at either end */ + { + while (h--) + { + nlw = nlwMiddle; + Duff(nlw, *p++ EQWHOLEWORD); + mfbScanlineInc(p, nlwExtra); + } + } + } + pbox++; + } +} + + + +/* stipple a list of boxes + +you can use the reduced rasterop for stipples. if rrop is +black, AND the destination with (not stipple pattern). if rrop is +white OR the destination with the stipple pattern. if rrop is invert, +XOR the destination with the stipple pattern. + + MFBSTIPPLEFILLAREA OPEQ + mfbStippleWhiteArea |= + mfbStippleBlackArea &=~ + mfbStippleInveryArea ^= +*/ + +/*ARGSUSED*/ +void +MFBSTIPPLEFILLAREA(pDraw, nbox, pbox, alu, pstipple) + DrawablePtr pDraw; + int nbox; + BoxPtr pbox; + int alu; + PixmapPtr pstipple; +{ + register PixelType *psrc; + /* pointer to bits in tile, if needed */ + int tileHeight; /* height of the tile */ + register PixelType srcpix; + + int nlwidth; /* width in longwords of the drawable */ + int w; /* width of current box */ + register int nlw; /* loop version of nlwMiddle */ + register PixelType *p; /* pointer to bits we're writing */ + register int h; /* height of current box */ + PixelType startmask; + PixelType endmask; /* masks for reggedy bits at either end of line */ + int nlwMiddle; /* number of longwords between sides of boxes */ + int nlwExtra; /* to get from right of box to left of next span */ + register int iy; /* index of current scanline in tile */ + PixelType *pbits; /* pointer to start of drawable */ + + mfbGetPixelWidthAndPointer(pDraw, nlwidth, pbits); + + tileHeight = pstipple->drawable.height; + psrc = (PixelType *)(pstipple->devPrivate.ptr); + + while (nbox--) + { + w = pbox->x2 - pbox->x1; + h = pbox->y2 - pbox->y1; + iy = pbox->y1 % tileHeight; + p = mfbScanline(pbits, pbox->x1, pbox->y1, nlwidth); + + if ( ((pbox->x1 & PIM) + w) < PPW) + { + maskpartialbits(pbox->x1, w, startmask); + nlwExtra = nlwidth; + while (h--) + { + srcpix = psrc[iy]; + iy = ++iy < tileHeight ? iy : 0; + *p OPEQ (srcpix & startmask); + mfbScanlineInc(p, nlwExtra); + } + } + else + { + maskbits(pbox->x1, w, startmask, endmask, nlwMiddle); + nlwExtra = nlwidth - nlwMiddle; + + if (startmask && endmask) + { + nlwExtra -= 1; + while (h--) + { + srcpix = psrc[iy]; + iy = ++iy < tileHeight ? iy : 0; + nlw = nlwMiddle; + *p OPEQ (srcpix & startmask); + p++; + Duff (nlw, *p++ OPEQ srcpix); + *p OPEQ (srcpix & endmask); + mfbScanlineInc(p, nlwExtra); + } + } + else if (startmask && !endmask) + { + nlwExtra -= 1; + while (h--) + { + srcpix = psrc[iy]; + iy = ++iy < tileHeight ? iy : 0; + nlw = nlwMiddle; + *p OPEQ (srcpix & startmask); + p++; + Duff(nlw, *p++ OPEQ srcpix); + mfbScanlineInc(p, nlwExtra); + } + } + else if (!startmask && endmask) + { + while (h--) + { + srcpix = psrc[iy]; + iy = ++iy < tileHeight ? iy : 0; + nlw = nlwMiddle; + Duff(nlw, *p++ OPEQ srcpix); + *p OPEQ (srcpix & endmask); + mfbScanlineInc(p, nlwExtra); + } + } + else /* no ragged bits at either end */ + { + while (h--) + { + srcpix = psrc[iy]; + iy = ++iy < tileHeight ? iy : 0; + nlw = nlwMiddle; + Duff(nlw, *p++ OPEQ srcpix); + mfbScanlineInc(p, nlwExtra); + } + } + } + pbox++; + } +} diff --git a/mfb/mfbpntwin.c b/mfb/mfbpntwin.c new file mode 100644 index 000000000..97db3bf79 --- /dev/null +++ b/mfb/mfbpntwin.c @@ -0,0 +1,123 @@ +/* $Xorg: mfbpntwin.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */ +/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */ +/*********************************************************** + +Copyright 1987, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ + +#include "X.h" + +#include "windowstr.h" +#include "regionstr.h" +#include "pixmapstr.h" +#include "scrnintstr.h" + +#include "mfb.h" +#include "maskbits.h" +#include "mi.h" + +void +mfbPaintWindow(pWin, pRegion, what) + WindowPtr pWin; + RegionPtr pRegion; + int what; +{ + register mfbPrivWin *pPrivWin; + + pPrivWin = (mfbPrivWin *)(pWin->devPrivates[mfbWindowPrivateIndex].ptr); + + switch (what) { + case PW_BACKGROUND: + switch (pWin->backgroundState) { + case None: + return; + case ParentRelative: + do { + pWin = pWin->parent; + } while (pWin->backgroundState == ParentRelative); + (*pWin->drawable.pScreen->PaintWindowBackground)(pWin, pRegion, + what); + return; + case BackgroundPixmap: + if (pPrivWin->fastBackground) + { + mfbTileAreaPPWCopy((DrawablePtr)pWin, REGION_NUM_RECTS(pRegion), + REGION_RECTS(pRegion), GXcopy, + pPrivWin->pRotatedBackground); + return; + } + break; + case BackgroundPixel: + if (pWin->background.pixel & 1) + mfbSolidWhiteArea((DrawablePtr)pWin, REGION_NUM_RECTS(pRegion), + REGION_RECTS(pRegion), GXset, NullPixmap); + else + mfbSolidBlackArea((DrawablePtr)pWin, REGION_NUM_RECTS(pRegion), + REGION_RECTS(pRegion), GXclear, NullPixmap); + return; + } + break; + case PW_BORDER: + if (pWin->borderIsPixel) + { + if (pWin->border.pixel & 1) + mfbSolidWhiteArea((DrawablePtr)pWin, REGION_NUM_RECTS(pRegion), + REGION_RECTS(pRegion), GXset, NullPixmap); + else + mfbSolidBlackArea((DrawablePtr)pWin, REGION_NUM_RECTS(pRegion), + REGION_RECTS(pRegion), GXclear, NullPixmap); + return; + } + else if (pPrivWin->fastBorder) + { + mfbTileAreaPPWCopy((DrawablePtr)pWin, REGION_NUM_RECTS(pRegion), + REGION_RECTS(pRegion), GXcopy, + pPrivWin->pRotatedBorder); + return; + } + break; + } + miPaintWindow(pWin, pRegion, what); +} diff --git a/mfb/mfbpolypnt.c b/mfb/mfbpolypnt.c new file mode 100644 index 000000000..8b6efab98 --- /dev/null +++ b/mfb/mfbpolypnt.c @@ -0,0 +1,140 @@ +/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */ +/*********************************************************** + +Copyright 1987, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ +/* $Xorg: mfbpolypnt.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */ + +#include "X.h" +#include "Xprotostr.h" +#include "pixmapstr.h" +#include "gcstruct.h" +#include "windowstr.h" +#include "miscstruct.h" +#include "regionstr.h" +#include "scrnintstr.h" + +#include "mfb.h" +#include "maskbits.h" + +void +mfbPolyPoint(pDrawable, pGC, mode, npt, pptInit) + register DrawablePtr pDrawable; + GCPtr pGC; + int mode; /* Origin or Previous */ + int npt; + xPoint *pptInit; +{ + + register BoxPtr pbox; + register int nbox; + + register PixelType *addrl; + int nlwidth; + + int nptTmp; + register xPoint *ppt; + + register int x; + register int y; + register int rop; + mfbPrivGC *pGCPriv; + + if (!(pGC->planemask & 1)) + return; + + pGCPriv = (mfbPrivGC *) pGC->devPrivates[mfbGCPrivateIndex].ptr; + rop = pGCPriv->rop; + + mfbGetPixelWidthAndPointer(pDrawable, nlwidth, addrl); + + if ((mode == CoordModePrevious) && (npt > 1)) + { + for (ppt = pptInit + 1, nptTmp = npt - 1; --nptTmp >= 0; ppt++) + { + ppt->x += (ppt-1)->x; + ppt->y += (ppt-1)->y; + } + } + + nbox = REGION_NUM_RECTS(pGCPriv->pCompositeClip); + pbox = REGION_RECTS(pGCPriv->pCompositeClip); + for (; --nbox >= 0; pbox++) + { + if (rop == RROP_BLACK) + { + for (ppt = pptInit, nptTmp = npt; --nptTmp >= 0; ppt++) + { + x = ppt->x + pDrawable->x; + y = ppt->y + pDrawable->y; + if ((x >= pbox->x1) && (x < pbox->x2) && + (y >= pbox->y1) && (y < pbox->y2)) + *mfbScanline(addrl, x, y, nlwidth) &= rmask[x & PIM]; + } + } + else if (rop == RROP_WHITE) + { + for (ppt = pptInit, nptTmp = npt; --nptTmp >= 0; ppt++) + { + x = ppt->x + pDrawable->x; + y = ppt->y + pDrawable->y; + if ((x >= pbox->x1) && (x < pbox->x2) && + (y >= pbox->y1) && (y < pbox->y2)) + *mfbScanline(addrl, x, y, nlwidth) |= mask[x & PIM]; + } + } + else if (rop == RROP_INVERT) + { + for (ppt = pptInit, nptTmp = npt; --nptTmp >= 0; ppt++) + { + x = ppt->x + pDrawable->x; + y = ppt->y + pDrawable->y; + if ((x >= pbox->x1) && (x < pbox->x2) && + (y >= pbox->y1) && (y < pbox->y2)) + *mfbScanline(addrl, x, y, nlwidth) ^= mask[x & PIM]; + } + } + } +} diff --git a/mfb/mfbpushpxl.c b/mfb/mfbpushpxl.c new file mode 100644 index 000000000..12b94f6b1 --- /dev/null +++ b/mfb/mfbpushpxl.c @@ -0,0 +1,278 @@ +/*********************************************************** + +Copyright 1987, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ +/* $Xorg: mfbpushpxl.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */ + +#include "X.h" +#include "gcstruct.h" +#include "scrnintstr.h" +#include "pixmapstr.h" +#include "miscstruct.h" +#include "maskbits.h" +#include "regionstr.h" +#include "mfb.h" + +/* mfbSolidPP is courtesy of xhacks@csri.toronto.edu + + For fillStyle==FillSolid, a monochrome PushPixels can be reduced to + a ROP in the following way: (Note that the ROP is the same as the + result of ROP(src=0x3,dst=0x5)) + + src=0011 0000 0011 + dst=0101 0101 0101 + rop fg=0 fg=1 + GXclear 0x0 0000 0100 0100 0 + GXand 0x1 0001 0100 0101 s&d + GXandReverse 0x2 0010 0100 0110 s&~d + GXcopy 0x3 0011 0100 0111 s + GXandInverted 0x4 0100 0101 0100 ~s&d + GXnoop 0x5 0101 0101 0101 d + GXxor 0x6 0110 0101 0110 s^d + GXor 0x7 0111 0101 0111 s|d + GXnor 0x8 1000 0110 0100 ~s&~d + GXequiv 0x9 1001 0110 0101 ~s^d + GXinvert 0xa 1010 0110 0110 ~d + GXorReverse 0xb 1011 0110 0111 s|~d + GXcopyInverted 0xc 1100 0111 0100 ~s + GXorInverted 0xd 1101 0111 0101 ~s|d + GXnand 0xe 1110 0111 0110 ~s|~d + GXset 0xf 1111 0111 0111 1 + +For src=0: newRop = 0x4|(rop>>2) +For src=1: newRop = 0x4|(rop&3) +*/ + +/* mfbSolidPP -- squeegees the forground color of pGC through pBitMap + * into pDrawable. pBitMap is a stencil (dx by dy of it is used, it may + * be bigger) which is placed on the drawable at xOrg, yOrg. Where a 1 bit + * is set in the bitmap, the fill style is put onto the drawable using + * the GC's logical function. The drawable is not changed where the bitmap + * has a zero bit or outside the area covered by the stencil. + */ +void +mfbSolidPP(pGC, pBitMap, pDrawable, dx, dy, xOrg, yOrg) + GCPtr pGC; + PixmapPtr pBitMap; + DrawablePtr pDrawable; + int dx, dy, xOrg, yOrg; +{ + unsigned char alu; + RegionRec rgnDst; + DDXPointPtr pptSrc; + BoxRec srcBox; + register DDXPointPtr ppt; + register BoxPtr pbox; + int i; + + if (!pGC->planemask & 1) return; + + /* compute the reduced rop function */ + alu = pGC->alu; + if (!(pGC->fgPixel&1)) alu >>= 2; + alu = (alu & 0x3) | 0x4; + if (alu == GXnoop) return; + + srcBox.x1 = xOrg; + srcBox.y1 = yOrg; + srcBox.x2 = xOrg + dx; + srcBox.y2 = yOrg + dy; + REGION_INIT(pGC->pScreen, &rgnDst, &srcBox, 1); + + /* clip the shape of the dst to the destination composite clip */ + REGION_INTERSECT(pGC->pScreen, &rgnDst, &rgnDst, + ((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pCompositeClip); + + if (!REGION_NIL(&rgnDst)) + { + i = REGION_NUM_RECTS(&rgnDst); + pptSrc = (DDXPointPtr)ALLOCATE_LOCAL(i * sizeof(DDXPointRec)); + if(pptSrc) + { + for (pbox = REGION_RECTS(&rgnDst), ppt = pptSrc; + --i >= 0; + pbox++, ppt++) + { + ppt->x = pbox->x1 - xOrg; + ppt->y = pbox->y1 - yOrg; + } + mfbDoBitblt((DrawablePtr)pBitMap, pDrawable, alu, &rgnDst, pptSrc); + DEALLOCATE_LOCAL(pptSrc); + } + } + REGION_UNINIT(pGC->pScreen, &rgnDst); +} + +#define NPT 128 + +/* mfbPushPixels -- squeegees the forground color of pGC through pBitMap + * into pDrawable. pBitMap is a stencil (dx by dy of it is used, it may + * be bigger) which is placed on the drawable at xOrg, yOrg. Where a 1 bit + * is set in the bitmap, the fill style is put onto the drawable using + * the GC's logical function. The drawable is not changed where the bitmap + * has a zero bit or outside the area covered by the stencil. + */ +void +mfbPushPixels(pGC, pBitMap, pDrawable, dx, dy, xOrg, yOrg) + GCPtr pGC; + PixmapPtr pBitMap; + DrawablePtr pDrawable; + int dx, dy, xOrg, yOrg; +{ + int h, dxDivPPW, ibEnd; + PixelType *pwLineStart; + register PixelType *pw, *pwEnd; + register PixelType mask; + register int ib; + register PixelType w; + register int ipt; /* index into above arrays */ + Bool fInBox; + DDXPointRec pt[NPT]; + int width[NPT]; + + /* Now scan convert the pixmap and use the result to call fillspans in + * in the drawable with the original GC */ + ipt = 0; + dxDivPPW = dx/PPW; + for(h = 0; h < dy; h++) + { + + pw = (PixelType *) + (((char *)(pBitMap->devPrivate.ptr))+(h * pBitMap->devKind)); + pwLineStart = pw; + /* Process all words which are fully in the pixmap */ + + fInBox = FALSE; + pwEnd = pwLineStart + dxDivPPW; + while(pw < pwEnd) + { + w = *pw; + mask = endtab[1]; + for(ib = 0; ib < PPW; ib++) + { + if(w & mask) + { + if(!fInBox) + { + pt[ipt].x = ((pw - pwLineStart) << PWSH) + ib + xOrg; + pt[ipt].y = h + yOrg; + /* start new box */ + fInBox = TRUE; + } + } + else + { + if(fInBox) + { + width[ipt] = ((pw - pwLineStart) << PWSH) + + ib + xOrg - pt[ipt].x; + if (++ipt >= NPT) + { + (*pGC->ops->FillSpans)(pDrawable, pGC, NPT, pt, + width, TRUE); + ipt = 0; + } + /* end box */ + fInBox = FALSE; + } + } + mask = SCRRIGHT(mask, 1); + } + pw++; + } + ibEnd = dx & PIM; + if(ibEnd) + { + /* Process final partial word on line */ + w = *pw; + mask = endtab[1]; + for(ib = 0; ib < ibEnd; ib++) + { + if(w & mask) + { + if(!fInBox) + { + /* start new box */ + pt[ipt].x = ((pw - pwLineStart) << PWSH) + ib + xOrg; + pt[ipt].y = h + yOrg; + fInBox = TRUE; + } + } + else + { + if(fInBox) + { + /* end box */ + width[ipt] = ((pw - pwLineStart) << PWSH) + + ib + xOrg - pt[ipt].x; + if (++ipt >= NPT) + { + (*pGC->ops->FillSpans)(pDrawable, pGC, NPT, pt, + width, TRUE); + ipt = 0; + } + fInBox = FALSE; + } + } + mask = SCRRIGHT(mask, 1); + } + } + /* If scanline ended with last bit set, end the box */ + if(fInBox) + { + width[ipt] = dx + xOrg - pt[ipt].x; + if (++ipt >= NPT) + { + (*pGC->ops->FillSpans)(pDrawable, pGC, NPT, pt, width, TRUE); + ipt = 0; + } + } + } + /* Flush any remaining spans */ + if (ipt) + { + (*pGC->ops->FillSpans)(pDrawable, pGC, ipt, pt, width, TRUE); + } +} diff --git a/mfb/mfbscrclse.c b/mfb/mfbscrclse.c new file mode 100644 index 000000000..a93e7f07b --- /dev/null +++ b/mfb/mfbscrclse.c @@ -0,0 +1,59 @@ +/* $Xorg: mfbscrclse.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */ +/*********************************************************** + +Copyright 1987, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ + +#include "scrnintstr.h" + +/*ARGSUSED*/ +Bool +mfbCloseScreen(index, pScreen) + register ScreenPtr pScreen; +{ + xfree(pScreen->devPrivate); + return TRUE; +} + diff --git a/mfb/mfbscrinit.c b/mfb/mfbscrinit.c new file mode 100644 index 000000000..080e8d2e8 --- /dev/null +++ b/mfb/mfbscrinit.c @@ -0,0 +1,166 @@ +/*********************************************************** + +Copyright 1987, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ +/* $Xorg: mfbscrinit.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */ + +#include "X.h" +#include "Xproto.h" /* for xColorItem */ +#include "Xmd.h" +#include "scrnintstr.h" +#include "pixmapstr.h" +#include "resource.h" +#include "colormap.h" +#include "mfb.h" +#include "mistruct.h" +#include "dix.h" +#include "mi.h" +#include "mibstore.h" +#include "migc.h" +#include "servermd.h" + +#ifdef PIXMAP_PER_WINDOW +int frameWindowPrivateIndex; +#endif +int mfbWindowPrivateIndex; +int mfbGCPrivateIndex; +static unsigned long mfbGeneration = 0; + +static VisualRec visual = { +/* vid class bpRGB cmpE nplan rMask gMask bMask oRed oGreen oBlue */ + 0, StaticGray, 1, 2, 1, 0, 0, 0, 0, 0, 0 +}; + +static VisualID VID; + +static DepthRec depth = { +/* depth numVid vids */ + 1, 1, &VID +}; + +#ifndef LOWMEMFTPT + +miBSFuncRec mfbBSFuncRec = { + mfbSaveAreas, + mfbRestoreAreas, + (void (*)()) 0, + (PixmapPtr (*)()) 0, + (PixmapPtr (*)()) 0, +}; + +#endif /* ifndef LOWMEMFTPT */ + +Bool +mfbAllocatePrivates(pScreen, pWinIndex, pGCIndex) + ScreenPtr pScreen; + int *pWinIndex, *pGCIndex; +{ + if (mfbGeneration != serverGeneration) + { +#ifdef PIXMAP_PER_WINDOW + frameWindowPrivateIndex = AllocateWindowPrivateIndex(); +#endif + mfbWindowPrivateIndex = AllocateWindowPrivateIndex(); + mfbGCPrivateIndex = AllocateGCPrivateIndex(); + miRegisterGCPrivateIndex(mfbGCPrivateIndex); + visual.vid = FakeClientID(0); + VID = visual.vid; + mfbGeneration = serverGeneration; + } + if (pWinIndex) + *pWinIndex = mfbWindowPrivateIndex; + if (pGCIndex) + *pGCIndex = mfbGCPrivateIndex; + return (AllocateWindowPrivate(pScreen, mfbWindowPrivateIndex, + sizeof(mfbPrivWin)) && + AllocateGCPrivate(pScreen, mfbGCPrivateIndex, sizeof(mfbPrivGC))); +} + +#ifndef LOWMEMFTPT + +/* dts * (inch/dot) * (25.4 mm / inch) = mm */ +Bool +mfbScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width) + register ScreenPtr pScreen; + pointer pbits; /* pointer to screen bitmap */ + int xsize, ysize; /* in pixels */ + int dpix, dpiy; /* dots per inch */ + int width; /* pixel width of frame buffer */ +{ + if (!mfbAllocatePrivates(pScreen, (int *)NULL, (int *)NULL)) + return FALSE; + pScreen->defColormap = (Colormap) FakeClientID(0); + /* whitePixel, blackPixel */ + pScreen->QueryBestSize = mfbQueryBestSize; + /* SaveScreen */ + pScreen->GetImage = mfbGetImage; + pScreen->GetSpans = mfbGetSpans; + pScreen->CreateWindow = mfbCreateWindow; + pScreen->DestroyWindow = mfbDestroyWindow; + pScreen->PositionWindow = mfbPositionWindow; + pScreen->ChangeWindowAttributes = mfbChangeWindowAttributes; + pScreen->RealizeWindow = mfbMapWindow; + pScreen->UnrealizeWindow = mfbUnmapWindow; + pScreen->PaintWindowBackground = mfbPaintWindow; + pScreen->PaintWindowBorder = mfbPaintWindow; + pScreen->CopyWindow = mfbCopyWindow; + pScreen->CreatePixmap = mfbCreatePixmap; + pScreen->DestroyPixmap = mfbDestroyPixmap; + pScreen->RealizeFont = mfbRealizeFont; + pScreen->UnrealizeFont = mfbUnrealizeFont; + pScreen->CreateGC = mfbCreateGC; + pScreen->CreateColormap = mfbCreateColormap; + pScreen->DestroyColormap = mfbDestroyColormap; + pScreen->InstallColormap = mfbInstallColormap; + pScreen->UninstallColormap = mfbUninstallColormap; + pScreen->ListInstalledColormaps = mfbListInstalledColormaps; + pScreen->StoreColors = (void (*)())NoopDDA; + pScreen->ResolveColor = mfbResolveColor; + pScreen->BitmapToRegion = mfbPixmapToRegion; + return miScreenInit(pScreen, pbits, xsize, ysize, dpix, dpiy, width, + 1, 1, &depth, VID, 1, &visual, &mfbBSFuncRec); +} + +#endif /* ifndef LOWMEMFTPT */ diff --git a/mfb/mfbsetsp.c b/mfb/mfbsetsp.c new file mode 100644 index 000000000..08578c0f7 --- /dev/null +++ b/mfb/mfbsetsp.c @@ -0,0 +1,277 @@ +/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */ +/*********************************************************** + +Copyright 1987, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ +/* $Xorg: mfbsetsp.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */ + +#include "X.h" +#include "Xmd.h" + +#include "misc.h" +#include "regionstr.h" +#include "gcstruct.h" +#include "windowstr.h" +#include "pixmapstr.h" +#include "scrnintstr.h" + +#include "mfb.h" +#include "maskbits.h" + +#include "servermd.h" + + +/* mfbSetScanline -- copies the bits from psrc to the drawable starting at + * (xStart, y) and continuing to (xEnd, y). xOrigin tells us where psrc + * starts on the scanline. (I.e., if this scanline passes through multiple + * boxes, we may not want to start grabbing bits at psrc but at some offset + * further on.) + */ +mfbSetScanline(y, xOrigin, xStart, xEnd, psrc, alu, pdstBase, widthDst) + int y; + int xOrigin; /* where this scanline starts */ + int xStart; /* first bit to use from scanline */ + int xEnd; /* last bit to use from scanline + 1 */ + register PixelType *psrc; + register int alu; /* raster op */ + PixelType *pdstBase; /* start of the drawable */ + int widthDst; /* width of drawable in words */ +{ + int w; /* width of scanline in bits */ + register PixelType *pdst; /* where to put the bits */ + register PixelType tmpSrc; /* scratch buffer to collect bits in */ + int dstBit; /* offset in bits from beginning of + * word */ + register int nstart; /* number of bits from first partial */ + register int nend; /* " " last partial word */ + int offSrc; + PixelType startmask, endmask; + int nlMiddle, nl; + + pdst = mfbScanline(pdstBase, xStart, y, widthDst); + psrc += (xStart - xOrigin) >> PWSH; + offSrc = (xStart - xOrigin) & PIM; + w = xEnd - xStart; + dstBit = xStart & PIM; + + if (dstBit + w <= PPW) + { + getandputrop(psrc, offSrc, dstBit, w, pdst, alu) + } + else + { + + maskbits(xStart, w, startmask, endmask, nlMiddle); + if (startmask) + nstart = PPW - dstBit; + else + nstart = 0; + if (endmask) + nend = xEnd & PIM; + else + nend = 0; + if (startmask) + { + getandputrop(psrc, offSrc, dstBit, nstart, pdst, alu) + pdst++; + offSrc += nstart; + if (offSrc > PLST) + { + psrc++; + offSrc -= PPW; + } + } + nl = nlMiddle; + while (nl--) + { + getbits(psrc, offSrc, PPW, tmpSrc); + DoRop(*pdst, alu, tmpSrc, *pdst); + pdst++; + psrc++; + } + if (endmask) + { + getandputrop0(psrc, offSrc, nend, pdst, alu); + } + + } +} + + + +/* SetSpans -- for each span copy pwidth[i] bits from psrc to pDrawable at + * ppt[i] using the raster op from the GC. If fSorted is TRUE, the scanlines + * are in increasing Y order. + * Source bit lines are server scanline padded so that they always begin + * on a word boundary. + */ +void +mfbSetSpans(pDrawable, pGC, pcharsrc, ppt, pwidth, nspans, fSorted) + DrawablePtr pDrawable; + GCPtr pGC; + char *pcharsrc; + register DDXPointPtr ppt; + int *pwidth; + int nspans; + int fSorted; +{ + PixelType *psrc = (PixelType *)pcharsrc; + PixelType *pdstBase; /* start of dst bitmap */ + int widthDst; /* width of bitmap in words */ + register BoxPtr pbox, pboxLast, pboxTest; + register DDXPointPtr pptLast; + int alu; + RegionPtr prgnDst; + int xStart, xEnd; + int yMax; + + alu = pGC->alu; + prgnDst = ((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pCompositeClip; + + pptLast = ppt + nspans; + + yMax = pDrawable->y + (int) pDrawable->height; + mfbGetPixelWidthAndPointer(pDrawable, widthDst, pdstBase); + + pbox = REGION_RECTS(prgnDst); + pboxLast = pbox + REGION_NUM_RECTS(prgnDst); + + if(fSorted) + { + /* scan lines sorted in ascending order. Because they are sorted, we + * don't have to check each scanline against each clip box. We can be + * sure that this scanline only has to be clipped to boxes at or after the + * beginning of this y-band + */ + pboxTest = pbox; + while(ppt < pptLast) + { + pbox = pboxTest; + if(ppt->y >= yMax) + break; + while(pbox < pboxLast) + { + if(pbox->y1 > ppt->y) + { + /* scanline is before clip box */ + break; + } + else if(pbox->y2 <= ppt->y) + { + /* clip box is before scanline */ + pboxTest = ++pbox; + continue; + } + else if(pbox->x1 > ppt->x + *pwidth) + { + /* clip box is to right of scanline */ + break; + } + else if(pbox->x2 <= ppt->x) + { + /* scanline is to right of clip box */ + pbox++; + continue; + } + + /* at least some of the scanline is in the current clip box */ + xStart = max(pbox->x1, ppt->x); + xEnd = min(ppt->x + *pwidth, pbox->x2); + mfbSetScanline(ppt->y, ppt->x, xStart, xEnd, psrc, alu, + pdstBase, widthDst); + if(ppt->x + *pwidth <= pbox->x2) + { + /* End of the line, as it were */ + break; + } + else + pbox++; + } + /* We've tried this line against every box; it must be outside them + * all. move on to the next point */ + ppt++; + psrc += PixmapWidthInPadUnits(*pwidth, 1); + pwidth++; + } + } + else + { + /* scan lines not sorted. We must clip each line against all the boxes */ + while(ppt < pptLast) + { + if(ppt->y >= 0 && ppt->y < yMax) + { + + for(pbox = REGION_RECTS(prgnDst); pbox< pboxLast; pbox++) + { + if(pbox->y1 > ppt->y) + { + /* rest of clip region is above this scanline, + * skip it */ + break; + } + if(pbox->y2 <= ppt->y) + { + /* clip box is below scanline */ + pbox++; + break; + } + if(pbox->x1 <= ppt->x + *pwidth && + pbox->x2 > ppt->x) + { + xStart = max(pbox->x1, ppt->x); + xEnd = min(pbox->x2, ppt->x + *pwidth); + mfbSetScanline(ppt->y, ppt->x, xStart, xEnd, + psrc, alu, pdstBase, widthDst); + } + + } + } + psrc += PixmapWidthInPadUnits(*pwidth, 1); + ppt++; + pwidth++; + } + } +} diff --git a/mfb/mfbtegblt.c b/mfb/mfbtegblt.c new file mode 100644 index 000000000..aa5b01f3d --- /dev/null +++ b/mfb/mfbtegblt.c @@ -0,0 +1,419 @@ +/* $Xorg: mfbtegblt.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */ +/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */ +/*********************************************************** + +Copyright 1987, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ +#include "X.h" +#include "Xmd.h" +#include "Xproto.h" +#include "mfb.h" +#include "fontstruct.h" +#include "dixfontstr.h" +#include "gcstruct.h" +#include "windowstr.h" +#include "scrnintstr.h" +#include "pixmapstr.h" +#include "regionstr.h" +#include "maskbits.h" + +/* + this works for fonts with glyphs <= PPW bits wide. + + This should be called only with a terminal-emulator font; +this means that the FIXED_METRICS flag is set, and that +glyphbounds == charbounds. + + in theory, this goes faster; even if it doesn't, it reduces the +flicker caused by writing a string over itself with image text (since +the background gets repainted per character instead of per string.) +this seems to be important for some converted X10 applications. + + Image text looks at the bits in the glyph and the fg and bg in the +GC. it paints a rectangle, as defined in the protocol dcoument, +and the paints the characters. + + to avoid source proliferation, this file is compiled +two times: + MFBTEGLYPHBLT OP + mfbTEGlyphBltWhite (white text, black bg ) + mfbTEGlyphBltBlack ~ (black text, white bg ) + +*/ + +#if defined(NO_3_60_CG4) && defined(FASTPUTBITS) && defined(FASTGETBITS) +#define FASTCHARS +#endif + +/* + * this macro "knows" that only characters <= 8 bits wide will + * fit this case (which is why it is independent of GLYPHPADBYTES) + */ + +#if (BITMAP_BIT_ORDER == MSBFirst) && (GLYPHPADBYTES != 4) +#if GLYPHPADBYTES == 1 +#define ShiftAmnt 24 +#else +#define ShiftAmnt 16 +#endif + +/* + * Note: for BITMAP_BIT_ORDER != IMAGE_BYTE_ORDER, SCRRIGHT() evaluates its + * first argument more than once. Thus the imbedded char++ have to be moved. + * (DHD) + */ +#if BITMAP_BIT_ORDER == IMAGE_BYTE_ORDER +#if PPW == 32 +#define GetBits4 c = (*char1++ << ShiftAmnt) | \ + SCRRIGHT (*char2++ << ShiftAmnt, xoff2) | \ + SCRRIGHT (*char3++ << ShiftAmnt, xoff3) | \ + SCRRIGHT (*char4++ << ShiftAmnt, xoff4); +#else /* PPW */ +#define GetBits4 c = ((unsigned long)(*char1++ << ShiftAmnt) << 32 ) | \ + (SCRRIGHT (*char2++ << ShiftAmnt, xoff2) << 32 ) | \ + (SCRRIGHT (*char3++ << ShiftAmnt, xoff3) << 32 ) | \ + (SCRRIGHT (*char4++ << ShiftAmnt, xoff4) << 32 ) | \ + (*char5++ << ShiftAmnt) | \ + SCRRIGHT (*char6++ << ShiftAmnt, xoff6) | \ + SCRRIGHT (*char7++ << ShiftAmnt, xoff7) | \ + SCRRIGHT (*char8++ << ShiftAmnt, xoff8); +#endif /* PPW */ +#else /* BITMAP_BIT_ORDER != IMAGE_BYTE_ORDER */ +#if PPW == 32 +#define GetBits4 c = (*char1++ << ShiftAmnt) | \ + SCRRIGHT (*char2 << ShiftAmnt, xoff2) | \ + SCRRIGHT (*char3 << ShiftAmnt, xoff3) | \ + SCRRIGHT (*char4 << ShiftAmnt, xoff4); \ + char2++; char3++; char4++; +#else /* PPW == 64 */ +#define GetBits4 c = ((unsigned long)(*char1++ << ShiftAmnt) << 32 ) | \ + (SCRRIGHT (*char2 << ShiftAmnt, xoff2) << 32 ) | \ + (SCRRIGHT (*char3 << ShiftAmnt, xoff3) << 32 ) | \ + (SCRRIGHT (*char4 << ShiftAmnt, xoff4) << 32 ) | \ + (*char5++ << ShiftAmnt) | \ + SCRRIGHT (*char6 << ShiftAmnt, xoff6) | \ + SCRRIGHT (*char7 << ShiftAmnt, xoff7) | \ + SCRRIGHT (*char8 << ShiftAmnt, xoff8); \ + char2++; char3++; char4++; char6++; char7++; char8++; +#endif /* PPW */ +#endif /* BITMAP_BIT_ORDER == IMAGE_BYTE_ORDER */ + +#else /* (BITMAP_BIT_ORDER != MSBFirst) || (GLYPHPADBYTES == 4) */ + +#if BITMAP_BIT_ORDER == IMAGE_BYTE_ORDER +#if PPW == 32 +#define GetBits4 c = *char1++ | \ + SCRRIGHT (*char2++, xoff2) | \ + SCRRIGHT (*char3++, xoff3) | \ + SCRRIGHT (*char4++, xoff4); +#else /* PPW == 64 */ +#define GetBits4 c = (unsigned long)(((*char1++) << 64 ) | \ + (SCRRIGHT (*char2++, xoff2) << 64 ) | \ + (SCRRIGHT (*char3++, xoff3) << 64 ) | \ + (SCRRIGHT (*char4++, xoff4) << 64 ) | \ + SCRRIGHT (*char5++, xoff5) | \ + SCRRIGHT (*char6++, xoff6) | \ + SCRRIGHT (*char7++, xoff7) | \ + SCRRIGHT (*char8++, xoff8)); +#endif /* PPW */ +#else /* BITMAP_BIT_ORDER != IMAGE_BYTE_ORDER */ +#if PPW == 32 +#define GetBits4 c = *char1++ | \ + SCRRIGHT (*char2, xoff2) | \ + SCRRIGHT (*char3, xoff3) | \ + SCRRIGHT (*char4, xoff4); \ + char2++; char3++; char4++; +#else /* PPW == 64 */ +#define GetBits4 c = (unsigned long)(((*char1++) << 64 ) | \ + (SCRRIGHT (*char2, xoff2) << 64 ) | \ + (SCRRIGHT (*char3, xoff3) << 64 ) | \ + (SCRRIGHT (*char4, xoff4) << 64 ) | \ + SCRRIGHT (*char5, xoff5) | \ + SCRRIGHT (*char6, xoff6) | \ + SCRRIGHT (*char7, xoff7) | \ + SCRRIGHT (*char8, xoff8)); \ + char2++; char3++; char4++; \ + char5++; char6++; char7++; char8++; +#endif /* PPW */ +#endif /* BITMAP_BIT_ORDER == IMAGE_BYTE_ORDER */ + +#endif /* BITMAP_BIT_ORDER && GLYPHPADBYTES */ + + +#if GLYPHPADBYTES == 1 +typedef unsigned char *glyphPointer; +#define USE_LEFTBITS +#endif + +#if GLYPHPADBYTES == 2 +typedef unsigned short *glyphPointer; +#define USE_LEFTBITS +#endif + +#if GLYPHPADBYTES == 4 +typedef unsigned int *glyphPointer; +#endif + +#ifdef USE_LEFTBITS +#define GetBits1 getleftbits (char1, widthGlyph, c); \ + c &= glyphMask; \ + char1 = (glyphPointer) (((char *) char1) + glyphBytes); +#else +#define GetBits1 c = *char1++; +#endif + +void +MFBTEGLYPHBLT(pDrawable, pGC, x, y, nglyph, ppci, pglyphBase) + DrawablePtr pDrawable; + GC *pGC; + int x, y; + unsigned int nglyph; + CharInfoPtr *ppci; /* array of character info */ + pointer pglyphBase; /* start of array of glyphs */ +{ + FontPtr pfont = pGC->font; + int widthDst; + PixelType *pdstBase; /* pointer to longword with top row + of current glyph */ + + int h; /* height of glyph and char */ + register int xpos; /* current x */ + int ypos; /* current y */ + int widthGlyph; + + int hTmp; /* counter for height */ + register PixelType startmask, endmask; + int nfirst; /* used if glyphs spans a longword boundary */ + BoxRec bbox; /* for clipping */ + int widthGlyphs; + register PixelType *dst; + register PixelType c; + register int xoff1, xoff2, xoff3, xoff4; + register glyphPointer char1, char2, char3, char4; +#if PPW == 64 + register int xoff5, xoff6, xoff7, xoff8; + register glyphPointer char5, char6, char7, char8; +#endif /* PPW */ + +#ifdef USE_LEFTBITS + register PixelType glyphMask; + register PixelType tmpSrc; + register int glyphBytes; +#endif + + if (!(pGC->planemask & 1)) + return; + + mfbGetPixelWidthAndPointer(pDrawable, widthDst, pdstBase); + + xpos = x + pDrawable->x; + ypos = y + pDrawable->y; + + widthGlyph = FONTMAXBOUNDS(pfont,characterWidth); + h = FONTASCENT(pfont) + FONTDESCENT(pfont); + + xpos += FONTMAXBOUNDS(pfont,leftSideBearing); + ypos -= FONTASCENT(pfont); + + bbox.x1 = xpos; + bbox.x2 = xpos + (widthGlyph * nglyph); + bbox.y1 = ypos; + bbox.y2 = ypos + h; + + switch (RECT_IN_REGION(pGC->pScreen, + ((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pCompositeClip, &bbox)) + { + case rgnPART: + /* this is the WRONG thing to do, but it works. + calling the non-terminal text is easy, but slow, given + what we know about the font. + + the right thing to do is something like: + for each clip rectangle + compute at which row the glyph starts to be in it, + and at which row the glyph ceases to be in it + compute which is the first glyph inside the left + edge, and the last one inside the right edge + draw a fractional first glyph, using only + the rows we know are in + draw all the whole glyphs, using the appropriate rows + draw any pieces of the last glyph, using the right rows + + this way, the code would take advantage of knowing that + all glyphs are the same height and don't overlap. + + one day... + */ + CLIPTETEXT(pDrawable, pGC, x, y, nglyph, ppci, pglyphBase); + case rgnOUT: + return; + } + pdstBase = mfbScanlineDeltaNoBankSwitch(pdstBase, ypos, widthDst); + widthGlyphs = widthGlyph * PGSZB; + +#ifdef USE_LEFTBITS + glyphMask = endtab[widthGlyph]; + glyphBytes = GLYPHWIDTHBYTESPADDED(*ppci); +#endif + + if (nglyph >= PGSZB && widthGlyphs <= PPW) + { + while (nglyph >= PGSZB) + { + nglyph -= PGSZB; + xoff1 = xpos & PIM; + xoff2 = widthGlyph; + xoff3 = xoff2 + widthGlyph; + xoff4 = xoff3 + widthGlyph; +#if PPW == 64 + xoff5 = xoff4 + widthGlyph; + xoff6 = xoff5 + widthGlyph; + xoff7 = xoff6 + widthGlyph; + xoff8 = xoff7 + widthGlyph; +#endif /* PPW */ + char1 = (glyphPointer) FONTGLYPHBITS(pglyphBase,(*ppci++)); + char2 = (glyphPointer) FONTGLYPHBITS(pglyphBase,(*ppci++)); + char3 = (glyphPointer) FONTGLYPHBITS(pglyphBase,(*ppci++)); + char4 = (glyphPointer) FONTGLYPHBITS(pglyphBase,(*ppci++)); +#if PPW == 64 + char5 = (glyphPointer) FONTGLYPHBITS(pglyphBase,(*ppci++)); + char6 = (glyphPointer) FONTGLYPHBITS(pglyphBase,(*ppci++)); + char7 = (glyphPointer) FONTGLYPHBITS(pglyphBase,(*ppci++)); + char8 = (glyphPointer) FONTGLYPHBITS(pglyphBase,(*ppci++)); +#endif /* PPW */ + + hTmp = h; + dst = mfbScanlineOffset(pdstBase, (xpos >> PWSH)); /* switch now */ + +#ifndef FASTCHARS + if (xoff1 + widthGlyphs <= PPW) + { + maskpartialbits (xoff1, widthGlyphs, startmask); +#endif + while (hTmp--) + { + GetBits4 +#ifdef FASTCHARS +# if BITMAP_BIT_ORDER == MSBFirst + c >>= PPW - widthGlyphs; +# endif + FASTPUTBITS(OP(c), xoff1, widthGlyphs, dst); +#else + *(dst) = (*dst) & ~startmask | OP(SCRRIGHT(c, xoff1)) & startmask; +#endif + mfbScanlineInc(dst, widthDst); + } +#ifndef FASTCHARS + } + else + { + maskPPWbits (xoff1, widthGlyphs, startmask, endmask); + nfirst = PPW - xoff1; + while (hTmp--) + { + GetBits4 + dst[0] = dst[0] & ~startmask | + OP(SCRRIGHT(c,xoff1)) & startmask; + dst[1] = dst[1] & ~endmask | + OP(SCRLEFT(c,nfirst)) & endmask; + mfbScanlineInc(dst, widthDst); + } + } +#endif + xpos += widthGlyphs; + } + } + + while(nglyph--) + { + xoff1 = xpos & PIM; + char1 = (glyphPointer) FONTGLYPHBITS(pglyphBase,(*ppci++)); + hTmp = h; + dst = mfbScanlineOffset(pdstBase, (xpos >> PWSH)); + +#ifndef FASTCHARS + if (xoff1 + widthGlyph <= PPW) + { + maskpartialbits (xoff1, widthGlyph, startmask); +#endif + while (hTmp--) + { +#ifdef FASTCHARS +#ifdef USE_LEFTBITS + FASTGETBITS (char1,0,widthGlyph,c); + char1 = (glyphPointer) (((char *) char1) + glyphBytes); +#else + c = *char1++; +#if BITMAP_BIT_ORDER == MSBFirst + c >>= PPW - widthGlyph; +#endif +#endif + FASTPUTBITS (OP(c),xoff1,widthGlyph,dst); +#else + GetBits1 + (*dst) = (*dst) & ~startmask | OP(SCRRIGHT(c, xoff1)) & startmask; +#endif + mfbScanlineInc(dst, widthDst); + } +#ifndef FASTCHARS + } + else + { + maskPPWbits (xoff1, widthGlyph, startmask, endmask); + nfirst = PPW - xoff1; + while (hTmp--) + { + GetBits1 + dst[0] = dst[0] & ~startmask | + OP(SCRRIGHT(c,xoff1)) & startmask; + dst[1] = dst[1] & ~endmask | + OP(SCRLEFT(c,nfirst)) & endmask; + mfbScanlineInc(dst, widthDst); + } + } +#endif + xpos += widthGlyph; + } +} diff --git a/mfb/mfbtile.c b/mfb/mfbtile.c new file mode 100644 index 000000000..f716f4487 --- /dev/null +++ b/mfb/mfbtile.c @@ -0,0 +1,230 @@ +/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */ +/*********************************************************** + +Copyright 1987, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ +/* $Xorg: mfbtile.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */ +#include "X.h" + +#include "windowstr.h" +#include "regionstr.h" +#include "pixmapstr.h" +#include "scrnintstr.h" + +#include "mfb.h" +#include "maskbits.h" + +#include "mergerop.h" +/* + + the boxes are already translated. + + NOTE: + iy = ++iy < tileHeight ? iy : 0 +is equivalent to iy%= tileheight, and saves a division. +*/ + +/* + tile area with a PPW bit wide pixmap +*/ +void +MROP_NAME(mfbTileAreaPPW)(pDraw, nbox, pbox, alu, ptile) + DrawablePtr pDraw; + int nbox; + BoxPtr pbox; + int alu; + PixmapPtr ptile; +{ + register PixelType *psrc; + /* pointer to bits in tile, if needed */ + int tileHeight; /* height of the tile */ + register PixelType srcpix; + int nlwidth; /* width in longwords of the drawable */ + int w; /* width of current box */ + MROP_DECLARE_REG () + register int h; /* height of current box */ + register int nlw; /* loop version of nlwMiddle */ + register PixelType *p; /* pointer to bits we're writing */ + PixelType startmask; + PixelType endmask; /* masks for reggedy bits at either end of line */ + int nlwMiddle; /* number of longwords between sides of boxes */ + int nlwExtra; /* to get from right of box to left of next span */ + register int iy; /* index of current scanline in tile */ + PixelType *pbits; /* pointer to start of drawable */ + + mfbGetPixelWidthAndPointer(pDraw, nlwidth, pbits); + + MROP_INITIALIZE(alu,~0) + + tileHeight = ptile->drawable.height; + psrc = (PixelType *)(ptile->devPrivate.ptr); + + while (nbox--) + { + w = pbox->x2 - pbox->x1; + h = pbox->y2 - pbox->y1; + iy = pbox->y1 % tileHeight; + p = mfbScanline(pbits, pbox->x1, pbox->y1, nlwidth); + + if ( ((pbox->x1 & PIM) + w) < PPW) + { + maskpartialbits(pbox->x1, w, startmask); + nlwExtra = nlwidth; + while (h--) + { + srcpix = psrc[iy]; + iy++; + if (iy == tileHeight) + iy = 0; + *p = MROP_MASK(srcpix,*p,startmask); + mfbScanlineInc(p, nlwExtra); + } + } + else + { + maskbits(pbox->x1, w, startmask, endmask, nlwMiddle); + nlwExtra = nlwidth - nlwMiddle; + + if (startmask && endmask) + { + nlwExtra -= 1; + while (h--) + { + srcpix = psrc[iy]; + iy++; + if (iy == tileHeight) + iy = 0; + nlw = nlwMiddle; + *p = MROP_MASK (srcpix,*p,startmask); + p++; + while (nlw--) + { + *p = MROP_SOLID(srcpix,*p); + p++; + } + + *p = MROP_MASK(srcpix,*p,endmask); + mfbScanlineInc(p, nlwExtra); + } + } + else if (startmask && !endmask) + { + nlwExtra -= 1; + while (h--) + { + srcpix = psrc[iy]; + iy++; + if (iy == tileHeight) + iy = 0; + nlw = nlwMiddle; + *p = MROP_MASK(srcpix,*p,startmask); + p++; + while (nlw--) + { + *p = MROP_SOLID(srcpix,*p); + p++; + } + mfbScanlineInc(p, nlwExtra); + } + } + else if (!startmask && endmask) + { + while (h--) + { + srcpix = psrc[iy]; + iy++; + if (iy == tileHeight) + iy = 0; + nlw = nlwMiddle; + while (nlw--) + { + *p = MROP_SOLID(srcpix,*p); + p++; + } + + *p = MROP_MASK(srcpix,*p,endmask); + mfbScanlineInc(p, nlwExtra); + } + } + else /* no ragged bits at either end */ + { + while (h--) + { + srcpix = psrc[iy]; + iy++; + if (iy == tileHeight) + iy = 0; + nlw = nlwMiddle; + while (nlw--) + { + *p = MROP_SOLID (srcpix,*p); + p++; + } + mfbScanlineInc(p, nlwExtra); + } + } + } + pbox++; + } +} + +#if (MROP) == 0 +void +mfbTileAreaPPW (pDraw, nbox, pbox, alu, ptile) + DrawablePtr pDraw; + int nbox; + BoxPtr pbox; + int alu; + PixmapPtr ptile; +{ + void (*f)(), mfbTileAreaPPWCopy(), mfbTileAreaPPWGeneral(); + + if (alu == GXcopy) + f = mfbTileAreaPPWCopy; + else + f = mfbTileAreaPPWGeneral; + (*f) (pDraw, nbox, pbox, alu, ptile); +} +#endif diff --git a/mfb/mfbwindow.c b/mfb/mfbwindow.c new file mode 100644 index 000000000..8107b9807 --- /dev/null +++ b/mfb/mfbwindow.c @@ -0,0 +1,338 @@ +/* $Xorg: mfbwindow.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */ +/* Combined Purdue/PurduePlus patches, level 2.0, 1/17/89 */ +/*********************************************************** + +Copyright 1987, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ + +#include "X.h" +#include "scrnintstr.h" +#include "windowstr.h" +#include "mfb.h" +#include "mistruct.h" +#include "regionstr.h" +#include "maskbits.h" + +extern WindowPtr *WindowTable; + +Bool +mfbCreateWindow(pWin) + register WindowPtr pWin; +{ + register mfbPrivWin *pPrivWin; + + pPrivWin = (mfbPrivWin *)(pWin->devPrivates[mfbWindowPrivateIndex].ptr); + pPrivWin->pRotatedBorder = NullPixmap; + pPrivWin->pRotatedBackground = NullPixmap; + pPrivWin->fastBackground = FALSE; + pPrivWin->fastBorder = FALSE; + + return (TRUE); +} + +/* This always returns true, because Xfree can't fail. It might be possible + * on some devices for Destroy to fail */ +Bool +mfbDestroyWindow(pWin) + WindowPtr pWin; +{ + register mfbPrivWin *pPrivWin; + + pPrivWin = (mfbPrivWin *)(pWin->devPrivates[mfbWindowPrivateIndex].ptr); + + if (pPrivWin->pRotatedBorder) + (*pWin->drawable.pScreen->DestroyPixmap)(pPrivWin->pRotatedBorder); + if (pPrivWin->pRotatedBackground) + (*pWin->drawable.pScreen->DestroyPixmap)(pPrivWin->pRotatedBackground); + return (TRUE); +} + +/*ARGSUSED*/ +Bool mfbMapWindow(pWindow) + WindowPtr pWindow; +{ + return (TRUE); +} + +/* (x, y) is the upper left corner of the window on the screen + do we really need to pass this? (is it a;ready in pWin->absCorner?) + we only do the rotation for pixmaps that are 32 bits wide (padded +or otherwise.) + mfbChangeWindowAttributes() has already put a copy of the pixmap +in pPrivWin->pRotated* +*/ + +/*ARGSUSED*/ +Bool +mfbPositionWindow(pWin, x, y) + register WindowPtr pWin; + int x, y; +{ + register mfbPrivWin *pPrivWin; + int reset = 0; + + pPrivWin = (mfbPrivWin *)(pWin->devPrivates[mfbWindowPrivateIndex].ptr); + if (pWin->backgroundState == BackgroundPixmap && pPrivWin->fastBackground) + { + mfbXRotatePixmap(pPrivWin->pRotatedBackground, + pWin->drawable.x - pPrivWin->oldRotate.x); + mfbYRotatePixmap(pPrivWin->pRotatedBackground, + pWin->drawable.y - pPrivWin->oldRotate.y); + reset = 1; + } + + if (!pWin->borderIsPixel && pPrivWin->fastBorder) + { + while (pWin->backgroundState == ParentRelative) + pWin = pWin->parent; + mfbXRotatePixmap(pPrivWin->pRotatedBorder, + pWin->drawable.x - pPrivWin->oldRotate.x); + mfbYRotatePixmap(pPrivWin->pRotatedBorder, + pWin->drawable.y - pPrivWin->oldRotate.y); + reset = 1; + } + if (reset) + { + pPrivWin->oldRotate.x = pWin->drawable.x; + pPrivWin->oldRotate.y = pWin->drawable.y; + } + + /* This is the "wrong" fix to the right problem, but it doesn't really + * cost very much. When the window is moved, we need to invalidate any + * RotatedPixmap that exists in any GC currently validated against this + * window. + */ + pWin->drawable.serialNumber = NEXT_SERIAL_NUMBER; + + /* Again, we have no failure modes indicated by any of the routines + * we've called, so we have to assume it worked */ + return (TRUE); +} + +/*ARGSUSED*/ +Bool +mfbUnmapWindow(pWindow) + WindowPtr pWindow; +{ + return (TRUE); +} + +/* UNCLEAN! + this code calls the bitblt helper code directly. + + mfbCopyWindow copies only the parts of the destination that are +visible in the source. +*/ + + +void +mfbCopyWindow(pWin, ptOldOrg, prgnSrc) + WindowPtr pWin; + DDXPointRec ptOldOrg; + RegionPtr prgnSrc; +{ + DDXPointPtr pptSrc; + register DDXPointPtr ppt; + RegionPtr prgnDst; + register BoxPtr pbox; + register int dx, dy; + register int i, nbox; + WindowPtr pwinRoot; + + pwinRoot = WindowTable[pWin->drawable.pScreen->myNum]; + + prgnDst = REGION_CREATE(pWin->drawable.pScreen, NULL, 1); + + dx = ptOldOrg.x - pWin->drawable.x; + dy = ptOldOrg.y - pWin->drawable.y; + REGION_TRANSLATE(pWin->drawable.pScreen, prgnSrc, -dx, -dy); + REGION_INTERSECT(pWin->drawable.pScreen, prgnDst, &pWin->borderClip, + prgnSrc); + + pbox = REGION_RECTS(prgnDst); + nbox = REGION_NUM_RECTS(prgnDst); + if(!(pptSrc = (DDXPointPtr )ALLOCATE_LOCAL(nbox * sizeof(DDXPointRec)))) + return; + ppt = pptSrc; + + for (i=nbox; --i >= 0; ppt++, pbox++) + { + ppt->x = pbox->x1 + dx; + ppt->y = pbox->y1 + dy; + } + + mfbDoBitblt((DrawablePtr)pwinRoot, (DrawablePtr)pwinRoot, + GXcopy, prgnDst, pptSrc); + DEALLOCATE_LOCAL(pptSrc); + REGION_DESTROY(pWin->drawable.pScreen, prgnDst); +} + + + +/* swap in correct PaintWindow* routine. If we can use a fast output +routine (i.e. the pixmap is paddable to 32 bits), also pre-rotate a copy +of it in devPrivate. +*/ +Bool +mfbChangeWindowAttributes(pWin, mask) + register WindowPtr pWin; + register unsigned long mask; +{ + register unsigned long index; + register mfbPrivWin *pPrivWin; + WindowPtr pBgWin; + + pPrivWin = (mfbPrivWin *)(pWin->devPrivates[mfbWindowPrivateIndex].ptr); + /* + * When background state changes from ParentRelative and + * we had previously rotated the fast border pixmap to match + * the parent relative origin, rerotate to match window + */ + if (mask & (CWBackPixmap | CWBackPixel) && + pWin->backgroundState != ParentRelative && + pPrivWin->fastBorder && + (pPrivWin->oldRotate.x != pWin->drawable.x || + pPrivWin->oldRotate.y != pWin->drawable.y)) + { + mfbXRotatePixmap(pPrivWin->pRotatedBorder, + pWin->drawable.x - pPrivWin->oldRotate.x); + mfbYRotatePixmap(pPrivWin->pRotatedBorder, + pWin->drawable.y - pPrivWin->oldRotate.y); + pPrivWin->oldRotate.x = pWin->drawable.x; + pPrivWin->oldRotate.y = pWin->drawable.y; + } + while(mask) + { + index = lowbit (mask); + mask &= ~index; + switch(index) + { + case CWBackPixmap: + if (pWin->backgroundState == None) + { + pPrivWin->fastBackground = FALSE; + } + else if (pWin->backgroundState == ParentRelative) + { + pPrivWin->fastBackground = FALSE; + /* Rotate border to match parent origin */ + if (pPrivWin->pRotatedBorder) { + for (pBgWin = pWin->parent; + pBgWin->backgroundState == ParentRelative; + pBgWin = pBgWin->parent); + mfbXRotatePixmap(pPrivWin->pRotatedBorder, + pBgWin->drawable.x - pPrivWin->oldRotate.x); + mfbYRotatePixmap(pPrivWin->pRotatedBorder, + pBgWin->drawable.y - pPrivWin->oldRotate.y); + pPrivWin->oldRotate.x = pBgWin->drawable.x; + pPrivWin->oldRotate.y = pBgWin->drawable.y; + } + } + else if ((pWin->background.pixmap->drawable.width <= PPW) && + !(pWin->background.pixmap->drawable.width & + (pWin->background.pixmap->drawable.width - 1))) + { + mfbCopyRotatePixmap(pWin->background.pixmap, + &pPrivWin->pRotatedBackground, + pWin->drawable.x, + pWin->drawable.y); + if (pPrivWin->pRotatedBackground) + { + pPrivWin->fastBackground = TRUE; + pPrivWin->oldRotate.x = pWin->drawable.x; + pPrivWin->oldRotate.y = pWin->drawable.y; + } + else + { + pPrivWin->fastBackground = FALSE; + } + } + else + { + pPrivWin->fastBackground = FALSE; + } + break; + + case CWBackPixel: + pPrivWin->fastBackground = FALSE; + break; + + case CWBorderPixmap: + if ((pWin->border.pixmap->drawable.width <= PPW) && + !(pWin->border.pixmap->drawable.width & + (pWin->border.pixmap->drawable.width - 1))) + { + for (pBgWin = pWin; + pBgWin->backgroundState == ParentRelative; + pBgWin = pBgWin->parent); + mfbCopyRotatePixmap(pWin->border.pixmap, + &pPrivWin->pRotatedBorder, + pBgWin->drawable.x, + pBgWin->drawable.y); + if (pPrivWin->pRotatedBorder) + { + pPrivWin->fastBorder = TRUE; + pPrivWin->oldRotate.x = pBgWin->drawable.x; + pPrivWin->oldRotate.y = pBgWin->drawable.y; + } + else + { + pPrivWin->fastBorder = FALSE; + } + } + else + { + pPrivWin->fastBorder = FALSE; + } + break; + case CWBorderPixel: + pPrivWin->fastBorder = FALSE; + break; + } + } + /* Again, we have no failure modes indicated by any of the routines + * we've called, so we have to assume it worked */ + return (TRUE); +} diff --git a/mfb/mfbzerarc.c b/mfb/mfbzerarc.c new file mode 100644 index 000000000..2135a7969 --- /dev/null +++ b/mfb/mfbzerarc.c @@ -0,0 +1,253 @@ +/************************************************************ + +Copyright 1989, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + +********************************************************/ + +/* $Xorg: mfbzerarc.c,v 1.4 2001/02/09 02:05:19 xorgcvs Exp $ */ + +/* Derived from: + * "Algorithm for drawing ellipses or hyperbolae with a digital plotter" + * by M. L. V. Pitteway + * The Computer Journal, November 1967, Volume 10, Number 3, pp. 282-289 + */ + +#include "X.h" +#include "Xprotostr.h" +#include "miscstruct.h" +#include "gcstruct.h" +#include "pixmapstr.h" +#include "scrnintstr.h" +#include "mfb.h" +#include "maskbits.h" +#include "mizerarc.h" +#include "mi.h" + +/* + * Note: LEFTMOST must be the bit leftmost in the actual screen + * representation. This depends also on the IMAGE_BYTE_ORDER. + * LONG2CHARS() takes care of the re-ordering as required. (DHD) + */ +#if (BITMAP_BIT_ORDER == MSBFirst) +#define LEFTMOST ((PixelType) LONG2CHARS((1 << PLST))) +#else +#define LEFTMOST ((PixelType) LONG2CHARS(1)) +#endif + +#define PixelateWhite(addr,yoff,xoff) \ + *mfbScanlineOffset(addr, (yoff)+((xoff)>>PWSH)) |= \ + SCRRIGHT (LEFTMOST, ((xoff) & PIM)) +#define PixelateBlack(addr,yoff,xoff) \ + *mfbScanlineOffset(addr, (yoff)+((xoff)>>PWSH)) &= \ + ~(SCRRIGHT (LEFTMOST, ((xoff) & PIM))) + +#define Pixelate(base,yoff,xoff) \ +{ \ + paddr = mfbScanlineOffset(base, (yoff) + ((xoff)>>PWSH)); \ + pmask = SCRRIGHT(LEFTMOST, (xoff) & PIM); \ + *paddr = (*paddr & ~pmask) | (pixel & pmask); \ +} + +#define DoPix(bit,base,yoff,xoff) if (mask & bit) Pixelate(base,yoff,xoff); + +static void +mfbZeroArcSS(pDraw, pGC, arc) + DrawablePtr pDraw; + GCPtr pGC; + xArc *arc; +{ + miZeroArcRec info; + Bool do360; + register int x, y, a, b, d, mask; + register int k1, k3, dx, dy; + PixelType *addrl; + PixelType *yorgl, *yorgol; + PixelType pixel; + int nlwidth, yoffset, dyoffset; + PixelType pmask; + register PixelType *paddr; + + if (((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->rop == + RROP_BLACK) + pixel = 0; + else + pixel = ~0; + + mfbGetPixelWidthAndPointer(pDraw, nlwidth, addrl); + do360 = miZeroArcSetup(arc, &info, TRUE); + yorgl = addrl + ((info.yorg + pDraw->y) * nlwidth); + yorgol = addrl + ((info.yorgo + pDraw->y) * nlwidth); + info.xorg += pDraw->x; + info.xorgo += pDraw->x; + MIARCSETUP(); + yoffset = y ? nlwidth : 0; + dyoffset = 0; + mask = info.initialMask; + if (!(arc->width & 1)) + { + DoPix(2, yorgl, 0, info.xorgo); + DoPix(8, yorgol, 0, info.xorgo); + } + if (!info.end.x || !info.end.y) + { + mask = info.end.mask; + info.end = info.altend; + } + if (do360 && (arc->width == arc->height) && !(arc->width & 1)) + { + int xoffset = nlwidth; + PixelType *yorghl = mfbScanlineDeltaNoBankSwitch(yorgl, info.h, nlwidth); + int xorghp = info.xorg + info.h; + int xorghn = info.xorg - info.h; + + if (pixel) + { + while (1) + { + PixelateWhite(yorgl, yoffset, info.xorg + x); + PixelateWhite(yorgl, yoffset, info.xorg - x); + PixelateWhite(yorgol, -yoffset, info.xorg - x); + PixelateWhite(yorgol, -yoffset, info.xorg + x); + if (a < 0) + break; + PixelateWhite(yorghl, -xoffset, xorghp - y); + PixelateWhite(yorghl, -xoffset, xorghn + y); + PixelateWhite(yorghl, xoffset, xorghn + y); + PixelateWhite(yorghl, xoffset, xorghp - y); + xoffset += nlwidth; + MIARCCIRCLESTEP(yoffset += nlwidth;); + } + } + else + { + while (1) + { + PixelateBlack(yorgl, yoffset, info.xorg + x); + PixelateBlack(yorgl, yoffset, info.xorg - x); + PixelateBlack(yorgol, -yoffset, info.xorg - x); + PixelateBlack(yorgol, -yoffset, info.xorg + x); + if (a < 0) + break; + PixelateBlack(yorghl, -xoffset, xorghp - y); + PixelateBlack(yorghl, -xoffset, xorghn + y); + PixelateBlack(yorghl, xoffset, xorghn + y); + PixelateBlack(yorghl, xoffset, xorghp - y); + xoffset += nlwidth; + MIARCCIRCLESTEP(yoffset += nlwidth;); + } + } + x = info.w; + yoffset = info.h * nlwidth; + } + else if (do360) + { + while (y < info.h || x < info.w) + { + MIARCOCTANTSHIFT(dyoffset = nlwidth;); + Pixelate(yorgl, yoffset, info.xorg + x); + Pixelate(yorgl, yoffset, info.xorgo - x); + Pixelate(yorgol, -yoffset, info.xorgo - x); + Pixelate(yorgol, -yoffset, info.xorg + x); + MIARCSTEP(yoffset += dyoffset;, yoffset += nlwidth;); + } + } + else + { + while (y < info.h || x < info.w) + { + MIARCOCTANTSHIFT(dyoffset = nlwidth;); + if ((x == info.start.x) || (y == info.start.y)) + { + mask = info.start.mask; + info.start = info.altstart; + } + DoPix(1, yorgl, yoffset, info.xorg + x); + DoPix(2, yorgl, yoffset, info.xorgo - x); + DoPix(4, yorgol, -yoffset, info.xorgo - x); + DoPix(8, yorgol, -yoffset, info.xorg + x); + if ((x == info.end.x) || (y == info.end.y)) + { + mask = info.end.mask; + info.end = info.altend; + } + MIARCSTEP(yoffset += dyoffset;, yoffset += nlwidth;); + } + } + if ((x == info.start.x) || (y == info.start.y)) + mask = info.start.mask; + DoPix(1, yorgl, yoffset, info.xorg + x); + DoPix(4, yorgol, -yoffset, info.xorgo - x); + if (arc->height & 1) + { + DoPix(2, yorgl, yoffset, info.xorgo - x); + DoPix(8, yorgol, -yoffset, info.xorg + x); + } +} + +void +mfbZeroPolyArcSS(pDraw, pGC, narcs, parcs) + DrawablePtr pDraw; + GCPtr pGC; + int narcs; + xArc *parcs; +{ + register xArc *arc; + register int i; + BoxRec box; + int x2, y2; + RegionPtr cclip; + + if (!pGC->planemask & 1) + return; + cclip = ((mfbPrivGC *)(pGC->devPrivates[mfbGCPrivateIndex].ptr))->pCompositeClip; + for (arc = parcs, i = narcs; --i >= 0; arc++) + { + if (miCanZeroArc(arc)) + { + box.x1 = arc->x + pDraw->x; + box.y1 = arc->y + pDraw->y; + /* + * Because box.x2 and box.y2 get truncated to 16 bits, and the + * RECT_IN_REGION test treats the resulting number as a signed + * integer, the RECT_IN_REGION test alone can go the wrong way. + * This can result in a server crash because the rendering + * routines in this file deal directly with cpu addresses + * of pixels to be stored, and do not clip or otherwise check + * that all such addresses are within their respective pixmaps. + * So we only allow the RECT_IN_REGION test to be used for + * values that can be expressed correctly in a signed short. + */ + x2 = box.x1 + (int)arc->width + 1; + box.x2 = x2; + y2 = box.y1 + (int)arc->height + 1; + box.y2 = y2; + if ( (x2 <= MAXSHORT) && (y2 <= MAXSHORT) && + (RECT_IN_REGION(pDraw->pScreen, cclip, &box) == rgnIN) ) + mfbZeroArcSS(pDraw, pGC, arc); + else + miZeroPolyArc(pDraw, pGC, 1, arc); + } + else + miPolyArc(pDraw, pGC, 1, arc); + } +} |