wrapbpp.cpp
来自「老外的一个开源项目」· C++ 代码 · 共 716 行 · 第 1/3 页
CPP
716 行
// Copyright (c) David Vescovi. All rights reserved.
// Part of Project DrumStix
// Windows Embedded Developers Interest Group (WE-DIG) community project.
// http://www.we-dig.org
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//------------------------------------------------------------------------------
//
// Virtual display driver.
//
//------------------------------------------------------------------------------
#include <windows.h>
#include <types.h>
#include <winddi.h>
#include <gpe.h>
#include <wrapbpp.h>
#define PALETTE_SIZE_2BPP 4
RGBQUAD _rgb2bpp[PALETTE_SIZE_2BPP] =
{
{ 0x00, 0x00, 0x00, 0 }, /* 0 */ /* Black */ \
{ 0x80, 0x80, 0x80, 0 }, /* 248 */ /* Dark Grey */ \
{ 0xc0, 0xc0, 0xc0, 0 }, /* 7 */ /* Light Grey */ \
{ 0xff, 0xff, 0xff, 0 } /* 255 */ /* White */ \
};
ulong BitMasks2bpp[] = { 0x0001,0x0002,0x0000 };
#define PALETTE_SIZE_8BPP 256
RGBQUAD _rgb8bpp[PALETTE_SIZE_8BPP] = \
{ \
{ 0x00, 0x00, 0x00, 0 }, /* 0 Sys Black gray 0 */ \
{ 0x80, 0x00, 0x00, 0 }, /* 1 Sys Dk Red */ \
{ 0x00, 0x80, 0x00, 0 }, /* 2 Sys Dk Green */ \
{ 0x80, 0x80, 0x00, 0 }, /* 3 Sys Dk Yellow */ \
{ 0x00, 0x00, 0x80, 0 }, /* 4 Sys Dk Blue */ \
{ 0x80, 0x00, 0x80, 0 }, /* 5 Sys Dk Violet */ \
{ 0x00, 0x80, 0x80, 0 }, /* 6 Sys Dk Cyan */ \
{ 0xc0, 0xc0, 0xc0, 0 }, /* 7 Sys Lt Grey gray 192 */ \
{ 0xc0, 0xdc, 0xc0, 0 }, /* 8 Sys 8 */ \
{ 0xa6, 0xca, 0xf0, 0 }, /* 9 Sys 9 (the first 10 are fixed by Windows) */ \
{ 0x04, 0x04, 0x04, 0 }, /* 10 gray 4 */ \
{ 0x08, 0x08, 0x08, 0 }, /* 11 gray 8 */ \
{ 0x0c, 0x0c, 0x0c, 0 }, /* 12 gray 12 */ \
{ 0x11, 0x11, 0x11, 0 }, /* 13 gray 17 */ \
{ 0x16, 0x16, 0x16, 0 }, /* 14 gray 22 */ \
{ 0x1c, 0x1c, 0x1c, 0 }, /* 15 gray 28 */ \
{ 0x22, 0x22, 0x22, 0 }, /* 16 gray 34 */ \
{ 0x29, 0x29, 0x29, 0 }, /* 17 gray 41 */ \
{ 0x55, 0x55, 0x55, 0 }, /* 18 swapped so inversions look good gray 85 */ \
{ 0x4d, 0x4d, 0x4d, 0 }, /* 19 swapped so inversions look good gray 77 */ \
{ 0x42, 0x42, 0x42, 0 }, /* 20 swapped so inversions look good gray 66 */ \
{ 0x39, 0x39, 0x39, 0 }, /* 21 swapped so inversions look good gray 57 */ \
{ 0xFF, 0x7C, 0x80, 0 }, /* 22 R255 G124 B128 */ \
{ 0xFF, 0x50, 0x50, 0 }, /* 23 R255 G80 B80 */ \
{ 0xD6, 0x00, 0x93, 0 }, /* 24 R214 G0 B147 */ \
{ 0xCC, 0xEC, 0xFF, 0 }, /* 25 R204 G236 B255 */ \
{ 0xEF, 0xD6, 0xC6, 0 }, /* 26 R239 G214 B198 */ \
{ 0xE7, 0xE7, 0xD6, 0 }, /* 27 R231 G231 B214 */ \
{ 0xAD, 0xA9, 0x90, 0 }, /* 28 R173 G169 B144 */ \
{ 0x33, 0x00, 0x00, 0 }, /* 29 */ \
{ 0x66, 0x00, 0x00, 0 }, /* 30 */ \
{ 0x99, 0x00, 0x00, 0 }, /* 31 */ \
{ 0xcc, 0x00, 0x00, 0 }, /* 32 */ \
{ 0x00, 0x33, 0x00, 0 }, /* 33 */ \
{ 0x33, 0x33, 0x00, 0 }, /* 34 */ \
{ 0x66, 0x33, 0x00, 0 }, /* 35 */ \
{ 0x99, 0x33, 0x00, 0 }, /* 36 */ \
{ 0xcc, 0x33, 0x00, 0 }, /* 37 */ \
{ 0xff, 0x33, 0x00, 0 }, /* 38 */ \
{ 0x00, 0x66, 0x00, 0 }, /* 39 */ \
{ 0x33, 0x66, 0x00, 0 }, /* 40 */ \
{ 0x66, 0x66, 0x00, 0 }, /* 41 */ \
{ 0x99, 0x66, 0x00, 0 }, /* 42 */ \
{ 0xcc, 0x66, 0x00, 0 }, /* 43 */ \
{ 0xff, 0x66, 0x00, 0 }, /* 44 */ \
{ 0x00, 0x99, 0x00, 0 }, /* 45 */ \
{ 0x33, 0x99, 0x00, 0 }, /* 46 */ \
{ 0x66, 0x99, 0x00, 0 }, /* 47 */ \
{ 0x99, 0x99, 0x00, 0 }, /* 48 */ \
{ 0xcc, 0x99, 0x00, 0 }, /* 49 */ \
{ 0xff, 0x99, 0x00, 0 }, /* 50 */ \
{ 0x00, 0xcc, 0x00, 0 }, /* 51 */ \
{ 0x33, 0xcc, 0x00, 0 }, /* 52 */ \
{ 0x66, 0xcc, 0x00, 0 }, /* 53 */ \
{ 0x99, 0xcc, 0x00, 0 }, /* 54 */ \
{ 0xcc, 0xcc, 0x00, 0 }, /* 55 */ \
{ 0xff, 0xcc, 0x00, 0 }, /* 56 */ \
{ 0x66, 0xff, 0x00, 0 }, /* 57 */ \
{ 0x99, 0xff, 0x00, 0 }, /* 58 */ \
{ 0xcc, 0xff, 0x00, 0 }, /* 59 */ \
{ 0x00, 0x00, 0x33, 0 }, /* 60 */ \
{ 0x33, 0x00, 0x33, 0 }, /* 61 */ \
{ 0x66, 0x00, 0x33, 0 }, /* 62 */ \
{ 0x99, 0x00, 0x33, 0 }, /* 63 */ \
{ 0xcc, 0x00, 0x33, 0 }, /* 64 */ \
{ 0xff, 0x00, 0x33, 0 }, /* 65 */ \
{ 0x00, 0x33, 0x33, 0 }, /* 66 */ \
{ 0x33, 0x33, 0x33, 0 }, /* 67 gray 51 */ \
{ 0x66, 0x33, 0x33, 0 }, /* 68 */ \
{ 0x99, 0x33, 0x33, 0 }, /* 69 */ \
{ 0xcc, 0x33, 0x33, 0 }, /* 70 */ \
{ 0xff, 0x33, 0x33, 0 }, /* 71 */ \
{ 0x00, 0x66, 0x33, 0 }, /* 72 */ \
{ 0x33, 0x66, 0x33, 0 }, /* 73 */ \
{ 0x66, 0x66, 0x33, 0 }, /* 74 */ \
{ 0x99, 0x66, 0x33, 0 }, /* 75 */ \
{ 0xcc, 0x66, 0x33, 0 }, /* 76 */ \
{ 0xff, 0x66, 0x33, 0 }, /* 77 */ \
{ 0x00, 0x99, 0x33, 0 }, /* 78 */ \
{ 0x33, 0x99, 0x33, 0 }, /* 79 */ \
{ 0x66, 0x99, 0x33, 0 }, /* 80 */ \
{ 0x99, 0x99, 0x33, 0 }, /* 81 */ \
{ 0xcc, 0x99, 0x33, 0 }, /* 82 */ \
{ 0xff, 0x99, 0x33, 0 }, /* 83 */ \
{ 0x00, 0xcc, 0x33, 0 }, /* 84 */ \
{ 0x33, 0xcc, 0x33, 0 }, /* 85 */ \
{ 0x66, 0xcc, 0x33, 0 }, /* 86 */ \
{ 0x99, 0xcc, 0x33, 0 }, /* 87 */ \
{ 0xcc, 0xcc, 0x33, 0 }, /* 88 */ \
{ 0xff, 0xcc, 0x33, 0 }, /* 89 */ \
{ 0x33, 0xff, 0x33, 0 }, /* 90 */ \
{ 0x66, 0xff, 0x33, 0 }, /* 91 */ \
{ 0x99, 0xff, 0x33, 0 }, /* 92 */ \
{ 0xcc, 0xff, 0x33, 0 }, /* 93 */ \
{ 0xff, 0xff, 0x33, 0 }, /* 94 */ \
{ 0x00, 0x00, 0x66, 0 }, /* 95 */ \
{ 0x33, 0x00, 0x66, 0 }, /* 96 */ \
{ 0x66, 0x00, 0x66, 0 }, /* 97 */ \
{ 0x99, 0x00, 0x66, 0 }, /* 98 */ \
{ 0xcc, 0x00, 0x66, 0 }, /* 99 */ \
{ 0xff, 0x00, 0x66, 0 }, /* 100 */ \
{ 0x00, 0x33, 0x66, 0 }, /* 101 */ \
{ 0x33, 0x33, 0x66, 0 }, /* 102 */ \
{ 0x66, 0x33, 0x66, 0 }, /* 103 */ \
{ 0x99, 0x33, 0x66, 0 }, /* 104 */ \
{ 0xcc, 0x33, 0x66, 0 }, /* 105 */ \
{ 0xff, 0x33, 0x66, 0 }, /* 106 */ \
{ 0x00, 0x66, 0x66, 0 }, /* 107 */ \
{ 0x33, 0x66, 0x66, 0 }, /* 108 */ \
{ 0x66, 0x66, 0x66, 0 }, /* 109 gray 102 */ \
{ 0x99, 0x66, 0x66, 0 }, /* 110 */ \
{ 0xcc, 0x66, 0x66, 0 }, /* 111 */ \
{ 0x00, 0x99, 0x66, 0 }, /* 112 */ \
{ 0x33, 0x99, 0x66, 0 }, /* 113 */ \
{ 0x66, 0x99, 0x66, 0 }, /* 114 */ \
{ 0x99, 0x99, 0x66, 0 }, /* 115 */ \
{ 0xcc, 0x99, 0x66, 0 }, /* 116 */ \
{ 0xff, 0x99, 0x66, 0 }, /* 117 */ \
{ 0x00, 0xcc, 0x66, 0 }, /* 118 */ \
{ 0x33, 0xcc, 0x66, 0 }, /* 119 */ \
{ 0x99, 0xcc, 0x66, 0 }, /* 120 */ \
{ 0xcc, 0xcc, 0x66, 0 }, /* 121 */ \
{ 0xff, 0xcc, 0x66, 0 }, /* 122 */ \
{ 0x00, 0xff, 0x66, 0 }, /* 123 */ \
{ 0x33, 0xff, 0x66, 0 }, /* 124 */ \
{ 0x99, 0xff, 0x66, 0 }, /* 125 */ \
{ 0xcc, 0xff, 0x66, 0 }, /* 126 */ \
{ 0xff, 0x00, 0xcc, 0 }, /* 127 */ \
{ 0xcc, 0x00, 0xff, 0 }, /* 128 */ \
{ 0x00, 0x99, 0x99, 0 }, /* 129 */ \
{ 0x99, 0x33, 0x99, 0 }, /* 130 */ \
{ 0x99, 0x00, 0x99, 0 }, /* 131 */ \
{ 0xcc, 0x00, 0x99, 0 }, /* 132 */ \
{ 0x00, 0x00, 0x99, 0 }, /* 133 */ \
{ 0x33, 0x33, 0x99, 0 }, /* 134 */ \
{ 0x66, 0x00, 0x99, 0 }, /* 135 */ \
{ 0xcc, 0x33, 0x99, 0 }, /* 136 */ \
{ 0xff, 0x00, 0x99, 0 }, /* 137 */ \
{ 0x00, 0x66, 0x99, 0 }, /* 138 */ \
{ 0x33, 0x66, 0x99, 0 }, /* 139 */ \
{ 0x66, 0x33, 0x99, 0 }, /* 140 */ \
{ 0x99, 0x66, 0x99, 0 }, /* 141 */ \
{ 0xcc, 0x66, 0x99, 0 }, /* 142 */ \
{ 0xff, 0x33, 0x99, 0 }, /* 143 */ \
{ 0x33, 0x99, 0x99, 0 }, /* 144 */ \
{ 0x66, 0x99, 0x99, 0 }, /* 145 */ \
{ 0x99, 0x99, 0x99, 0 }, /* 146 gray 153 */ \
{ 0xcc, 0x99, 0x99, 0 }, /* 147 */ \
{ 0xff, 0x99, 0x99, 0 }, /* 148 */ \
{ 0x00, 0xcc, 0x99, 0 }, /* 149 */ \
{ 0x33, 0xcc, 0x99, 0 }, /* 150 */ \
{ 0x66, 0xcc, 0x66, 0 }, /* 151 */ \
{ 0x99, 0xcc, 0x99, 0 }, /* 152 */ \
{ 0xcc, 0xcc, 0x99, 0 }, /* 153 */ \
{ 0xff, 0xcc, 0x99, 0 }, /* 154 */ \
{ 0x00, 0xff, 0x99, 0 }, /* 155 */ \
{ 0x33, 0xff, 0x99, 0 }, /* 156 */ \
{ 0x66, 0xcc, 0x99, 0 }, /* 157 */ \
{ 0x99, 0xff, 0x99, 0 }, /* 158 */ \
{ 0xcc, 0xff, 0x99, 0 }, /* 159 */ \
{ 0xff, 0xff, 0x99, 0 }, /* 160 */ \
{ 0x00, 0x00, 0xcc, 0 }, /* 161 */ \
{ 0x33, 0x00, 0x99, 0 }, /* 162 */ \
{ 0x66, 0x00, 0xcc, 0 }, /* 163 */ \
{ 0x99, 0x00, 0xcc, 0 }, /* 164 */ \
{ 0xcc, 0x00, 0xcc, 0 }, /* 165 */ \
{ 0x00, 0x33, 0x99, 0 }, /* 166 */ \
{ 0x33, 0x33, 0xcc, 0 }, /* 167 */ \
{ 0x66, 0x33, 0xcc, 0 }, /* 168 */ \
{ 0x99, 0x33, 0xcc, 0 }, /* 169 */ \
{ 0xcc, 0x33, 0xcc, 0 }, /* 170 */ \
{ 0xff, 0x33, 0xcc, 0 }, /* 171 */ \
{ 0x00, 0x66, 0xcc, 0 }, /* 172 */ \
{ 0x33, 0x66, 0xcc, 0 }, /* 173 */ \
{ 0x66, 0x66, 0x99, 0 }, /* 174 */ \
{ 0x99, 0x66, 0xcc, 0 }, /* 175 */ \
{ 0xcc, 0x66, 0xcc, 0 }, /* 176 */ \
{ 0xff, 0x66, 0x99, 0 }, /* 177 */ \
{ 0x00, 0x99, 0xcc, 0 }, /* 178 */ \
{ 0x33, 0x99, 0xcc, 0 }, /* 179 */ \
{ 0x66, 0x99, 0xcc, 0 }, /* 180 */ \
{ 0x99, 0x99, 0xcc, 0 }, /* 181 */ \
{ 0xcc, 0x99, 0xcc, 0 }, /* 182 */ \
{ 0xff, 0x99, 0xcc, 0 }, /* 183 */ \
{ 0x00, 0xcc, 0xcc, 0 }, /* 184 */ \
{ 0x33, 0xcc, 0xcc, 0 }, /* 185 */ \
{ 0x66, 0xcc, 0xcc, 0 }, /* 186 */ \
{ 0x99, 0xcc, 0xcc, 0 }, /* 187 */ \
{ 0xcc, 0xcc, 0xcc, 0 }, /* 188 gray 204 */ \
{ 0xff, 0xcc, 0xcc, 0 }, /* 189 */ \
{ 0x00, 0xff, 0xcc, 0 }, /* 190 */ \
{ 0x33, 0xff, 0xcc, 0 }, /* 191 */ \
{ 0x66, 0xff, 0x99, 0 }, /* 192 */ \
{ 0x99, 0xff, 0xcc, 0 }, /* 193 */ \
{ 0xcc, 0xff, 0xcc, 0 }, /* 194 */ \
{ 0xff, 0xff, 0xcc, 0 }, /* 195 */ \
{ 0x33, 0x00, 0xcc, 0 }, /* 196 */ \
{ 0x66, 0x00, 0xff, 0 }, /* 197 */ \
{ 0x99, 0x00, 0xff, 0 }, /* 198 */ \
{ 0x00, 0x33, 0xcc, 0 }, /* 199 */ \
{ 0x33, 0x33, 0xff, 0 }, /* 200 */ \
{ 0x66, 0x33, 0xff, 0 }, /* 201 */ \
{ 0x99, 0x33, 0xff, 0 }, /* 202 */ \
{ 0xcc, 0x33, 0xff, 0 }, /* 203 */ \
{ 0xff, 0x33, 0xff, 0 }, /* 204 */ \
{ 0x00, 0x66, 0xff, 0 }, /* 205 */ \
{ 0x33, 0x66, 0xff, 0 }, /* 206 */ \
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?