/* Name: DISPLAY.C Description: Ncurses display section of mikmod - bare unix version. Should deal with all the m_.quiet options and refresh() after ncurses calls, so just call these functions direct wherever needed. Steve McIntyre <stevem@chiark.greenend.org.uk> HISTORY ======= v1.00 (06/12/96) - first "versioned" version v1.01 (06/12/96) - fixed update_name_display for Solaris - add "(null)" if necessary v1.02 (16/12/96) - minor cosmetic change to display_error() */ package audio.jmikmod.MikMod.Display; import audio.jmikmod.MikMod.*; import audio.jmikmod.MikMod.MUniTrk.*; public class clDisplay extends clDisplayBase { public clMain m_; public final String pausebanner = "'||''|. | '||' '|' .|'''.| '||''''| '||''|.\n" + " || || ||| || | ||.. ' || . || || \n" + " ||...|' | || || | ''|||. ||''| || ||\n"+ " || .''''|. || | . '|| || || ||\n"+ ".||. .|. .||. '|..' |'....|' .||.....|.||...|'\n" ; public final String loadbanner = "'||' '|| ||\n"+ " || ... .... .. || ... .. ... ... . \n"+ " || .| '|. '' .|| .' '|| || || || || || \n"+ " || || || .|' || |. || || || || |'' \n"+ ".||.....| '|..|' '|..'|' '|..'||. .||. .||. || .'||||. \n"+ " .|....'\n" ; public final String extractbanner = "'||''''| . . ||\n"+ " || . ... ....||. ... .. .... .... .||. ... .. ... ... . \n"+ " ||''| '|..' || ||' '''' .|| .| '' || || || || || || \n"+ " || .|. || || .|' || || || || || || |'' \n"+ ".||.....|.| ||. '|.'.||. '|..'|' '|...' '|.'.||..||. ||.'||||. \n"+ " .|....'\n" ; protected int cWritten; public clDisplay(clMain theMain) { m_ = theMain; } protected final int stdscr=0; public void initscr() {} public void cbreak() {} public void noecho() {} public void nonl() {} public void nodelay(int i, boolean b) {} public void keypad(int i, boolean b) {} public void clear() {} public void addstr(String s) { //System.out.print(s); [Rafael, the Esper] } public void refresh() {} public void endwin() {} public void init_display() { if(m_.quiet) return; initscr(); cbreak(); noecho(); nonl(); nodelay(stdscr, true); keypad(stdscr, true); m_.cur_mod.version = m_.mikversion; } public void display_version() { if(m_.quiet) return; /* always use display_verion first, so clear call is OK here... */ clear(); addstr(m_.cur_mod.version); refresh(); } public void display_driver() { if(m_.quiet) return; addstr(m_.cur_mod.driver); refresh(); } public void display_file() { if(m_.quiet) return; addstr(m_.cur_mod.file_output); refresh(); } public void display_name() { if(m_.quiet) return; addstr(m_.cur_mod.name_type); refresh(); } public void display_status() { if(m_.quiet) return; addstr(m_.cur_mod.status); refresh(); } public void display_pausebanner() { if(m_.quiet) return; addstr(pausebanner); refresh(); } public void display_extractbanner() { if(m_.quiet) return; addstr(extractbanner); refresh(); } public void display_loadbanner() { if(m_.quiet) return; addstr(loadbanner); refresh(); } public void display_error(String myerr, String myerr_file) { if(m_.quiet) return; //printw("Non-fatal Error:\n %s: \"%s\".\n",(const char *)*myerr,(const char *)*myerr_file); addstr("Non-fatal Error:\n " + myerr + ": \"" + myerr_file + "\".\n"); refresh(); try { Thread.sleep(3000); //sleep(3); } catch (InterruptedException intexp1) { } } public void display_driver_error(String myerr) { if(m_.quiet) return; //printw("Driver error: %s.\n",(const char *)*myerr); addstr("Driver error: " + myerr + ".\n"); refresh(); } public void display_all() { if(m_.quiet) return; display_version(); display_driver(); display_file(); display_name(); display_status(); } public void update_driver_display() { if(m_.quiet) return; m_.cur_mod.driver = m_.MDriver.GetActiveDriver().Name + ": " + (((m_.MDriver.md_mode & m_.DMODE_16BITS) != 0) ? 16:8) + " bit " + (((m_.MDriver.md_mode & m_.DMODE_INTERP) != 0) ? "interpolated":"normal") + " " + (((m_.MDriver.md_mode & m_.DMODE_STEREO) != 0) ? "stereo":"mono") + ", " + m_.MDriver.md_mixfreq + " Hz\n"; } public void update_file_display() { if(m_.quiet) return; m_.cur_mod.file_output = "File: " + m_.cur_mod.filename + m_.d_text[m_.cur_mod.deleted?1:0] + "\n"; } public void update_name_display() { if(m_.quiet) return; m_.cur_mod.name_type = "Name: " + ((m_.cur_mod.songname.length()==0) ? "(null)" : (m_.cur_mod.songname)) + "\n" + "Type: " + m_.cur_mod.modtype + ", " + "Periods: " + (((m_.cur_mod.flags & m_.MUniTrk.UF_XMPERIODS) != 0) ? "XM type" : "mod type") + "," + (((m_.cur_mod.flags & m_.MUniTrk.UF_LINEAR) != 0) ? "Linear" : "Log") + "\n"; } public void update_status_display() { if(m_.quiet) return; m_.cur_mod.status = "\rpat:" + m_.cur_mod.sngpos + "/" + m_.cur_mod.numpat + " pos:" + m_.cur_mod.patpos + " spd:" + m_.MPlayer.mp_sngspd + " bpm:" + (m_.MPlayer.speed_constant*100) + "% vol:" + m_.MPlayer.mp_volume + "% "; } public void exit_display() { if(m_.quiet) return; endwin(); } }