2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Flora License, Version 1.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://floralicense.org/license/
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 namespace Tizen { namespace Ui { namespace Animations
37 #ifdef VE_DEBUG_MODULE
43 _ElapsedTime(const char* tag = null)
49 gettimeofday(&tv, null);
50 start_time = (long long)tv.tv_sec * 1000000LL + (long long)tv.tv_usec / 1LL;
60 gettimeofday(&tv, null);
61 end_time = (long long)tv.tv_sec * 1000000LL + (long long)tv.tv_usec / 1LL;
65 snprintf(logs[count++], 256, "%*s -->[%s]=%lld us\n", depth * 3, " ", tagName, end_time - start_time);
69 for (int i = 0; i < count; i++)
70 printf("%s", logs[i]);
79 static char logs[500][256];
88 #define VeLog(UID, ...) \
89 SysLogInternal(UID, 0, 0, __VA_ARGS__);
93 if (_VeDebug::IsDebugEnabled()) \
95 _VeDebug::DumpVisualElement(this, __func__, __LINE__, __VA_ARGS__); \
99 #define VELOGEX(_ELEMENT_, ...) \
102 if (_VeDebug::IsDebugEnabled()) \
104 _VeDebug::DumpVisualElement(_ELEMENT_, __func__, __LINE__, __VA_ARGS__); \
108 #define VELOGEX_NOFUNCTION(_ELEMENT_, ...) \
111 if (_VeDebug::IsDebugEnabled()) \
113 _VeDebug::DumpVisualElement(_ELEMENT_, null, 0, __VA_ARGS__); \
117 #define VEDUMPTREE(_ELEMENT_, _INDENT_) \
120 if (_VeDebug::IsDebugEnabled()) \
122 _VeDebug::DumpVeTree(_ELEMENT_, _INDENT_); \
126 #define VELOGRECTTAG "[%.1f:%.1f ~ %.1f:%.1f]"
127 #define VELOGRECT(r) (r).x, (r).y, (r).GetBottomRight().x, (r).GetBottomRight().y
129 class _VisualElementImpl;
134 static void DumpVisualElement(_VisualElementImpl* pElement, const char* func, int line, const char* fmt, ...);
135 static void PrintVeTree(_VisualElementImpl* pElement = 0, int depth = 0, unsigned int remainedChild = 0);
136 static void DumpVeTree(_VisualElementImpl* pElement = 0, int indent = 0);
137 static void DumpVeImage(_VisualElementImpl* pElement = 0, const char* pathPrefix = 0);
138 static void DumpAllVeImages(_VisualElementImpl* pElement = 0, const char* pathPrefix = 0);
139 static void ReflushAll(_VisualElementImpl* pElement, int depth = 0);
140 static void SetDebugEnabled(bool enable);
141 static bool IsDebugEnabled(void);
143 static void DumpEvasTree(_VisualElementImpl* pElement, int indent);
144 static void DumpAllEvas(void);
146 static void DumpEvasObjectForGraphI(FILE* pFile, Evas_Object* pEvasObject, int depth, int pos);
147 static void DumpEvasTreeGraphI(FILE* pFile, Evas_Object* pObject, int depth, int pos);
148 static void DumpVeObjectForGraphI(FILE* pFile, _VisualElementImpl* pVisualElementImpl, int depth, int pos);
149 static void DumpVeTreeGraphI(FILE* pFile, _VisualElementImpl* pVisualElementImpl, int depth, int pos);
151 static void DumpEvasTreeGraph(const char* pFilePath, VisualElement* pVisualElement);
156 _VeDebug(const _VeDebug& rhs);
159 _VeDebug& operator =(const _VeDebug& rhs);
162 static void DumpEvasTreeI(Evas_Object* pParent, int indent);
165 static bool __veDebugEnabled;
170 #define VELOGEX(_Element_, ...)
171 #define VELOGEX_NOFUNCTION(_ELEMENT_, ...)
172 #define VEDUMPTREE(_ELEMENT_, _INDENT_)
177 }}} // Tizen::Ui::Animations
179 #endif //_FUI_ANIM_INTERNAL_DEBUG_H_