Releases: mac-comp127/kilt-graphics
Releases · mac-comp127/kilt-graphics
"Images galore" edition
Enhancements:
- You can now directly create Image objects from a BufferedImage rather than just a saved image file.
“May a thousand CanvasWindows bloom” edition
Enhancements
GraphicsText.setFont
now accepts a comma-separated list of font families to try, for better cross-platform support.Line
now has a constructor that take twoPoint
s.- Console output is slightly tidier and more CLI-friendly.
Fixes
- App exits when all
CanvasWindow
s are closed, not when anyCanvasWindow
is closed. This makes it practical for the first time to write multi-window apps.
Breaking changes
- kilt-graphics now requires Java 17 or newer.
“Going in circles” edition
Enhancements
- Added
wrapAround()
methods toPoint
.
“All Your Meme” edition
Enhancements
GraphicsText
now implementsStrokable
, can draw outlined text (#24)
Fixes
- The missing image placeholder generated by
Image
when the image file is not found is no longer blurry and illegible on macOS Big Sur
“Words matter” edition
“11th hour features make 11.5th hour bugs” edition
Fixes
- GraphicsGroup.remove() now uses object identity instead of equality. Previously, the method could remove a different element with an identical shape, causing unexpected results. (#18, #20)
- All subclasses of GraphicsObject now have consistent equals() behavior. (Before, some used identity, and some took into account various parts of the shape.) (#19, #20)
Breaking changes
- The subclassing contract for GraphicsObject, which we don’t really treat as public API, has once again changed.
“A turn for the better” edition
Enhancements
- All graphics objects now support rotation and scaling (#17, #3, #16)
- Added
getAdvance()
andgetLineHeight()
methods toGraphicsText
for better multi-object text layout
Fixes
getWidth()
,getSize()
, andgetBounds()
are now mutually consistent for allGraphicsObject
types. (They had been inconsistent, for example, forGraphicsText
.)
Breaking changes
- The subclassing API of
GraphicsObject
has changed: more methods are final, different methods are abstract. GraphicsGroup
no longer forces its bounding box to include (0,0). This will alter the apparent size of some graphics groups, and may affect arithmetic that depends on the size of groups.
“Text avalanche” edition
Fixed
- Improved performance for kinetic text whose position is changing, but whose actual text content is not.
“Everybody wait your turn” edition
Fixed
- Fixed race condition between animation timer and main thread exit
Special double-speed “module schedule” edition
Enhancements
Canvas.animate()
now accepts lambda with a dt parameter, allowing animations to compensate for actual frame rate (#13)- Added
GraphicsText.intersects()
(#14, ht @bretjackson) - Added
setSize(double,double)
toEllipse
to matchRectangle
Fixed
- App no longer crashes when an event callback scheduled before
main()
exits enqueues another post-main callback - Animations now run with a faster and much more stable frame rate (#13)
TextField.setText()
no longer triggers anonChange
event if the text didn’t actually change