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 UI_ANIM_DEBUG
33 #define VE_DEBUG_MODULE
35 extern "C" _OSP_EXPORT_ void DumpAllEvas(void);
36 extern "C" _OSP_EXPORT_ void DumpVeTree(void);
37 extern "C" _OSP_EXPORT_ void DumpEvasTree(void);
38 extern "C" _OSP_EXPORT_ void DumpVeLayout(void);
40 namespace Tizen { namespace Ui { namespace Animations
43 #ifdef VE_DEBUG_MODULE
49 _ElapsedTime(const char* tag = null)
55 gettimeofday(&tv, null);
56 start_time = (long long)tv.tv_sec * 1000000LL + (long long)tv.tv_usec / 1LL;
66 gettimeofday(&tv, null);
67 end_time = (long long)tv.tv_sec * 1000000LL + (long long)tv.tv_usec / 1LL;
71 snprintf(logs[count++], 256, "%*s -->[%s]=%lld us\n", depth * 3, " ", tagName, end_time - start_time);
75 for (int i = 0; i < count; i++)
76 printf("%s", logs[i]);
85 static char logs[500][256];
94 #define VeLog(UID, ...) \
95 SysLogInternal(UID, 0, 0, __VA_ARGS__);
99 if (_VeDebug::IsDebugEnabled()) \
101 _VeDebug::DumpVisualElement(this, __func__, __LINE__, __VA_ARGS__); \
105 #define VELOGEX(_ELEMENT_, ...) \
108 if (_VeDebug::IsDebugEnabled()) \
110 _VeDebug::DumpVisualElement(_ELEMENT_, __func__, __LINE__, __VA_ARGS__); \
114 #define VELOGEX_NOFUNCTION(_ELEMENT_, ...) \
117 if (_VeDebug::IsDebugEnabled()) \
119 _VeDebug::DumpVisualElement(_ELEMENT_, null, 0, __VA_ARGS__); \
123 #define VEDUMPTREE(_ELEMENT_, _INDENT_) \
126 if (_VeDebug::IsDebugEnabled()) \
128 _VeDebug::DumpVeTree(_ELEMENT_, _INDENT_); \
132 #define VELOGRECTTAG "[%.1f:%.1f ~ %.1f:%.1f]"
133 #define VELOGRECT(r) (r).x, (r).y, (r).GetBottomRight().x, (r).GetBottomRight().y
135 class _VisualElementImpl;
140 static void DumpVisualElement(_VisualElementImpl* pElement, const char* func, int line, const char* fmt, ...);
141 static void PrintVeTree(_VisualElementImpl* pElement = 0, int depth = 0, unsigned int remainedChild = 0);
142 static void DumpVeTree(_VisualElementImpl* pElement = 0, int indent = 0);
143 static void DumpVeImage(_VisualElementImpl* pElement = 0, const char* pathPrefix = 0);
144 static void DumpAllVeImages(_VisualElementImpl* pElement = 0, const char* pathPrefix = 0);
145 static void ReflushAll(_VisualElementImpl* pElement, int depth = 0);
146 static void SetDebugEnabled(bool enable);
147 static bool IsDebugEnabled(void);
149 static void DumpEvasTree(_VisualElementImpl* pElement, int indent);
150 static void DumpAllEvas(Evas* pEvas);
151 static void DumpAllEvasImages(Evas* pEvas);
154 static void DumpVisualElementLayout(_VisualElementImpl* pElement, FILE* pFile);
155 static void DumpVeLayout(_VisualElementImpl* pElement, int indent, FILE* pFile);
157 static void DumpEvasObjectForGraphI(FILE* pFile, Evas_Object* pEvasObject, int depth, int pos);
158 static void DumpEvasTreeGraphI(FILE* pFile, Evas_Object* pObject, int depth, int pos);
159 static void DumpVeObjectForGraphI(FILE* pFile, _VisualElementImpl* pVisualElementImpl, int depth, int pos);
160 static void DumpVeTreeGraphI(FILE* pFile, _VisualElementImpl* pVisualElementImpl, int depth, int pos);
162 static void DumpEvasTreeGraph(const char* pFilePath, VisualElement* pVisualElement);
168 _VeDebug(const _VeDebug& rhs);
171 _VeDebug& operator =(const _VeDebug& rhs);
174 static void DumpEvasTreeI(Evas_Object* pParent, int indent);
177 static bool __veDebugEnabled;
182 #define VELOGEX(_Element_, ...)
183 #define VELOGEX_NOFUNCTION(_ELEMENT_, ...)
184 #define VEDUMPTREE(_ELEMENT_, _INDENT_)
189 }}} // Tizen::Ui::Animations
191 #endif //_FUI_ANIM_INTERNAL_DEBUG_H_