mirror of https://github.com/lianthony/NT4.0
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.
161 lines
3.3 KiB
161 lines
3.3 KiB
/*************************************************************************\
|
|
* Module Name: linemask.cxx
|
|
*
|
|
* useful masks and info for line drawing
|
|
*
|
|
* Created: 9-May-1991
|
|
* Author: Paul Butzi
|
|
*
|
|
* Copyright (c) 1990 Microsoft Corporation
|
|
*
|
|
\**************************************************************************/
|
|
|
|
#include "precomp.hxx"
|
|
#include "engline.hxx"
|
|
|
|
static CHUNK mask1[] = {
|
|
0xffffffff, 0xffffff7f, 0xffffff3f, 0xffffff1f,
|
|
0xffffff0f, 0xffffff07, 0xffffff03, 0xffffff01,
|
|
0xffffff00, 0xffff7f00, 0xffff3f00, 0xffff1f00,
|
|
0xffff0f00, 0xffff0700, 0xffff0300, 0xffff0100,
|
|
0xffff0000, 0xff7f0000, 0xff3f0000, 0xff1f0000,
|
|
0xff0f0000, 0xff070000, 0xff030000, 0xff010000,
|
|
0xff000000, 0x7f000000, 0x3f000000, 0x1f000000,
|
|
0x0f000000, 0x07000000, 0x03000000, 0x01000000,
|
|
0x00000000,
|
|
};
|
|
|
|
|
|
static CHUNK mask4[] = {
|
|
0xffffffff,
|
|
0xffffff0f,
|
|
0xffffff00,
|
|
0xffff0f00,
|
|
0xffff0000,
|
|
0xff0f0000,
|
|
0xff000000,
|
|
0x0f000000,
|
|
0x00000000,
|
|
};
|
|
|
|
|
|
static CHUNK mask8[] = {
|
|
0xffffffff,
|
|
0xffffff00,
|
|
0xffff0000,
|
|
0xff000000,
|
|
0x00000000,
|
|
};
|
|
|
|
static CHUNK mask16[] = {
|
|
0xffffffff,
|
|
0xffff0000,
|
|
0x00000000,
|
|
};
|
|
|
|
|
|
static CHUNK mask24[] = {
|
|
0xffffff00,
|
|
0x00ffffff,
|
|
0x0000ffff,
|
|
0x000000ff,
|
|
0x00000000,
|
|
};
|
|
|
|
static CHUNK mask32[] = {
|
|
0xffffffff,
|
|
0x00000000,
|
|
};
|
|
|
|
static CHUNK maskpel1[] = {
|
|
0x00000080, 0x00000040, 0x00000020, 0x00000010,
|
|
0x00000008, 0x00000004, 0x00000002, 0x00000001,
|
|
0x00008000, 0x00004000, 0x00002000, 0x00001000,
|
|
0x00000800, 0x00000400, 0x00000200, 0x00000100,
|
|
0x00800000, 0x00400000, 0x00200000, 0x00100000,
|
|
0x00080000, 0x00040000, 0x00020000, 0x00010000,
|
|
0x80000000, 0x40000000, 0x20000000, 0x10000000,
|
|
0x08000000, 0x04000000, 0x02000000, 0x01000000,
|
|
0x00000000,
|
|
};
|
|
|
|
|
|
static CHUNK maskpel4[] = {
|
|
0x000000f0,
|
|
0x0000000f,
|
|
0x0000f000,
|
|
0x00000f00,
|
|
0x00f00000,
|
|
0x000f0000,
|
|
0xf0000000,
|
|
0x0f000000,
|
|
0x00000000,
|
|
};
|
|
|
|
|
|
static CHUNK maskpel8[] = {
|
|
0x000000ff,
|
|
0x0000ff00,
|
|
0x00ff0000,
|
|
0xff000000,
|
|
0x00000000,
|
|
};
|
|
|
|
static CHUNK maskpel16[] = {
|
|
0x0000ffff,
|
|
0xffff0000,
|
|
0x00000000,
|
|
};
|
|
|
|
static CHUNK maskpel24[] = {
|
|
0x00000000,
|
|
0x00000000,
|
|
0xff000000,
|
|
0xffff0000,
|
|
};
|
|
|
|
static CHUNK maskpel32[] = {
|
|
0xffffffff,
|
|
0x00000000,
|
|
};
|
|
|
|
// { Pointer to array of start masks,
|
|
// Pointer to array of pixel masks,
|
|
// # of pels per chunk (power of 2)
|
|
// # of bits per pel
|
|
// log2(pels per chunk)
|
|
// pels per chunk - 1 }
|
|
|
|
BMINFO gabminfo[] = {
|
|
{ NULL, NULL, 0, 0, 0, 0 }, // BMF_DEVICE
|
|
{ mask1, maskpel1, 32, 1, 5, 31 }, // BMF_1BPP
|
|
{ mask4, maskpel4, 8, 4, 3, 7 }, // BMF_4BPP
|
|
{ mask8, maskpel8, 4, 8, 2, 3 }, // BMF_8BPP
|
|
{ mask16, maskpel16, 2, 16, 1, 1 }, // BMF_16BPP
|
|
{ mask24, maskpel24, 0, 0, -1, 0 }, // BMF_24BPP
|
|
{ mask32, maskpel32, 1, 32, 0, 0 }, // BMF_32BPP
|
|
};
|
|
|
|
#if (BMF_1BPP != 1L)
|
|
error Invalid value for BMF_1BPP
|
|
#endif
|
|
|
|
#if (BMF_4BPP != 2L)
|
|
error Invalid value for BMF_4BPP
|
|
#endif
|
|
|
|
#if (BMF_8BPP != 3L)
|
|
error Invalid value for BMF_8BPP
|
|
#endif
|
|
|
|
#if (BMF_16BPP != 4L)
|
|
error Invalid value for BMF_16BPP
|
|
#endif
|
|
|
|
#if (BMF_24BPP != 5L)
|
|
error Invalid value for BMF_24BPP
|
|
#endif
|
|
|
|
#if (BMF_32BPP != 6L)
|
|
error Invalid value for BMF_32BPP
|
|
#endif
|