Re: New substantially improved version
Jean-Pierre,
1) I left out your popup window (in encoder.c) because I do not want to check for NCURSES in the common directory. I like the idea and there may be a way to do this strictly from the code in the unix directory.
Don't know if this is doable - but let me think about it !
We can code texttempmsg() and stopmsg() as popup windows in Xfractint, and then #ifndef XFRACT out the versions in realdos.c. Jonathan
On Tue, Feb 19, 2008 at 02:41:41PM -0600, Jonathan Osuch wrote:
Jean-Pierre,
1) I left out your popup window (in encoder.c) because I do not want to check for NCURSES in the common directory. I like the idea and there may be a way to do this strictly from the code in the unix directory.
Don't know if this is doable - but let me think about it !
We can code texttempmsg() and stopmsg() as popup windows in Xfractint, and then #ifndef XFRACT out the versions in realdos.c.
I have started to look at the fractsvn version. It mostly works as expected, except for one annoying bug (see below). I'll also look at the above suggestion. At the moment I have made the following (small) changes : * (re)-implemented exit of xfractint when clicking twice in the corner of the window - this requires adding e.g. an extra global variable 'exitpending'. Also prevents somewhat buggy behaviour that showed up when clicks were iterated 3 or 4 times. * MORE SERIOUS BUG !! One has to replace if (!ctrl_window && screenctr) ... by if (!ctrl_window && screenctr>=0) ... in unixscr.c, otherwise Expose events are ignored when screenctr==0; * improved placement of text in 'control window' and 'no control window' modes (text is now centered). New option -textmargin defines the minimal value of textmargin (I set default value to 40). This is just for the sake of getting a better visual appearance (hopefully). * commented out an instruction by adding #if defined(XFRACT) && defined(NCURSES) if (width>=80) width=79; /* Some systems choke in column 80 */ #endif in 'realdos.c' (otherwise text gets badly indented on top right corner). 'xfcurses.c' definitely accepts width=80 (or more).
2) We need to take a look at intro.c because I inadvertently left the checks for NCURSES in it. These checks are needed in order to call refresh(), and I was led to put this because of the rather different way xfcurses and ncurses work. It could be possible to make changes to xfcurses so that this becomes unnecessary, but I have not been able to do it right now without slowing down considerably the display of characters (too many redundant refresh calls occur).
Jean-Pierre
Jean-Pierre,
* commented out an instruction by adding #if defined(XFRACT) && defined(NCURSES) if (width>=80) width=79; /* Some systems choke in column 80 */ #endif in 'realdos.c' (otherwise text gets badly indented on top right corner). 'xfcurses.c' definitely accepts width=80 (or more).
2) We need to take a look at intro.c because I inadvertently left the checks for NCURSES in it. These checks are needed in order to call refresh(), and I was led to put this because of the rather different way xfcurses and ncurses work. It could be possible to make changes to xfcurses so that this becomes unnecessary, but I have not been able to do it right now without slowing down considerably the display of characters (too many redundant refresh calls occur).
Yes, I had noticed the slow down when the seemingly extra refresh routine is removed. If we have X11 is there still a need for ncurses? Disk video? Platforms that don't support X11? Jonathan
On Tue, Feb 19, 2008 at 04:53:26PM -0600, Jonathan Osuch wrote:
If we have X11 is there still a need for ncurses? Disk video? Platforms that don't support X11?
Since the pure X11 port already has more functionality than the ncurses version (and seems at least as reliable), the NCURSES switches can be completely removed, except for the Disk video functionality. The point is, does one want to have (x)fractint being able to do batch processing without X11 ? This probably has never been the intent. If not, then all the NCURSES and Disk video stuff can be removed. The only important Unix platform which does not have X11 natively is MacOS X. However MacOS X ships X11 more or less as a standard add-on. This means that the pure X11 xfractint version will run quite easily on MacOS X. Porting it to a pure Cocoa version (the native graphics layer of MacOS X) would even be easier now, since one would just have to translate the video procedures from the unix/ directory, including xfcurses. However, this would be a substantial work - about twice as much as what I did with xfcurses. You'd better ask a Cocoa expert ... Regards, Jean-Pierre Demailly (author of the new pure X11 "xfcurses" routines)
In article <20080219215518.GC26277@rossini.ujf-grenoble.fr>, Jean-Pierre Demailly <Jean-Pierre.Demailly@ujf-grenoble.fr> writes:
2) We need to take a look at intro.c because I inadvertently left the checks for NCURSES in it. These checks are needed in order to call refresh(), and I was led to put this because of the rather different way xfcurses and ncurses work. [...]
The real thing to do is to eliminate the dependency on curses entirely and use the X window system for everything by emulating a CGA window as is done with WinFract and my port on the branch. -- "The Direct3D Graphics Pipeline" -- DirectX 9 draft available for download <http://www.xmission.com/~legalize/book/download/index.html> Legalize Adulthood! <http://blogs.xmission.com/legalize/>
Jean-Pierre,
* MORE SERIOUS BUG !! One has to replace if (!ctrl_window && screenctr) ... by if (!ctrl_window && screenctr>=0) ... in unixscr.c, otherwise Expose events are ignored when screenctr==0;
That being the case, we don't need to check screenctr at all. Screenctr has a value of zero when a graphics image is displayed, and a value greater than zero when a text screen is displayed. Jonathan
participants (3)
-
Jean-Pierre Demailly -
Jonathan Osuch -
Richard