--- np2/win9x/dialog/d_bmp.cpp 2004/03/27 10:52:56 1.4 +++ np2/win9x/dialog/d_bmp.cpp 2004/06/21 15:19:15 1.5 @@ -8,7 +8,7 @@ #include "dialogs.h" #include "pccore.h" #include "iocore.h" -#include "scrnbmp.h" +#include "scrnsave.h" #include "font.h" @@ -52,30 +52,34 @@ void dialog_font(HWND hWnd) { void dialog_writebmp(HWND hWnd) { - SCRNBMP bmp; - FILESEL bmpui; - char path[MAX_PATH]; - FILEH fh; - - bmp = scrnbmp(); - if (bmp) { - bmpui.title = bmpui_title; - bmpui.ext = str_bmp; - bmpui.filter = bmpui_filter[bmp->type]; - bmpui.defindex = 1; - file_cpyname(path, bmpfilefolder, sizeof(path)); - file_cutname(path); - file_catname(path, bmpui_file, sizeof(path)); - if (dlgs_selectwritenum(hWnd, &bmpui, path, sizeof(path))) { - file_cpyname(bmpfilefolder, path, sizeof(bmpfilefolder)); - sysmng_update(SYS_UPDATEOSCFG); - fh = file_create(path); - if (fh != FILEH_INVALID) { - file_write(fh, bmp->ptr, bmp->size); - file_close(fh); - } + SCRNSAVE ss; + FILESEL bmpui; + char path[MAX_PATH]; +const char *ext; + + ss = scrnsave_get(); + if (ss == NULL) { + return; + } + bmpui.title = bmpui_title; + bmpui.ext = str_bmp; + bmpui.filter = bmpui_filter[ss->type]; + bmpui.defindex = 1; + file_cpyname(path, bmpfilefolder, sizeof(path)); + file_cutname(path); + file_catname(path, bmpui_file, sizeof(path)); + if (dlgs_selectwritenum(hWnd, &bmpui, path, sizeof(path))) { + file_cpyname(bmpfilefolder, path, sizeof(bmpfilefolder)); + sysmng_update(SYS_UPDATEOSCFG); + ext = file_getext(path); + if ((ss->type <= SCRNSAVE_8BIT) && + (!file_cmpname(ext, "gif"))) { + scrnsave_writegif(ss, path, SCRNSAVE_AUTO); + } + else if (!file_cmpname(ext, str_bmp)) { + scrnsave_writebmp(ss, path, SCRNSAVE_AUTO); } - _MFREE(bmp); } + scrnsave_trash(ss); }