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