$Id: //depot/windows/changes.txt#6 $

This document lists some of the changes/fixes to POVWIN since version 3.1 beta
4 was released. It does not contain a comprehensive list of changes ! Only some
are listed. Note that this document does not list changes made to the renderer
itself - this file relates only to Windows-specific changes.

                         Changes as of version 3.1g
                         --------------------------

  o Fixed resource leakage when using the render window select function.
  o A few other minor changes/bugfixes.

                     Changes as of version 3.1e.win32.r1
                     -----------------------------------

  o Changed the editor dll load logic so that cmedit.dll will be loaded from the
    current directory if it is present. If it is not then it is loaded from the
    directory specified via the registry.

                         Changes as of version 3.1e
                         --------------------------

  o Go back to a Watcom build by default, but provide a VC6 build for those who
    want the extra speed.

  o Add facility that allows a GUIEXT to open a file in the editor and position
    the cursor to a line/column. This can happen at any time (it does not have
    to be in response to an event).

  o Change printer font selection slightly so that hopefully a more reasonable
    result will occur on some non-English systems that didn't have Lucida Console.

                         
                         Changes as of version 3.1d
                         --------------------------
  
  o This release is using Visual C++ instead of Watcom. This means that the
    problem with not releasing memory after a trace may be back.
  
  o Fixed MAX_TRACE_LEVEL global not being re-initialized.

  o Removed platform-specific declaration of EPSILON.

  o Added ability to clear small message window from the bottom of an editor
    window by pressing ESCAPE.

  o Changed render window creation procedure such that the default size of this
    window is never larger than (screen width - 64) or (screen height - 48)
    pixels. If the render size is larger than this, the render window is
    created with scroll bars.

  o Starting a render with the short commandline dialog should now save modified
    files, like the main command-line dialog already did.

  o Fixed problem with render-region selection sometimes persisting after it's
    been manually edited out of command-line.

  o Corrected problem whereby it was possible to accidentally select render
    regions (using the mouse on the render window) that were outside the
    window borders.

  o Changed the way that time calculation works. The render time and PPS rate
    shown in the status bar now no longer count time spent in the 'pause'
    state. NOTE that this does NOT affect the core renderer's calculation of
    render time - it is still defined as (finish time - start time).

  o Changed the way that the percentage complete is shown in the render window
    status bar. It is now updated at most once per second, thus eliminating
    the slowdowns that previously occurred due to multiple updates per second
    when rendering a mosaic preview.

  o The tooltop that appears when you point at the POVWIN icon after it's been
    put into the system tray (Alt-W) now shows render percentage complete if
    a render is in progress.

  o Fixed bug in BMP support where some BMP files loaded as height fields,
    image maps, etc, would be loaded upside-down.

                       Known Bugs in Version 3.1 RELEASE
                       ---------------------------------

  o Filenames that have ASCII characters > 127 in them will cause problems
    when you attempt to render them. This is a fault somewhere in the Watcom C
    runtime library and cannot (easily) be fixed by us.
                  
                  Changes to POVWIN as of version 3.1 RELEASE
                  -------------------------------------------

  o Fixed problem with Save As not setting language type or caption.
  o Various other minor fixes.

                  Changes to POVWIN as of version 3.1 beta 6b
                  -------------------------------------------

  o Added auto-reload (which also auto-saves when switching away from POVWIN).
  
  o Fixed problem with Save As not providing a default path and filename.
  
  o Added printing to editor. This includes optional highlighting of comments
    and two-up printing (i.e. prints two pages on a single sheet of paper).
  
  o Fixed problem with message window sometimes not getting focus (therefore
    preventing UpArrow/DownArrow from scrolling it).
  
  o Added /NORESTORE (also /NR) option to command line. If present, POVWIN's
    editor will not attempt to restore previously opened files. Note that it
    WILL save its state when it exits.

  o Implemented loading files via /EDIT again.

  o Fixed help path problem that affected Windows 95/98 systems.

  o Changed the editor context menu (lots more options, mostly in submenus).

  o Modified the render window region facility to use floats so that when you
    change the size of the render, the region is retained. Also fixed a few
    bugs with this facility at the same time.

                  Changes to POVWIN as of version 3.1 beta 6
                  ------------------------------------------

  This release has a new editor in it. It may not work as expected. Remember
  that this is BETA software - don't use it if you're not prepared to put up
  with some bugs.
        
  Quick Summary:
        
    o Added new editor.
    o Added rubberband mode to render window for selection of render region.
    o Added auto-load of file if there's a parse error (goes to line and col).
    o Modified the way the insert menu works. It's now like the 'Start Menu'.
    o Removed a bunch of stuff that was a legacy of our (now gone) Win32s mode.
    o Fixed the GUI Extension compatibility problem.
    
  =============================================================================
  IT IS IMPORTANT THAT YOU READ THE FOLLOWING NOTES ABOUT THE EDITOR !!!!!!!!!!
  =============================================================================
  
  o Totally rewrote the editor from scratch. It contains a custom control
    (CodeMax from WinMain Software [www.winmain.com], who kindly donated it),
    and the associated wrapper code to turn it into an integrated tool. This is
    not a port of the Delphi editor in previous versions - it's a new
    implementation (several thousand lines of code) in C++Builder (cmedit.dll),
    with the editor control itself being cmax101.dll. Both of these should be
    in <installdir>\bin.
    
  o The editor is extensively customisable. It utilises syntax highlighting and
    understands .POV and .INC files as being in POV syntax. You can change the
    colour settings used from the properties dialog (ALT-ENTER). It also has
    built-in syntax highlighting for C, C++, Java, Basic, Pascal and SQL.
    
  o Here's a quick editor feature summary. Please inspect the editor menus to
    gain a better understanding of its available features, until such time as
    the new docs are written.
    
    o Syntax highlighting.
    o Keystroke macros. These are preserved across sessions.
    o Optional auto-save which, if turned on, saves changed files periodically.
    o Brace matching is available (cursor must be on a brace when you do it).
    o Block indent/undent
    o Tabify/untabify
    o Customisable colours.
    o Most key bindings are customisable (not all, just most).
    o Smart case preservation in replace operations.
    o Up to 10 bookmarks.
    o Optional auto-reload of changed files (not yet implemented).
    o Multiple views of the one file (via splits).
    o OLE drag and drop between the editor and other programs.
    o Optional smooth-scrolling.
    o Intellimouse support.
    o Column selection (control-leftbutton and drag).
    o Up to 32 edit sessions.
    o MRU list also tracks the line, column, language, tab and indent settings.
      
  o You can split editor panes by dragging the little bar just above the top
    of the vertical scrollbar (and likewise for horizontal). This is only
    possible if it's not disabled via the properties dialog. Editor splits are
    not preserved across sessions (this is by design). You can drag and drop
    selected text between panes.
    
  o By default both scrollbars are on. You can change this from the properties
    or the Editor menu.
    
  o Printing is not yet implemented (nor are a few other options, which is why
    they are grayed out in the menus).
    
  o If the editor gets into a strange state, and restarting POV-Win doesn't fix
    it, you may need to clear the registry settings for the editor. To do this,
    it is essential that POVWIN is not running (otherwise it will rewrite the
    old values when it finally does exit). Then, using REGEDIT.EXE or similar,
    delete the entire subkey HKEY_LOCAL_MACHINE\Software\POV-Ray\v3.1\POV-Edit.
    
  o Note that the editor properties dialog only allows you to set things that
    are implemented within the editor. There are some other options implemented
    within the editor wrapper code in POV-Ray for Windows which are able to be
    accessed via the Editor menu (only visible when an editor is selected). For
    example, the keybinding for saving a file (Ctrl-S) is not listed in the
    editor properties since this function is handled by the wrapper code. You
    can't change this assignment.
    
  o Some properties only affect the current file, and some affect all files.
    Additionally, most (but not all) of those that affect the current file will
    become the default for any new files opened after that point. This is by
    design. For example, changing the tab stop setting only affects the current
    file, but will then become the default for new files from that point on.
    
  o You can drag and drop selected text between panes of the editor window, or
    between the editor and any OLE compliant drag and drop application, such as
    Microsoft Word. Control-dragging copies instead of cuts.
    
  o Some people have asked why the 'quit bugging me' option in the render save
    dialog is not persistent across sessions. This is by design and is not
    likely to change.
    
  o The RMB context menu has an option for 'show/hide message window' (as
    before, though many people didn't look closely enough to realise it). This
    window is now sizable (unlike the previous version, where it was a fixed
    size). A quick way to close this window is to drag the divider down to
    within a few pixels of the bottom border - when you release the mouse, the
    message window will vanish.
    
  o You can also tell POVWIN not to display the message window automatically
    when starting a render. You do this from the Editor menu, by turning off
    'Auto-Show Parse Messages'. This is most useful with the Error File option.
    
  o POVWIN will now optionally automatically load a file in which a parse error
    has occurred into the editor (or select it if it's already loaded) and
    place the cursor on the line and column of the offending code. This is able
    to be turned on or off using the 'Auto-Load Error File' option in the
    Editor menu. Also, if this option is on, and the message window was
    displayed automatically (see above), it will be closed automatically rather
    than being left open (as used to be the case when an error happened). The
    text describing the error will be displayed in the status bar at the bottom
    of the window.
    
  o Quick key summary (this is not comprehensive and does NOT include shortcuts
    already listed in the menus - check the menus for these).
    
      Ctrl-LeftButton and drag          Column Selection
      Drag selection                    Move text (also drag and drop)
      Ctrl-LButton and drag selection   Copy selection
      Click and drag splitter bar       Split window
      Double-click splitter bar         Split window in half, or unsplit.
      Alt-Left or RightArrow            Change selected editor tab
      Ctrl-Tab                          Change selected editor tab
      Tab when some text is selected    Indent selected lines
      Shift-tab when text is selected   Undent selected lines
      
  o Drastically changed the way the Insert menu is built. Instead of a template
    file (previously pov3tmpl.txt), the Insert Menu is built the same way as
    such things as the Windows 95/98/NT Start Menu ; it's a series of folders
    with the actual text that gets inserted being .txt files within them.
    You'll find this in <installdir>\Insert Menu. Just select 'edit this menu'
    from the Insert Menu to get to there. For those of you who had a customised
    version of the old template file and want to convert it - if there's enough
    people who ask we'll release the converter program.
    
  o Added an 'Older Files' submenu to the File menu. This contains recently
    used files (up to 32 of them) that have scrolled off the main MRU list at
    the bottom of the File menu. Note that this (and the main MRU list) now
    not only stores the filename, but also the line, column, language, indent,
    and tab settings that were last in use when the file was previously open.
    
  o Fixed a problem relating to turning off the toolbar then restoring the
    window from the taskbar.
    
  o Removed the non-client code that draws the custom caption button. This is
    no longer needed since we no longer support Win32s (Windows 3.1x) and there
    is a better way available to true Win32 applications. For the time being
    (and perhaps forever) there is no way to get the old 'mini window' mode
    (did anyone use it in any case ??? We don't even know).

  o Removed the 'Tiny Render window caption' option.

  o Removed the old statusbar code and replaced it with the common control.
    POV-Ray for Windows can no longer be moved by clicking on the status bar.

  o Pared down the Appearance menu, merged with Misc menu, renamed it Options.
    Added a new menu called 'Text', available only when the editor is in use.

  o Removed the 'Expert Menus' option - full menus are always on now.
  
  o Added a 'rubberband' mode to the render window. Once a render is completed,
    you can click and drag on the render window to draw a box that represents
    a selection. Once you release the mouse button, you have the option of
    starting a new render that will only trace the pixels within the box. Note
    that this is NOT a zoom function ; the render does not zoom in to the box,
    but just renders the pixels inside it. You can also shift-drag to have the
    co-ordinates of the area you selected added to the command-line (so the
    selection will last for the rest of your POV session). POVWIN attempts to
    remove the selection from the command-line before shutting down on exit.

                      Changes to POVWIN as of version 3.1 beta 5
                      ------------------------------------------

  o Add an option to stop the render animation (see the Appearance menu).

  o POVWIN should now detect Win98 and not draw the caption text in the
    title bar. One day we'll make it use DrawFrameControl () instead of the
    way we draw the extra button now. (DrawFrameControl () was not present in
    the earlier versions of windows that POVWIN was originally written for).

  o An old bug (solved in 3.02 but present in earlier versions) reappeared
    in 3.1 betas prior to beta5. This typically shows itself as corrupted
    text in the message window, and/or random crashes, particularly when
    starting a render or clearing the message pane from the edit menu.

    The cause of this is a memory overwrite coming from inside the generic
    POV-Ray code, and came back since the fix never made it into the generic
    source after the release of 3.02. It's now fixed for good.

  o There was a problem with POVWIN not releasing memory after a render. This
    actually was not as clear as it seems - POVWIN did in fact release the
    memory, but the C runtime library did not. The memory was not wasted in
    that if you did a new render, the memory got re-used. But it still was not
    available to other Windows apps.

    The solution is compiler-specific (see CONFIG.H if you're compiling your
    own copy of POVWIN). The official POV-Team version of POV-Ray for Windows
    (which is compiled with Watcom C/C++) now does release this memory, so the
    problem is fixed for most users.

  o The 'render from memory' feature is gone. It is a difficult feature to
    implement (because the main POV-Ray rendering engine does not have a
    concept of rendering from memory, so a simulation of a file had to be
    done. This did not always work as expected). We decided that the due to
    the restrictions that the above placed on the feature (and the problems
    that this caused for some users) it was best not to have it.

  o A new GUI extension call has been added that supplies GUI extensions with
    what is effectively an exact copy of the data (pixel by pixel) that would
    have been written to file. This works regardless of whether file output
    is on or not. This does not break compatibility with GUI extensions that
    were written for previous versions of POV-Ray - if they were written
    properly they will still work unchanged.

  o The Windows help file is now 'povray31.hlp' (previously povray30.hlp).

  o The registry keys now work this way -

    HKLM\
      Software\
        POV-Ray\

          Windows\
            Home          -> Points at v3.0x, if it is installed.

          CurrentVersion\
            Windows\
              Home        -> Path of current version always
              VersionNo   -> Current version number

          v3.1\
            Windows\
              Home        -> Points at path of v3.1

          v3.x\
            Windows\
              Home        -> Points at path of a hypothetical v3.x

    Authors of utilities that read the registry to extract the install dir of
    POVWIN are requested to use the 'v3.x' keys to locate POVWIN if their
    program absolutely requires a specific version. Otherwise, they should use
    the 'CurrentVersion' key. Under no circumstances should any new utility
    use the old 'Windows' value as support for that entry will be removed in a
    later version of POVWIN.


