Quote:
А в каких это целях? Что-то писали для "Львова"?
не
для PC (демки и системные утилиты, иногда надо что-то "по быстрому" вывести в графическом режиме)
Quote:
Ага, тут "Ракету" мы уже нашли. Только там контрольная сумма не совпадает с той, что на вкладыше написана.
неплохо бы сравнить, могут быть разные версии.
(для бейсика это проще, чем для бинарных программ)
я когда считывал и были КС всегда добивался их совпадения.
Code:
unsigned long Font4x6[]=
{
0x000000, // 32 000000000000000000000000
0x020222, // 33 000001000000010001000100
0x000005, // 34 000000000000000000001010
0x027272, // 35 000001001110010011100100
0x096690, // 36 000010010110011010010000
0x051245, // 37 000010101000010000101010
0x0b5252, // 38 000011011010010010100100
0x000024, // 39 000000000000000001000010
0x042224, // 40 000000100100010001000010
0x024442, // 41 000001000010001000100100
0x052725, // 42 000010100100111001001010
0x002720, // 43 000000000100111001000000
0x244000, // 44 010000100010000000000000
0x000700, // 45 000000000000111000000000
0x660000, // 46 011001100000000000000000
0x011244, // 47 000010001000010000100010
0x025552, // 48 000001001010101010100100
0x072232, // 49 000011100100010011000100
0x071243, // 50 000011101000010000101100
0x034243, // 51 000011000010010000101100
0x044755, // 52 000000100010111010101010
0x034317, // 53 000011000010110010001110
0x025716, // 54 000001001010111010000110
0x022247, // 55 000001000100010000101110
0x075257, // 56 000011101010010010101110
0x074757, // 57 000011100010111010101110
0x002020, // 58 000000000100000001000000
0x120200, // 59 100001000000010000000000
0x042124, // 60 000000100100100001000010
0x007070, // 61 000000001110000011100000
0x012421, // 62 000010000100001001001000
0x020243, // 63 000001000000010000101100
0x066452, // 64 000001100110001010100100
0x057556, // 65 000010101110101010100110
0x035353, // 66 000011001010110010101100
0x025152, // 67 000001001010100010100100
0x035553, // 68 000011001010101010101100
0x071317, // 69 000011101000110010001110
0x011317, // 70 000010001000110010001110
0x065152, // 71 000001101010100010100100
0x055755, // 72 000010101010111010101010
0x022222, // 73 000001000100010001000100
0x025447, // 74 000001001010001000101110
0x055355, // 75 000010101010110010101010
0x071111, // 76 000011101000100010001000
0x055575, // 77 000010101010101011101010
0x055553, // 78 000010101010101010101100
0x025552, // 79 000001001010101010100100
0x011757, // 80 000010001000111010101110
0x065552, // 81 000001101010101010100100
0x055353, // 82 000010101010110010101100
0x074717, // 83 000011100010111010001110
0x022227, // 84 000001000100010001001110
0x035555, // 85 000011001010101010101010
0x025555, // 86 000001001010101010101010
0x057555, // 87 000010101110101010101010
0x055255, // 88 000010101010010010101010
0x022255, // 89 000001000100010010101010
0x071247, // 90 000011101000010000101110
0x031113, // 91 000011001000100010001100
0x044211, // 92 000000100010010010001000
0x064446, // 93 000001100010001000100110
0x052000, // 94 000010100100000000000000
0xf00000, // 95 111100000000000000000000
0x05bbb5, // 96 000010101101110111011010
0x057556, // 97 000010101110101010100110
0x075717, // 98 000011101010111010001110
0x475555, // 99 001011101010101010101010
0x075556, // 100 000011101010101010100110
0x071317, // 101 000011101000110010001110
0x027772, // 102 000001001110111011100100
0x011117, // 103 000010001000100010001110
0x055255, // 104 000010101010010010101010
0x065555, // 105 000001101010101010101010
0x075502, // 106 000011101010101000000100
0x055355, // 107 000010101010110010101010
0x055556, // 108 000010101010101010100110
0x055575, // 109 000010101010101011101010
0x055755, // 110 000010101010111010101010
0x025552, // 111 000001001010101010100100
0x055557, // 112 000010101010101010101110
0x055656, // 113 000010101010011010100110
0x011757, // 114 000010001000111010101110
0x025152, // 115 000001001010100010100100
0x022227, // 116 000001000100010001001110
0x034655, // 117 000011000010011010101010
0x077277, // 118 000011101110010011101110
0x035353, // 119 000011001010110010101100
0x035311, // 120 000011001010110010001000
0x035355, // 121 000011001010110010101010
0x034243, // 122 000011000010010000101100
0x077775, // 123 000011101110111011101010
0x034643, // 124 000011000010011000101100
0x477775, // 125 001011101110111011101010
0x044755, // 126 000000100010111010101010
0x0000f0 // 127 000000000000000011110000
};
void Banner
(
HDC dc, int xx, int yy, char *str
) {
// BmX Should be divisible by 32 !
struct {BITMAPINFOHEADER h; RGBQUAD c[2];} bh = {
{sizeof(BITMAPINFOHEADER), BmX, -BmY,
1,1,BI_RGB,0,0,0,2,2},
{{0, 0, 0}, {255, 255, 255}}
};
unsigned char x1[16] = {0x00, 0x80, 0x40, 0xC0, 0x20, 0xA0, 0x60, 0xE0,
0x10, 0x90, 0x50, 0xD0, 0x30, 0xB0, 0x70, 0xF0},
x2[16] = {0x00, 0x08, 0x04, 0x0C, 0x02, 0x0A, 0x06, 0x0E,
0x01, 0x09, 0x05, 0x0D, 0x03, 0x0B, 0x07, 0x0F};
unsigned char bb[BmY][BmX/8], *p; int BmW, x, y, i, j;
HDC mem_dc; HBITMAP mem_bm; HGDIOBJ mem_oj;
mem_dc = CreateCompatibleDC(dc);
mem_bm = CreateCompatibleBitmap(dc, BmX, BmY);
mem_oj = SelectObject(mem_dc, mem_bm);
BmW = strlen(str)*4; if (BmW > BmX) BmW = BmX;
for (j=y=0; y<BmY; y++, j+=4)
for (p=bb[y], i=x=0; x<BmX; x+=8, i+=2)
*p++ = x1[(Font4x6[str[i+0]-' '] >> j) & 0x0F]|
x2[(Font4x6[str[i+1]-' '] >> j) & 0x0F];
SetDIBits(mem_dc, mem_bm, 0,BmY, bb, (BITMAPINFO*)&bh, DIB_RGB_COLORS);
StretchBlt(dc, xx,yy, BmW*2,BmY*2, mem_dc, 0,0, BmW,BmY, SRCINVERT);
// BitBlt(dc, xx,yy, BmW,BmY, mem_dc, 0,0, SRCINVERT);
SelectObject(mem_dc, mem_oj);
DeleteDC(mem_dc);
DeleteObject(mem_bm);
}
как-то так...