Skip to content

Releases: Tencent/tgfx

v1.2.0

11 Nov 04:59
Compare
Choose a tag to compare

What's Changed

  • Optimize the performance of BlurImageFilter by reducing one unnecessary offscreen rendering pass.
  • Add a clipRect() method to the Canvas class.
  • Remove Image::isRGBAAA() and make Image::makeTextureImage() create a new image source if the image size doesn't match its source size.
  • Remove the ImageSource class and merge the code into the ResourceImage class.
  • Renmae EncodedOrigin to Orientation.
  • Allow Image::getBackendTexture() to return the associated ImageOrigin.
  • Add a makeWithFilter method to the Image class.
  • Optimze the DropShadowImageFilter by enabling direct drawing to the surface.
  • Simplify the generated shaders by removing an unnecessary ConstColorProcessor.
  • Add a makeRasterized() method to the Image class.
  • Force the newly created GPU resources to stay alive until the next flush() for reuse.
  • Improve performance by enabling multi-threading for the built-in freetype library.
  • Cache the ScalerContext instance in the Font class instead of creating it repeatedly.
  • Rename Image::isLazyGenerated() to Image::isFullyDecoded().
  • Fix the issue of missing multiplication of the input alpha in gradient shaders.
  • Merge Shader::makeWithPreLocalMatrix() and Shader::makeWithPostLocalMatrix() into Shader::makeWithMatrix().
  • Remove the cropRect member from the ImageFilter class.
  • Add a clipRect parameter to the Image::makeWithFilter() method.
  • Optimize performance by enabling glScissor whenever possible.
  • Remove the Shape class and add cache support directly for the Path class.
  • Fix the aliasing issue on the edges of RRect when drawn with scaling.
  • Fix the TriangulatingPathOp for proper rendering with gradient shaders.
  • Add bounds cache for the Path class.
  • Remove setAlpha() and setBlendMode() from Canvas and add some convenient methods for drawing paths and manipulating matrices.
  • Remove the Canvas::flush() method and add a Paint parameter to the Canvas::drawAtlas() method.
  • Add a setAntiAlias() method to the Paint class to toggle anti-aliasing.
  • Add a asColor() method to the Shader class.
  • Improve clip path performance by caching a texture instead of a surface to reduce draw calls.
  • Make ImageBuffer::MakeFrom(ImageInfo, Data) return nullptr if the ImageInfo isn't suitable for direct texture upload.
  • Optimze color emoji drawing performance by deferring glyph image decoding.
  • Add a isOval method to the Path class and rename asRect / asRRect to isRect / isRRect.
  • Fix building errors with gcc 13.
  • Add a matrix parameter to TextBlob::getBounds().
  • Fix the NPR issue when Font.getTypeface() returns nullptr.
  • Fix the rendering issue with the drop shadow filter that happens when drawing exceeds image bounds.
  • Implement the ImageFilter::Compose() method.
  • Implement the ColorFilter::Compose() method.
  • Implement the Picture and Recorder classes.
  • Add a simple OpenGL demo for the HarmonyOS platform.
  • Add the hardware buffer support for the OHOS platform.
  • Add support for printing logs on the OHOS platform.
  • Add support for creating a texture from a yuv NativeBuffer on the OHOS platform.
  • Improve performance when repeatedly writing to the hardware buffer on the OHOS platform.
  • Fix PNG decoder error handling.
  • Fix the random pixels outside the clip by adding a clear op before the draw op.

v1.1.2

21 Mar 12:14
Compare
Choose a tag to compare

What's Changed

  • Fix the out-of-bounds memory access issue in the FTMask class.

v1.1.1

30 Jan 02:18
Compare
Choose a tag to compare

What's Changed

  • Fix the performance issue of mistakenly deleting all purgeable resources, even when the maximum byte limit is not reached.

v1.1.0

15 Jan 04:54
d864aee
Compare
Choose a tag to compare

What's Changed

  • Allow EGLSurface to be nullptr in EGLDevice::Current() when the 'EGL_KHR_surfaceless_context' extension is available.
  • Delay the acquisition of textures, render targets, and gpu buffers until context is flushed.
  • Optimize performance by deferring the rasterization of paths and executing them concurrently.
  • Refactor the cache system of Resources to avoid crashes when releasing resources across multiple threads.
  • Fix the ANR caused by TaskGroup::exit() when app is exiting.
  • Make all ResouceProxy classes immutable and generate resource creation tasks to the Context instead.
  • Remove unnecessary flush() calls in Surface, like makeImageSnapshot() and drawing with image filters.
  • Fix the issue where HardwareBufferAllocate() returns a buffer even when HardwareBufferAvailable() is false on apple platforms.
  • Upgrade the pathkit library and add a non-aa method to the PathTriangulator class for path tessellation.
  • Enable the -Wconversion warning option by default and fix all conversion warnings.
  • Add a GLResource class and hide the Resource related classes from the public APIs.
  • Move the flags in the SurfaceOptions class to the RenderFlags class.

v1.0.1

17 Dec 05:40
9060855
Compare
Choose a tag to compare

What's Changed

  • Add demo projects for multiple platforms: iOS, Android, Web, Windows, Linux, and QT.
  • Add support for building with all NDK versions starting from 19 and above.
  • Add the x86_x64 architecture support on the Android platform.
  • Add support for building with the Qt 6.0 SDK.
  • Fix the crash in QGLWindow when rendering with multiple threads.
  • Remove the 'shareContext' parameter from QGLWindow::MakeFrom(). Fetch it automatically within QGLWindow instead.
  • Upgrade the skcms library to version 'm120'.
  • Replace all 'MakeAdpoted()' with 'MakeFrom()' in the Device classes as the term 'adopted' is incorrectly used.
  • Allow surfaces to be cached on the Window class, replacing createSurface() with getSurface(), freeSurface(), and invalidateSize().

v1.0.0

22 Nov 04:30
Compare
Choose a tag to compare

This is the initial release, extracted from the stable version 4.2 of libpag.