-
Notifications
You must be signed in to change notification settings - Fork 9
Home
Richard Thomson edited this page Jan 25, 2015
·
63 revisions
This is the current release as a Windows Installer package.
The farther out a release is on this plan, the more flexible and vague are the goals.
- do some more code cleanup, but not any radical restructuring:
convert from C to C++replace single-line/* */
comments with//
commentsreplace chained multiple assignments with multiple single assignments- replace use of
char*
strings withstd::string
eliminate crazy memory casting/aliasing that was done because of impoverished DOS execution environmentreplaceint 0/1
withbool
- name all the magic values with enums or
const
s - split multiple declarations (
int i, j;
) into multiple single declarations (int i; int j;
) - localize variable declarations to their first use
- localize variables to
for
andif
scope initialize all variablesreplace(void)
argument lists with empty argument lists()
- replace C-style casts with C++ cast operators
eliminate unnecessarystruct
decorations on typeswrite numeric constants directly instead of castingreplace use ofmalloc
andfree
with standard library containerseliminate use ofMemoryAlloc
andmemory.cpp
- replace fixed-size arrays with
std::vector
- remove debug flag code
- eliminate integer math code?
- fix these issues
- restore mouse support
- eliminate the use of curses in the X11 version
- get the minimal X11 code working similar to the way the Win32 code is working with a CGA color style 'text window' instead of curses
- change all references from 'fractint' to 'iterated dynamics', except when talking about history
eliminate 286/287, 386/387, 486/487 and pentium code paths- automated regression suite based on reference images from the DOS version
clean report from cppcheckclean report from clang static analyzer- replace Driver
struct
with an interface and derived classes - replace monolithic
externs.h
andprototyp.h
with module-oriented headers. - deprecate legacy parameters:
tplus
noninterlaced
maxcolorres
pixelzoom
warn
gif87a
iterincr
tweaklzw
minstack
video
askvideo
printer
printfile
rleps
colorps
epsf
title
translate
plotstyle
halftone
linefeed
comport
- promote this project
- use C++11, but no boost
- exception: allow unit testing with use Boost.Test, but don't use Boost in the implementation. Rationale: don't cripple ourselves without a testing framework, but don't make too radical a change in the code base for this release
- allow use of boost
- separate UI from application logic
- switch to OpenGL for all pixel and primitive rendering operations
- switch UI from polling to event-driven
- switch to a wxWidgets based UI with a 'CGA text window' wxWidgets component to handle the text screens
- replace the major CGA text window options screens with wxWidgets dialogs
- replace crazy homebrew complex types/math with C++
std::complex<>
- replace homebrew bignum with boost multiple precision library with GNU GMP/mpfrcpp backend
- lots of automated testing needed here to ensure that the math isn't messed up. Maybe a clang refactoring tool could do some of the transformations. Not sure.
- replace homebrew formula parser with one based on Boost.Spirit
- recast existing fractal types as C++ algorithms operating on
std::complex<T>
to enable arbitrary precision on them - recast existing fractal types as GPU shaders