-
Blendextended to support all CSS blend modes -
Canvas backend supports blending
-
Add
toPicturemethod to paths (with@arnavsharma990) -
Add blend modes to SVG backend (with
@arnavsharma990)
-
Rework fonts to follow convention of
withprefix for builder methods -
Improve font documentation
-
SVG supports adding attributes (with
@jonoabroad)
-
Major refactor of
Reactor -
Fix
MouseMoveon SVG -
Implement
interactalgebras for Canvas backend, so it can now display animations
-
Define
Filteralgebra and implement for SVG (by@untainsYD) -
Add
LoadBitmapalgebra for loading bitmaps as a separate type (by@untainsYD) -
Add
Textalgebra to the Canvas backend -
Fix SVG text rendering on JVM
-
Allow customisation of blocking behaviour on Java2D (by
@dwalend) -
Create
Taggedalgebra to allow mixing arbitrary tags in SVG output (with contributions by@lychko)
- Rework
randompackage to modernise and add features
-
DefaultFrameimplementation for SVG on JVM. See #180 -
Canvas backend support linear and radial fills (by
@Atharva-Kanherkar). -
All backends support linear and radial strokes (by
@Atharva-Kanherkar).
- Rework the color system to use OkLCh or RGB, instead of HSL or RGB. This gives
much better results when transforming one color into another. Also add some
additional palettes (Tailwind and Crayola colors) and fix a few typos in the
common color names (e.g.
hotpinkbecomeshotPink).
-
Fix rendering deadlock in the Java2D backend. See #176
-
Correctly set window size in Java2D backend. See #179
- Complete reworking of SVG backend to remove race conditions and manage resources correctly.
- Java2d rendering waits for window to close before rendering is complete. See issue #176.
-
Improvements to reactor for more consistent animations (by
@lego-eden) -
Convenience methods on
BufferedImageWriteruseDefaultFrame -
Fix monospaced font rendering on SVG (by
@kulsoom2003) -
Complete reworking of Java2D backend to remove race conditions and manage resources correctly.
-
Add HTML Canvas backend. It currently has fairly limited functionality.
-
Add
sizemethod to set bounding box width and height. Distinguished by the existingsizemethod onSizeby it's arguments. (#158)
-
Arcs are available as paths on
OpenPath,ClosedPath, andPathElement, and as conveniences onImageandPicture. -
Add
BufferedImageWriteralgebra (by@jCabala) -
Refactoring of writers (
@jCabala) -
SVG documentation (
@vosid8)
-
Imagesupports landmarks for layout withatandoriginAt. -
Added
fromHexmethod toColorto parse CSS hex-color
-
Rework type inference for syntax, making syntax more flexible and requiring fewer type annotations. (#133)
-
Implement a
Monadinstance forPicture(#131) -
Add
flatMapmethod toPicture -
Doodle is now Scala 3 only, as the new syntax doesn't compile under 2.13
-
Add
marginandoriginAttoImage, thanks to@danielost -
Simplify handling of paths (#130). APIs prefer to work with
OpenPathandClosedPath
-
Fix assorted typos
-
Add more constructors for creating animations
- Update
Imagerender syntax to match changes toPicturerender syntax
-
Write a lot of documentation
-
Update to Scala 3.2
-
Rendering of pictures and animations is synchronous on the JVM. This should stop simple programs exiting before any output is displayed. Removed callbacks from rendering methods---they were never used, they don't make sense is rendering can be synchronous, and you can use the
IOmethods if you want that level of control. -
Add
strokeCap,strokeJoin, andstrokeDashtoImage, providing all the features ofStyle.
- Remove
F[_]parameters from animation. This should have been done in the previous release, but I forgot to do so. Breaks binary compatibility, requiring a new version.
-
0.12 and 0.13 were broken and we weren't able to fix them due to MIMA checks. Hence the jump from 0.11 to 0.14
-
Add text and font to
Image, courtesy of akiomik -
Simplify the
Picturetype, which requires a large refactoring.-
The
Drawingtype is now a type member ofAlgebra, not a type parameter. -
Picturesare now equivalent to dependent function types, with the output beinga.Drawing[A]whereais theAlgebrathePictureis applied to.
This means the
Drawingparameter no longer needs to propagated outward in backend independent code and in turnPicturecan now be backend indepndent. In turn makes writing backend independent code, such as libraries that build on Doodle, dramatically easier to write.Overall, the
Picturetype, plus syntax, is as easy to useImage. -
- Add "constructors" to algebras. Described in WIP documentation. This allows
construction of
Picturewithout going via syntax, and in turn without requiring explicit types.
-
Add
originAtfor even more layout flexibility -
Move all
interactsyntax intoallobject. Useimport doodle.interact.syntax.all._instead of
import doodle.interact.syntax._ -
Set compiler flag to generate Java 8 compatible output
-
0.11.0 was released with a mix of Java 11 and Java 8 code, so we're pretending it doesn't exist.
-
Much more flexible layout using
Landmarkandmargin -
Syntax moves from
import doodle.syntax._toimport doodle.syntax.all._. This is consistent with Typelevel projects and avoids name collisions between syntax methods and the objects on which they are defined (e.g. thetextobject contains a method namedtext) -
Add missing syntax for
strokeCapandstrokeJoin. Contributed by Jeff Martin / custommonkey -
Move to fs2 and Cats Effect 3 from Monix. I'm not convinced Monix is actively maintained any more. Zainab helped out immensely with this one.
-
Remove
angleparameter fromregularPolygonandstar. This is not needed now we have rotations and their removal simplifies the API.
-
Update to Scala 3.0, Scala 2.13.6, and Scala.js 1.6. The move to Scala 3 required:
-
removing the svg and explore projects, which have dependencies that don't yet work on Scala 3. They will be restored in due course.
-
updating a bunch of dependencies, changing some code, etc.
-
-
Add equilateralTriangle path
-
We will never speak of 0.9.24
-
Mouse click algebra
-
Reactors support mouse click
- Java2d writers correctly use frame background color.
-
Add redraw specification to Java2D
Frame, which allows rendering animations in an way that captures the animation as a static image. -
A lot of work on documentation.
-
Text rendering correctly uses stroke and fill where possible. Java2D doesn't support fill. SVG supports both.
- Republish because I didn't completely rebuild last time and hence published some byte code compiled with JVM 11.
- Build with Java 8 to avoid class file version issues that occur when compiling with new JVM versions.
- Fix error in constructing open and closed paths
-
Improve modelling of fonts. Fonts can be both bold and italic
-
Java2D backend actually uses given font information to render the font
-
Add
scanLeftmethod toTransducer -
Add
Base64wrapper type tocorewhich encodes image format as well indicating base 64 data. UpdateBase64algebra to use. -
Add
ToPicturealgebra and syntaxThe
ToPicturealgebra provides a generic way to convert some type into aPicture. The syntax adds a methodtoPictureso one can call, e.g.someBase64Value.toPicture[Algebra, Drawing]
There are implementations for the Java2d backend for
Base64andBufferedImage.This replaces some of the functionality of the
Bitmapalgebra and it is likely that theBitmapalgebra will be removed or reworked in the future. -
Implement
Textalgebra for the SVG backend on JS
-
Build and publish for Scala 2.12 and 2.13.
-
add
Monoidinstance forPicture. -
add golden testing, to make tests more robust against rendering errors.
-
writeandbase64methods are usable. -
add
debugmethod toImage. -
Vecapply method accept cartesian or polar coordinates, inline withPoint. -
add
withFrameRateutility toObservable. -
add
Invariantinstance forInterpolator, andInterpolatorinstance forAngle. -
add
scaleLengthmethod toPoint.
-
exploretakes aFrame, which means it now works again. -
Some work on the
plotlibrary -
Algebraic animations via
InterpolationandTransducerallow easier construction and composition of common animations types.
-
Picturehas aMonadinstance if the underlying typeFdoes. -
Refactor base64 encoding support into a separate type class, and augment the syntax with an optional frame.
-
Fix
Java2dWriteruse of 0 sizeBufferedImage -
Fix error in calculating bounding box if the picture uses
atlayout. This will prevent the issue where the frame is too large or small for the enclosed picture. -
Add
Debugalgebra, which draws bounding box and origin for the given picture. -
Draw bitmaps the correct way around (they were upside-down).
-
Add some easing functions, the start of a library to make animations easier.
-
Miscellaneous small improvements.
-
Add text rendering via the
Textalgebra. Currently only implemented for the Java2D back-end. -
Add syntax for
SizeandTransformalgebras -
Add derived methods for some common types of shapes to the
Pathalgebra. Add syntax for these.
-
Doodle has been completely rewritten in terms of tagless final algebras. This gives extensibility needed to support diffferent features on different platforms.
-
0.9.12 add the ability to load bitmap images on the java2d backend (the
readmethods on theBitmapalgebra.) It's likely this API will be reworked in the future. This is very basic support for this feature. -
0.9.11 added mouse movement events to reactors.
--- Period when I wasn't recording changes ---
Fix most SVG text rendering issues.
- The layout is passable but not great. This will be improved with time.
- Java2D does not support fills for text, to the best of my knowledge, while SVG does. This can lead to different rendering on the two platforms, and we need to think about how we will handle this.
Add some more predefined paths
Image.starImage.regularPolygon
Improvements to Random
Random.int(lower,upper)to generate anIntin a given range.Random.discrete((atom, p), ...)creates a discrete distribution that chooses the atom with the given probability- Refactoring of
Randomcode that avoids strange REPL interactions.
More examples
Save to SVG
- the format is
SvgE.g.myImage.save[Svg]("filename.svg")
Save to PDF and SVG
- use
PdfAndSvgas the format, and specify only the base name of the file. E.g.myImage.save[PdfAndSvg]("filename")will producefilename.pdfandfilename.svg
Reduce the size of PDF files by enabling compression
These changes are lost in the mists of time