2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0/
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
19 * @file FUiAnim_Debug.h
20 * @brief Header file of _VeDebug class
22 * This file contains declarations _VeDebug class.
25 #ifndef _FUI_ANIM_INTERNAL_DEBUG_H_
26 #define _FUI_ANIM_INTERNAL_DEBUG_H_
31 //#define VE_DEBUG // debug config
32 #define VE_DEBUG_MODULE
34 extern "C" _OSP_EXPORT_ void DumpAllEvas(void);
35 extern "C" _OSP_EXPORT_ void DumpVeTree(void);
36 extern "C" _OSP_EXPORT_ void DumpEvasTree(void);
37 extern "C" _OSP_EXPORT_ void DumpVeLayout(void);
39 namespace Tizen { namespace Ui { namespace Animations
42 #ifdef VE_DEBUG_MODULE
48 _ElapsedTime(const char* tag = null)
54 gettimeofday(&tv, null);
55 start_time = (long long)tv.tv_sec * 1000000LL + (long long)tv.tv_usec / 1LL;
65 gettimeofday(&tv, null);
66 end_time = (long long)tv.tv_sec * 1000000LL + (long long)tv.tv_usec / 1LL;
70 snprintf(logs[count++], 256, "%*s -->[%s]=%lld us\n", depth * 3, " ", tagName, end_time - start_time);
74 for (int i = 0; i < count; i++)
75 printf("%s", logs[i]);
84 static char logs[500][256];
93 #define VeLog(UID, ...) \
94 SysLogInternal(UID, 0, 0, __VA_ARGS__);
98 if (_VeDebug::IsDebugEnabled()) \
100 _VeDebug::DumpVisualElement(this, __func__, __LINE__, __VA_ARGS__); \
104 #define VELOGEX(_ELEMENT_, ...) \
107 if (_VeDebug::IsDebugEnabled()) \
109 _VeDebug::DumpVisualElement(_ELEMENT_, __func__, __LINE__, __VA_ARGS__); \
113 #define VELOGEX_NOFUNCTION(_ELEMENT_, ...) \
116 if (_VeDebug::IsDebugEnabled()) \
118 _VeDebug::DumpVisualElement(_ELEMENT_, null, 0, __VA_ARGS__); \
122 #define VEDUMPTREE(_ELEMENT_, _INDENT_) \
125 if (_VeDebug::IsDebugEnabled()) \
127 _VeDebug::DumpVeTree(_ELEMENT_, _INDENT_); \
131 #define VELOGRECTTAG "[%.1f:%.1f ~ %.1f:%.1f]"
132 #define VELOGRECT(r) (r).x, (r).y, (r).GetBottomRight().x, (r).GetBottomRight().y
134 class _VisualElementImpl;
139 static void DumpVisualElement(_VisualElementImpl* pElement, const char* func, int line, const char* fmt, ...);
140 static void PrintVeTree(_VisualElementImpl* pElement = 0, int depth = 0, unsigned int remainedChild = 0);
141 static void DumpVeTree(_VisualElementImpl* pElement = 0, int indent = 0);
142 static void DumpVeImage(_VisualElementImpl* pElement = 0, const char* pathPrefix = 0);
143 static void DumpAllVeImages(_VisualElementImpl* pElement = 0, const char* pathPrefix = 0);
144 static void ReflushAll(_VisualElementImpl* pElement, int depth = 0);
145 static void SetDebugEnabled(bool enable);
146 static bool IsDebugEnabled(void);
148 static void DumpEvasTree(_VisualElementImpl* pElement, int indent);
149 static void DumpAllEvas(Evas* pEvas);
150 static void DumpAllEvasImages(Evas* pEvas);
153 static void DumpVisualElementLayout(_VisualElementImpl* pElement, FILE* pFile);
154 static void DumpVeLayout(_VisualElementImpl* pElement, int indent, FILE* pFile);
156 static void DumpEvasObjectForGraphI(FILE* pFile, Evas_Object* pEvasObject, int depth, int pos);
157 static void DumpEvasTreeGraphI(FILE* pFile, Evas_Object* pObject, int depth, int pos);
158 static void DumpVeObjectForGraphI(FILE* pFile, _VisualElementImpl* pVisualElementImpl, int depth, int pos);
159 static void DumpVeTreeGraphI(FILE* pFile, _VisualElementImpl* pVisualElementImpl, int depth, int pos);
161 static void DumpEvasTreeGraph(const char* pFilePath, VisualElement* pVisualElement);
167 _VeDebug(const _VeDebug& rhs);
170 _VeDebug& operator =(const _VeDebug& rhs);
173 static void DumpEvasTreeI(Evas_Object* pParent, int indent);
176 static bool __veDebugEnabled;
181 #define VELOGEX(_Element_, ...)
182 #define VELOGEX_NOFUNCTION(_ELEMENT_, ...)
183 #define VEDUMPTREE(_ELEMENT_, _INDENT_)
188 }}} // Tizen::Ui::Animations
190 #endif //_FUI_ANIM_INTERNAL_DEBUG_H_