API-conformant re-implementation of render.library in ANSI C.
this version is a drop-in replacement for render.library,
which was written in 68k assembler (versions prior to v40).
if your software doesn't work with this release, submit problem
reports to tmuellerneoscientists.org
- RenderA() and ConvertChunky() now have additional return codes,
REND_NO_DATA and CONV_NO_DATA respectively, if required
arguments are missing. some other functions may check for
illegal parameters as well, but don't rely on this.
- render.library objects (palettes, histograms, scaling-engines and
mapping-engines) are inherently thread-safe. you do not need to
explicitely protect them in multitasked use. (this may be a
questionable choice, but that's the way render.library was designed
- many parametric 'issues' improved. scaling-engines, for example,
seem to handle larger numbers correctly. histograms, however, still
use 32bit integers and can overflow quite early.
- some calculations now use floating point arithmetics and better
algorithms. brightness, for instance, is now calculated correctly
(i.e. in the sense of 'lumincance' like in YUV) in SortPalette() and
- dithering to HAM is no longer supported. yuck.
- the bresenham-like integer scaling algorithm was better in the
previous version. (float sucks if you can't handle it. should be fixed
some day. :)
- mapping-engines are currently fake entities and do not actually lead
to improved performance. they don't harm either. but you don't know
this, simply stick to the autodocs. maybe they'll be put back into
- all histograms are now digital trees, using a much more
sophisticated algorithm than before. albeit much more elegant and
memory-saving, this is probably slower than before.
- the 68k build is actually optimized for 68060 processors.
- on 68060 processors, most functions in this implementation are not
significantly slower than before.
- expect a massive speed loss on <68040.
- chunky to bitmap conversion (and vice versa) is implemented in an
extremely lazy way. these functions do crawl.
- quantization is faster and more accurate than before.
- general memory consumption is lower than before.
- added AmigaOS4 binary and includes; compiled by Andreas Falkenhahn
- fixed libinit check: AFF_68881 now queried
- When a histogram contained less colors than specified
with ExtractPalette(), no colors were copied at all, which
resulted in an entirely black palette. Fixed.
- MixAlphaChannelA() now produces the intended behavior of
versions prior to v40. The old library was buggy too, and did
not handle a single second alpha channel correctly, as it
seems. Reported by Matthias Böcker.
- added GCC inline (fdpragma special 40). the proto file was
created using fdpragma special 35, and modified to include
the original SAS/C-style pragmas as well
- Morphos version 40.6 included
- turned around ratio argument interpretation in MixRGBArrayA().
it is now in compliance with the old version again. Reported
by Andreas Falkenhahn. note: some other functions with ratio
arguments are untested yet
- library base was NOT freed correctly in case of LibInit()
failure, now fixed
- more changes from Gunther Nikl applied: debug macro, register
argument macro, padding of libbase fields, compiler warnings.
- reduced the excessive amount of automatic inlinings in the
gcc release build, which leads to a much smaller binary. this
also fixes the misplaced LibNull() entry, and the result is
still much faster than sas/c. okay, agreed, gcc is it.
- more source and build cleanups
- CreateAlphaArrayA() has been fixed. a broken macro was used.
reported by Bernd Roesch.
- fixed a freemem(null) condition that showed up in MuForce.
reported by hexaae.
- improvements to the build procedure added by Gunther Nikl
- morphos version updated to 40.4
- dithered rendering with neither RND_PenTable nor
RND_OffsetColorZero rendered to a table of black pens. fixed.
- morphos version compiled by Sigbjørn Skjæret. added.
- HAM8 rendering was not 100% accurate. should be correct now.
- added missing semaphore locks
- minor cleanup
- the remaining alpha-channel functions have been implemented.
- source added to the package.
- major overall performance improvements
- SortPalette() completed
- rendering to HAM6 and HAM8 has been completed. dithering to HAM
modes is no longer supported, sorry.
- tags to RGBArrayDiversity() and ChunkyArrayDiversity() did not
correctly handle palette/mapengine arguments. fixed.
- definitions added in render/render.h: CONV_NO_DATA, REND_NO_DATA
- rewritten in C