Skip to content

Commit 60be708

Browse files
committed
update 1.2
1 parent d9123ec commit 60be708

File tree

9 files changed

+84
-142
lines changed

9 files changed

+84
-142
lines changed

app.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/*=============================================================================
22
=============================================================================*/
3-
#define Q_Version 1,1,0,0
4-
#define InfoVer "1.1"
3+
#define Q_Version 1,2,0,0
4+
#define InfoVer "1.2"
55
#define InfoCopy "(c)2024"
66

77
#ifndef _WIN64

archive.bat

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
@echo off
22
set RETAIL=1
33
rem *** set value ***
4-
set arcname=runspx11.zip
4+
set arcname=runspx12.zip
55
set readme=runspx.txt
66
set srcname=runspxsrc.lzh
77

makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = run
22

3-
UseDebug = 1 # 1 なら debug 指定
3+
UseDebug = 0 # 1 なら debug 指定
44
!ifndef UseBCC
55
UseBCC = 1 # 1 なら BCC32 , 0 なら CL
66
!endif

release/runspx12.zip

182 KB
Binary file not shown.

run.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,15 +125,16 @@ extern const WCHAR *GetTimeStrings(WCHAR *dest, susie_time_t timestamp);
125125
typedef struct {
126126
BYTE *bits; // ビットマップのイメージ
127127
HLOCAL info, bm;
128-
HPALETTE hPalette;
128+
// HPALETTE hPalette;
129129
SIZE size; // 画像の大きさ(DIBの値はトップダウンもあるので使わないこと)
130130
BITMAPINFOHEADER *DIB;
131+
/*
131132
DWORD PaletteOffset;
132-
133133
struct { // 減色パレット
134134
BITMAPINFOHEADER dib2;
135135
RGBQUAD rgb2[256];
136136
} nb;
137+
*/
137138
} HTBMP;
138139

139140
#ifdef __cplusplus

run_code.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ BOOL CheckHeader(void)
1212
HANDLE hFile;
1313
int result;
1414

15+
if ( IsSupported == NULL ) return FALSE;
1516
hFile = OpenFileHeader(header);
1617
if ( hFile == INVALID_HANDLE_VALUE ) return FALSE;
1718

@@ -38,7 +39,7 @@ void SaveDibData(LPCWSTR lpBmpFn, HLOCAL HBInfo, HLOCAL HBm)
3839
lpbmh = LocalLock(HBInfo);
3940
lpdib = LocalLock(HBm);
4041
if ( lpbmh == NULL || lpdib == NULL ||
41-
*(size_t *)lpbmh < sizeof(BITMAPCOREHEADER) || *(size_t *)lpbmh > 256 ) {
42+
*(DWORD *)lpbmh < sizeof(BITMAPCOREHEADER) || *(DWORD *)lpbmh > 256 ) {
4243
printout(L"The plug-in has returned an invalid memory block.\n");
4344
LocalUnlock(HBInfo);
4445
LocalUnlock(HBm);
@@ -53,7 +54,7 @@ void SaveDibData(LPCWSTR lpBmpFn, HLOCAL HBInfo, HLOCAL HBm)
5354
return;
5455
}
5556

56-
if ( (bmh_bytes = *(size_t *)lpbmh) < sizeof(BITMAPINFOHEADER) ){ /* OS/2 format */
57+
if ( (bmh_bytes = *(DWORD *)lpbmh) < sizeof(BITMAPINFOHEADER) ){ /* OS/2 format */
5758
LPBITMAPCOREHEADER lpbmch = (LPBITMAPCOREHEADER)lpbmh;
5859
if ( lpbmch->bcBitCount <= 8 ){
5960
bmh_bytes += sizeof(RGBTRIPLE) << lpbmch->bcBitCount;

run_sub.cpp

Lines changed: 18 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ void USEFASTCALL printout(const WCHAR *str)
217217

218218
void printoutf(const WCHAR *message, ...)
219219
{
220-
WCHAR buf[0x800];
220+
WCHAR buf[0x500];
221221
va_list argptr;
222222

223223
va_start(argptr, message);
@@ -227,7 +227,7 @@ void printoutf(const WCHAR *message, ...)
227227

228228
void printoutfColor(DWORD color, const WCHAR *message, ...)
229229
{
230-
WCHAR buf[0x800];
230+
WCHAR buf[0x500];
231231
va_list argptr;
232232

233233
SetColor(color);
@@ -282,8 +282,17 @@ const WCHAR *GetTimeStrings(WCHAR *dest, susie_time_t timestamp)
282282
return dest;
283283
}
284284

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');
287296

288297
void ShowAPIlist(void)
289298
{
@@ -324,87 +333,6 @@ HANDLE OpenFileHeader(char *header)
324333

325334
const WCHAR PixSeqence[] = L"\x1b[38;2;%d;%d;%dm\x1b[48;2;%d;%d;%dm\u2584";
326335

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-
408336
BOOL InitBMP(HTBMP *hTbmp)
409337
{
410338
int palette;
@@ -414,15 +342,15 @@ BOOL InitBMP(HTBMP *hTbmp)
414342
if ( (hTbmp->DIB = (BITMAPINFOHEADER *)LocalLock(hTbmp->info)) == NULL ) goto error;
415343
if ( (hTbmp->bits = (BYTE *)LocalLock(hTbmp->bm)) == NULL ) goto error;
416344

417-
hTbmp->hPalette = NULL;
345+
// hTbmp->hPalette = NULL;
418346

419347
offset = hTbmp->DIB->biSize;
420348
color = hTbmp->DIB->biBitCount;
421349
palette = hTbmp->DIB->biClrUsed;
422350
if ( (offset < (sizeof(BITMAPINFOHEADER) + 12) ) && (hTbmp->DIB->biCompression == BI_BITFIELDS) ){
423351
offset += 12; // 16/32bit のときはビット割り当てがある
424352
}
425-
hTbmp->PaletteOffset = offset;
353+
// hTbmp->PaletteOffset = offset;
426354
#pragma warning(suppress: 6297) // color は 8以下で、DWORD を越えることがない
427355
offset += palette ? palette * (DWORD)sizeof(RGBQUAD) :
428356
((color <= 8) ? (DWORD)(1 << color) * (DWORD)sizeof(RGBQUAD) : 0);
@@ -438,11 +366,12 @@ BOOL InitBMP(HTBMP *hTbmp)
438366
if ( hTbmp->size.cy < 0 ) hTbmp->size.cy = -hTbmp->size.cy; // トップダウン
439367
if ( palette && (color <= 8) ) hTbmp->DIB->biClrUsed = 1 << color;
440368

441-
hTbmp->hPalette = DIBtoPalette(hTbmp, hTbmp->size.cy);
369+
// ShowImageToConsole では hPalette を使わないので省略
370+
// hTbmp->hPalette = DIBtoPalette(hTbmp, hTbmp->size.cy);
442371
return TRUE;
443372
error:
444373
hTbmp->DIB = NULL;
445-
hTbmp->hPalette = NULL;
374+
// hTbmp->hPalette = NULL;
446375
return FALSE;
447376
}
448377

@@ -513,11 +442,9 @@ BOOL ShowImageToConsole(HLOCAL HBInfo, HLOCAL HBm)
513442

514443
hDestBMP = CreateDIBSection(NULL, &bmpinfo, DIB_RGB_COLORS, &lpBits, NULL, 0);
515444

516-
// 元画像を複写
517445
hOldDstBMP = SelectObject(hDstDC, hDestBMP);
518446
SetStretchBltMode(hDstDC, HALFTONE);
519447

520-
// 追加画像を複写
521448
StretchDIBits(hDstDC,
522449
0, 0, bmpinfo.bmiHeader.biWidth, bmpinfo.bmiHeader.biHeight,
523450
0, 0, hTbmp.size.cx, hTbmp.size.cy,

0 commit comments

Comments
 (0)