uiaccelerator_plat/alf_core_toolkit_api/inc/uiacceltk/HuiPanic.h
changeset 0 15bf7259bb7c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uiaccelerator_plat/alf_core_toolkit_api/inc/uiacceltk/HuiPanic.h	Tue Feb 02 07:56:43 2010 +0200
@@ -0,0 +1,207 @@
+/*
+* Copyright (c) 2006-2007 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:   Definition of THuiPanic. Utility class for panicing (macros 
+*                and panic codes).
+*
+*/
+
+
+
+#ifndef __HUIPANIC_H__
+#define __HUIPANIC_H__
+
+
+#include <e32base.h>
+#include <uiacceltk/HuiStatic.h>
+
+
+#define HUI_PANIC(reason) \
+    { \
+    CHuiStatic::Printf(_L8("HUI_PANIC -- Panic %i in "__FILE__" on line %i"), reason, __LINE__); \
+    THuiPanic::Panic(reason); \
+    }
+
+
+/**
+ * Panic utility class.
+ */
+NONSHARABLE_CLASS(THuiPanic)
+    {
+public:
+
+    /**
+     * Panic numbers.
+     * Note: some of these match with the KErrXY -error codes in
+     * e32err.h
+     */
+    enum TReason
+        {
+        ENone = 0, ///< No error has occurred
+
+        //
+        // Panics that are caused by invalid user actions.
+        //
+
+        // Generic.
+        EDuplicateObserver = 1,
+        EObserverNotFound,
+
+        // Environment.
+        EEnvConfigNotFound = 100,
+
+        // Static.
+        EStaticInvalidRenderer = 200,
+        EStaticDataNotCreated,
+        EStaticInvalidClock,
+        EStaticCurrentRenderSurfaceNotSpecified, ///< Current render surface is not specified (e.g. MakeCurrent is not called for any render surface)
+
+        // Scheduler.
+        ESchedulerUnknownCommandType = 300,
+
+        // Roster.
+        ERosterGroupNotFound = 400, ///< Visual's control group is not in the roster
+        ERosterUnknownInputObserverType = 401,
+
+        // Skin.
+        ESkinHasNoGraphicsContext = 500,
+        ESkinInvalidTextStyle,
+        ESkinFontLoadingFailed,
+        ESkinInvalidFontId,
+        ESkinFontSpecCachingFailed,
+        ESkinFontSpecCacheInvalid,
+
+        // Control groups.
+        EControlGroupTransformNotEnabled = 600,
+
+        // Controls.
+
+        // Visuals.
+        EVisualBrushArrayNotEnabled = 700,
+        EVisualTransformNotEnabled,
+        EVisualHasNoDisplayDuringRefresh,
+
+        /** 
+         * Error occurred while preparing a visual for drawing. 
+         * The error most probably was propagated to the owner
+         * of the visual, but no custom handlers for the errors
+         * were implemented. 
+         * 
+         * @see MHuiVisualOwner::VisualPrepareDrawFailed() - The
+         * default implementation in CHuiControl raises this panic. 
+         * Override this method in your huicontrols to avoid this 
+         * panic.
+         */
+		EVisualPrepareDrawFailed, 
+		
+        // Layouts.
+        ELayoutDuplicateVisual = 800,
+        ELayoutNotScrolling,
+        ELayoutChildVisualNotFound,
+        ELayoutInvalidChildPosition,
+
+        // Brushes.
+        EBrushArrayInvalidIndex = 900,
+
+        // Renderer (generic).
+        ERendererError = 1000, ///< glGetError() returned an error.
+
+        // Render surfaces.
+        ERenderSurfaceUnknownDisplayMode = 1100, ///< Unknown display mode encountered. No rendering surface could be created that matches the given display mode.
+        ERenderSurfaceConfigurationNotSupported, ///< Required render surface configuration is not supported by the system. No required rendering surface could be created.
+        ERenderSurfaceActivationFailed, ///< Render surface could not be activated for rendering. MakeCurrent has failed.
+
+        // Texture manager.
+        ETextureManagerNoProcessor = 1200,
+        ETextureManagerTextureDestroyedDuringRelease,
+        ETextureManagerTextureConstructedDuringRelease,
+        ETextureManagerTextureDestroyedDuringRestore,
+        ETextureManagerTextureConstructedDuringRestore,
+
+        // Display.
+        EDisplayClipStackUnpopped = 1300, ///< Rectangles remain on the stack
+        EDisplayClipStackEarlyPop, ///< Too many rectangles popped from the stack
+
+        // Image.
+        EImageNoTexture = 1400,
+        EImageNotSegmentedTexture, ///< Texture used by image must implement MHuiSegmentedTexture.
+
+        // Texture.
+        ETextureInvalidFormat = 1500, ///< Tried to use undefined format type
+        /**
+         * An attempt to use a texture that is not known by the toolkit.
+         * Also the texture reference used may be invalid or the texture
+         * may have been removed from the toolkit.
+         */
+        ETextureNotValid,
+
+        // Graphics context.
+        EGcClipStackPopFromEmpty = 1600, ///< Tried to pop from empty stack
+        EMatrixStackPopFromEmpty,
+        EGcInvalidMatrixStack,
+
+        // Text mesh.
+        ETextMeshNoText = 1700,
+
+        // OpenGL ES 1.0.
+        EGles10Invariant = 1900, ///< Gles10RenderPlugin encounters a fatal error (invariant fails).
+
+        // OpenGL ES 1.1.
+        EGles11IncompatibleGlesProfile = 2000,
+        EGles11IncompatibleGlesVersion,
+        EGles11UnknownGlesVersion,
+        
+        // OpenVG 1.0
+        EVg10Invariant = 3000, ///< Vg10RenderPlugin encounters a fatal error (invariant fails).
+
+        //
+        // Panics that are caused by the HUITK implementation.
+        // These should not occur even if user is doing something illegal.
+        //
+
+        ENotImplemented = 6000, ///< Feature not implemented at this time.
+        EMethodDeprecated,      ///< Feature has been deprecated and no longer functions. Should not be used as it will be will be removed.
+        EFontTextureNoVacancy, ///< Font texture has been filled with glyphs
+
+        EInternalBitmapFileNameNotFound = 6100,
+        EInternalBitmapNotFound,
+        EInternalBitmapLoadTextureFailure,
+
+
+        //
+        // Other panics.
+        //
+
+        EOutOfMemory = KErrNoMemory, ///< Not enough memory to perform the requested operation.
+        EUnknown = KErrGeneral, ///< Unknown (uncategorized) error.
+
+        /// @todo get rid of EInternal panic code (more specific error code has to be used instead!)
+        EInternal = -1 ///< Internal error (most probably a bug in the toolkit)
+        };
+
+
+public:
+
+    /**
+     * Panics the current thread with the HUI toolkit panic category
+     * and the specified panic number.
+     *
+     * @param aReason  panic number
+     * @todo Add description literals to panic codes, match code to description and
+     * debug output the error to clarify the situation..
+     */
+    IMPORT_C static void Panic(TReason aReason);
+    };
+
+
+#endif  // __HUIPANIC_H__