- triangular grids
squirclepath()
rule(pt1, pt2)
polysidelengths()
Some 'invalid' Point
methods have been removed:
-
Broadcasting on xy-elements like
Point(x, y) .+ n
are no longer valid. UsePoint(x, y) + Point(n, n)
. -
Point
-Real
arithmetic operations such asPoint(x, y) + n
are also no longer valid.
LaTeX support is still under development. See JuliaGraphics/Cairo.jl#357.
textformat()
polysmooth()
hasclose
optionmarkcells()
andgetcells()
- use package extension for LaTeX support
- add CompatHelper git workflow
- add Aqua.jl testing
createmovie
option foranimate
to make MKV and MP4 videospolybspline
draws bspline polygons
- minimum Julia version 1.9
- fixes for
drawpath(p, f)
to do the Bezier curve truncation better - added dependency PolygonAlgorithms.jl and replace poly intersection routines with new ones
- Aqua says TOML deps must be in alphabetical order :)
- remove @assert statements
- documents now built to https://github.com/JuliaGraphics/LuxorManual
- fixed bug in
box(pt, w, h, cr, :path)
(don't create new path) - removed some invalid Point methods (#294)
between
has more methods for ranges and arrays
- invalid
Point
methods such asPoint(1, 3) + 6
orPoint(1, 3) .+ 4
LaTeX support is still under development. See JuliaGraphics/Cairo.jl#357.
setfillrule()
, access Cairo's fill rule parametergetfillrule()
...circlering()
, creates ring of circles inside a circlepolysuper()
, creates superellipse-based polygonstidysvg(fromfile, tofile)
, munge those SVG glyphsplaceeps()
, place EPS files- dependency on DataStructures.jl added
- rejigged benchmarks folder a bit
circle()
constructed more carefully with four arcs (thanks @hyrodium) #268- Point arithmetic fix #270 (thanks @j-maffe)
LaTeX support is still under development. See JuliaGraphics/Cairo.jl#357.
-
code to handle svg backgrounds (thanks @oheil and @hustf!) #150
-
getline()
gets current line width -
getcolor()
gets current color -
multiply Point by 3×3 matrix using
*
- added more information to doc strings and tutorials
LaTeX support is still under development. See JuliaGraphics/Cairo.jl#357.
bezigon()
- the
Base.show(f::IO, ::MIME"image/svg+xml")
method that displays SVGs in notebooks modifies the glyph ids to avoid the familiar "Jupyter cells leak" problem (described here) polyclip()
clips one poly with another convex polygonispointonleftonline()
used by ↑rotatepoint()
is better name forrotate_point_around_point()
(thanks @gantz-giraffe !)
- changed precompile.jl to use SnoopPrecompile
hexspiral()
now counts from 1 not 0 (or 2)- fixed positioning bug in
textpath()
- placing images now uses premultiplied alpha value
- fixed bug in
pointcrossesboundingbox()
rotate_point_around_point()
is nowrotatepoint()
-
drawing image buffer and drawing indices (thanks @oheil!)
-
thread safety (thanks @oheil!)
-
action dispatcher (thanks @ArbitRandomUser!)
-
fixed hexspiral to work on v1.7 and earlier
-
some work to adapt to changes made in MathTeXEngine release 0.5.0
-
BoundingBox() can be used on Tables and table cells (needs tests)
-
hexagon constructors
-
fix
drawpath()
straight lines (thanks @jules for spotting this!) -
add return values for some path functions
-
fixed obscure bug in
polyportion()
if polygons were closed
- some old unused stuff
textfit()
algorithm revisited; it's quicker, at least....polymorph()
keywords changedpolymorph()
can now also morph between open polygons- minimum Julia version is now 1.6
- there are still bugs/edgecases in
polyhull()
which I can't find/fix - docs now built on Linux (for LaTeX purposes)
- support for Julia v1.3, minimum version is now Julia 1.6.
- first attempt at
polymorph()
hcat()
andvcat()
can join SVG drawings (thanks @davibarreira!)- yet another method for
perpendicular()
- check for dodgy corners in
polysmooth()
(thanks @arbitrandomuser!) - even more LaTeX characters (thanks @davibarreira!)
- bug in ngon()-vertices-reversepath fixed
BoundingBox(path)
calculates boundingbox more precisely (fixes #213)
- imports in latex.jl
- drawpath() progressive path drawing
- trimbezier() and splitbezier()
- pathsample() like polysample() for paths, but different
- more LaTeX characters (thanks @davibarreira!)
- AbstractPoint (thanks Giovanni @gpucce!)
- docs now forcepush to gh-pages
- latex text strings can also be paths (except the new LaTeX characters)
- Bezier arrows are now a bit tidier might fix #200
-
dependency on LatexStrings
-
Luxor.get_current_hue()
andLuxor.get_current_color()
-
the shape-making functions such as
circle
/ellipse
/rect
now return 'useful' values instead of Booleans. These values can usually be used as arguments toBoundingBox()
. (for @TheCedarPrince :)) -
switched to Graham Scan algorithm for
polyhull()
-
allow user to change tolerance for
isapprox()
-
export
determinant3()
-
LaTeX strings for
text()
- amazing work by @davibarreira, @Kolaru, and @TheCedarPrince - Thanks! -
leading option for
textfit()
-
BoundingBox()
for stored Path objects -
textonpoly()
can put text on the route of a polygon
-
code to support VSCode
-
textfit() fits text inside bounding box, first attempt
-
polyhull() - @thecedarprince (Hi Jacob!) convinced me it was useful :)
-
method for
arc(0, 0, action)
fixes #184 -
bug in simplify() #186 (thanks Ole @Wikunia!)
- support for 32-bit Windows - (r)svg doesn't work
- Path type to hold a Cairo Path;
makepath
(),drawpath
(),polytopath
(),bezierpathtopath
()
- squircle() rt keyword default bug fixed
- textpath() method has action and alignment options
- prettypoly() fix action keyword arg
- pointcrossesboundingbox() fix bug (thanks @hustf!)
- beziersegmentangles() attend to special cases
- dependency on ImageMagick
- many functions can now accept
action=
keyword arguments as well as positional ones - offsetpoly(... function) algorithm altered (it still sucks, though :))
include_first
kwarg added topolysample()
- texttrack() rewritten so that the alignment works
- added method to randompointarray() to generate Poisson-disk-sampled points
- initnoise() can use other RNG (thanks @JeffreyPalmer!)
- add_mesh_patch() to add more patches to a mesh
- setblendextend() to allow set blend (pattern) extend modes
- small change in hyphenation code in textwrap(), still not perfect though
- box(pt, w, h, radii) - can specify different radii for each corner
- rect() and box() have reversepath options
- Base.getindex(p::Point, i) = (p.x, p.y)[i]
- arrow(pt, radius...) - heads are hopefully better aligned to the shaft
- box-[top|middle|bottom]-left|center|right functions default to using the drawing's bbox.
- setstrokescale() - enable/disable stroke scaling
- ispointonpoly() - true if point lies on polygon (default atol=10e-5)
- tickline() - spaced points
- rotate_point_around_point()
- Drawing() takes a boolean named argument
strokescale
to enable/disable stroke scaling (thanks @JeffreyPalmer!)
- crescent()
- anticlockwise arrows
- custom arrowheads
polyportion()
/polyremainder()
now throw error for single-point polys (duh)- BoundingBox() no longer fails if there's no drawing (returns a default value)
- documentation restructured along divio ("grand unified theory of documentation" lines
- Allow alpha settings for image matrix (thanks @Sov-trotter!)
- add dependency on FFMPEG.jl
- add @drawsvg @savesvg
- add
svgstring()
to obtain the SVG source of a finished SVG drawing as a string
- FFMPEG code changed to run bundled version from FFMPEG.jl
- changed a test that used random numbers and failed on v1.7
- recording (
:rec
andsnapshot()
) (thanks @hustf!)
- CI now ci.yml rather than travis
- texttrack() switch to textoutlines()
- beziersegmentangles() bug fixed
- bug in isarcclockwise() fixed (thanks @johannes-fischer!)
- ispolyconvex() test changed to work properly
- anglethreepoints() changed to work up to 360° properly
textoutlines()
:center-ed alignments brought into line with 2.9.0 text() fix- more macros allow variables (thanks Mateusz!)
- ellipseinquad() ellipse bounded by quadrilateral
- anglethreepoints() find angle formed by three points
- ispolyconvex() test if polygon is convex
- beziersegmentangles() construct Bézier using in out angled handles
- bug in randompointarray() fixed
text()
:center-ed alignments are now more carefully calculated, allowing for various xadvance values. So there may be a few instances where text is positioned a few pixels further left compared with earlier Luxor versions.- BASE64 added (thanks @fonsp!)
- Rsvg support: readsvg()
- placeimage() now also accepts SVG files and SVG code (thanks guo-yong-zhi, schneiderfelipe)
- placeimage() now also accepts a matrix of UInt32
- minimum Julia version is 1.3
- juliacircles() has keyword options to allow stroke/clip actions
- algorithm for cener3pts fixed (thanks hyrodium)
- support for Julia 1.0, 1.1, 1.2
- triangle functions
- perpendicular() bisector
- macros allow variables (thanks Mason!)
- fixed text rotation/alignment issue (#122)
- additional methods for
offsetpoly()
for open polylines - image_as_matrix!() - reusable buffer
- image_as_matrix(): reverted accidental flip of xy coordinates introduced at 2.5.0 (sorry everyone!)
- getworldposition()
- polycross()
- docs use JuliaMono
- in a few functions (eg
sector
,box
) a:clip
action didn't work, because it was applied within agsave()
/grestore()
block.:clip
actions should now work, as they're applied after.
- some old deprecations finally gone
- get_fontsize() - thanks Ole!
- currentdrawing() function to return the current drawing if there is one
- show() fixed for new Drawing() eg in REPL
- background() preserves graphics state
- imagematrix() bugs in alpha fixed hopefully
-
imagematrix functions return the permuted matrix now
-
pointlinedistance() now returns the correct results (thanks Paul!)
- precompile()
- fix circlecircleinnertangents() edge case
currentpoint()
,has_current_point()
pointcircletangent()
circlecircleoutertangents()
circlecircleinnertangents()
julialogo()
centered optiontidysvg()
function to hack glyphnames in SVG files (probably a temporary thing)- support for Pluto
- document handling code (cf Pluto support)
julialogo()
tweaks to allow :path action- @svg rendering modified (eg no glyphname hacking done)
- arrow decorations
- :image type, image_as_matrix(), @imagematrix to convert current vector drawing to matrix
- some
:nothing
s replaced with:none
s - fixed some
box
bugs, when they were drawn when they shouldn't have been
bars()
- usebarchart()
startnewpath
option fortextoutlines()
unique
defined for Points- Travis/Appveyor cache
- GIFs preview in Juno
- attempt to make arrow shafts not stick out of arrow heads
- internals of rule doesn't use sets any more
- changed compatibility versions in Project.toml (Colors/Cairo)
- add/subtract Point to