Added:
Canvas:annotateRectWithURL,annotateNamedDestination,annotateLinkToDestination#108 via @dzaima
Changed:
- Skia version m143-da51f0d60e-2 -> m143-da51f0d60e-3
Added:
FontMgr::useSystemRenderingParams#107 via @vladimirsamsonov
Added:
Color:convertRGBToHSV,convertToHSV,makeFromHSV, color constants #105 via @EatgrapesColorSpace: all the missing functions #105 via @Eatgrapes
Fixed:
- Absolute CI build paths in release binaries #106
Added:
- Vulkan support #100 via @Eatgrapes
Path::fillWithPaint#95 via @vladimirsamsonovPixmap::erase,Pixmap implements IHasImageInfo#101 via @EatgrapesColor::premultiply,unpremultiply,makeLerpPM#101 via @EatgrapesColor4f::premultiply,unpremultiply,makeLerpPM#101 via @Eatgrapes
Changed:
- [ BREAKING ]
Pixmap::getInfo->Pixmap::getImageInfo#101 via @Eatgrapes - [ BREAKING ]
Bitmap::peekPixelsnow returnsPixmap, same as Skia #101 via @Eatgrapes Color::makeLerp,Color4f::makeLerpnow produce correct results with alpha #101 via @Eatgrapes
Added
Document#80 #97 via @Eatgrapes
Fixed
- Actually publish Android build #96 via @Eatgrapes
Added:
- Android build #93 via @Eatgrapes
Fixed:
Path::convertConicToQuadsreturning incomplete array #94
Changed:
- [ BREAKING ]
GLBackendState->BackendState - [ BREAKING ]
DirectContext::resetGL->DirectContext::reset - [ BREAKING ]
PathEffect::Style->PathEffect1DStyle - [ BREAKING ]
Region::Op->RegionOp - [ BREAKING ]
PathSegmentMask->PathSegmentType,Path::getSegmentMask->Path::getSegmentTypes
Removed:
- [ BREAKING ]
SurfaceColorFormat(it was duplicatingColorType🙈) - [ BREAKING ]
TextStyleAttribute.FONT_EXACT(replaced withTextStyleAttribute::equalsByFonts)
Fixed:
ColorTypeto match latest Skia changesColorType.N32value on macOSSVGTagto match latest Skia changes
Added:
BlendMode:LAST_COEFF_MODE,LAST_SEPARABLE_MODEColorChannelFlagColorType:BGRA_10101010_XR,RGBA_10X6,RGB_F16F16F16X,SRGBA_8888,R8_UNORMEncodedImageFormat:AVIF,JPEGXLEncodedOrigin:DEFAULTFramebufferFormat:GR_GL_LUMINANCE8_ALPHA8,GR_GL_RGBX8ShadowUtilsFlag:NONE,ALLSVGTag:FE_COMPONENT_TRANSFER,FE_FUNC_A,FE_FUNC_R,FE_FUNC_G,FE_FUNC_B,FE_MERGE,FE_MERGE_NODE,TextStyleAttribute::equalsByFonts
Fixed:
FontMgr::matchFamily*(null)now returns default font
Changed:
Managed::closedoes not throw now on non-managed or already closed objects
Added:
ColorSpace::makeFromICCProfile
Changed:
- Re-enabled linux ARM build, thanks to @Eatgrapes #88
Changed:
- Skia version m132-9ab7c2064b -> m143-da51f0d60e
Region::getBoundaryPathnow returns new Path instead of accepting one and modifying it- Most ImageFilter ctors now accept an optional cropRect
- [ BREAKING ]
ShadowUtils::drawShadownow acceptsShadowUtilsFlag...
Added:
- PathBuilder
- Path.make*
- Canvas::drawPathOnce (convenience, draws path and closes it immediately)
- RuntimeEffect
- RuntimeEffectBuilder
- Image::makeWithFilter, makeScaled
- ImageFilter::makeCrop, makeEmpty, makePicture, makeShader, makeBlend, makeRuntimeShader
- Blender
- Paint::getBlender, setBlender
- Shader::isOpaque, getImage, makeWithLocalMatrix, makeWithWorkingColorSpace, makeFractalNoise, makeTurbulence
- FontArguments
- Typeface::makeClone(FontArguments)
- FontCollection::defaultFallback(int, FontStyle, String, FontArguments)
- Bitmap::setColorSpace
- SaveLayerRec: FilterTileMode and ColorSpace
- Codec::isAnimated
Removed:
- [ BREAKING ] Most of mutable methods on Path (moved to PathBuilder)
Changed:
- Skia version m123-f44dbc40d8 -> m132-9ab7c2064b
- Updated build to support JDK 25
Added:
Shaper::makeBestAvailable
Changed:
- Skia version m116-d2c211228d -> m123-f44dbc40d8
DirectContext::submitreturnsboolean
Added:
FontMgr::makeFromFileDirectContext::flushAndSubmit
Removed:
- [ BREAKING ]
Font::getTypefaceOrDefault - [ BREAKING ]
Typeface::makeDefault - [ BREAKING ]
Typeface::makeFromName(useFontMgr::matchFamilyStyle) - [ BREAKING ]
Typeface::makeFromFile(useFontMgr::makeFromFile) - [ BREAKING ]
Typeface::makeFromData(useFontMgr::makeFromData) - [ BREAKING ]
Surface::flush(useDirectContext::flush(Surface)) - [ BREAKING ]
Surface::flushAndSubmit(useDirectContext::flushAndSubmit(Surface))
Changed:
- Skia version m119-fcb55886b9 -> m119-fcb55886b9-2
Added:
FontMgr::useSystemRenderingParams#107 via @vladimirsamsonov
Added:
Path::fillPath#95 via @vladimirsamsonov
Fixed:
Path::convertConicToQuadsreturning incomplete array #94
Fixed:
ColorType,EncodedImageFormat,FramebufferFormat,SurfaceColorFormatupdated to match Skia enumsColorType.N32value on macOS
Changed:
- Skia version m116-d2c211228d -> m119-fcb55886b9
DirectContext::submitreturnsboolean
Added:
FontMgr::makeFromFileDirectContext::flushAndSubmit
Removed:
- [ BREAKING ]
Surface::flush(useDirectContext::flush(Surface)) - [ BREAKING ]
Surface::flushAndSubmit(useDirectContext::flushAndSubmit(Surface))
Fixed:
- Prevent EXCEPTION_ACCESS_VIOLATION in Canvas.getSurface() method #86 via @vladimirsamsonov
Fixed:
- toString on closed RefCnt objects #85 via @vladimirsamsonov
Fixed:
- Bitmap swap method #84 via @vladimirsamsonov
Added:
StreamAsset,Typeface::openStream#82 via @vladimirsamsonov
Added:
adoptGLTextureFrom#67 #72 #74 #75 via @EldoDebug
Fixed:
- Memory leak in
Canvas::drawTriangles#76
Changed:
- Surface and PictureRecorder cache returned Canvas object and invalidate it when owner is closed #66
Fixed:
- ColorType enum mapping #73
Changed:
- Skia version m116-f44dbc40d8 -> m116-d2c211228d
- Link with EGL on Linux
Fixed:
- Broken shared library unpacking #54 #56
Fixed:
- Race condition in shared library unpacking #54 #56 thx @dzaima
- NPE in Typeface::makeFromName #49
Changed:
- Skia version m109-664500fa93 -> m116-f44dbc40d8
- [ BREAKING ]
Bitmap::erase(Color4f)no longer takes ColorSpace - [ BREAKING ]
ImageFilter::MakeMagnifierrequired two more arguments:zoomAmountandSamplingMode Image::makeRaster(ImageInfo, byte[], long)->makeRasterFromBytesImage::makeRaster(ImageInfo, Data, long)->makeRasterFromDataImage::makeRasterBitmap(Bitmap)->makeRasterFromBitmapImage::makeRasterPixmap(Pixmap)->makeRasterFromPixmapImage::makeFromEncoded(byte[])->makeDeferredFromEncodedBytesImage::encodeToDatahas been replaced withEncoderJPEG,EncoderPNG,EncoderWEBP, plus the encoding optionsSurface::makeRasterDirect->wrapPixelsSurface::makeFromBackendRenderTarget->wrapBackendRenderTargetSurface::makeFromMTKView->wrapMTKView
Deprecated:
Surface::makeRasterN32PremulEncodedImageFormat
Removed:
- [ BREAKING ]
ImageFilter::MakeAlphaThreshold - [ BREAKING ]
ImageFilter::MakePaint - Disabled Linux ARM64 builds until HumbleUI/SkiaBuild#8
- Lombok version updated 1.18.22 -> 1.18.26 #43 via @Glavo
- Basic linux arm64 support #44 via @Glavo
Changed:
- [ BREAKING ] Windows and Linux platform artifacts now have architecture classifiers, consistent with macOS (skija-windows -> skija-windows-x64, skija-linux -> skija-linux-x64) #34 via @Glavo
- [ BREAKING ] Platform was split into Architecture and OperatingSystem #34 via @Glavo
Added:
- jmods are now built and uploaded to Github Releases #34 via @Glavo
skija.loadFromLibraryPathsystem property to load native libraries from system locations #34 via @Glavoskija.library.pathsystem property to load native libraries from custom location #34 via @Glavo
Added:
- Canvas::quickReject(Rect), Canvas::quickReject(Path) #33 via @Algeseven
Changed:
- Skia version m106-ba6bc7d02d -> m109-664500fa93
- Ubuntu bumped to 20.04
- Java 8 is now supported #30 via @Glavo
Fixed:
- Added
Library.staticLoad()toBufferUtil,Pixmap,ColorType#29 - Don’t accept null font in shaper
- Implicit long to int conversion in BreakIterator::clone
- TextLine fBreakOffsets use uint32_t instead of floats
Changed:
- Skia version m105-f204b137b9 -> m106-ba6bc7d02d
Added:
- Canvas::setMatrix(Matrix44) #26 via @Algeseven
- Canvas::saveLayerAlpha
- Canvas::saveLayer(SaveLayerRec) #27
- Canvas::getSurface
Changed:
- Skia version m102-32283b3f00 -> m105-f204b137b9
Added:
- TextLineRunHandler
- FontMgrRunIterator ctor that accepts languageIterator
- SamplingModeAnisotropic
- Bitmap::erase(Color4f)
- Bitmap::erase(Color4f, ColorSpace)
- Bitmap::erase(Color4f, IRect)
- Bitmap::erase(Color4f, ColorSpace, IRect)
- Bitmap::getColor4f(int, int)
- Pixmap::getColor4f(int, int)
- Canvas::getBaseProps()
- Canvas::getTopProps()
Fixed:
- Surface::makeImageSnapshot can now correctly return null #23
Removed:
- [ BREAKING ] ParagraphBuilder::setParagraphStyle
Changed:
- Skia version m100-d5a507cafd -> m102-32283b3f00
- Cache Font::getMetrics #17
Changed:
- Skia version m98-e7cf73334f -> m100-d5a507cafd
- [ BREAKING ] RuntimeEffect::makeShader lost isOpaque argument
- [ BREAKING ] C++ 14 -> 17
Added:
- RuntimeEffect::makeColorFilter
Changed:
- types 0.1.0 -> 0.1.1
- Removed unnecessary LineMetrics UTF-8 to UTF-16 conversion #9
Changed:
- Skia version m96-2f1f21b8a9 -> m98-e7cf73334f
- groupId io.github.humbleui.skija -> io.github.humbleui
- [ BREAKING ] Moved IPoint, IRange, IRect, Point, Point3, Rect, RRect to
io.github.humbleui.types
Changed:
- Skia version m93-87e8842e8c -> m96-2f1f21b8a9
- Renamed package org.jetbrains.skija -> io.github.humbleui.skija
- Renamed maven group org.jetbrains.skija -> io.github.humbleui.skija
- Migrated to Maven Central
Added:
- org.jetbrains.skija.resources.*
- ResourceProvider
- FileResourceProvider
- DataURIResourceProviderProxy
- CachingResourceProvider
- AnimationBuilder::setResourceProvider #129
Added:
- ShapingOptions
- Groups together FontMgr, FontFeature[], leftToRight
- Adds approximateSpaces and approximatePunctuation
- FontMgrRunIterator(String, Font)
- Shaper::shapeLine(String, Font)
Changed:
- AnimationDisposalMethod -> AnimationDisposalMode
Signature updated from:
- TextLine::make(String, Font, FontFeature[], boolean)
- FontMgrRunIterator(ManagedString, boolean, Font, FontMgr)
- FontMgrRunIterator(String, Font, FontMgr)
- Shaper::shape(String, Font, boolean, float, Point)
- Shaper::shape(String, Font, FontMgr, FontFeature[], boolean, float, RunHandler)
- Shaper::shape(String, Iterator, Iterator, Iterator, Iterator, FontFeature[], float width, RunHandler)
- Shaper::shape(ManagedString, Iterator, Iterator, Iterator, Iterator, FontFeature[], float width, RunHandler)
- Shaper::shapeLine(String, Font, FontFeature[], boolean)
to:
- TextLine::make(String, Font, ShapingOptions)
- FontMgrRunIterator(ManagedString, boolean, Font, ShapingOptions)
- FontMgrRunIterator(String, Font, ShapingOptions)
- Shaper::shape(String, Font, ShapingOptions, float, Point)
- Shaper::shape(String, Font, FontMgr, ShapingOptions, float, RunHandler)
- Shaper::shape(String, Iterator, Iterator, Iterator, Iterator, ShapingOptions, float width, RunHandler)
- Shaper::shape(ManagedString, Iterator, Iterator, Iterator, Iterator, ShapingOptions, float width, RunHandler)
- Shaper::shapeLine(String, Font, ShapingOptions)
Changed:
- Skia version m92-d9b8efde6d -> m93-87e8842e8c
- Paint::getHash is no longer structural
Removed:
- Shader::makeLerp #114 thx @cqjjjzr
- Paint::getFilterQuality, Paint::setFilterQuality #114 thx @cqjjjzr
Changed:
- Skia version m92-f46c37ba85-2 -> m92-d9b8efde6d
- Linking freetype dynamically on Linux to avoid conflicts with JavaFX #113
Added:
- RuntimeEffect #120 #124 thx @Vechro
Added:
- DirectContext::submit(bool syncCPU), thx @EgorOrachyov
- Direct3D Context #121 thx @EgorOrachyov
- SkData->ByteBuffer #118 thx @cqjjjzr
- SkImage bindings for SkPixmap #117 thx @cqjjjzr
Changed:
- Optimized use of Enum.values() #112
- Fixed source jar build on non-English Windows
Added:
- SkPixmap bindings, SkPixmap-related methods for SkSurface #116 thx @cqjjjzr
Lowered minimal required version to Java 9. Support for Java 9 modules (#110 #111 thx @comtel2000):
- org.jetbrains.skija.shared
- org.jetbrains.skija.windows
- org.jetbrains.skija.linux
- org.jetbrains.skija.macos.x64
- org.jetbrains.skija.macos.arm64
Code reorganization:
- removed maven
- flattened source dirs
- native/src → platform/cc
- shared/src/main/java/org/jetbrains/skija → shared/java
- shared/src/test/java/org/jetbrains/skija → tests/java
- added platform/java-{platform}
Skia version m92-f46c37ba85 -> m92-f46c37ba85-2
Changed:
- [ BREAKING ] SVGDOM::setContainerSize() does not scale SVG anymore (https://bugs.chromium.org/p/skia/issues/detail?id=11144)
Added:
- SVGDOM::getRoot()
- SVGSVG (root SVG node)
Skia version m91-b99622c05a -> m92-f46c37ba85
Changed:
- paragraph.Shadow::blurRadius -> paragraph.Shadow::blurSigma
Removed:
- PathEffect::computeFastBounds
Fixed:
- Typeface.getFamilyNames return type (String[] -> FontFamilyName[]) #108
- Canvas.resetMatrix argument (Matrix33 -> None) #109, thx @AnzerWall
Added:
- Canvas.drawRectShadow
- Canvas.drawRectShadowNoclip
- Rect.inflate
- Rect.isEmpty
- Managed.isClosed
Updated:
- org.jetbrains:annotations from 19.0.0 to 20.1.0
Added:
- Surface::makeFromMTKView
- Optionally load dll/so/dylib from current dir
Added:
- DirectContext::makeMetal
- BackendRenderTarget::makeMetal
Fixed:
-Xcheck:jniwarnings #70
Fixed:
- NPE in TextLine::getIntercepts
Skia version m90-adbb69cd7f-2 -> m91-b99622c05a
Changed:
- All variants of Picture.makeShader now take extra FilterMode argument
Added:
- Matrix33.rotate(deg, pivot)
New FontRunIter for TextLine/TextBlob, groups grapheme clusters together correctly
Lombok 1.18.18 -> 1.18.20 (support for Java 16)
Added:
- TextLine.getIntercepts()
Skia version m90-adbb69cd7f -> m90-adbb69cd7f-2
Changed:
- Fixed exception during reporting double close in Managed #102
- Fixed for locale-dependent SVGCanvas serialization https://skbug.com/11794
Changed:
- Fixed Skottie linking on Linux
Skia version m89-109bfc9052 -> m90-adbb69cd7f
Added:
- Canvas.drawImageRect(..., SamplingMode, ...)
- Canvas.drawImageNine()
Changed:
- SamplingMode.FilterMipmap -> FilterMipmap
- SamplingMode.CubicResampler -> CubicResampler
- ImageFilter.makeXfermode() -> ImageFilter.makeBlend()
- ImageFilter.makeImage(..., FilterQuality -> SamplingMode)
- ImageFilter.makeMatrixTransform(..., FilterQuality -> SamplingMode)
Removed:
- Canvas.drawImageIRect()
- Canvas.drawBitmap()
- Canvas.drawBitmapRect()
- Canvas.drawBitmapIRect()
(See https://bugs.chromium.org/p/skia/issues/detail?id=11764#c1)
Lombok 1.18.16 -> 1.18.18
Added:
- BreakIterator
- U16String
Added:
- Codec
- AnimationFrameInfo
- AnimationDisposalMethod