mirror of
https://github.com/thorvg/thorvg.git
synced 2025-06-08 05:33:36 +00:00
common initializer: replace engine class with intializer
This initializer will take over the global environments of tvg engines. Change-Id: I7b99973dafaea57ddd3134800bd442ef4dc319ae
This commit is contained in:
parent
fb208defed
commit
f627679882
22 changed files with 102 additions and 96 deletions
|
@ -69,7 +69,7 @@ enum class TVG_EXPORT PathCommand { Close = 0, MoveTo, LineTo, CubicTo };
|
|||
enum class TVG_EXPORT StrokeCap { Square = 0, Round, Butt };
|
||||
enum class TVG_EXPORT StrokeJoin { Bevel = 0, Round, Miter };
|
||||
enum class TVG_EXPORT FillSpread { Pad = 0, Reflect, Repeat };
|
||||
|
||||
enum class TVG_EXPORT CanvasEngine { Sw = 0, Gl };
|
||||
|
||||
struct Point
|
||||
{
|
||||
|
@ -130,6 +130,34 @@ public:
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
* @class Canvas
|
||||
*
|
||||
* @ingroup TizenVG
|
||||
*
|
||||
* @brief description...
|
||||
*
|
||||
*/
|
||||
class TVG_EXPORT Canvas
|
||||
{
|
||||
public:
|
||||
Canvas(RenderMethod*);
|
||||
virtual ~Canvas();
|
||||
|
||||
Result reserve(uint32_t n) noexcept;
|
||||
virtual Result push(std::unique_ptr<Paint> paint) noexcept;
|
||||
virtual Result clear() noexcept;
|
||||
virtual Result update() noexcept;
|
||||
virtual Result update(Paint* paint) noexcept;
|
||||
virtual Result draw(bool async = true) noexcept;
|
||||
virtual Result sync() = 0;
|
||||
|
||||
_TVG_DECLARE_ACCESSOR(Scene);
|
||||
_TVG_DECLARE_PRIVATE(Canvas);
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @class LinearGradient
|
||||
*
|
||||
|
@ -174,32 +202,6 @@ public:
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
* @class Canvas
|
||||
*
|
||||
* @ingroup TizenVG
|
||||
*
|
||||
* @brief description...
|
||||
*
|
||||
*/
|
||||
class TVG_EXPORT Canvas
|
||||
{
|
||||
public:
|
||||
Canvas(RenderMethod*);
|
||||
virtual ~Canvas();
|
||||
|
||||
Result reserve(uint32_t n) noexcept;
|
||||
virtual Result push(std::unique_ptr<Paint> paint) noexcept;
|
||||
virtual Result clear() noexcept;
|
||||
virtual Result update() noexcept;
|
||||
virtual Result update(Paint* paint) noexcept;
|
||||
virtual Result draw(bool async = true) noexcept;
|
||||
virtual Result sync() = 0;
|
||||
|
||||
_TVG_DECLARE_ACCESSOR(Scene);
|
||||
_TVG_DECLARE_PRIVATE(Canvas);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @class Shape
|
||||
|
@ -277,7 +279,7 @@ class TVG_EXPORT Scene final : public Paint
|
|||
public:
|
||||
~Scene();
|
||||
|
||||
Result push(std::unique_ptr<Paint> shape) noexcept;
|
||||
Result push(std::unique_ptr<Paint> paint) noexcept;
|
||||
Result reserve(uint32_t size) noexcept;
|
||||
|
||||
Result rotate(float degree) noexcept override;
|
||||
|
@ -347,9 +349,10 @@ public:
|
|||
* @brief description...
|
||||
*
|
||||
*/
|
||||
class TVG_EXPORT Engine final
|
||||
class TVG_EXPORT Initializer final
|
||||
{
|
||||
public:
|
||||
|
||||
/**
|
||||
* @brief ...
|
||||
*
|
||||
|
@ -361,10 +364,10 @@ public:
|
|||
*
|
||||
* @see ...
|
||||
*/
|
||||
static Result init() noexcept;
|
||||
static Result term() noexcept;
|
||||
static Result init(CanvasEngine engine) noexcept;
|
||||
static Result term(CanvasEngine engine) noexcept;
|
||||
|
||||
_TVG_DISABLE_CTOR(Engine);
|
||||
_TVG_DISABLE_CTOR(Initializer);
|
||||
};
|
||||
|
||||
} //namespace
|
||||
|
|
|
@ -9,9 +9,9 @@ source_file = [
|
|||
'tvgShapePath.h',
|
||||
'tvgShapeImpl.h',
|
||||
'tvgCanvas.cpp',
|
||||
'tvgEngine.cpp',
|
||||
'tvgFill.cpp',
|
||||
'tvgGlCanvas.cpp',
|
||||
'tvgInitializer.cpp',
|
||||
'tvgLinearGradient.cpp',
|
||||
'tvgRadialGradient.cpp',
|
||||
'tvgScene.cpp',
|
||||
|
|
|
@ -14,8 +14,8 @@
|
|||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
#ifndef _TVG_ENGINE_CPP_
|
||||
#define _TVG_ENGINE_CPP_
|
||||
#ifndef _TVG_INITIALIZER_CPP_
|
||||
#define _TVG_INITIALIZER_CPP_
|
||||
|
||||
#include "tvgCommon.h"
|
||||
#include "tvgSwRenderer.h"
|
||||
|
@ -24,39 +24,42 @@
|
|||
/************************************************************************/
|
||||
/* Internal Class Implementation */
|
||||
/************************************************************************/
|
||||
static bool initialized = false;
|
||||
|
||||
|
||||
|
||||
/************************************************************************/
|
||||
/* External Class Implementation */
|
||||
/************************************************************************/
|
||||
|
||||
Result Engine::init() noexcept
|
||||
Result Initializer::init(CanvasEngine engine) noexcept
|
||||
{
|
||||
if (initialized) return Result::InsufficientCondition;
|
||||
if (engine == CanvasEngine::Sw) {
|
||||
if (!SwRenderer::init()) return Result::InsufficientCondition;
|
||||
} else if (engine == CanvasEngine::Gl) {
|
||||
if (!GlRenderer::init()) return Result::InsufficientCondition;
|
||||
} else {
|
||||
return Result::InvalidArguments;
|
||||
}
|
||||
|
||||
//TODO: Initialize Raster engines by configuration.
|
||||
SwRenderer::init();
|
||||
GlRenderer::init();
|
||||
|
||||
initialized = true;
|
||||
//TODO: check modules then enable them
|
||||
//1. TVG
|
||||
//2. SVG
|
||||
|
||||
return Result::Success;
|
||||
}
|
||||
|
||||
|
||||
Result Engine::term() noexcept
|
||||
Result Initializer::term(CanvasEngine engine) noexcept
|
||||
{
|
||||
if (!initialized) return Result::InsufficientCondition;
|
||||
//TODO: deinitialize modules
|
||||
|
||||
//TODO: Terminate only allowed engines.
|
||||
SwRenderer::term();
|
||||
GlRenderer::term();
|
||||
|
||||
initialized = false;
|
||||
if (engine == CanvasEngine::Sw) {
|
||||
if (!SwRenderer::term()) return Result::InsufficientCondition;
|
||||
} else if (engine == CanvasEngine::Gl) {
|
||||
if (!GlRenderer::term()) return Result::InsufficientCondition;
|
||||
} else {
|
||||
return Result::InvalidArguments;
|
||||
}
|
||||
|
||||
return Result::Success;
|
||||
}
|
||||
|
||||
#endif /* _TVG_ENGINE_CPP_ */
|
||||
#endif /* _TVG_INITIALIZER_CPP_ */
|
|
@ -136,28 +136,28 @@ struct RenderInitializer
|
|||
uint32_t refCnt = 0;
|
||||
bool initialized = false;
|
||||
|
||||
static int init(RenderInitializer& renderInit, RenderMethod* engine)
|
||||
static bool init(RenderInitializer& renderInit, RenderMethod* engine)
|
||||
{
|
||||
assert(engine);
|
||||
if (renderInit.pInst || renderInit.refCnt > 0) return -1;
|
||||
if (renderInit.pInst || renderInit.refCnt > 0) return false;
|
||||
renderInit.pInst = engine;
|
||||
renderInit.refCnt = 0;
|
||||
renderInit.initialized = true;
|
||||
return 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
static int term(RenderInitializer& renderInit)
|
||||
static bool term(RenderInitializer& renderInit)
|
||||
{
|
||||
if (!renderInit.pInst || !renderInit.initialized) return -1;
|
||||
if (!renderInit.pInst || !renderInit.initialized) return false;
|
||||
|
||||
renderInit.initialized = false;
|
||||
|
||||
//Still it's refered....
|
||||
if (renderInit.refCnt > 0) return 0;
|
||||
if (renderInit.refCnt > 0) return true;
|
||||
delete(renderInit.pInst);
|
||||
renderInit.pInst = nullptr;
|
||||
|
||||
return 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
static uint32_t unref(RenderInitializer& renderInit)
|
||||
|
|
|
@ -11,7 +11,7 @@ static uint32_t buffer[WIDTH * HEIGHT];
|
|||
void tvgtest()
|
||||
{
|
||||
//Initialize TizenVG Engine
|
||||
tvg::Engine::init();
|
||||
tvg::Initializer::init(tvg::CanvasEngine::Sw);
|
||||
|
||||
//Create a Canvas
|
||||
auto canvas = tvg::SwCanvas::gen();
|
||||
|
@ -63,7 +63,7 @@ void tvgtest()
|
|||
canvas->sync();
|
||||
|
||||
//Terminate TizenVG Engine
|
||||
tvg::Engine::term();
|
||||
tvg::Initializer::term(tvg::CanvasEngine::Sw);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -11,7 +11,7 @@ static uint32_t buffer[WIDTH * HEIGHT];
|
|||
void tvgtest()
|
||||
{
|
||||
//Initialize TizenVG Engine
|
||||
tvg::Engine::init();
|
||||
tvg::Initializer::init(tvg::CanvasEngine::Sw);
|
||||
|
||||
//Create a Canvas
|
||||
auto canvas = tvg::SwCanvas::gen();
|
||||
|
@ -53,7 +53,7 @@ void tvgtest()
|
|||
canvas->sync();
|
||||
|
||||
//Terminate TizenVG Engine
|
||||
tvg::Engine::term();
|
||||
tvg::Initializer::term(tvg::CanvasEngine::Sw);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -10,7 +10,7 @@ static uint32_t buffer[WIDTH * HEIGHT];
|
|||
int main(int argc, char **argv)
|
||||
{
|
||||
//Initialize TizenVG Engine
|
||||
tvg::Engine::init();
|
||||
tvg::Initializer::init(tvg::CanvasEngine::Sw);
|
||||
|
||||
//Create a Composition Source Canvas
|
||||
auto canvas1 = tvg::SwCanvas::gen(buffer, WIDTH, HEIGHT);
|
||||
|
@ -31,5 +31,5 @@ int main(int argc, char **argv)
|
|||
canvas2->sync();
|
||||
|
||||
//Terminate TizenVG Engine
|
||||
tvg::Engine::term();
|
||||
tvg::Initializer::term(tvg::CanvasEngine::Sw);
|
||||
}
|
||||
|
|
|
@ -69,7 +69,7 @@ win_del(void *data, Evas_Object *o, void *ev)
|
|||
int main(int argc, char **argv)
|
||||
{
|
||||
//Initialize TizenVG Engine
|
||||
tvg::Engine::init();
|
||||
tvg::Initializer::init(tvg::CanvasEngine::Sw);
|
||||
|
||||
tvgtest();
|
||||
|
||||
|
@ -100,5 +100,5 @@ int main(int argc, char **argv)
|
|||
elm_shutdown();
|
||||
|
||||
//Terminate TizenVG Engine
|
||||
tvg::Engine::term();
|
||||
tvg::Initializer::term(tvg::CanvasEngine::Sw);
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@ static uint32_t buffer[WIDTH * HEIGHT];
|
|||
int main(int argc, char **argv)
|
||||
{
|
||||
//Initialize TizenVG Engine
|
||||
tvg::Engine::init();
|
||||
tvg::Initializer::init(tvg::CanvasEngine::Sw);
|
||||
|
||||
//Create a Canvas
|
||||
auto canvas = tvg::SwCanvas::gen(buffer, WIDTH, HEIGHT);
|
||||
|
@ -48,5 +48,5 @@ int main(int argc, char **argv)
|
|||
canvas->sync();
|
||||
|
||||
//Terminate TizenVG Engine
|
||||
tvg::Engine::term();
|
||||
tvg::Initializer::term(tvg::CanvasEngine::Sw);
|
||||
}
|
||||
|
|
|
@ -135,7 +135,7 @@ win_del(void *data, Evas_Object *o, void *ev)
|
|||
int main(int argc, char **argv)
|
||||
{
|
||||
//Initialize TizenVG Engine
|
||||
tvg::Engine::init();
|
||||
tvg::Initializer::init(tvg::CanvasEngine::Sw);
|
||||
|
||||
tvgtest();
|
||||
|
||||
|
@ -166,5 +166,5 @@ int main(int argc, char **argv)
|
|||
elm_shutdown();
|
||||
|
||||
//Terminate TizenVG Engine
|
||||
tvg::Engine::term();
|
||||
tvg::Initializer::term(tvg::CanvasEngine::Sw);
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ static uint32_t buffer[WIDTH * HEIGHT];
|
|||
void tvgtest()
|
||||
{
|
||||
//Initialize TizenVG Engine
|
||||
tvg::Engine::init();
|
||||
tvg::Initializer::init(tvg::CanvasEngine::Sw);
|
||||
|
||||
//Create a Canvas
|
||||
auto canvas = tvg::SwCanvas::gen();
|
||||
|
@ -81,7 +81,7 @@ void tvgtest()
|
|||
canvas->sync();
|
||||
|
||||
//Terminate TizenVG Engine
|
||||
tvg::Engine::term();
|
||||
tvg::Initializer::term(tvg::CanvasEngine::Sw);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -11,7 +11,7 @@ static uint32_t buffer[WIDTH * HEIGHT];
|
|||
void tvgtest()
|
||||
{
|
||||
//Initialize TizenVG Engine
|
||||
tvg::Engine::init();
|
||||
tvg::Initializer::init(tvg::CanvasEngine::Sw);
|
||||
|
||||
//Create a Canvas
|
||||
auto canvas = tvg::SwCanvas::gen();
|
||||
|
@ -41,7 +41,7 @@ void tvgtest()
|
|||
canvas->sync();
|
||||
|
||||
//Terminate TizenVG Engine
|
||||
tvg::Engine::term();
|
||||
tvg::Initializer::term(tvg::CanvasEngine::Sw);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -11,7 +11,7 @@ static uint32_t buffer[WIDTH * HEIGHT];
|
|||
void tvgtest()
|
||||
{
|
||||
//Initialize TizenVG Engine
|
||||
tvg::Engine::init();
|
||||
tvg::Initializer::init(tvg::CanvasEngine::Sw);
|
||||
|
||||
//Create a Canvas
|
||||
auto canvas = tvg::SwCanvas::gen();
|
||||
|
@ -56,7 +56,7 @@ void tvgtest()
|
|||
canvas->sync();
|
||||
|
||||
//Terminate TizenVG Engine
|
||||
tvg::Engine::term();
|
||||
tvg::Initializer::term(tvg::CanvasEngine::Sw);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -11,7 +11,7 @@ static uint32_t buffer[WIDTH * HEIGHT];
|
|||
void tvgtest()
|
||||
{
|
||||
//Initialize TizenVG Engine
|
||||
tvg::Engine::init();
|
||||
tvg::Initializer::init(tvg::CanvasEngine::Sw);
|
||||
|
||||
//Create a Canvas
|
||||
auto canvas = tvg::SwCanvas::gen();
|
||||
|
@ -96,7 +96,7 @@ void tvgtest()
|
|||
canvas->sync();
|
||||
|
||||
//Terminate TizenVG Engine
|
||||
tvg::Engine::term();
|
||||
tvg::Initializer::term(tvg::CanvasEngine::Sw);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -11,7 +11,7 @@ static uint32_t buffer[WIDTH * HEIGHT];
|
|||
void tvgtest()
|
||||
{
|
||||
//Initialize TizenVG Engine
|
||||
tvg::Engine::init();
|
||||
tvg::Initializer::init(tvg::CanvasEngine::Sw);
|
||||
|
||||
//Create a Canvas
|
||||
auto canvas = tvg::SwCanvas::gen();
|
||||
|
@ -81,7 +81,7 @@ void tvgtest()
|
|||
canvas->sync();
|
||||
|
||||
//Terminate TizenVG Engine
|
||||
tvg::Engine::term();
|
||||
tvg::Initializer::term(tvg::CanvasEngine::Sw);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -11,7 +11,7 @@ static uint32_t buffer[WIDTH * HEIGHT];
|
|||
void tvgtest()
|
||||
{
|
||||
//Initialize TizenVG Engine
|
||||
tvg::Engine::init();
|
||||
tvg::Initializer::init(tvg::CanvasEngine::Sw);
|
||||
|
||||
//Create a Canvas
|
||||
auto canvas = tvg::SwCanvas::gen();
|
||||
|
@ -87,7 +87,7 @@ void tvgtest()
|
|||
canvas->sync();
|
||||
|
||||
//Terminate TizenVG Engine
|
||||
tvg::Engine::term();
|
||||
tvg::Initializer::term(tvg::CanvasEngine::Sw);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -129,7 +129,7 @@ win_del(void *data, Evas_Object *o, void *ev)
|
|||
int main(int argc, char **argv)
|
||||
{
|
||||
//Initialize TizenVG Engine
|
||||
tvg::Engine::init();
|
||||
tvg::Initializer::init(tvg::CanvasEngine::Sw);
|
||||
|
||||
tvgtest();
|
||||
|
||||
|
@ -159,5 +159,5 @@ int main(int argc, char **argv)
|
|||
elm_shutdown();
|
||||
|
||||
//Terminate TizenVG Engine
|
||||
tvg::Engine::term();
|
||||
tvg::Initializer::term(tvg::CanvasEngine::Sw);
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ static uint32_t buffer[WIDTH * HEIGHT];
|
|||
void tvgtest()
|
||||
{
|
||||
//Initialize TizenVG Engine
|
||||
tvg::Engine::init();
|
||||
tvg::Initializer::init(tvg::CanvasEngine::Sw);
|
||||
|
||||
//Create a Canvas
|
||||
auto canvas = tvg::SwCanvas::gen();
|
||||
|
@ -35,7 +35,7 @@ void tvgtest()
|
|||
canvas->sync();
|
||||
|
||||
//Terminate TizenVG Engine
|
||||
tvg::Engine::term();
|
||||
tvg::Initializer::term(tvg::CanvasEngine::Sw);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -12,7 +12,7 @@ static uint32_t buffer[WIDTH * HEIGHT];
|
|||
void tvgtest()
|
||||
{
|
||||
//Initialize TizenVG Engine
|
||||
tvg::Engine::init();
|
||||
tvg::Initializer::init(tvg::CanvasEngine::Sw);
|
||||
|
||||
//Create a Canvas
|
||||
auto canvas = tvg::SwCanvas::gen();
|
||||
|
@ -80,7 +80,7 @@ void tvgtest()
|
|||
canvas->sync();
|
||||
|
||||
//Terminate TizenVG Engine
|
||||
tvg::Engine::term();
|
||||
tvg::Initializer::term(tvg::CanvasEngine::Sw);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -11,7 +11,7 @@ static uint32_t buffer[WIDTH * HEIGHT];
|
|||
void tvgtest()
|
||||
{
|
||||
//Initialize TizenVG Engine
|
||||
tvg::Engine::init();
|
||||
tvg::Initializer::init(tvg::CanvasEngine::Sw);
|
||||
|
||||
//Create a Canvas
|
||||
auto canvas = tvg::SwCanvas::gen();
|
||||
|
@ -116,7 +116,7 @@ void tvgtest()
|
|||
canvas->sync();
|
||||
|
||||
//Terminate TizenVG Engine
|
||||
tvg::Engine::term();
|
||||
tvg::Initializer::term(tvg::CanvasEngine::Sw);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -98,7 +98,7 @@ win_del(void *data, Evas_Object *o, void *ev)
|
|||
int main(int argc, char **argv)
|
||||
{
|
||||
//Initialize TizenVG Engine
|
||||
tvg::Engine::init();
|
||||
tvg::Initializer::init(tvg::CanvasEngine::Sw);
|
||||
|
||||
tvgtest();
|
||||
|
||||
|
@ -129,5 +129,5 @@ int main(int argc, char **argv)
|
|||
elm_shutdown();
|
||||
|
||||
//Terminate TizenVG Engine
|
||||
tvg::Engine::term();
|
||||
tvg::Initializer::term(tvg::CanvasEngine::Sw);
|
||||
}
|
||||
|
|
|
@ -59,7 +59,7 @@ win_del(void *data, Evas_Object *o, void *ev)
|
|||
int main(int argc, char **argv)
|
||||
{
|
||||
//Initialize TizenVG Engine
|
||||
tvg::Engine::init();
|
||||
tvg::Initializer::init(tvg::CanvasEngine::Sw);
|
||||
|
||||
tvgtest();
|
||||
|
||||
|
@ -90,5 +90,5 @@ int main(int argc, char **argv)
|
|||
elm_shutdown();
|
||||
|
||||
//Terminate TizenVG Engine
|
||||
tvg::Engine::term();
|
||||
tvg::Initializer::term(tvg::CanvasEngine::Sw);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue