Irrlicht 3D Engine: IGUIEnvironment.h Source File

| Irrlicht 3D Engine |

IGUIEnvironment.h
Go to the documentation of this file.

    00001 // Copyright (C) 2002-2012 Nikolaus Gebhardt
    00002 // This file is part of the "Irrlicht Engine".
    00003 // For conditions of distribution and use, see copyright notice in irrlicht.h
    00004
    00005 #ifndef __I_GUI_ENVIRONMENT_H_INCLUDED__
    00006 #define __I_GUI_ENVIRONMENT_H_INCLUDED__
    00007
    00008 #include "IReferenceCounted.h"
    00009 #include "IGUISkin.h"
    00010 #include "rect.h"
    00011 #include "EMessageBoxFlags.h"
    00012 #include "IEventReceiver.h"
    00013 #include "IXMLReader.h"
    00014 #include "path.h"
    00015
    00016 namespace irr
    00017 {
    00018     class IOSOperator;
    00019     class IEventReceiver;
    00020
    00021     namespace io
    00022     {
    00023         class IXMLWriter;
    00024         class IReadFile;
    00025         class IWriteFile;
    00026         class IFileSystem;
    00027     } // end namespace io
    00028     namespace video
    00029     {
    00030         class IVideoDriver;
    00031         class ITexture;
    00032     } // end namespace video
    00033
    00034 namespace gui
    00035 {
    00036
    00037 class IGUIElement;
    00038 class IGUIFont;
    00039 class IGUISpriteBank;
    00040 class IGUIScrollBar;
    00041 class IGUIImage;
    00042 class IGUIMeshViewer;
    00043 class IGUICheckBox;
    00044 class IGUIListBox;
    00045 class IGUITreeView;
    00046 class IGUIImageList;
    00047 class IGUIFileOpenDialog;
    00048 class IGUIColorSelectDialog;
    00049 class IGUIInOutFader;
    00050 class IGUIStaticText;
    00051 class IGUIEditBox;
    00052 class IGUISpinBox;
    00053 class IGUITabControl;
    00054 class IGUITab;
    00055 class IGUITable;
    00056 class IGUIContextMenu;
    00057 class IGUIComboBox;
    00058 class IGUIToolBar;
    00059 class IGUIButton;
    00060 class IGUIWindow;
    00061 class IGUIElementFactory;
    00062
    00064
    00070 class IGUIEnvironment : public virtual IReferenceCounted
    00071 {
    00072 public:
    00073
    00075     virtual void drawAll() = 0;
    00076
    00078
    00083     virtual bool setFocus(IGUIElement* element) = 0;
    00084
    00086
    00087     virtual IGUIElement* getFocus() const = 0;
    00088
    00090
    00095     virtual IGUIElement* getHovered() const = 0;
    00096
    00098
    00102     virtual bool removeFocus(IGUIElement* element) = 0;
    00103
    00105
    00107     virtual bool hasFocus(IGUIElement* element) const = 0;
    00108
    00110
    00111     virtual video::IVideoDriver* getVideoDriver() const = 0;
    00112
    00114
    00115     virtual io::IFileSystem* getFileSystem() const = 0;
    00116
    00118
    00119     virtual IOSOperator* getOSOperator() const = 0;
    00120
    00122     virtual void clear() = 0;
    00123
    00125
    00129     virtual bool postEventFromUser(const SEvent& event) = 0;
    00130
    00132
    00135     virtual void setUserEventReceiver(IEventReceiver* evr) = 0;
    00136
    00138
    00139     virtual IGUISkin* getSkin() const = 0;
    00140
    00142
    00154     virtual void setSkin(IGUISkin* skin) = 0;
    00155
    00157
    00162     virtual IGUISkin* createSkin(EGUI_SKIN_TYPE type) = 0;
    00163
    00164
    00166
    00172     virtual IGUIImageList* createImageList( video::ITexture* texture,
    00173                     core::dimension2d<s32> imageSize,
    00174                     bool useAlphaChannel ) = 0;
    00175
    00177
    00182     virtual IGUIFont* getFont(const io::path& filename) = 0;
    00183
    00185
    00190     virtual IGUIFont* addFont(const io::path& name, IGUIFont* font) = 0;
    00191
    00193     virtual void removeFont(IGUIFont* font) = 0;
    00194
    00196
    00199     virtual IGUIFont* getBuiltInFont() const = 0;
    00200
    00202
    00206     virtual IGUISpriteBank* getSpriteBank(const io::path& filename) = 0;
    00207
    00209
    00212     virtual IGUISpriteBank* addEmptySpriteBank(const io::path& name) = 0;
    00213
    00215
    00221     virtual IGUIElement* getRootGUIElement() = 0;
    00222
    00224
    00232     virtual IGUIButton* addButton(const core::rect<s32>& rectangle,
    00233         IGUIElement* parent=0, s32 id=-1, const wchar_t* text=0, const wchar_t* tooltiptext = 0) = 0;
    00234
    00236
    00246     virtual IGUIWindow* addWindow(const core::rect<s32>& rectangle, bool modal = false,
    00247         const wchar_t* text=0, IGUIElement* parent=0, s32 id=-1) = 0;
    00248
    00250
    00256     virtual IGUIElement* addModalScreen(IGUIElement* parent) = 0;
    00257
    00259
    00273     virtual IGUIWindow* addMessageBox(const wchar_t* caption, const wchar_t* text=0,
    00274         bool modal = true, s32 flags = EMBF_OK, IGUIElement* parent=0, s32 id=-1, video::ITexture* image=0) = 0;
    00275
    00277
    00285     virtual IGUIScrollBar* addScrollBar(bool horizontal, const core::rect<s32>& rectangle,
    00286         IGUIElement* parent=0, s32 id=-1) = 0;
    00287
    00289
    00300     virtual IGUIImage* addImage(video::ITexture* image, core::position2d<s32> pos,
    00301         bool useAlphaChannel=true, IGUIElement* parent=0, s32 id=-1, const wchar_t* text=0) = 0;
    00302
    00304
    00314     virtual IGUIImage* addImage(const core::rect<s32>& rectangle,
    00315         IGUIElement* parent=0, s32 id=-1, const wchar_t* text=0, bool useAlphaChannel=true) = 0;
    00316
    00318
    00326     virtual IGUICheckBox* addCheckBox(bool checked, const core::rect<s32>& rectangle,
    00327         IGUIElement* parent=0, s32 id=-1, const wchar_t* text=0) = 0;
    00328
    00330
    00337     virtual IGUIListBox* addListBox(const core::rect<s32>& rectangle,
    00338         IGUIElement* parent=0, s32 id=-1, bool drawBackground=false) = 0;
    00339
    00341
    00350     virtual IGUITreeView* addTreeView(const core::rect<s32>& rectangle,
    00351         IGUIElement* parent=0, s32 id=-1, bool drawBackground=false,
    00352         bool scrollBarVertical = true, bool scrollBarHorizontal = false) = 0;
    00353
    00355
    00362     virtual IGUIMeshViewer* addMeshViewer(const core::rect<s32>& rectangle,
    00363             IGUIElement* parent=0, s32 id=-1, const wchar_t* text=0) = 0;
    00364
    00366
    00379     virtual IGUIFileOpenDialog* addFileOpenDialog(const wchar_t* title=0,
    00380         bool modal=true, IGUIElement* parent=0, s32 id=-1,
    00381         bool restoreCWD=false, io::path::char_type* startDir=0) = 0;
    00382
    00384
    00393     virtual IGUIColorSelectDialog* addColorSelectDialog(const wchar_t* title = 0,
    00394         bool modal=true, IGUIElement* parent=0, s32 id=-1) = 0;
    00395
    00397
    00408     virtual IGUIStaticText* addStaticText(const wchar_t* text, const core::rect<s32>& rectangle,
    00409         bool border=false, bool wordWrap=true, IGUIElement* parent=0, s32 id=-1,
    00410         bool fillBackground = false) = 0;
    00411
    00413
    00427     virtual IGUIEditBox* addEditBox(const wchar_t* text, const core::rect<s32>& rectangle,
    00428         bool border=true, IGUIElement* parent=0, s32 id=-1) = 0;
    00429
    00431
    00441     virtual IGUISpinBox* addSpinBox(const wchar_t* text, const core::rect<s32>& rectangle,
    00442         bool border=true,IGUIElement* parent=0, s32 id=-1) = 0;
    00443
    00445
    00452     virtual IGUIInOutFader* addInOutFader(const core::rect<s32>* rectangle=0, IGUIElement* parent=0, s32 id=-1) = 0;
    00453
    00455
    00467     virtual IGUITabControl* addTabControl(const core::rect<s32>& rectangle,
    00468         IGUIElement* parent=0, bool fillbackground=false,
    00469         bool border=true, s32 id=-1) = 0;
    00470
    00472
    00482     virtual IGUITab* addTab(const core::rect<s32>& rectangle,
    00483         IGUIElement* parent=0, s32 id=-1) = 0;
    00484
    00486
    00494     virtual IGUIContextMenu* addContextMenu(const core::rect<s32>& rectangle,
    00495         IGUIElement* parent=0, s32 id=-1) = 0;
    00496
    00498
    00506     virtual IGUIContextMenu* addMenu(IGUIElement* parent=0, s32 id=-1) = 0;
    00507
    00509
    00517     virtual IGUIToolBar* addToolBar(IGUIElement* parent=0, s32 id=-1) = 0;
    00518
    00520
    00527     virtual IGUIComboBox* addComboBox(const core::rect<s32>& rectangle,
    00528         IGUIElement* parent=0, s32 id=-1) = 0;
    00529
    00531
    00539     virtual IGUITable* addTable(const core::rect<s32>& rectangle,
    00540         IGUIElement* parent=0, s32 id=-1, bool drawBackground=false) =0;
    00541
    00543
    00546     virtual IGUIElementFactory* getDefaultGUIElementFactory() const = 0;
    00547
    00549
    00553     virtual void registerGUIElementFactory(IGUIElementFactory* factoryToAdd) = 0;
    00554
    00556
    00557     virtual u32 getRegisteredGUIElementFactoryCount() const = 0;
    00558
    00560
    00562     virtual IGUIElementFactory* getGUIElementFactory(u32 index) const = 0;
    00563
    00565
    00570     virtual IGUIElement* addGUIElement(const c8* elementName, IGUIElement* parent=0) = 0;
    00571
    00573
    00576     virtual bool saveGUI(const io::path& filename, IGUIElement* start=0) = 0;
    00577
    00579
    00582     virtual bool saveGUI(io::IWriteFile* file, IGUIElement* start=0) = 0;
    00583
    00585
    00591     virtual bool loadGUI(const io::path& filename, IGUIElement* parent=0) = 0;
    00592
    00594
    00600     virtual bool loadGUI(io::IReadFile* file, IGUIElement* parent=0) = 0;
    00601
    00603     virtual void serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options=0) const =0;
    00604
    00606     virtual void deserializeAttributes(io::IAttributes* in, io::SAttributeReadWriteOptions* options=0)=0;
    00607
    00609     virtual void writeGUIElement(io::IXMLWriter* writer, IGUIElement* node) =0;
    00610
    00612     virtual void readGUIElement(io::IXMLReader* reader, IGUIElement* node) =0;
    00613 };
    00614
    00615
    00616 } // end namespace gui
    00617 } // end namespace irr
    00618
    00619 #endif
    00620