1 #pragma once
2 
3 #ifndef TVER_INCLUDED
4 #define TVER_INCLUDED
5 
6 namespace TVER {
7 
8 class ToonzVersion {
9 public:
10   std::string getAppName(void);
11   float getAppVersion(void);
12   float getAppRevision(void);
13   std::string getAppNote(void);
14   bool hasAppNote(void);
15   std::string getAppVersionString(void);
16   std::string getAppRevisionString(void);
17   std::string getAppVersionInfo(std::string msg);
18 
19 private:
20   const char *applicationName     = "OpenToonz";
21   const float applicationVersion  = 1.5;
22   const float applicationRevision = 0;
23   const char *applicationNote     = "";
24 };
25 
getAppName(void)26 std::string ToonzVersion::getAppName(void) {
27   std::string appname = applicationName;
28   return appname;
29 }
getAppVersion(void)30 float ToonzVersion::getAppVersion(void) {
31   float appver = applicationVersion;
32   return appver;
33 }
getAppRevision(void)34 float ToonzVersion::getAppRevision(void) {
35   float apprev = applicationRevision;
36   return apprev;
37 }
getAppNote(void)38 std::string ToonzVersion::getAppNote(void) {
39   std::string appnote = applicationNote;
40   return appnote;
41 }
hasAppNote(void)42 bool ToonzVersion::hasAppNote(void) { return *applicationNote != 0; }
getAppVersionString(void)43 std::string ToonzVersion::getAppVersionString(void) {
44   char buffer[50];
45   snprintf(buffer, sizeof(buffer), "%.1f", applicationVersion);
46   std::string appver = std::string(buffer);
47   return appver;
48 }
getAppRevisionString(void)49 std::string ToonzVersion::getAppRevisionString(void) {
50   char buffer[50];
51   snprintf(buffer, sizeof(buffer), "%g", applicationRevision);
52   std::string apprev = std::string(buffer);
53   return apprev;
54 }
getAppVersionInfo(std::string msg)55 std::string ToonzVersion::getAppVersionInfo(std::string msg) {
56   std::string appinfo = std::string(applicationName);
57   appinfo += " " + msg + " v";
58   appinfo += getAppVersionString();
59   appinfo += "." + getAppRevisionString();
60   if (hasAppNote()) appinfo += " " + std::string(applicationNote);
61   return appinfo;
62 }
63 
64 }  // namespace TVER
65 
66 #endif  // TVER_INCLUDED
67