synched with trunk at revision 36569
[blender.git] / extern / recastnavigation / Recast / Include / RecastLog.h
1 //
2 // Copyright (c) 2009 Mikko Mononen memon@inside.org
3 //
4 // This software is provided 'as-is', without any express or implied
5 // warranty.  In no event will the authors be held liable for any damages
6 // arising from the use of this software.
7 // Permission is granted to anyone to use this software for any purpose,
8 // including commercial applications, and to alter it and redistribute it
9 // freely, subject to the following restrictions:
10 // 1. The origin of this software must not be misrepresented; you must not
11 //    claim that you wrote the original software. If you use this software
12 //    in a product, an acknowledgment in the product documentation would be
13 //    appreciated but is not required.
14 // 2. Altered source versions must be plainly marked as such, and must not be
15 //    misrepresented as being the original software.
16 // 3. This notice may not be removed or altered from any source distribution.
17 //
18
19 #ifndef RECAST_LOG_H
20 #define RECAST_LOG_H
21
22 enum rcLogCategory
23 {
24         RC_LOG_PROGRESS = 1,
25         RC_LOG_WARNING,
26         RC_LOG_ERROR,
27 };
28
29 class rcLog
30 {
31 public:
32         rcLog();
33         ~rcLog();
34         
35         void log(rcLogCategory category, const char* format, ...);
36         inline void clear() { m_messageCount = 0; m_textPoolSize = 0; }
37         inline int getMessageCount() const { return m_messageCount; }
38         inline char getMessageType(int i) const { return *m_messages[i]; }
39         inline const char* getMessageText(int i) const { return m_messages[i]+1; }
40
41 private:
42         static const int MAX_MESSAGES = 1000;
43         const char* m_messages[MAX_MESSAGES];
44         int m_messageCount;
45         static const int TEXT_POOL_SIZE = 8000;
46         char m_textPool[TEXT_POOL_SIZE];
47         int m_textPoolSize;
48 };
49
50 struct rcBuildTimes
51 {
52         int rasterizeTriangles;
53         int buildCompact;
54         int buildContours;
55         int buildContoursTrace;
56         int buildContoursSimplify;
57         int filterBorder;
58         int filterWalkable;
59         int filterMarkReachable;
60         int buildPolymesh;
61         int buildDistanceField;
62         int buildDistanceFieldDist;
63         int buildDistanceFieldBlur;
64         int buildRegions;
65         int buildRegionsReg;
66         int buildRegionsExp;
67         int buildRegionsFlood;
68         int buildRegionsFilter;
69         int buildDetailMesh;
70         int mergePolyMesh;
71         int mergePolyMeshDetail;
72 };
73
74 void rcSetLog(rcLog* log);
75 rcLog* rcGetLog();
76
77 void rcSetBuildTimes(rcBuildTimes* btimes);
78 rcBuildTimes* rcGetBuildTimes();
79
80 #endif // RECAST_LOG_H