mirror of
https://github.com/thorvg/thorvg.git
synced 2025-07-25 07:39:02 +00:00
common: optimize paint data size.
packing the data fields with the appropriate size. 96 -> 24 (-9 bytes per one paint)
This commit is contained in:
parent
90c9810b97
commit
4f26a84b53
7 changed files with 11 additions and 11 deletions
|
@ -637,7 +637,7 @@ TVG_API Tvg_Result tvg_gradient_get_transform(const Tvg_Gradient* grad, Tvg_Matr
|
||||||
TVG_API Tvg_Result tvg_gradient_get_identifier(const Tvg_Gradient* grad, Tvg_Identifier* identifier)
|
TVG_API Tvg_Result tvg_gradient_get_identifier(const Tvg_Gradient* grad, Tvg_Identifier* identifier)
|
||||||
{
|
{
|
||||||
if (!grad || !identifier) return TVG_RESULT_INVALID_ARGUMENT;
|
if (!grad || !identifier) return TVG_RESULT_INVALID_ARGUMENT;
|
||||||
*identifier = static_cast<Tvg_Identifier>(reinterpret_cast<const Paint*>(grad)->identifier());
|
*identifier = static_cast<Tvg_Identifier>(reinterpret_cast<const Fill*>(grad)->identifier());
|
||||||
return TVG_RESULT_SUCCESS;
|
return TVG_RESULT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -55,7 +55,7 @@ struct Fill::Impl
|
||||||
uint32_t cnt = 0;
|
uint32_t cnt = 0;
|
||||||
FillSpread spread;
|
FillSpread spread;
|
||||||
DuplicateMethod<Fill>* dup = nullptr;
|
DuplicateMethod<Fill>* dup = nullptr;
|
||||||
uint32_t id;
|
uint8_t id;
|
||||||
|
|
||||||
~Impl()
|
~Impl()
|
||||||
{
|
{
|
||||||
|
|
|
@ -184,7 +184,7 @@ bool Paint::Impl::render(RenderMethod& renderer)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RenderData Paint::Impl::update(RenderMethod& renderer, const RenderTransform* pTransform, uint32_t opacity, Array<RenderData>& clips, uint32_t pFlag, bool clipper)
|
RenderData Paint::Impl::update(RenderMethod& renderer, const RenderTransform* pTransform, uint32_t opacity, Array<RenderData>& clips, RenderUpdateFlag pFlag, bool clipper)
|
||||||
{
|
{
|
||||||
if (renderFlag & RenderUpdateFlag::Transform) {
|
if (renderFlag & RenderUpdateFlag::Transform) {
|
||||||
if (!rTransform) return nullptr;
|
if (!rTransform) return nullptr;
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
|
|
||||||
namespace tvg
|
namespace tvg
|
||||||
{
|
{
|
||||||
enum ContextFlag {Invalid = 0, FastTrack = 1};
|
enum ContextFlag : uint8_t {Invalid = 0, FastTrack = 1};
|
||||||
|
|
||||||
struct Iterator
|
struct Iterator
|
||||||
{
|
{
|
||||||
|
@ -63,9 +63,9 @@ namespace tvg
|
||||||
StrategyMethod* smethod = nullptr;
|
StrategyMethod* smethod = nullptr;
|
||||||
RenderTransform* rTransform = nullptr;
|
RenderTransform* rTransform = nullptr;
|
||||||
Composite* compData = nullptr;
|
Composite* compData = nullptr;
|
||||||
uint32_t renderFlag = RenderUpdateFlag::None;
|
uint8_t renderFlag = RenderUpdateFlag::None;
|
||||||
uint32_t ctxFlag = ContextFlag::Invalid;
|
uint8_t ctxFlag = ContextFlag::Invalid;
|
||||||
uint32_t id;
|
uint8_t id;
|
||||||
uint8_t opacity = 255;
|
uint8_t opacity = 255;
|
||||||
|
|
||||||
~Impl()
|
~Impl()
|
||||||
|
@ -147,7 +147,7 @@ namespace tvg
|
||||||
bool scale(float factor);
|
bool scale(float factor);
|
||||||
bool translate(float x, float y);
|
bool translate(float x, float y);
|
||||||
bool bounds(float* x, float* y, float* w, float* h, bool transformed);
|
bool bounds(float* x, float* y, float* w, float* h, bool transformed);
|
||||||
RenderData update(RenderMethod& renderer, const RenderTransform* pTransform, uint32_t opacity, Array<RenderData>& clips, uint32_t pFlag, bool clipper = false);
|
RenderData update(RenderMethod& renderer, const RenderTransform* pTransform, uint32_t opacity, Array<RenderData>& clips, RenderUpdateFlag pFlag, bool clipper = false);
|
||||||
bool render(RenderMethod& renderer);
|
bool render(RenderMethod& renderer);
|
||||||
Paint* duplicate();
|
Paint* duplicate();
|
||||||
};
|
};
|
||||||
|
|
|
@ -91,7 +91,7 @@ struct Picture::Impl
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t load()
|
RenderUpdateFlag load()
|
||||||
{
|
{
|
||||||
if (loader) {
|
if (loader) {
|
||||||
if (!paint) {
|
if (!paint) {
|
||||||
|
|
|
@ -32,7 +32,7 @@ namespace tvg
|
||||||
using RenderData = void*;
|
using RenderData = void*;
|
||||||
using pixel_t = uint32_t;
|
using pixel_t = uint32_t;
|
||||||
|
|
||||||
enum RenderUpdateFlag {None = 0, Path = 1, Color = 2, Gradient = 4, Stroke = 8, Transform = 16, Image = 32, GradientStroke = 64, All = 255};
|
enum RenderUpdateFlag : uint8_t {None = 0, Path = 1, Color = 2, Gradient = 4, Stroke = 8, Transform = 16, Image = 32, GradientStroke = 64, All = 255};
|
||||||
|
|
||||||
struct Surface;
|
struct Surface;
|
||||||
|
|
||||||
|
|
|
@ -34,8 +34,8 @@ struct Shape::Impl
|
||||||
{
|
{
|
||||||
RenderShape rs; //shape data
|
RenderShape rs; //shape data
|
||||||
RenderData rd = nullptr; //engine data
|
RenderData rd = nullptr; //engine data
|
||||||
uint32_t flag = RenderUpdateFlag::None;
|
|
||||||
Shape* shape;
|
Shape* shape;
|
||||||
|
uint8_t flag = RenderUpdateFlag::None;
|
||||||
uint8_t opacity; //for composition
|
uint8_t opacity; //for composition
|
||||||
bool needComp; //composite or not
|
bool needComp; //composite or not
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue