/***************************************************************************
 *                          Zanoza Modeler v2.x                            *
 *      This is unpublished propietary source code of Zanoza Software.     *
 *      The copyright notice does not evidence any actual or intended      *
 *                    publication of such source code.                     *
 *                                                                         *
 *                   Copyright (c) 2002 Zanoza Software.                   *
 *                                                                         *
 *                        All rights reserved.                             *
 ***************************************************************************
 *--------------------------------------------------------------------------
 * @author:   Oleg M.
 *--------------------------------------------------------------------------
 * @purpose:  ZModeler's shared classes
 *--------------------------------------------------------------------------
 * @histroy: 01.04.2003. Created
 */
#ifndef zmsharedclasses_h_included
#define zmsharedclasses_h_included

#ifndef zconf_h_included
# include "zmconf.h"
#endif//!zconf_h_included

// engines:
#define ZM_ENGINE_D3D9                        "rend::CD3D9Engine"

// services:
#define ZM_SERVICE_ERRORMESSAGING             "services::CErrorMessagingService"
#define ZM_SERVICE_MESSAGEBOX                 "services::CMessageBoxService"
#define ZM_SERVICE_COMMANDBAR                 "services::CCommandsBarService"
#define ZM_SERVICE_DIALOGSIZER                "services::CDialogSizingService"
#define ZM_SERVICE_RENDERMANAGER              "services::CRenderManager"
#define ZM_SERVICE_MATERIALS                  "services::CMaterialsService"
#define ZM_SERVICE_TEXTURES                   "services::CTexturesService"
#define ZM_SERVICE_MENU                       "services::CMenuService"
#define ZM_SERVICE_MAINMENU                   "services::CMainMenuService"
#define ZM_SERVICE_CONTEXTMENU                "services::CContextMenuService"
#define ZM_SERVICE_DIALOGDISPLAY              "services::CDialogDisplayService"
#define ZM_SERVICE_MULTYDIALOG                "services::CMultyDialogDisplayService"
#define ZM_SERVICE_PROFILING                  "services::CProfilingService"
#define ZM_SERVICE_TOOLBAR                    "services::CToolBarService"
#define ZM_SERVICE_VIEWPORTS                  "services::CViewportService"
#define ZM_SERVICE_CONFIGURATION              "services::CConfigurationService"
#define ZM_SERVICE_XMLPARSE                   "services::CXMLParseService"
#define ZM_SERVICE_XMLWRITE                   "services::CXMLWriteService"
#define ZM_SERVICE_NUMERICBIND                "services::CNumericBindService"
#define ZM_SERVICE_NODESBIND                  "services::CNodesBindService"
#define ZM_SERVICE_HOTKEYS                    "services::CHotkeysService"
#define ZM_SERVICE_TIMER                      "services::CTimerService"
#define ZM_SERVICE_SNAPPING                   "services::CSnappingService"
#define ZM_SERVICE_PROPERTIES                 "services::CPropertiesService"
#define ZM_SERVICE_OPENSAVE                   "services::COpenSaveService"
#define ZM_SERVICE_IMPORTEXPORT               "services::CImportExportService"
#define ZM_SERVICE_UNDO                       "services::CUndoService"
#define ZM_SERVICE_LOCALIZATION               "services::CLocalizationService"

//shared classes
#define ZM_CLASS_SCENEVIEWPORT                "core::ui::CSceneViewport"
#define ZM_CLASS_POLYMESH                     "scene::CPolyMesh"
#define ZM_CLASS_PRIMITIVE_CUBE               "scene::CCubePrimitive"
#define ZM_CLASS_PRIMITIVE_SPHERE             "scene::CSpherePrimitive"
#define ZM_CLASS_PRIMITIVE_CONE               "scene::CConePrimitive"
#define ZM_CLASS_PRIMITIVE_HEDRA              "scene::CHedraPrimitive"
#define ZM_CLASS_PRIMITIVE_CIRCLE             "scene::CCirclePrimitive"
#define ZM_CLASS_PRIMITIVE_PIE                "scene::CPiePrimitive"
#define ZM_CLASS_PRIMITIVE_LINE               "scene::CLinePrimitive"
#define ZM_CLASS_PRIMITIVE_TRIANGLE           "scene::CTrianglePrimitive"
#define ZM_CLASS_PRIMITIVE_SQUARE             "scene::CSquarePrimitive"
#define ZM_CLASS_PRIMITIVE_TORUS              "scene::CTorusPrimitive"
#define ZM_CLASS_PRIMITIVE_TUBE               "scene::CTubePrimitive"
#define ZM_CLASS_PRIMITIVE_CYLINDER           "scene::CCylinderPrimitive"
#define ZM_CLASS_FILESTREAM                   "core::io::CFileStream"
#define ZM_CLASS_ZIPSTREAM                    "core::io::CZIPStream"
#define ZM_CLASS_TEXTURE                      "rend::CTexture"
#define ZM_CLASS_LODTEXTURE                   "rend::CLODTexture"
#define ZM_CLASS_SPLINE                       "scene::CSpline"
#define ZM_CLASS_CONTROLPOINT                 "scene::CControlPoint"
#define ZM_CLASS_GEOMETRYCONVERTION           "shared::CGeometryConvertion"

//additonal controls
#define ZM_CLASS_MATERIAL_SAMPLE_CONTROL      "core::ui::controls::CMaterialSampleControl"
#define ZM_CLASS_TREE_CONTROL                 "core::ui::controls::CTreeControl"
#define ZM_CLASS_LIST_CONTROL                 "core::ui::controls::CListControl"
#define ZM_CLASS_COLOR_BUTTON_CONTROL         "core::ui::controls::CColorButton"
#define ZM_CLASS_SLIDER_CONTROL               "core::ui::controls::CSliderControl"
#define ZM_CLASS_SPIN_CONTROL                 "core::ui::controls::CSpinControl"
#define ZM_CLASS_RECENT_COMBO_CONTROL         "core::ui::controls::CRecentCombo"
#define ZM_CLASS_SCROLLBAR_CONTROL            "core::ui::controls::CScrollBarControl"
#define ZM_CLASS_PRESENTATION_CONTROL         "core::ui::controls::CPresentationControl"
//shared interface reference are held by repository:
#define ZM_CLASS_PROGRESSBAR                  "core::ui::controls::CProgressBar"
#define ZM_CLASS_STATUSBAR                    "core::ui::CStatusBar"

//
// helper routine to create shared classes
//
DLL_LINKAGE ZRESULT ZAPICALL createSharedClass(
                   LPCTSTR strClass, LPCSTR _IID_, void** ppResult);

#endif //zmsharedclasses_h_included

