diff -r 000000000000 -r 15bf7259bb7c uiaccelerator_plat/alf_core_toolkit_api/inc/uiacceltk/HuiPanic.h --- /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 +#include + + +#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__