--- np2/x11/ini.c 2007/01/12 16:41:25 1.16 +++ np2/x11/ini.c 2007/01/12 19:09:58 1.17 @@ -181,6 +181,21 @@ inirdsnddrv(const char *src, const INITB *(UINT8 *)ini->value = snddrv_drv2num(src); } +static void +inirdinterp(const char *src, const INITBL *ini) +{ + + if (!milstr_cmp(src, "NEAREST")) { + *(UINT8 *)ini->value = INTERP_NEAREST; + } else if (!milstr_cmp(src, "TILES")) { + *(UINT8 *)ini->value = INTERP_TILES; + } else if (!milstr_cmp(src, "HYPER")) { + *(UINT8 *)ini->value = INTERP_HYPER; + } else { + *(UINT8 *)ini->value = INTERP_BILINEAR; + } +} + static void update_iniread_flag(const INITBL *p); static BOOL @@ -265,6 +280,11 @@ inireadcb(void *arg, const char *para, c inirdsnddrv(work, p); break; + case INITYPE_INTERP: + milstr_ncpy(work, data, 512); + inirdinterp(work, p); + break; + default: rv = FALSE; break; @@ -339,6 +359,20 @@ iwss_extend: } } +static const char * +iniwrinterp(UINT8 interp) +{ + + if (interp == INTERP_NEAREST) + return "NEAREST"; + else if (interp == INTERP_TILES) + return "TILES"; + else if (interp == INTERP_HYPER) + return "HYPER"; + else + return "BILINEAR"; +} + static BOOL read_iniread_flag(const INITBL *p); void @@ -437,6 +471,10 @@ ini_write(const char *path, const char * SPRINTF(work, "%s", snddrv_num2drv(*(UINT8 *)p->value)); break; + case INITYPE_INTERP: + SPRINTF(work, "%s", iniwrinterp(*(UINT8 *)p->value)); + break; + default: set = FAILURE; break; @@ -606,7 +644,10 @@ static const INITBL iniitem[] = { {"MIDIIN_d", INITYPE_STR, &np2oscfg.MIDIDEV[1], MAX_PATH}, {"MIDIWAIT", INITYPE_UINT32, &np2oscfg.MIDIWAIT, 0}, - {"I286SAVE", INIRO_BOOL, &np2oscfg.I286SAVE, 0} + {"dinterp_", INITYPE_INTERP, &np2oscfg.drawinterp, 0}, + {"F11_KEY_", INITYPE_UINT8, &np2oscfg.F11KEY, 0}, + + {"I286SAVE", INIRO_BOOL, &np2oscfg.I286SAVE, 0}, }; #define INIITEMS (sizeof(iniitem) / sizeof(iniitem[0]))