--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/graphicsdeviceinterface/directgdiinterface/inc/directgdipanics.h Tue Feb 02 01:47:50 2010 +0200
@@ -0,0 +1,99 @@
+// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Panic and logging functions common to both the DirectGDI adaptation layer and
+// associated modules/interfaces.
+//
+//
+
+#ifndef DIRECTGDIPANICS_H
+#define DIRECTGDIPANICS_H
+
+#include <graphics/directgdipanics.inl>
+#include <e32cmn.h>
+
+
+/**
+@publishedPartner
+@prototype
+*/
+
+#ifndef SYMBIAN_PANIC_CATEGORY
+#error SYMBIAN_PANIC_CATEGORY not defined.
+#endif
+
+/** Helper macros for the assert and panic macros.
+ */
+#define GRAPHICS_SOURCE_FILENAME(sourceFileName) _LIT(KSourceFileName, sourceFileName);
+#define GRAPHICS_ASSERT_CONDITION(condition) _LIT(KPanicCondition, condition);
+#define GRAPHICS_LOG_MESSAGE(literalMessage) _LIT(KLogMessage, # literalMessage);
+
+#define GRAPHICS_ASSERT_ALWAYS(condition, panicCode) \
+ if (!(condition)) \
+ { \
+ GRAPHICS_SOURCE_FILENAME(__FILE__); \
+ GRAPHICS_ASSERT_CONDITION(#condition); \
+ DirectGdi::PanicWithDebugLog(SYMBIAN_PANIC_CATEGORY, panicCode, KSourceFileName, __LINE__, &KPanicCondition); \
+ }
+
+#define GRAPHICS_PANIC_ALWAYS(panicCode) \
+ { \
+ GRAPHICS_SOURCE_FILENAME(__FILE__); \
+ DirectGdi::PanicWithDebugLog(SYMBIAN_PANIC_CATEGORY, panicCode, KSourceFileName, __LINE__, NULL); \
+ }
+
+#define GRAPHICS_LOG_ALWAYS(message) \
+ { \
+ GRAPHICS_SOURCE_FILENAME(__FILE__);\
+ GRAPHICS_LOG_MESSAGE(message); \
+ DirectGdi::Log(KSourceFileName, __LINE__, KLogMessage); \
+ }
+
+#define GRAPHICS_LOGD_ALWAYS(message) \
+ { \
+ GRAPHICS_SOURCE_FILENAME(__FILE__);\
+ DirectGdi::Log(KSourceFileName, __LINE__, message); \
+ }
+
+/**
+Define "debug only" macros ONLY when this is a debug build.
+*/
+#ifdef _DEBUG
+ #define GRAPHICS_LOG_DEBUG(literalMessage) GRAPHICS_LOG_ALWAYS(literalMessage) // Paste parameter literally to log
+ #define GRAPHICS_LOGD_DEBUG(TDesCRefMessage) GRAPHICS_LOGD_ALWAYS(TDesCRefMessage) // Treat message as const TDesC&
+ #define GRAPHICS_ASSERT_DEBUG(condition, panicCode) GRAPHICS_ASSERT_ALWAYS(condition, panicCode)
+ #define GRAPHICS_PANIC_DEBUG(panicCode) GRAPHICS_PANIC_ALWAYS(panicCode)
+#else
+ #define GRAPHICS_LOG_DEBUG(literalMessage)
+ #define GRAPHICS_LOGD_DEBUG(TDesCRefMessage)
+ #define GRAPHICS_ASSERT_DEBUG(condition, panicCode)
+ #define GRAPHICS_PANIC_DEBUG(panicCode)
+#endif // _DEBUG
+
+
+// Cannot enable DirectGDI calltrace unless in debug mode.
+#ifndef _DEBUG
+#undef ENABLE_DIRECTGDI_CALLTRACE
+#endif
+
+#ifdef ENABLE_DIRECTGDI_CALLTRACE
+ #define GRAPHICS_TRACE(functionName) RDebug::Print(_L(functionName));
+ #define GRAPHICS_TRACE1(functionName, p) RDebug::Printf(functionName, p);
+ #define GRAPHICS_TRACE2(functionName, p1, p2) RDebug::Printf(functionName, p1, p2);
+#else
+ #define GRAPHICS_TRACE(functionName)
+ #define GRAPHICS_TRACE1(functionName, p)
+ #define GRAPHICS_TRACE2(functionName, p1, p2)
+#endif
+
+#endif // DIRECTGDIPANICS_H