ReactOS  r75919
xlateobj.c File Reference
#include <win32k.h>
#include <debug.h>
Include dependency graph for xlateobj.c:

Go to the source code of this file.

Macros

#define NDEBUG
 

Functions

 _Post_satisfies_ (return==iColor)
 
 _Function_class_ (FN_XLATE)
 
VOID NTAPI EXLATEOBJ_vInitialize (_Out_ PEXLATEOBJ pexlo, _In_opt_ PALETTE *ppalSrc, _In_opt_ PALETTE *ppalDst, _In_ COLORREF crSrcBackColor, _In_ COLORREF crDstBackColor, _In_ COLORREF crDstForeColor)
 
VOID NTAPI EXLATEOBJ_vInitXlateFromDCs (_Out_ EXLATEOBJ *pexlo, _In_ PDC pdcSrc, _In_ PDC pdcDst)
 
VOID NTAPI EXLATEOBJ_vInitSrcMonoXlate (PEXLATEOBJ pexlo, PPALETTE ppalDst, COLORREF crBackgroundClr, COLORREF crForegroundClr)
 
VOID NTAPI EXLATEOBJ_vCleanup (_Inout_ PEXLATEOBJ pexlo)
 
ULONG NTAPI XLATEOBJ_iXlate (_In_ XLATEOBJ *pxlo, _In_ ULONG iColor)
 
ULONG NTAPI XLATEOBJ_cGetPalette (_In_ XLATEOBJ *pxlo, _In_ ULONG iPal, _In_ ULONG cPal, _Out_cap_(cPal) ULONG *pPalOut)
 
HANDLE NTAPI XLATEOBJ_hGetColorTransform (_In_ XLATEOBJ *pxlo)
 
PULONG NTAPI XLATEOBJ_piVector (_In_ XLATEOBJ *pxlo)
 

Variables

static ULONG giUniqueXlate = 0
 
static const BYTE gajXlate5to8 [32]
 
static const BYTE gajXlate6to8 [64]
 

Macro Definition Documentation

#define NDEBUG

Definition at line 11 of file xlateobj.c.

Function Documentation

_Function_class_ ( FN_XLATE  )

Definition at line 52 of file xlateobj.c.

56 {
57  return (iColor == pexlo->xlo.pulXlate[0]);
58 }
_In_ ULONG iColor
Definition: xlateobj.h:17
_Post_satisfies_ ( return  = =iColor)

Globals

iXlate functions

Definition at line 14 of file xlateobj.c.

24  {{0, XO_TRIVIAL, 0, 0, 0, 0}, EXLATEOBJ_iXlateTrivial};
#define XO_TRIVIAL
Definition: winddi.h:1247
VOID NTAPI EXLATEOBJ_vInitialize ( _Out_ PEXLATEOBJ  pexlo,
_In_opt_ PALETTE ppalSrc,
_In_opt_ PALETTE ppalDst,
_In_ COLORREF  crSrcBackColor,
_In_ COLORREF  crDstBackColor,
_In_ COLORREF  crDstForeColor 
)

Private Functions

Definition at line 358 of file xlateobj.c.

Referenced by DIB_16BPP_AlphaBlend(), DIB_XXBPP_AlphaBlend(), EBRUSHOBJ_bRealizeBrush(), EBRUSHOBJ_vSetSolidRGBColor(), EngSetPointerShape(), EXLATEOBJ_vInitSrcMonoXlate(), EXLATEOBJ_vInitXlateFromDCs(), GreExtTextOutW(), GreGetDIBitsInternal(), GreGradientFill(), GreSetPointerShape(), IntSetDIBits(), IntShowMousePointer(), NtGdiExtFloodFill(), NtGdiGetNearestColor(), NtGdiGetPixel(), NtGdiSetDIBitsToDeviceInternal(), NtGdiSetPixel(), NtGdiStretchDIBitsInternal(), NtGdiTransparentBlt(), TranslateCOLORREF(), and UserDrawIconEx().

365 {
366  ULONG cEntries;
367  ULONG i, ulColor;
368 
369  if (!ppalSrc) ppalSrc = &gpalRGB;
370  if (!ppalDst) ppalDst = &gpalRGB;
371 
372  pexlo->xlo.iUniq = InterlockedIncrement((LONG*)&giUniqueXlate);
373  pexlo->xlo.cEntries = 0;
374  pexlo->xlo.flXlate = 0;
375  pexlo->xlo.pulXlate = pexlo->aulXlate;
376  pexlo->pfnXlate = EXLATEOBJ_iXlateTrivial;
377  pexlo->hColorTransform = NULL;
378  pexlo->ppalSrc = ppalSrc;
379  pexlo->ppalDst = ppalDst;
380  pexlo->xlo.iSrcType = (USHORT)ppalSrc->flFlags;
381  pexlo->xlo.iDstType = (USHORT)ppalDst->flFlags;
382  pexlo->ppalDstDc = &gpalRGB;
383 
384  if (ppalDst == ppalSrc)
385  {
386  pexlo->xlo.flXlate |= XO_TRIVIAL;
387  return;
388  }
389 
390  /* Check if both of the pallettes are indexed */
391  if (!(ppalSrc->flFlags & PAL_INDEXED) || !(ppalDst->flFlags & PAL_INDEXED))
392  {
393  /* At least one palette is not indexed, calculate shifts/masks */
394  ULONG aulMasksSrc[3], aulMasksDst[3];
395 
396  PALETTE_vGetBitMasks(ppalSrc, aulMasksSrc);
397  PALETTE_vGetBitMasks(ppalDst, aulMasksDst);
398 
399  pexlo->ulRedMask = aulMasksDst[0];
400  pexlo->ulGreenMask = aulMasksDst[1];
401  pexlo->ulBlueMask = aulMasksDst[2];
402 
403  pexlo->ulRedShift = CalculateShift(aulMasksSrc[0], aulMasksDst[0]);
404  pexlo->ulGreenShift = CalculateShift(aulMasksSrc[1], aulMasksDst[1]);
405  pexlo->ulBlueShift = CalculateShift(aulMasksSrc[2], aulMasksDst[2]);
406  }
407 
408  if (ppalSrc->flFlags & PAL_MONOCHROME)
409  {
410  /* This is a monochrome palette */
411  if (!(ppalDst->flFlags & PAL_MONOCHROME))
412  {
413  /* Mono to color, use the dest DC's fore and back color */
414  pexlo->pfnXlate = EXLATEOBJ_iXlateTable;
415  pexlo->xlo.flXlate |= XO_TABLE;
416  pexlo->xlo.cEntries = 2;
417  pexlo->xlo.pulXlate[0] =
418  PALETTE_ulGetNearestIndex(ppalDst, crDstForeColor);
419  pexlo->xlo.pulXlate[1] =
420  PALETTE_ulGetNearestIndex(ppalDst, crDstBackColor);
421  }
422  }
423  else if (ppalDst->flFlags & PAL_MONOCHROME)
424  {
425  pexlo->pfnXlate = EXLATEOBJ_iXlateToMono;
426  pexlo->xlo.flXlate |= XO_TO_MONO;
427  pexlo->xlo.cEntries = 1;
428 
429  if (ppalSrc->flFlags & PAL_INDEXED)
430  {
431  pexlo->aulXlate[0] =
432  PALETTE_ulGetNearestPaletteIndex(ppalSrc, crSrcBackColor);
433  }
434  else if (ppalSrc->flFlags & PAL_RGB)
435  {
436  pexlo->aulXlate[0] = crSrcBackColor;
437  }
438  else if (ppalSrc->flFlags & PAL_BGR)
439  {
440  pexlo->aulXlate[0] = RGB(GetBValue(crSrcBackColor),
441  GetGValue(crSrcBackColor),
442  GetRValue(crSrcBackColor));
443  }
444  else if (ppalSrc->flFlags & PAL_BITFIELDS)
445  {
446  PALETTE_vGetBitMasks(ppalSrc, &pexlo->ulRedMask);
447  pexlo->ulRedShift = CalculateShift(RGB(0xFF,0,0), pexlo->ulRedMask);
448  pexlo->ulGreenShift = CalculateShift(RGB(0,0xFF,0), pexlo->ulGreenMask);
449  pexlo->ulBlueShift = CalculateShift(RGB(0,0,0xFF), pexlo->ulBlueMask);
450 
451  pexlo->aulXlate[0] = EXLATEOBJ_iXlateShiftAndMask(pexlo, crSrcBackColor);
452  }
453  }
454  else if (ppalSrc->flFlags & PAL_INDEXED)
455  {
456  cEntries = ppalSrc->NumColors;
457 
458  /* Allocate buffer if needed */
459  if (cEntries > 6)
460  {
461  pexlo->xlo.pulXlate = EngAllocMem(0,
462  cEntries * sizeof(ULONG),
463  GDITAG_PXLATE);
464  if (!pexlo->xlo.pulXlate)
465  {
466  DPRINT1("Could not allocate pulXlate buffer.\n");
467  pexlo->pfnXlate = EXLATEOBJ_iXlateTrivial;
468  pexlo->xlo.flXlate = XO_TRIVIAL;
469  return;
470  }
471  }
472 
473  pexlo->pfnXlate = EXLATEOBJ_iXlateTable;
474  pexlo->xlo.cEntries = cEntries;
475  pexlo->xlo.flXlate |= XO_TABLE;
476 
477  if (ppalDst->flFlags & PAL_INDEXED)
478  {
479  ULONG cDiff = 0;
480 
481  for (i = 0; i < cEntries; i++)
482  {
483  ulColor = RGB(ppalSrc->IndexedColors[i].peRed,
484  ppalSrc->IndexedColors[i].peGreen,
485  ppalSrc->IndexedColors[i].peBlue);
486 
487  pexlo->xlo.pulXlate[i] =
488  PALETTE_ulGetNearestPaletteIndex(ppalDst, ulColor);
489 
490  if (pexlo->xlo.pulXlate[i] != i) cDiff++;
491  }
492 
493  /* Check if we have only trivial mappings */
494  if (cDiff == 0)
495  {
496  if (pexlo->xlo.pulXlate != pexlo->aulXlate)
497  {
498  EngFreeMem(pexlo->xlo.pulXlate);
499  pexlo->xlo.pulXlate = pexlo->aulXlate;
500  }
501  pexlo->pfnXlate = EXLATEOBJ_iXlateTrivial;
502  pexlo->xlo.flXlate = XO_TRIVIAL;
503  pexlo->xlo.cEntries = 0;
504  return;
505  }
506  }
507  else
508  {
509  for (i = 0; i < pexlo->xlo.cEntries; i++)
510  {
511  ulColor = RGB(ppalSrc->IndexedColors[i].peRed,
512  ppalSrc->IndexedColors[i].peGreen,
513  ppalSrc->IndexedColors[i].peBlue);
514  pexlo->xlo.pulXlate[i] = PALETTE_ulGetNearestBitFieldsIndex(ppalDst, ulColor);
515  }
516  }
517  }
518  else if (ppalSrc->flFlags & PAL_RGB)
519  {
520  if (ppalDst->flFlags & PAL_INDEXED)
521  pexlo->pfnXlate = EXLATEOBJ_iXlateRGBtoPal;
522 
523  else if (ppalDst->flFlags & PAL_BGR)
524  pexlo->pfnXlate = EXLATEOBJ_iXlateRGBtoBGR;
525 
526  else if (ppalDst->flFlags & PAL_RGB16_555)
527  pexlo->pfnXlate = EXLATEOBJ_iXlateRGBto555;
528 
529  else if (ppalDst->flFlags & PAL_RGB16_565)
530  pexlo->pfnXlate = EXLATEOBJ_iXlateRGBto565;
531 
532  else if (ppalDst->flFlags & PAL_BITFIELDS)
533  pexlo->pfnXlate = EXLATEOBJ_iXlateShiftAndMask;
534  }
535  else if (ppalSrc->flFlags & PAL_BGR)
536  {
537  if (ppalDst->flFlags & PAL_INDEXED)
538  pexlo->pfnXlate = EXLATEOBJ_iXlateBitfieldsToPal;
539 
540  else if (ppalDst->flFlags & PAL_RGB)
541  /* The inverse function works the same */
542  pexlo->pfnXlate = EXLATEOBJ_iXlateRGBtoBGR;
543 
544  else if (ppalDst->flFlags & PAL_RGB16_555)
545  pexlo->pfnXlate = EXLATEOBJ_iXlateBGRto555;
546 
547  else if (ppalDst->flFlags & PAL_RGB16_565)
548  pexlo->pfnXlate = EXLATEOBJ_iXlateBGRto565;
549 
550  else if (ppalDst->flFlags & PAL_BITFIELDS)
551  pexlo->pfnXlate = EXLATEOBJ_iXlateShiftAndMask;
552  }
553  else if (ppalSrc->flFlags & PAL_RGB16_555)
554  {
555  if (ppalDst->flFlags & PAL_INDEXED)
556  pexlo->pfnXlate = EXLATEOBJ_iXlate555toPal;
557 
558  else if (ppalDst->flFlags & PAL_RGB)
559  pexlo->pfnXlate = EXLATEOBJ_iXlate555toRGB;
560 
561  else if (ppalDst->flFlags & PAL_BGR)
562  pexlo->pfnXlate = EXLATEOBJ_iXlate555toBGR;
563 
564  else if (ppalDst->flFlags & PAL_RGB16_565)
565  pexlo->pfnXlate = EXLATEOBJ_iXlate555to565;
566 
567  else if (ppalDst->flFlags & PAL_BITFIELDS)
568  pexlo->pfnXlate = EXLATEOBJ_iXlateShiftAndMask;
569  }
570  else if (ppalSrc->flFlags & PAL_RGB16_565)
571  {
572  if (ppalDst->flFlags & PAL_INDEXED)
573  pexlo->pfnXlate = EXLATEOBJ_iXlate565toPal;
574 
575  else if (ppalDst->flFlags & PAL_RGB)
576  pexlo->pfnXlate = EXLATEOBJ_iXlate565toRGB;
577 
578  else if (ppalDst->flFlags & PAL_BGR)
579  pexlo->pfnXlate = EXLATEOBJ_iXlate565toBGR;
580 
581  else if (ppalDst->flFlags & PAL_RGB16_555)
582  pexlo->pfnXlate = EXLATEOBJ_iXlate565to555;
583 
584  else if (ppalDst->flFlags & PAL_BITFIELDS)
585  pexlo->pfnXlate = EXLATEOBJ_iXlateShiftAndMask;
586  }
587  else if (ppalSrc->flFlags & PAL_BITFIELDS)
588  {
589  if (ppalDst->flFlags & PAL_INDEXED)
590  pexlo->pfnXlate = EXLATEOBJ_iXlateBitfieldsToPal;
591  else
592  pexlo->pfnXlate = EXLATEOBJ_iXlateShiftAndMask;
593  }
594 
595  /* Check for a trivial shift and mask operation */
596  if (pexlo->pfnXlate == EXLATEOBJ_iXlateShiftAndMask &&
597  !pexlo->ulRedShift && !pexlo->ulGreenShift && !pexlo->ulBlueShift)
598  {
599  pexlo->pfnXlate = EXLATEOBJ_iXlateTrivial;
600  }
601 
602  /* Check for trivial xlate */
603  if (pexlo->pfnXlate == EXLATEOBJ_iXlateTrivial)
604  pexlo->xlo.flXlate = XO_TRIVIAL;
605  else
606  pexlo->xlo.flXlate &= ~XO_TRIVIAL;
607 }
#define EngFreeMem
Definition: polytest.cpp:56
#define GetRValue(rgb)
Definition: wingdi.h:2912
ULONG NTAPI PALETTE_ulGetNearestPaletteIndex(PALETTE *ppal, ULONG iColor)
Definition: palette.c:258
#define GetGValue(rgb)
Definition: wingdi.h:2913
GLenum GLclampf GLint i
Definition: glfuncs.h:14
long LONG
Definition: pedump.c:60
#define GDITAG_PXLATE
Definition: tags.h:180
smooth NULL
Definition: ftsmooth.c:513
VOID NTAPI PALETTE_vGetBitMasks(PPALETTE ppal, PULONG pulColors)
Definition: palette.c:319
#define XO_TABLE
Definition: winddi.h:1248
#define RGB(r, g, b)
Definition: wingdi.h:2917
ULONG NTAPI PALETTE_ulGetNearestIndex(PALETTE *ppal, ULONG ulColor)
Definition: palette.c:309
_In_ UINT _In_ UINT cEntries
Definition: wingdi.h:3597
void * EngAllocMem(int zero, unsigned long size, int tag=0)
Definition: polytest.cpp:70
#define XO_TRIVIAL
Definition: winddi.h:1247
#define InterlockedIncrement
Definition: armddk.h:53
unsigned short USHORT
Definition: pedump.c:61
#define XO_TO_MONO
Definition: winddi.h:1249
FORCEINLINE ULONG CalculateShift(ULONG ulMask1, ULONG ulMask2)
Definition: palette.h:130
#define DPRINT1
Definition: precomp.h:8
static ULONG giUniqueXlate
Definition: xlateobj.c:26
unsigned int ULONG
Definition: retypes.h:1
#define GetBValue(rgb)
Definition: wingdi.h:2914
PALETTE gpalRGB
Definition: palette.c:17
ULONG NTAPI PALETTE_ulGetNearestBitFieldsIndex(PALETTE *ppal, ULONG ulColor)
Definition: palette.c:291
VOID NTAPI EXLATEOBJ_vInitSrcMonoXlate ( PEXLATEOBJ  pexlo,
PPALETTE  ppalDst,
COLORREF  crBackgroundClr,
COLORREF  crForegroundClr 
)

Definition at line 632 of file xlateobj.c.

Referenced by UserDrawIconEx().

637 {
638  /* Normal initialisation, with mono palette as source */
639  EXLATEOBJ_vInitialize(pexlo,
640  gppalMono,
641  ppalDst,
642  0,
643  crBackgroundClr,
644  crForegroundClr);
645 }
PALETTE * gppalMono
Definition: palette.c:17
VOID NTAPI EXLATEOBJ_vInitialize(_Out_ PEXLATEOBJ pexlo, _In_opt_ PALETTE *ppalSrc, _In_opt_ PALETTE *ppalDst, _In_ COLORREF crSrcBackColor, _In_ COLORREF crDstBackColor, _In_ COLORREF crDstForeColor)
Definition: xlateobj.c:358
VOID NTAPI EXLATEOBJ_vInitXlateFromDCs ( _Out_ EXLATEOBJ pexlo,
_In_ PDC  pdcSrc,
_In_ PDC  pdcDst 
)

Definition at line 611 of file xlateobj.c.

Referenced by GreStretchBltMask(), NtGdiAlphaBlend(), NtGdiMaskBlt(), and NtGdiTransparentBlt().

615 {
616  PSURFACE psurfDst, psurfSrc;
617 
618  psurfDst = pdcDst->dclevel.pSurface;
619  psurfSrc = pdcSrc->dclevel.pSurface;
620 
621  /* Normal initialisation. No surface means DEFAULT_BITMAP */
622  EXLATEOBJ_vInitialize(pexlo,
623  psurfSrc ? psurfSrc->ppal : gppalMono,
624  psurfDst ? psurfDst->ppal : gppalMono,
625  pdcSrc->pdcattr->crBackgroundClr,
626  pdcDst->pdcattr->crBackgroundClr,
627  pdcDst->pdcattr->crForegroundClr);
628 
629  pexlo->ppalDstDc = pdcDst->dclevel.ppal;
630 }
PALETTE * gppalMono
Definition: palette.c:17
struct _PALETTE *const ppal
Definition: surface.h:11
VOID NTAPI EXLATEOBJ_vInitialize(_Out_ PEXLATEOBJ pexlo, _In_opt_ PALETTE *ppalSrc, _In_opt_ PALETTE *ppalDst, _In_ COLORREF crSrcBackColor, _In_ COLORREF crDstBackColor, _In_ COLORREF crDstForeColor)
Definition: xlateobj.c:358
ULONG NTAPI XLATEOBJ_cGetPalette ( _In_ XLATEOBJ pxlo,
_In_ ULONG  iPal,
_In_ ULONG  cPal,
_Out_cap_(cPal) ULONG pPalOut 
)

Definition at line 679 of file xlateobj.c.

684 {
685  PEXLATEOBJ pexlo = (PEXLATEOBJ)pxlo;
686  PPALETTE ppal;
687  ULONG i;
688 
689  if (!pxlo)
690  {
691  return 0;
692  }
693 
694  if (iPal > 5)
695  {
696  DPRINT1("XLATEOBJ_cGetPalette called with wrong iPal: %lu\n", iPal);
697  return 0;
698  }
699 
700  /* Get the requested palette */
701  if (iPal == XO_DESTDCPALETTE)
702  {
703  ppal = pexlo->ppalDstDc;
704  }
705  else if (iPal == XO_SRCPALETTE || iPal == XO_SRCBITFIELDS)
706  {
707  ppal = pexlo->ppalSrc;
708  }
709  else
710  {
711  ppal = pexlo->ppalDst;
712  }
713 
714  /* Verify palette type match */
715  if (!ppal ||
716  ((iPal == XO_SRCPALETTE || iPal == XO_DESTPALETTE)
717  && !(ppal->flFlags & PAL_INDEXED)) ||
718  ((iPal == XO_SRCBITFIELDS || iPal == XO_DESTBITFIELDS)
719  && !(ppal->flFlags & PAL_BITFIELDS)))
720  {
721  return 0;
722  }
723 
724  if(!pPalOut)
725  {
726  return ppal->NumColors;
727  }
728 
729  /* Copy the values into the buffer */
730  if (ppal->flFlags & PAL_INDEXED)
731  {
732  cPal = min(cPal, ppal->NumColors);
733  for (i = 0; i < cPal; i++)
734  {
735  pPalOut[i] = RGB(ppal->IndexedColors[i].peRed,
736  ppal->IndexedColors[i].peGreen,
737  ppal->IndexedColors[i].peBlue);
738  }
739  }
740  else
741  {
742  // FIXME: should use the above code
743  pPalOut[0] = ppal->RedMask;
744  pPalOut[1] = ppal->GreenMask;
745  pPalOut[2] = ppal->BlueMask;
746  }
747 
748  return cPal;
749 }
#define XO_DESTPALETTE
Definition: winddi.h:3152
PALETTEENTRY * IndexedColors
Definition: palette.h:42
#define XO_DESTDCPALETTE
Definition: winddi.h:3153
#define XO_DESTBITFIELDS
Definition: winddi.h:3155
GLenum GLclampf GLint i
Definition: glfuncs.h:14
ULONG RedMask
Definition: palette.h:43
ULONG BlueMask
Definition: palette.h:45
ULONG GreenMask
Definition: palette.h:44
#define RGB(r, g, b)
Definition: wingdi.h:2917
#define XO_SRCPALETTE
Definition: winddi.h:3151
ULONG NumColors
Definition: palette.h:41
FLONG flFlags
Definition: palette.h:40
PPALETTE ppalDstDc
Definition: xlateobj.h:27
#define min(a, b)
Definition: monoChain.cc:55
#define DPRINT1
Definition: precomp.h:8
unsigned int ULONG
Definition: retypes.h:1
PPALETTE ppalSrc
Definition: xlateobj.h:25
#define XO_SRCBITFIELDS
Definition: winddi.h:3154
_In_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ * pxlo
Definition: winddi.h:3414
PPALETTE ppalDst
Definition: xlateobj.h:26
struct _EXLATEOBJ * PEXLATEOBJ
HANDLE NTAPI XLATEOBJ_hGetColorTransform ( _In_ XLATEOBJ pxlo)

