package gg
Install
Dune Dependency
Authors
Maintainers
Sources
sha512=86e3db9778103c6a9e3444585716c12dba0ba1af6b60e7b76f9cf282a23aa4cb075c764c470e9a878c3c90fe4a41e835be9180aaf0a4bc43ce3ad299b352e611
CHANGES.md.html
v1.0.0 2022-02-15 La Forclaz (VS)
Require OCaml 4.08.
Handle
Pervasives
's deprecation (and thus provide OCaml 5.00 support).Drop dependency on
bigarray
's ocamlfind package (and thus provide OCaml 5.00 support).Change the semantics of
Box{1,2,3}.inset
. Rather than return the empty box when the size in a dimensioni
become negative, clamp it to0
and use thei
th coordinate of the mid point of the box for thei
th coordinate of the resulting box's origin. This means that insetting boxes with large values eventually degenerates to the mid point of a box instead of the empty box. This avoids losing a box's location when one grows and shrinks them arbitrarily, e.g. in reaction to user input. Thanks to Michel Schinz for suggesting this better semantics.Change
Gg.Float.pp
hexadecimal notation renderer to use the built-in"%h"
string introduced in OCaml 4.03.0. Nans, zeros and infinities will render differently. Use the deprecatedGg.Float.pp_legacy
if you need to recover the old hex rendering.The
Gg.Float
module now includesStdlib.Float
(#19). Some values initially implemented inGg.Float
now useStdlib.Float
's definition or are deprecated in favour of corresponding functionality named differently. Implementations may differ but this shouldn't matter most of the time except for the first three items in this list:WARNING
Gg.Float.equal
is deleted in favour ofStdlib.Float.equal
The implemention differs, it moves fromx = y
tocompare x y = 0
which differs on nan values.Stdlib.Float.equal
treats them as equalGg.Float.equal
does not.WARNING
Gg.Float.round
is deleted and becomesStdlib.Float.round
. The implementation and behaviour on negative numbers differs.Gg.Float.round
always rounded towards positive infinity on ties (-2.
on-2.5
).Stdlib.Float.round
s away from zero on ties (-3.
on-2.5
).WARNING
Gg.Float.round_to_int
is affected by the newround
implementation (see previous point).Gg.Float.compare
is deleted and becomesStdlib.Float.compare
(same implementation).Gg.Float.pi
is deleted and becomesStdlib.Float.pi
, the bit pattern of the value is unchanged.Gg.Float.is_inf
is implemented byStdlib.Float.is_infinite
and deprecated in favour of it (different implementation).Gg.Float.is_int
is implemented byStdlib.Float.is_integer
and deprecated in favour of it (different implementation).Gg.Float.is_nan
is deleted and becomesStdlib.Float.is_nan
(same implementation)Gg.Float.fmax
is implemented byStdlib.Float.max_num
and deprecated in favour of it. The result ofGg.Float.fmax (-0.) (+0.)
is changed, it returns+0.
instead of-0.
.Gg.Float.fmin
is implemented byStdlib.Float.min_num
and deprecated in favour of it. The result ofGg.Float.fmin (+0.) (-0.)
is changed, it returns-0.
instead of+0.
.Gg.Float.sign_bit
is deleted and becomesStdlib.Float.sign_bit
(different implementation).Gg.Float.succ
is deleted and becomesStdlib.Float.succ
(different implementation).Gg.Float.pred
is deleted and becomesStdlib.Float.pred
(different implementation).Gg.Float.nan
is renamed toGg.Float.nan_with_payload
to leave room forStdlib.Float.nan
's constant.
v0.9.3 2018-10-23 Zagreb
Add
Color.to_srgbi
(inverse ofColor.v_srgbi
). Thanks to Christophe Troestler for the patch.Add missing constraints on
Float.{is_nan,equal,compare}
. Polymorphic equality was being used. Thanks to Christophe Troestler for the report (#17).Fix bug in
Gg.M3.rot2 ?pt:(Some _)
(#18).
v0.9.2 2017-01-24 La Forclaz (VS)
Add
Box{1,2,3}.add_pt
. Thanks to Christophe Troestler for the suggestion.V{2,3,4}.norm
avoid {under,over}flows. Thanks to Christophe Troestler for the report and guidance.Fix
Size.of_w
. Thanks to @rand00 for the report and the fix.Safe-string support.
Build depend on topkg.
Relicense from BSD3 to ISC.
v0.9.1 2015-08-14 Cambridge (UK)
Fix
Box1.pp
and add to toplevel support.Fix broken
Box{1,2,3}.subset
functions. Thanks to Armaël Guéneau for the report.Change toplevel support scheme,
#require "gg"
no longer automatically opensGg
and installs printers. You now have to#require "gg.top"
for this to happen.
v0.9.0 2014-08-23 Cambridge (UK)
Fix toplevel printer installation.
Use package builder topkg for distribution.
Add
Gg.Ba
(experimental). Convenience module for linear 1D bigarrays. The library now depends on Bigarrays.Many changes and fixes to the experimental
Gg.Raster
module.Removed
to_string
functions, they were not thread safe and we now haveFormat.asprintf
which can be used with the pretty printers.Add an optional argument to
M3.rot2
to specify a center for the rotation.Optimize
M{2,3,4}.mul
onM{2,3,4}.id
arguments.Add
M4.{move2,rot2,scale2,rigid2}
Rename
M4.{ortho,persp}
, replace~bottom
by~bot
.Add
Size1
module for sizes in 1D space.Add
Box1
module for 1D axis-aligned boxes (closed intervals).Add
Size2.{aspect,of_h,of_w}
functions.Add
Box2.{bm_pt,ml_pt,mm_pt,mr_pt,tm_pt}
for accessing middle points on the sides.Rename
Box2.{bottom,top}_{left,right}
toBox2.{b,t}{l,r}_pt
.Add
Box3.{fbl,fbr,ftl,ftr,nbl,nbr,ntl,ntr}
corner accessors.Fix a bug in
Box3.inset
, new size was incorrectly computed.
The following functions were renamed so that each module uses the same name for the same transform. Previously we had e.g. M3.scale
and M4.scale3
(3D) and M4.scale
(4D) which is confusing and inconvenient when one wants to switch from one matrix to the other.
Rename
M2.{rot,scale}
toM2.{rot2,scale2}
.Rename
M3.{move,rot,rigid,srigid}
toM3.{move2,rot2,rigid2,srigid2}
.Rename
M3.{rot_{map,axis,zyx},scale}
toM3.{rot3_{map,axis,zyx},scale3}
.Rename
M4.{move,rot_{map,axis,zyx},scale,rigid,rigidq,srigid,srigidq}
toM3.{move3,rot3_{map,axis,zyx},scale,rigid3,rigid3q,srigid3,srigid3q}
Rename
M4.scale
toM4.scale4
Rename
M4.{rot_{map,axis,zyx},to_rot_{axis,zyx}
toM4.{rot3_{map,axis,zyx},to_rot3_{axis,zyx}
.
v0.8.0 2013-09-24 Lausanne
First release. Part of the work was sponsored by Citrix Systems R&D and OCaml Labs.