-
Notifications
You must be signed in to change notification settings - Fork 0
/
HISTORY
663 lines (558 loc) · 22.3 KB
/
HISTORY
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
history
-----------------------------
40.8
- 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.
40.7
- 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
40.6
- 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
40.5
- 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
40.4
- dithered rendering with neither RND_PenTable or
RND_OffsetColorZero rendered to a table of black pens. fixed.
40.3
- 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
40.2
- the remaining alpha-channel functions have been implemented.
40.1
- 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
40.0
- rewritten in C
* 31.0
- simplified the over-complex quantization algorithm.
the new algorithm leads to similar results, with much
better performance
- semaphores are (finally!) correctly initialized to zero
- minor cleanup
* 30.0
- improved memory management: RMHTYPE_POOL allocations are
now internally semaphore-protected for cross-task
allocations. this allows guigfx.library (v16) to be reset
to pooled memory environment.
29.1
- SortPalette() crashed with sort-modes that required a histogram,
and when the histogram was a non-TURBO type. this bug hasn't
been fixed, but 'de-implemented'. SortPalette() now returns
SORTP_NOT_IMPLEMENTED in this situation.
- bug fixed in the clib declaration of FreeRenderMem()
* 29.0
- version number bumped
28.4
- RGBArrayDiversity() was broken, and it returned only nonsense.
it must have been out of order for eons. fixed.
- fixed LMSGTYPE_LINE_FETCH linehook messages when applied to scaling
engines. RND_LMsg_row contained the destination row instead of
the source row.
28.3
- minor clean-ups
28.2
- fixed overflow problems in texture-mapping engines
28.1
- fixed EDD dithering with mapping-engines.
- FS-Dithering with mapping engines didn't render zigzag. fixed.
28.0
- added EDD dithering. thanks to dante and axis
for the suggestion.
- implemented zigzag dithering for floyd-steinberg and EDD.
(zigzag rendering is not available in HAM modes.)
27.3
- texturemapping-engines now handle triangles (i.e. when
one coordinate is specified twice).
- improved PALMODE_SIGNIFICANCE.
* 27.2
- fixed some semaphore lockup problems with palettes
and histograms accessed from different tasks.
27.1
- fixed a bug in MixAlphaChannel() with one alpha-channel enabled
27.0
- added internal support functions.
25.1
- fixed heavy bugs in the texturemapping code and
optimized it a lot.
25.0
- implemented texture-mapping via scaling-engines.
24.0
- added documentation for TintRGBArrayA().
- added texture-mapping [preliminary, for internal use only].
23.1
- SortPalette() now uses and updates an already existing
p2Table.
23.0
- added TintRGBArrayA().
* 22.4
- fixed a minor bug when dithering with
(width % 4) != 0
- slightly optimized CLUT dither preparation code.
- slightly modified legal and author text files.
- added support site URL.
22.3
- removed some lines of garbage from the HAM-dither code
that might have caused problems under certain conditions.
* 22.2
- completed autodocs for alpha-channel functions
22.1
- the internal memcopy routine now handles odd lengths
and addresses to allow overlapping memory transfers
in all situations.
22.0
- implemented CreateAlphaArray()
- implemented MixAlphaChannel()
- added tags RND_SourceWidth2, RND_AlphaChannel2,
RND_AlphaWidth2 and RND_AlphaModulo2 for 3-channel
alpha-channel operations. it is now possible to
do 'weighted' compositions with two alpha-channels!
21.0
- implemented AllocRenderVecClear()
- added definition of PIXFMT_RGB_24 - this is currently
not supported by render.library, but required for
guigfx.library 1.92.
20.3
- MixRGBArray and ApplyAlphaChannel heavily optimized for
superscalarity and few memory accesses
- Histogram creation could still corrupt memory, when
0xaarrggbb data were added. Fixed.
20.2
- 'Debug' text file included to the documentation.
- clib/render_protos.h did not define a return value
for Chunky2RGB(). Fixed.
- some text files revised
* 20.1
- fixed FD, clib and pragma files for MixRGBArray().
- extended ApplyAlphaChannel().
The alpha-channel is still by default assumed to be
in the source array, but it may be explicitely set with
the new tag RND_AlphaChannel. The alphachannel pixel
modulo may be set with RND_AlphaModulo, and the
alpha-channel-array's total width can be specified with
RND_AlphaWidth.
- fixed ApplyAlphaChannel(), ExtractAlphaChannel() and
InsertAlphaChannel(): Registers were not preserved
correctly.
- tutorial lectored and slightly revised.
20.0
- implemented MixRGBArray()
- fixed a bug in Render() and ConvertChunky() when
rendering with mapping-engines to (width & ~7) != 0
19.9
- Due to an error in parsing the taglist, ConvertChunky()
did not use Mapping-Engines. Fixed.
- ApplyAlphaChannel() fixed.
- InsertAlphaChannel() function interface slightly modified.
- tutorial textfile included to the documentation
- minor optimizations
19.8
- fixed a bug in Chunky2RGB(). The RND_LeftEdge tag
was not handled correctly in HAM modes.
- added InsertAlphaChannel(), ExtractAlphaChannel() and
ApplyAlphaChannel()
- Mapping-Engines may be passed to Render() and
ConvertChunky() now.
- improved FS-Dithering performance: error calculation
and shifting now takes place in registers solely. with a
mapping-engine supplied, the code now fits to a
68020/68030 instruction cache.
19.7
- Render() and ConvertChunky() now accept RND_ScaleEngine
as an additional tag argument. This allows scaling and
rendering in a single pass. The scaling-engine is
defined to be applied to to the source data.
- Scale() now handles RND_LineHook, and it has got a
returncode.
19.6
- supplied Chunky2RGB() with RND_LineHook tag
- ImportPalette() and ExportPalette() PALFMT_RGB4
were broken. Fixed.
- implemented PALFMT_PALETTE for ImportPalette().
- Updated all text files.
- Lectored and revised autodocs.
- Added tag RND_Weight for AddHistogram().
- BestPen() did not work at all. Fixed.
- BestPen() no longer creates a p2table, but it
will use it when available.
19.5
- slightly improved Chunky2RGB() speed in HAM modes
- included ChunkyArrayDiversity().
- included MapChunkyArray().
- Heavy bug removed from ConvertChunky().
19.4
- AddRGBImage() no longer violates memory with
0xARGB (A=Alphachannel) data.
- prevented Render() from false rendering
with 0xARGB (A=Alphachannel) data.
- Updated autodocs for mapping-engines.
- Implemented RGBArrayDiversity() for Mapping-Engines
and Palettes.
- one more bug removed from the palette administration
code. "Zu wahr um schön zu sein" [I. Jache]
- removed a small bug in the mapping-engine's
palette-update-administration code for
mapping-engines that are coupled with a histogram.
- added Roadmap.GIF to the documentation.
- updated autodocs for RGBArrayDiversity().
- updated memory information text file.
- updated CPU information text file.
- CreateMapEngine() no longer handles RND_PenTable.
This tag has to be passed to MapRGBArray() instead.
19.3
- Finally- got- rid- of- that- $%^&?#§- palette- bug-
"I can't eat as much as I want to puke" [Liebermann]
- Updated legal information text file.
19.2
- another memory violation bug removed from the
palette administration code.
19.1
- ConvertChunky() did not semaphore-protect the
destination palette correctly. Fixed.
- Render() did not semaphore-protect the destination
palette correctly. Exclusive and shared locks to the
palette nested, and this won't work prior to exec v39.
- Removed a serious bug inside the palette-buffer
administration code that was introduced in v19.0
19.0
- SortPalette() did not semaphore-protect its palette
and did not invalidate the palette's buffers. Fixed.
- ConvertChunky() has got a returncode now.
- Introduced a new functional class: Mapping-Engines.
Mapping-Engines are low-level conversion units which
provide mindblasting render speed.
New functions: CreateMappingEngine(),
DeleteMappingEngine(), MapRGBArray()
18.9
- minor bug in HSTYPE_12BIT_TURBO interpolation code fixed.
The blue component was not correctly interpolated -
2 bits were missing.
- Speed heavily improved for most histogram-related functions.
Especially AddRGBImage() is significantly faster.
18.8
- ConvertChunky() has been rewritten. Now it is equivalent
to Render(), except for that it does accept chunky data
as input and is not able to render to HAM modes. Finally,
there is no need to convert chunky data to RGB when
dithering is required.
ConvertChunky() handles the following additional tags:
RND_DitherMode, RND_DitherAmount, RND_ProgressHook,
RND_LineHook, RND_OffsetColorZero. In addition to that,
the dest-palette's pen-adaptor is correctly handled
and updated. ConvertChunky() itself is slower than
before, but overall performance should be better when
called multiple times.
18.7
- 18.4 did NOT fix the mentioned bug. Thanks again to
Stefan Sommerfeld. This bug did not occur in the
68060 version and I didn't get rid of it. Now fixed.
- REND_CALLBACK_ABORTED wasn't returned when a
Progress-Callback was aborted in Render(). Fixed.
* 18.6
- v18.5 bug removed that produced false dithering with
15Bit / 18Bit palettes in COLORMODE_CLUT
18.5
- Render speed improved by up to 40% (depending on the CPU
and the selected render mode). Remarkably faster on 68060
systems and CLUT without dithering.
18.4
- fixed a bug in CreateScaleEngine(). Registers were not
preserved correctly. Thanks to Stefan Sommerfeld who reported
this bug.
18.3
- major internal rework in preparation for new dither modes
and other features.
18.2
- Now line hooks have to return TRUE or FALSE for
continuation respective abortion.
18.1
- Improved line hooks. A line hook is called twice now:
Once before rendering a line (msgtype LMSGTYPE_LINE_FETCH),
once after rendering a line (msgtype LMSGTYPE_LINE_RENDERED).
This solves many outstanding problems:
Now you can convert, draw, render, save etc. in a single go,
and there's no need to have intermediate buffers to keep
a complete image in memory.
Also read the annotations in renderhooks.h
18.0
- removed bug from the 68020 version: Quantization
crashed without FPU.
- implemented random dithering (DITHERMODE_RANDOM).
New Tag: RND_DitherAmount (Range 0-255).
The code is not satisfyingly optimized yet.
- fixed several minor problems
17.6
- implemented RND_PenTable for Chunky2RGB(). This tag is
currently not defined for HAM modes.
- Major internal rework of Render(). Now the
generalized-line-conversion-interface is used.
- RND_LineHook implemented to Render().
17.5
- implemented RND_PenTable tag for Render().
17.4
- updated the 'legal' text file.
- minor autodoc changes
* 17.3
- implemented ScaleOrdinate().
17.2
- removed a bug that occured when a progress hook was aborted
inside AddChunkyImage: I freed a semaphore that wasn't obtained.
"Needless to say, havoc breaks out [...]" (exec doc)
17.1
- minor corrections with the FD and LVO files:
SortPalette renamed to SortPaletteA, AddHistogram renamed
to AddHistogramA.
17.0
- Implemented AddHistogram()
16.3
- More bugs removed from SortPalette():
- PALMODE_SIGNIFICANCE crashed in the 68020 and 68040 versions. Fixed.
- PALMODE_SATURATION did not work at all. Fixed.
- Bugs removed from PALMODE_POPULARITY and PALMODE_SIGNIFICANCE.
* 16.2
- initial public beta release.
- removed heavy bugs from SortPalette().
16.1
- fixed problems with RND_ColorOffsetZero
16.0
- mainly cosmetic. major reworks and clean-ups to
autodoc and includes
15.2
- Removed a heavy bug from AddRGBImage() that caused
random crashes.
- 24bit scaling implemented. The new tag is
RND_PixelFormat, valid types are PIXFMT_CHUNKY_CLUT
and PIXFMT_0RGB_32.
15.1
- The scaling code has been rewritten completely.
Scaling engines use the generalized conversion system.
All scaling functions are highly accurate now.
Horizontal enlarge is significantly faster than before.
15.0
- introduced a new generalized concept for
line-oriented conversion functions (internal).
- Chunky2RGB has been completely rewritten due to this
new concept. The HAM conversion is much faster now.
- Added RGB_ProgressHook tag to Chunky2RGB.
- implemented PMSGTYPE_LINES_CONVERTED.
- Chunky2RGB has got a returncode (CONV_...).
- updated the renderhooks include files.
- finally implemented EXTP_CALLBACK_ABORTED
14.4
- removed bug from SortPalette().
- implemented PALMODE_SATURATION sort mode.
14.3
- Implemented SortPalette(). RND_PaletteMode is obsolete.
- New tag for ExtractPalette(): RND_RMHandler. This tag
specifies a custom memory handler for quantization.
Default is the histogram's memhandler.
- EXTP_SORTING_FAILED is obsolete.
- Default for RND_NewPalette is toggled to TRUE for
backwards compatibility.
14.2
- removed heavy bug from AddChunkyImage() that could
produce completely corrupt histograms.
- introduced PALMODE_SIGNIFICANCE. In this mode, a palette's
entries are sorted by their optical significance for the
human eye. This is helpful for many purposes, e.g. you get
excellent results with ObtainBestPen() if you allocate
a palette in this sequence.
- fixed a memory-corruption bug in the quantization code.
14.1
- RND_NumColors is used instead of RND_NumEntries.
RND_NumEntries is obsolete. RND_FirstEntry has
been renamed to RND_FirstColor.
14.0
- implemented RND_FirstEntry tag for ExtractPalette(),
ImportPalette() and ExportPalette().
- implemented RND_NumEntries tag for ImportPalette()
- implemented semaphore protection for histograms and
palettes
- lots of internal reorganization and clean-up
- implemented FlushPalette()
- implemented the RND_NewPalette tag for ImportPalette().
13.0
- fixed minor problems with offset_color_zero and
p2table-adaption
- fixed minor problems with ConvertChunky() and
CreatePenTable() with a secondary pen conversion table
specified.
- implemented CountRGB()
- implemented BestPen()
- fixed minor problems with CreatePalette()
- FD and pragma for CreatePenTable() was corrupt. Fixed.
- CreatePenTable() has been slightly optimized.
12.0
- adapted CreatePenTable() to palette objects.
- removed a deadly bug from ImportPalette().
- added RND_EHBPalette tag for ImportPalette().
- updated all includes and autodocs.
- ModifyHistogram() is obsolete. It has been removed.
- The function interface for QueryHistogram() has been
changed. You do no longer pass a taglist, but instead
a single tag argument.
- Parts of the code have been cleaned up.
11.0
- adapted autodocs and includes to palette objects.
- adapted AddChunkyImage to use palette objects.
AddChunkyImage has been completely rewritten and
optimized.
10.0
- adapted Render() to palette objects.
0.81
- removed the v0.80 speed-up. It didn't work together with
the low-memory adaption system.
- Introduced new functions: CreatePalette(),
DeletePalette(), ImportPalette(), ExportPalette().
- Modified ExtractPalette() to operate with palette objects.
0.80
- The major changes in v0.79 introduced a bug that occured
when you rendered to HAM modes. This has been fixed.
- Rendering to CLUT with dither has been sped up.
0.79
- The color-adaption code was heavily broken for odd
numbers of palette entries (68020/68040 versions only).
This long outstanding bug has been fixed.
- p1Table-Render removed. Instead I've implemented an
EXTREMELY efficient p2table-Render. Overall performance
should be at least the same in most cases.
This step has some profound conceptional consequences.
It seems as if the whole library layout could be simplified
even further. Maybe there will be another rework to some
function interfaces. (Don't kill me, beta-testers...
this stuff isn't trivial!)
0.78
- ConvertChunky() is now able to convert a chunky image
over itself. If you tried to do so with elder versions,
the result was okay, but the routine was by some hundered
times slower than it could (reason unknwon).
0.77
- removed a bug that was introduced in v0.69.
If you created a turbo histogram, rendered to CLUT
without dither, and didn't specify a progress hook,
the code ran into a deadlock.
- Chunky2RGB() HAM8 bit sequence changed to %SSMMMMMM.
- Planar2Chunky()'s interface changed and supplied with an
additional taglist parameter
0.76
- very nasty bug removed from AddChunkyImageA(). If you
specified a progress hook, the histogram was completely
corrupt.
0.75
- removed a silly bug from Chunky2RGB that was introduced
in v0.73
- new tag for CreateRMHandlerA: RMHTYPE_MemFlags.
0.74
- new autodocs completed.
- RND_MemHandler renamed to RND_RMHandler.
- Some constants have changed. You must recompile.
- Includes once again reworked.
- new terminology: libcall functions which receive taglist
parameters end with "...A" instead of "...TagList".
tagcall vararg stubs no longer end with "...Tags".
0.73
- a histogram created by CreateHistogram() now has a default
palette consisting of 16 grey tones.
- AddChunkyImage() now calls a progress hook. Therefore you
may specify the RND_ProgressHook tag in AddChunkyImage()'s
taglist.
- some optimizations
- CreateConversionTable() has been renamed to
CreatePenTable().
- ConvertChunkyImage() has been renamed to ConvertChunky().
- RND_ConversionTable has been renamed to RND_PenTable
0.72
- Heavy bugs removed from AddRGBImage(), ExtractPalette(),
and other functions.
- C includes were completely unusable. Fixed.
- Major rework of most include files.
0.71
- There were the 0.69 versions of render.library in the
0.70 archive
- DeleteScaleEngine() was missing in the includes. Fixed.
- DeleteScaleEngine() crashed when the scaling-engine wasn't
created with a custom memhandler.
0.70
- New interfaces for CreateRenderMemHandler, CreateHistogram,
Render, AddChunkyImage, AddRGBImage, ExtractPalette,
SetRenderPalette.
- Removed SetRGBWeight, SetProgressHook, SetRenderMode,
SetPaletteMode
- New functions: ModifyHistogram, QueryHistogram
- Autodocs not yet updated
0.69
- p2table searcher now adapts to low-memory situations (not
fully tested yet)
- InitPenConversionTable() is no longer defined. A custom
conversion table may be passed to Chunky2BitMap() directly.
- p1table adaption callback is now executed every 128th
adaption. after completion the callback hook is once more
executed. This corrects minor optical problems with
progress bars.
- forgot E include renderhooks.m. Now included.
- New qualitative color reduction algorithm implemented.
Slightly faster. Very stable results even with different
histogram resolutions. Much better output with dither and
few colors.
0.68
- I actually forgot to include the SetPaletteMode entry in
the library's build-up table. The machine crashed when
executed. Fixed.
- IMPORTANT: Interface for Scale() has changed - Scale now
handles two additional arguments: totalwidth for source and
destination. This allows processing of clip areas.
- The chunky8 scaling engine now requires less memory.
- chunky8 scaling optimized for vertical enlarge
- Heavy autodoc improvements, especially in respect to
amigaguide links to be created with AD2AG.
0.67
- new function: SetPaletteMode.
- some palette sort methods implemented.
- minor autodoc and includes bugs fixed
- CreateChunkyConversionTable renamed to
CreateConversionTable
- fixed minor accuracy problems with the chunky scaling
engine
0.66
- new functions: CreateChunkyConversionTable and
ConvertChunkyImage.
- removed two subtle bugs in the FS-dither code. The blue
error component was treat incorrectly.
0.65
- CreateScaleEngine8, DeleteScaleEngine und Scale
implemented.
- Autodocs updated
0.64
- initial internal beta release