mirror of
https://github.com/thorvg/thorvg.git
synced 2025-06-08 05:33:36 +00:00
common: version api introduced
@Issue: https://github.com/thorvg/thorvg/issues/2543
This commit is contained in:
parent
f4e1c13a79
commit
17e0bcd332
2 changed files with 35 additions and 22 deletions
13
inc/thorvg.h
13
inc/thorvg.h
|
@ -1846,6 +1846,19 @@ public:
|
||||||
*/
|
*/
|
||||||
static Result term(CanvasEngine engine = tvg::CanvasEngine::All) noexcept;
|
static Result term(CanvasEngine engine = tvg::CanvasEngine::All) noexcept;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Retrieves the version of the TVG engine.
|
||||||
|
*
|
||||||
|
* @param[out] major A major version number.
|
||||||
|
* @param[out] minor A minor version number.
|
||||||
|
* @param[out] micro A micro version number.
|
||||||
|
*
|
||||||
|
* @return The version of the engine in the format major.minor.micro, or a @p nullptr in case of an internal error.
|
||||||
|
*
|
||||||
|
* @note Experimental API
|
||||||
|
*/
|
||||||
|
static const char* version(uint32_t* major, uint32_t* minor, uint32_t* micro) noexcept;
|
||||||
|
|
||||||
_TVG_DISABLE_CTOR(Initializer);
|
_TVG_DISABLE_CTOR(Initializer);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -54,36 +54,30 @@ static constexpr bool operator &(CanvasEngine a, CanvasEngine b)
|
||||||
return int(a) & int(b);
|
return int(a) & int(b);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool _buildVersionInfo()
|
static bool _buildVersionInfo(uint32_t* major, uint32_t* minor, uint32_t* micro)
|
||||||
{
|
{
|
||||||
auto SRC = THORVG_VERSION_STRING; //ex) 0.3.99
|
auto VER = THORVG_VERSION_STRING;
|
||||||
auto p = SRC;
|
auto p = VER;
|
||||||
const char* x;
|
const char* x;
|
||||||
|
|
||||||
char major[3];
|
if (!(x = strchr(p, '.'))) return false;
|
||||||
x = strchr(p, '.');
|
uint32_t majorVal = atoi(p);
|
||||||
if (!x) return false;
|
|
||||||
memcpy(major, p, x - p);
|
|
||||||
major[x - p] = '\0';
|
|
||||||
p = x + 1;
|
p = x + 1;
|
||||||
|
|
||||||
char minor[3];
|
if (!(x = strchr(p, '.'))) return false;
|
||||||
x = strchr(p, '.');
|
uint32_t minorVal = atoi(p);
|
||||||
if (!x) return false;
|
|
||||||
memcpy(minor, p, x - p);
|
|
||||||
minor[x - p] = '\0';
|
|
||||||
p = x + 1;
|
p = x + 1;
|
||||||
|
|
||||||
char micro[3];
|
uint32_t microVal = atoi(p);
|
||||||
x = SRC + strlen(THORVG_VERSION_STRING);
|
|
||||||
memcpy(micro, p, x - p);
|
|
||||||
micro[x - p] = '\0';
|
|
||||||
|
|
||||||
char sum[7];
|
char sum[7];
|
||||||
snprintf(sum, sizeof(sum), "%s%s%s", major, minor, micro);
|
snprintf(sum, sizeof(sum), "%d%02d%02d", majorVal, minorVal, microVal);
|
||||||
|
|
||||||
_version = atoi(sum);
|
_version = atoi(sum);
|
||||||
|
|
||||||
|
if (major) *major = majorVal;
|
||||||
|
if (minor) *minor = minorVal;
|
||||||
|
if (micro) *micro = microVal;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,7 +115,7 @@ Result Initializer::init(uint32_t threads, CanvasEngine engine) noexcept
|
||||||
|
|
||||||
if (_initCnt++ > 0) return Result::Success;
|
if (_initCnt++ > 0) return Result::Success;
|
||||||
|
|
||||||
if (!_buildVersionInfo()) return Result::Unknown;
|
if (!_buildVersionInfo(nullptr, nullptr, nullptr)) return Result::Unknown;
|
||||||
|
|
||||||
if (!LoaderMgr::init()) return Result::Unknown;
|
if (!LoaderMgr::init()) return Result::Unknown;
|
||||||
|
|
||||||
|
@ -170,8 +164,14 @@ Result Initializer::term(CanvasEngine engine) noexcept
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const char* Initializer::version(uint32_t* major, uint32_t* minor, uint32_t* micro) noexcept
|
||||||
|
{
|
||||||
|
if ((!major && ! minor && !micro) || _buildVersionInfo(major, minor, micro)) return THORVG_VERSION_STRING;
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
uint16_t THORVG_VERSION_NUMBER()
|
uint16_t THORVG_VERSION_NUMBER()
|
||||||
{
|
{
|
||||||
return _version;
|
return _version;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue