Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

113 lines
3.0 KiB

//-----------------------------------------------------------------------------
//
// This file contains the general span parsing code.
//
// Copyright (C) Microsoft Corporation, 1997.
//
//-----------------------------------------------------------------------------
#include "pch.cpp"
#pragma hdrstop
#include "rloop_mh.h"
#include "rmono.h"
#include "rtrd_mh.h"
include(`m4hdr.mh')
include(`rampbead.mh')
UINT16 g_uRampDitherTable[16] =
{
0x00, 0x80, 0x20, 0xa0,
0xc0, 0x40, 0xe0, 0x60,
0x30, 0xb0, 0x10, 0x90,
0xf0, 0x70, 0xd0, 0x50
};
//-----------------------------------------------------------------------------
//
// Ramp_*Tbl
//
// The individual bead tables
//
//-----------------------------------------------------------------------------
#define Ramp_NULL NULL
define(`d_MakeTable', `
static d_UpCase(`$1')`'BEADS Ramp_`'$1`'Beads =
{
d_Null(d_`'$1`'Beads(`` Ramp_XX,
'', `XX'))dnl
};')dnl
dnl
d_MakeTable(RampBegin)
d_MakeTable(RampMono)
d_MakeTable(RampTexRead)
// RenderSpans table is initially empty because it's very sparsely populated.
static RAMPRENDERSPANSBEADS Ramp_RampRenderSpansBeads;
// Actual RenderSpans table entries.
struct RAMP_RENDERSPANSBEAD_ENTRY
{
INT iIndex;
PFNRENDERSPANS pfn;
};
static RAMP_RENDERSPANSBEAD_ENTRY Ramp_SpecializedRampRenderSpansBeads[] =
{
d_Null(d_SpecializedRampRenderSpansBeads(`` d_RampRenderSpansBeadIndex(XX), Ramp_XX, '', `XX'))dnl
};
//-----------------------------------------------------------------------------
//
// Ramp_BeadTbl
//
// The root of all the bead table pointers.
//
//-----------------------------------------------------------------------------
RAMPBEADTABLE g_Ramp_BeadTbl =
{
Ramp_RenderSpans_Any,
&Ramp_RampRenderSpansBeads,
&Ramp_RampBeginBeads,
&Ramp_RampMonoBeads,
&Ramp_RampTexReadBeads,
};
//----------------------------------------------------------------------------
//
// Ramp_InitBeadTbl
//
// Initializes the ramp bead table.
//
//----------------------------------------------------------------------------
void
Ramp_InitBeadTbl(void)
{
INT i;
PFNRENDERSPANS *ppfn;
RAMP_RENDERSPANSBEAD_ENTRY *pEnt;
// Initialize all RenderSpans bead entries to the generic routine.
ppfn = (PFNRENDERSPANS *)g_Ramp_BeadTbl.pRenderSpansBeads;
for (i = 0;
i < sizeof(*g_Ramp_BeadTbl.pRenderSpansBeads)/sizeof(PFNRENDERSPANS);
i++)
{
*ppfn++ = g_Ramp_BeadTbl.pfnRenderSpansAny;
}
// #define NO_SPECIALIZED_LOOPS
#ifndef NO_SPECIALIZED_LOOPS
// Insert specific implementations.
pEnt = &Ramp_SpecializedRampRenderSpansBeads[0];
ppfn = (PFNRENDERSPANS *)g_Ramp_BeadTbl.pRenderSpansBeads;
for (i = 0;
i < sizeof(Ramp_SpecializedRampRenderSpansBeads) / sizeof(*pEnt);
i++)
{
*(ppfn + pEnt->iIndex) = pEnt->pfn;
pEnt++;
}
#endif
}