- const uint32_t* Picture::data(uint32_t* w, uint32_t* h) const
Returning pixel data is not guaranteed as the picture may contain vector resources.
Remove it unless it's absolutely necessary.
@Issue: https://github.com/thorvg/thorvg/issues/1372
We've changed the behavior of Canvas::clear(false).
The canvas::clear(false) now retains the paints, allowing the user to update the next frame
more easily without having to recompose the paint list.
Previously, clear(false) removed the paint list from the canvas,
requiring the user to re-push all of them in the next frame.
Now, we offer the Canvas::paints() API, allowing users to modify the paint list directly instead.
This change will break compatibility with previous versions of Canvas.
Therefore, this update is included in ThorVG 1.0.
@Issue: https://github.com/thorvg/thorvg/issues/1372
[31/75] Compiling C++ object src/thorvg-0.dll.p/lib_sw_engine_tvgSwRaster.cpp.obj
D:\Projects\thorvg\src\lib\sw_engine\tvgSwRasterC.h(29): warning C4311: 'type cast': pointer truncation from 'PIXEL_T *' to 'long'
with
[
PIXEL_T=uint8_t
]
../src/lib/sw_engine/tvgSwRaster.cpp(1900): note: see reference to function template instantiation 'void cRasterPixels<uint8_t>(PIXEL_T *,PIXEL_T,uint32_t,int32_t)' being compiled
with
[
PIXEL_T=uint8_t
]
D:\Projects\thorvg\src\lib\sw_engine\tvgSwRasterC.h(29): warning C4302: 'type cast': truncation from 'PIXEL_T *' to 'long'
with
[
PIXEL_T=uint8_t
]
D:\Projects\thorvg\src\lib\sw_engine\tvgSwRasterC.h(29): warning C4311: 'type cast': pointer truncation from 'PIXEL_T *' to 'long'
with
[
PIXEL_T=uint32_t
]
../src/lib/sw_engine/tvgSwRaster.cpp(1911): note: see reference to function template instantiation 'void cRasterPixels<uint32_t>(PIXEL_T *,PIXEL_T,uint32_t,int32_t)' being compiled
with
[
PIXEL_T=uint32_t
]
D:\Projects\thorvg\src\lib\sw_engine\tvgSwRasterC.h(29): warning C4302: 'type cast': truncation from 'PIXEL_T *' to 'long'
with
[
PIXEL_T=uint32_t
]
An issue occurred in the 64-bit accelerated raster version,
involving 8 bytes of misaligned memory access.
This was detected by the memory sanitizer and has now been fixed.
At the construction stage, some stroke points can be skipped
if the distance between the points is too narrow.
Previously, this was assumed to be an error case,
but it's clearly intended to remove unnecessary points introduced in a small area of drawing.
This sometimes leads to a flickering issue when super small-sized vector images are drawn.
Now, it's fixed.
This class serves as the base for Animation.
The main purpose of its APIs is to control the animation frames.
Its example will be provided in the upcoming commits.
@APIs:
Result Animation::frame(uint32_t no) noexcept;
Picture* Animation::picture() const noexcept;
uint32_t Animation::curFrame() const noexcept;
uint32_t Animation::totalFrame() const noexcept;
float Animation::duration() const noexcept;
static std::unique_ptr<Animation> Animation::gen() noexcept;
@Issue: https://github.com/thorvg/thorvg/pull/1450
[29/73] Compiling C++ object src/libthorvg.a.p/lib_sw_engine_tvgSwStroke.cpp.obj
../src/lib/sw_engine/tvgSwStroke.cpp(258): warning C4244: 'argument': conversion from 'float' to 'int64_t', possible loss of data
[32/73] Compiling C++ object src/libthorvg.a.p/lib_sw_engine_tvgSwRaster.cpp.obj
../src/lib/sw_engine/tvgSwRaster.cpp(259): warning C4244: 'initializing': conversion from 'float' to 'uint32_t', possible loss of data
../src/lib/sw_engine/tvgSwRaster.cpp(260): warning C4244: 'initializing': conversion from 'float' to 'uint32_t', possible loss of data
Renamed internal methods; the name 'RGBA' is sometimes confusing
because the channel composition does not accurately reflect it.
Therefore, it should be removed or replaced with 'Pixel'.
Considering the fundamental scenario,
the masking feature would likely be used less frequently.
We sacrifice a small amount of performance
by substituting the multiple implementations with blender calls.
However, this trade-off can result in a reduction in binary size.
Bin size: 212089 -> 205907 (-6kb)
The blending feature allows user to combine colors to create visually appealing effects,
including transparency, lighting, shading, and color mixing, among others.
Its process involves the combination of colors or images from the source paint object
with the destination (the lower layer image) using blending operations.
The blending operation is determined by the chosen @p BlendMethod,
which specifies how the colors or images are combined.
@APIs:
- enum class BlendMethod::Normal, Add, Screen, Multiply, Overlay, Lighten, Difference, Exclusion, SrcOver, Darken, Lighten, ColorDodge, ColorBurn
- BlendMethod Paint::blend() const noexcept;
- Result Paint::blend(BlendMethod method) const noexcept;
@Issue: https://github.com/thorvg/thorvg/issues/307
Co-authored-by: Peter Vullings <peter@projectitis.com>
Co-authored-by: Hermet Park <hermetpark@lottiefiles.com>