Definition at line 753 of file xlateobj.c.

755 {
756  PEXLATEOBJ pexlo = (PEXLATEOBJ)pxlo;
757  return pexlo->hColorTransform;
758 }
HANDLE hColorTransform
Definition: xlateobj.h:29
_In_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ * pxlo
Definition: winddi.h:3414
struct _EXLATEOBJ * PEXLATEOBJ
PULONG NTAPI XLATEOBJ_piVector ( _In_ XLATEOBJ pxlo)

Definition at line 762 of file xlateobj.c.

764 {
765  if (pxlo->iSrcType == PAL_INDEXED)
766  {
767  return pxlo->pulXlate;
768  }
769 
770  return NULL;
771 }
smooth NULL
Definition: ftsmooth.c:513
_In_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ * pxlo
Definition: winddi.h:3414

Variable Documentation

const BYTE gajXlate5to8[32]
static
Initial value:
=
{ 0, 8, 16, 25, 33, 41, 49, 58, 66, 74, 82, 90, 99,107,115,123,
132,140,148,156,165,173,181,189,197,206,214,222,231,239,247,255}

Definition at line 28 of file xlateobj.c.

const BYTE gajXlate6to8[64]
static
Initial value:
=
{ 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 45, 49, 52, 57, 61,
65, 69, 73, 77, 81, 85, 89, 93, 97,101,105,109,113,117,121,125,
130,134,138,142,146,150,154,158,162,166,170,174,178,182,186,190,
194,198,202,207,210,215,219,223,227,231,235,239,243,247,251,255}

Definition at line 32 of file xlateobj.c.

ULONG giUniqueXlate = 0
static

Definition at line 26 of file xlateobj.c.

Referenced by EXLATEOBJ_vInitialize().