-
Notifications
You must be signed in to change notification settings - Fork 1
/
NEWS
163 lines (149 loc) · 7.27 KB
/
NEWS
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
#+TITLE: Guile-PNG News -- history of user-visible changes.
#+STARTUP: content hidestars
Copyright (C) Artyom V. Poptsov <[email protected]>
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
* Changes in version 0.7.3 (2024-03-30)
** Implement image transformation methods
The methods below can be found in =(png image-processing rotate)= module:
- =png-image-rotate-90/cw=: 90 degrees clockwise rotation
- =png-image-rotate-90/ccw=: 90 degrees counter-clockwise rotation
- =png-image-flip-vertical=: Vertical flip.
- =png-image-flip-horizontal=: Horizontal flip.
** New high-level API for manipulating image pixels
=(png graphics pixel)= now provides two high-level procedures for manipulating
the image pixels:
- =png-image-pixel-for-each=
- =png-image-pixel-map=
- =png-image-pixel-fold=
** Update and improve the documentation
** Add new tests
* Changes in version 0.7.2 (2024-02-10)
** Fix ellipse drawing :BUGFIX:
Guile-PNG would fail to draw an ellipse at the specified position due to
rational number calculation errors. Now it is fixed.
** Fix rectangle drawing :BUGFIX:
The rectangle drawn by this procedure would always be one pixel wider and
higher than the actual shape size. Now this should be fixed.
** Fix circle constructor: handle "diameter" option properly :BUGFIX:
** Add "blur" image processing module
The module contains =png-image-blur= procedure that produces a new blurred
image from the given one. Note that this procedure does not work with indexed
colors for now.
** Handle EXIF chunk types
This includes: eXIf, zxIf, vpAg, caNv.
** Guile-PNG procedures now throw 'png-error'
Guile-PNG procedures now throw 'png-error' instead of a generic errors.
** Changes in =(png image)=
*** =png-image-chunks-insert!=: New method
There are now three variations of =png-image-chunks-insert!= that allow to
insert a new chunk into an image chunk list.
*** =png-image->bytevector=: New method
This method allows to convert an PNG image to a bytevector.
*** Now =#:color-type= can be passed as a symbol
This improves human readability of the code.
*** The output of "display" for an image now simpler
** =(png)=: =bytevector->png-image=: New method
This method allows to read a PNG image from a bytevector.
** =(png core color-type)=: New module
The module contains =png-image-color-type->symbol= and
=symbol->png-image-color-type= methods.
** =(png core filter)=: Add type predicates
** Update and improve the documentation
** Add new tests
* Changes in version 0.7.1 (2023-08-20)
** Fix Bresenham's Line generation algorithm :BUGFIX:
Bresenham's Line generation algorithm would fail to draw properly some types
of inclined lines. Now that is fixed.
** Fix the order of building Guile-PNG FSM modules :BUGFIX:
The building process would fail during =make distcheck=. Not that is fixed.
** New modules
*** =(png graphics dimension)=
=<dimension>= class represents a dimension with width and height as
properties.
*** =(png graphics selection)=
=<selection>= class represents a selected part of an image. The selected part
has only =selection-crop= method for now, that allows to get a part of the
base image as a new image.
** Add class printers for graphic objects
Classes from =(png graphics)= are now have proper class printers.
** Add new examples
New examples added:
- Sierpinski Triangle
- Sierpinski Carpet
- Sierpinski Carpet Animation
* Changes in version 0.7.0 (2023-07-19)
** Implement filter algorithms selection heuristics
When an image is being saved select filtering algorithms for each image row (a
"scanline") based on recommendations from RFC 2083 (see "9.6. Filter
selection".) Using the recommended heuristics allows to improve compression
ratio and thus to reduce image the size.
** =(png core chunk bkgd)=: Fix a typo
Fix a typo in a <png-chunk:bKGD> slot name: replace "greyscale" with
"grayscale".
** Update the documentation
* Changes in version 0.6.0 (2023-06-11)
** Make image processing procedures names shorter :API_CHANGE:
*** =png-image-filter-grayscale=: Rename to =png-image-grayscale=
*** =png-image-filter-invert-colors=: Rename to =png-image-invert-colors=
*** =png-image-filter-solarize=: Rename to =png-image-solarize=
** Image processing procedures now handle indexed colors properly
** Add "tRNS" and "iTXt" chunks decoders
* Changes in version 0.5.0 (2023-05-29)
** Bugfix: Rename chunk modules :API_CHANGE:BUGFIX:
Now chunk modules in =(png core chunk ...)= are renamed in the lowercase
manner. Also =tEXT= and =tEXt= classes are placed in the same module to
address the issue with case-insensitive filesystems where "tEXT.scm" and
"tEXt.scm" considered the same file.
Reported by Aleix Conchillo Flaqué in here:
https://github.com/artyom-poptsov/guile-png/issues/2
** Fix color type 3 handling in "bKGD" decoder :BUGFIX:
** Fix "PLTE" chunk cloning :BUGFIX:
=png-chunk-clone= for =<png-chunk:PLTE>= would fail to clone a chunk. Now
that should be fixed.
** Add "gAMA" and "hIST" chunk decoders
* Changes in version 0.4.1 (2023-05-06)
** Bugfix: =png-image-clone= now clones image data
=png-image-clone= now produces full clone of the image data as expected.
** Bugfix: =png-chunk-clone= now clones chunks properly
Now =png-chunk-clone= creates correct copies of pHYs, tIME, tEXt, tEXT and
zTEXt chunks.
** New procedure: =png-image-filter-grayscale=
This procedure allows to convert image to grayscale colors.
* Changes in version 0.4.0 (2023-05-01)
** Bugfix: Init =position= slot of =<rectangle>= to a =<point>= instance
The =position= slot would be always initialized to a procedure instead of a
=<point>= instance. Now this should be fixed.
** Bugfix: Setup =graphics= test suite logging properly
** Update to work with Guile-SMC 0.6.0
** =(png core chunk tEXt)=
*** New method: =png-chunk:tEXt-keyword-description=
* Changes in version 0.3.0 (2022-12-18)
** Improve the image parser
PNG chunks are now decoded properly, including data decompression.
** Improve the image encoder
Implement proper encoders for PNG chunks, including compression.
** Guile-PNG now allows to create PNG images from scratch
This also means that Guile-PNG now allows to create PNG images and draw some
graphics over them (using =(png graphics)= module.)
** =(png graphics)=: Fix line drawing algorithm
Re-implement the better version of Bresenham's line drawing algorithm based on
the GNU Octave code from
<https://www.markwrobel.dk/post/amiga-machine-code-letter12-linedraw/>
** =(png graphics)=: Add "<filled-rectangle>"
** =(png graphics)=: Add "<polygon>"
** Update the documentation
** Add new tests
* Changes in version 0.2.0 (2022-11-13)
** =(png graphics ...)=: New modules
There's now a set of classes that allow to draw graphical primitives like
points, lines, multilines, rectangles, ellipses and circles on a PNG image.
** =(png graphics)=: New module
This module re-exports everything from =(png graphics ...)=.
** =(png pixel)= now =(png graphics pixel)=
* Changes in version 0.1.0 (2022-11-05)
** Release of the first version of Guile-PNG
Local Variables:
mode: org
End: