What's new in FUGE 1.37
Dec 29, 2011
- improved event mechanism; better integration with external frameworks
- more control about device's internal logger; CFugeDevice::DisableLogger removed
- removed the 'pragma' from FugeDev.cpp that was changing subsystem to Windows
- fixed resize bug in fuge::CFugeDevice constructor (the HWND variant)
- fixed ugly selection bug in fuge::CEditBox
- fuge::CWindow: minimize and maximize buttons have separate style flags
- fuge::CStatic: fixed foreground color bug
- fuge::CEditBox:
- Ctrl+A and Ctrl+X shortcuts
- Esc does not produce an output character
- Tab key is ignored
- fuge::IRenderer::DrawOutlinedRect
- fuge::CFugeDevice::CaptureMouse
- new kind of logger output type (OUTPUT_STDERR)
- 'using namespace pb' removed from the global namespace
New in FUGE 1.34 (Dec 29, 2011)
- new control: fuge::CTreeView
- new control: fuge::CHyperLink
- new control: fuge::CTable
- new control: fuge::CPropertyGrid
- new control: fuge::CMenu
- new control: fuge::CToolbar
- fuge::CEditBox rewritten from scratch; selection support; random access caret support; caret blinking; clipboard support
- new editor with ID manager
- OpenGL renderer
- removed class CImageList (deprecated in favor of the new fuge::CBitmap functionality)
- removed all sub-namespaces except fuge::Event and fuge::Key
- clipping support
- each renderer type has its internal color format, fuge::CColor supports conversion between different formats
- flat-style checkboxes, combo boxes and edit boxes
- new event type: fuge::Event::MOUSE_DOUBLECLICK
- new event type: fuge::Event::GUI_COMBOBOX_CANCELLED
- new event type: fuge::Event::GUI_COMBOBOX_LIST_DISPLAYED
- new events: fuge::Event::GUI_EDITBOX_FOCUS_GAINED and fuge::Event::GUI_EDITBOX_FOCUS_LOST
- fuge::CElement:
- new member m_CursorType
- m_DebugText is not used internally anymore; serialization retrieves class name through PBLib Reflect
- GetDrawingColor method simplified; color scheme is now optional
- m_UIManager is of type CUIManager* (no need to dynamic_cast)
- s_Logger - a static logger accessible to all elements, printing to the Output window
- GetElementFromID doesn't accept ID == -1
- CalcRelPos
- UpdateAbsolutePosition - calling Resize is now optional (true by default)
- GenerateEvent is virtual and now used by majority of controls
- AddChild now accepts controls that already have parent (i.e. allows to change the parent)
- HasFocus
- fuge::CStatic:
- SetBackground/HasBackground
- The m_FgColor member is loaded from XML properly
- SetBgColor, SetOverrideBgColor
- m_Border is not ignored in the STATIC_PANEL mode
- m_EventsToParent mode (transmitting all events to parent control)
- eliminated text offset (with border present)
- uses COLOR_TEXT unless override color flag is turned on
- GUI_STATIC_CLICKED triggered on MOUSE_LBUTTONUP (instead of MOUSE_LBUTTONDOWN)
- setters do not return a reference to 'this' anymore; that was a cool trick, but also a messy one
- fixed bug in GetBgColor - it would actually return foreground color
- fuge::CButton:
- changed look of pressed button
- mouse events are not propagated
- fuge::CComboBox:
- Esc button hides the list box
- clicking outside the list box doesn't cause an item to get selected
- Clear clears its list box as well
- fuge::CListBox
- MOUSE_LBUTTONUP triggers item selection (instead of MOUSE_LBUTTONDOWN), this change also affects CComboBox, which behaves more intuitively now
- BeginContent/EndContent
- HasBackground, SetBackground, IsSunken
- fuge::CCheckBox: small box mode
- fuge::CRangedControl:
- GetMin, GetMax
- SetRange sets bot min and max to 0 when specified range is invalid
- fuge::CScrollBar:
- button size is proportional to content size
- SetSmallStep
- SetOrientation and GetOrientation
- fuge::CProgressBar: fixed ugly bugs
- fuge::CTabCtrl:
- AttachElementToTab
- m_TransparentBackground renamed to m_Background (for consistency with other controls); HasBackground and SetBackground added; CUIManager::AddTabCtrl changed respectively
- fuge::CUpDown:
- SetBuddy automatically synchronizes its value with buddy
- SetBuddy accepts classes derived from CEditBox, not only CEditBox itself
- fuge::CComboBox and fuge::CListBox items have 64 bits of extra data
- removed enum EType and fuge::CElement::m_Type (deprecated since 1.17 in favor of PBLib Reflect functionality)
- fuge::CFugeDevice:
- GetLogger
- GetRendererType
- AnyRunningModalLoops
- mouse coordinates in the MOUSE_WHEEL event are relative to the client area
- ICursorAndRendererOwner class removed, UI Manager creates and manages cursor, fuge::IGUIObject provides a pointer to the cursor
- system keys (like F10) generate keyboard events as well
- fuge::CCursor supports all Windows cursor shapes
- non-virtual variants of IRenderer::DrawRectangle and IRenderer::DrawImage to simplify drawing operations
- fuge::CBmpHardcoder interpret "solid" pixels as white, which allows them to be drawn in any color
- IMouseCapture class removed; now fuge::IGUIObject has its old functionality plus CaptureMouse and ReleaseMouse methods to simplify capturing mouse
- several EColorIndex members renamed, added COLOR_SELECTION_TEXT, COLOR_SELECTION_DARK, COLOR_TEXT_SPECIAL1, COLOR_TEXT_SPECIAL2 and COLOR_SYMBOL
- color schemes updated; new scheme ("Blitkrieg") added
- is not included anymore
- the UserData field in the fuge::CEvent struct is now uint64 (instead of uint)
- the mouse event structure now has Pos method, which returns cursor position as pb::CPoint
- fuge_fopen removed, pb::CFileWrite used instead
- fuge::IFont::GetCharWidth renamed to GetCharacterWidth (WinAPI + Intelli(non)sense issues)
- fuge::CBitmap::GetTileCount
- fixed potential bug in fuge::CBitmap::SetExternalRef - the method returns if specified pointer is equal to the current ref
- loading from XML - version check
- fuge::CUIManager: serialization flags
- 'Del' key handled properly in Edit Mode fixed incorrect behavior of fuge::CWindow::GatherChildren and removed some nonsense code from fuge::CWindow::ToXml and fuge::CWindow::FromXml
New in FUGE 1.17 (Dec 29, 2011)
- Edit Mode
- Alt+Tab support in fullscreen mode
- window resize support
- easier to create a custom color scheme
- uses PBLib
- logger
- improved performance of drawing lines with the DX renderer
- improved performance of drawing multiline text with the DX renderer
- extended interface of bitmap class
- extended interface of fuge::CEditBox
- drawing only when the main window is active (optional)
- fuge::CRangedControl - base class for fuge::CScrollBar, fuge::CProgressBar and fuge::CUpDown
- fuge::CUpDown::SetBuddy uses ID instead of pointer
- fuge::CStatic with border draws its text with an automatic offset of 5 pixels
- fuge::CFugeDevice::IsKeyPressed
- CUIManager::AddMessageBox method removed
- additional fields in the mouse event structure (mouse button state, shift and control buttons state)
- fixed ugly multiline bug in DX font
- fixed GetCharacterWidth method in both native and generic fonts
- newline characters are not drawn when using generic font
- solved many problems with reference counting
- Fuge Device obtains system time as soon as it is created
- modal dialogs receive focus as they are created by ShowModalDialog
- fuge::CElement::BringToFront doesn't cause problems with modal dialogs
- fuge::CElement::SetText made virtual (some controls implement their own version to make it possible to change text at run-time)
- fuge::CComboBox displays its text in the edit box until an item is selected from the list
- aligning text to the right
- DirectX fonts are released properly
- fuge::CMessageBox autosize: margin between buttons and text added
- fuge::CMessageBox can be dismissed by Enter or Esc
- fuge::IReferenceCounted::GetRefCounter
New in FUGE 1.00 (Dec 29, 2011)
- new class fuge::CImageList for managing tiled bitmaps
- new class fuge::CErrorHandler for dealing with errors such as 'file not found' error
- new class fuge::CBmpHardcoder for creating inline bitmaps
- new method fuge::CFugeDevice::GetTime
- new method fuge::CFugeDevice::GetWindowHandle
- new method fuge::CBitmap::CreateEmpty
- new methods fuge::CUIManager::ShowModalDialog and fuge::CUIManager::ShowMessageBox
- new method fuge::CButton::Arrange
- new method fuge::CElement::GetUIManager
- new method fuge::CElement::SetID
- new data member fuge::CEvent::UserData
- built-in symbols bitmap (no external images needed anymore, no loading at demand)
- virtual timers
- works both with Unicode and ANSI projects
- doesn't use IrrXML anymore
- uses STL internally
- string conversion routines (Unicode/ANSI) removed
- fuge::CMessageBox adjusts automatically to initial text and centers itself on screen
- one can call fuge::CUIManager::GetSize() to obtain available screen size
- main window can be created without a border
- enums are now contained in associated classes or their own namespaces
- clicking outside any control doesn't cause a crash
- fixed Unicode issues in fuge::CUpDown