@@ -217,7 +217,7 @@ void USEFASTCALL printout(const WCHAR *str)
217
217
218
218
void printoutf (const WCHAR *message, ...)
219
219
{
220
- WCHAR buf[0x800 ];
220
+ WCHAR buf[0x500 ];
221
221
va_list argptr;
222
222
223
223
va_start (argptr, message);
@@ -227,7 +227,7 @@ void printoutf(const WCHAR *message, ...)
227
227
228
228
void printoutfColor (DWORD color, const WCHAR *message, ...)
229
229
{
230
- WCHAR buf[0x800 ];
230
+ WCHAR buf[0x500 ];
231
231
va_list argptr;
232
232
233
233
SetColor (color);
@@ -282,8 +282,17 @@ const WCHAR *GetTimeStrings(WCHAR *dest, susie_time_t timestamp)
282
282
return dest;
283
283
}
284
284
285
- #define PrintAPIload (name ) printout( (name == NULL ) ? L" x" : L" A" );printout( (name##W == NULL ) ? L" x " UNICODESTR(#name) L" \r\n " : L" W " UNICODESTR(#name) L" \r\n " );
286
- #define PrintAPIload1 (name ) printout( (name == NULL ) ? L" x " UNICODESTR(#name) L" \r\n " : L" O " UNICODESTR(#name) L" \r\n " );
285
+ typedef void (__stdcall * SUSIEAPI)(void );
286
+ void PrintAPIloadMain (SUSIEAPI funcA, SUSIEAPI funcW, const WCHAR *funcname)
287
+ {
288
+ printoutf (L" %c %c %s\t\n " ,
289
+ (funcA == NULL ) ? ' x' : ' A' ,
290
+ (funcW == NULL ) ? ' x' : ' W' ,
291
+ funcname);
292
+ }
293
+
294
+ #define PrintAPIload (name ) PrintAPIloadMain((SUSIEAPI)name, (SUSIEAPI)name##W, UNICODESTR(#name))
295
+ #define PrintAPIload1 (name ) printoutf(L" %c " UNICODESTR(#name) L" \r\n " , (name == NULL ) ? ' x' : ' O' );
287
296
288
297
void ShowAPIlist (void )
289
298
{
@@ -324,87 +333,6 @@ HANDLE OpenFileHeader(char *header)
324
333
325
334
const WCHAR PixSeqence[] = L" \x1b [38;2;%d;%d;%dm\x1b [48;2;%d;%d;%dm\u2584 " ;
326
335
327
- /* DIBのヘッダからパレットを作成する */
328
- HPALETTE DIBtoPalette (HTBMP *hTbmp, int maxY)
329
- {
330
- struct {
331
- WORD palVersion;
332
- WORD palNumEntries;
333
- PALETTEENTRY palPalEntry[256 ];
334
- } lPal;
335
- PALETTEENTRY *ppal;
336
- RGBQUAD *rgb;
337
- int r, g, b;
338
- DWORD ClrUsed;
339
- BYTE *src, *dst;
340
- BITMAPINFOHEADER *dib;
341
-
342
- dib = hTbmp->DIB ;
343
- ClrUsed = dib->biClrUsed ? dib->biClrUsed : (DWORD)(1 << dib->biBitCount );
344
- lPal.palNumEntries = (WORD)ClrUsed;
345
- lPal.palVersion = 0x300 ;
346
- ppal = lPal.palPalEntry ;
347
- if ( ClrUsed > 256 ){ // フルカラー画像は全体に散らばったパレットを作成
348
- HDC hDC;
349
- int VideoBits;
350
-
351
- hDC = GetDC (NULL );
352
- VideoBits = GetDeviceCaps (hDC, BITSPIXEL);
353
- ReleaseDC (NULL , hDC);
354
- if ( VideoBits > 8 ) return NULL ; // 画面が256超なのでそのまま表示可能
355
-
356
- rgb = hTbmp->nb .rgb2 ;
357
- lPal.palNumEntries = 6 * 6 * 6 ;
358
- for ( b = 0 ; b <= 255 ; b += 51 ){
359
- for (g = 0 ; g <= 255 ; g += 51 ){
360
- for (r = 0 ; r <= 255 ; r += 51 , ppal++){
361
- rgb->rgbRed = ppal->peRed = (BYTE)r;
362
- rgb->rgbGreen = ppal->peGreen = (BYTE)g;
363
- rgb->rgbBlue = ppal->peBlue = (BYTE)b;
364
- rgb->rgbReserved = ppal->peFlags = 0 ;
365
- rgb++;
366
- }
367
- }
368
- }
369
-
370
- if ( dib->biBitCount == 24 ){
371
- int x, y;
372
-
373
- src = dst = hTbmp->bits ;
374
- dib->biSizeImage = hTbmp->size .cx * maxY;
375
- for ( y = 0 ; y < maxY ; y++ ){
376
- for ( x = 0 ; x < dib->biWidth ; x++ ){
377
- r = ((*(src++) + 25 ) / 51 ); // red
378
- g = ((*(src++) + 25 ) / 51 ); // green
379
- // blue
380
- *dst++ = (BYTE)(r * 36 + g * 6 + ((*(src++) +25 ) / 51 ));
381
- }
382
- src += (4 - ALIGNMENT_BITS (src)) & 3 ;
383
- dst += (4 - ALIGNMENT_BITS (dst)) & 3 ;
384
- }
385
- dib->biBitCount = 8 ;
386
- dib->biCompression = BI_RGB;
387
- dib->biClrUsed = 6 *6 *6 ;
388
- dib->biClrImportant = 0 ;
389
- hTbmp->nb .dib2 = *dib;
390
- hTbmp->DIB = &hTbmp->nb .dib2 ;
391
- }
392
- }else {
393
- DWORD ci;
394
-
395
- rgb = (LPRGBQUAD)((BYTE *)hTbmp->DIB + hTbmp->PaletteOffset );
396
- if ( IsBadReadPtr (rgb, ClrUsed * sizeof (RGBQUAD)) ) return NULL ;
397
-
398
- for ( ci = 0 ; ci < ClrUsed; ci++, rgb++, ppal++ ){
399
- ppal->peRed = rgb->rgbRed ;
400
- ppal->peGreen = rgb->rgbGreen ;
401
- ppal->peBlue = rgb->rgbBlue ;
402
- ppal->peFlags = 0 ;
403
- }
404
- }
405
- return CreatePalette ((LOGPALETTE *)&lPal);
406
- }
407
-
408
336
BOOL InitBMP (HTBMP *hTbmp)
409
337
{
410
338
int palette;
@@ -414,15 +342,15 @@ BOOL InitBMP(HTBMP *hTbmp)
414
342
if ( (hTbmp->DIB = (BITMAPINFOHEADER *)LocalLock (hTbmp->info )) == NULL ) goto error;
415
343
if ( (hTbmp->bits = (BYTE *)LocalLock (hTbmp->bm )) == NULL ) goto error;
416
344
417
- hTbmp->hPalette = NULL ;
345
+ // hTbmp->hPalette = NULL;
418
346
419
347
offset = hTbmp->DIB ->biSize ;
420
348
color = hTbmp->DIB ->biBitCount ;
421
349
palette = hTbmp->DIB ->biClrUsed ;
422
350
if ( (offset < (sizeof (BITMAPINFOHEADER) + 12 ) ) && (hTbmp->DIB ->biCompression == BI_BITFIELDS) ){
423
351
offset += 12 ; // 16/32bit のときはビット割り当てがある
424
352
}
425
- hTbmp->PaletteOffset = offset;
353
+ // hTbmp->PaletteOffset = offset;
426
354
#pragma warning(suppress: 6297) // color は 8以下で、DWORD を越えることがない
427
355
offset += palette ? palette * (DWORD)sizeof (RGBQUAD) :
428
356
((color <= 8 ) ? (DWORD)(1 << color) * (DWORD)sizeof (RGBQUAD) : 0 );
@@ -438,11 +366,12 @@ BOOL InitBMP(HTBMP *hTbmp)
438
366
if ( hTbmp->size .cy < 0 ) hTbmp->size .cy = -hTbmp->size .cy ; // トップダウン
439
367
if ( palette && (color <= 8 ) ) hTbmp->DIB ->biClrUsed = 1 << color;
440
368
441
- hTbmp->hPalette = DIBtoPalette (hTbmp, hTbmp->size .cy );
369
+ // ShowImageToConsole では hPalette を使わないので省略
370
+ // hTbmp->hPalette = DIBtoPalette(hTbmp, hTbmp->size.cy);
442
371
return TRUE ;
443
372
error:
444
373
hTbmp->DIB = NULL ;
445
- hTbmp->hPalette = NULL ;
374
+ // hTbmp->hPalette = NULL;
446
375
return FALSE ;
447
376
}
448
377
@@ -513,11 +442,9 @@ BOOL ShowImageToConsole(HLOCAL HBInfo, HLOCAL HBm)
513
442
514
443
hDestBMP = CreateDIBSection (NULL , &bmpinfo, DIB_RGB_COLORS, &lpBits, NULL , 0 );
515
444
516
- // 元画像を複写
517
445
hOldDstBMP = SelectObject (hDstDC, hDestBMP);
518
446
SetStretchBltMode (hDstDC, HALFTONE);
519
447
520
- // 追加画像を複写
521
448
StretchDIBits (hDstDC,
522
449
0 , 0 , bmpinfo.bmiHeader .biWidth , bmpinfo.bmiHeader .biHeight ,
523
450
0 , 0 , hTbmp.size .cx , hTbmp.size .cy ,
0 commit comments