summaryrefslogtreecommitdiff
path: root/src/gui/gui.h
AgeCommit message (Collapse)AuthorFilesLines
2025-04-25Introduced theme dropdown in interface setupThorbjørn Lindeijer1-1/+11
* Added Theme dropdown to Interface setup * Added CARET theme color * Fixed issue with logging errors in `check` function in `theme.cpp` * Fixed XML::Children::Iterator to iterate only element nodes * Changed default theme to "jewelry" Changing the theme (or font size) shows a dialog that points out a restart is required to apply these changes. This is necessary at the moment because many things, like default or minimum window sizes, are only calculated once.
2025-04-02Use a consistent naming style for enum class valuesThorbjørn Lindeijer1-18/+19
Sometimes I've used CamelCase and sometimes SNAKE_CASE for these values. Since "enum class" values are always prefixed with the enum name, which uses CamelCase, I find it more fitting to use it for the values as well. Also fixes compilation on Windows where 'ERROR' was conflicting with a define.
2025-03-14Moved widget drawing code into ThemeThorbjørn Lindeijer1-1/+10
This is cleaner overall since now each widget type no longer needs to keep track of its own instances and updating of the GUI alpha. It also introduces a single point from where the GUI theme support can be enhanced. Theme is no longer a singleton, though for now there is a single instance owned by the Gui singleton. Widgets adjusted to delegate their painting to the Theme: * Button * Tab * TextField * CheckBox * RadioButton * Slider * DropDown * ProgressBar * ScrollArea * ResizeGrip * PlayerBox (by subclassing ScrollArea) The Window and Popup widgets already use the theme through the Skin class. They can actually use a different skin per instance, though this feature is only used by the SpeechBubble.
2025-01-21Replaced include guards with #pragma onceThorbjørn Lindeijer1-4/+1
Thanks to https://github.com/cgmb/guardonce and a follow-up replace to remove duplicated newlines at end of file: find src -type f -name '*.h' -exec \ sed --in-place -e :a -e '/^\n*$/{$d;N;};/\n$/ba' {} \; Source: https://unix.stackexchange.com/questions/81685/how-to-remove-multiple-newlines-at-eof Fixes compile on macOS, which appears to have been due to the EVENT_H include guard.
2024-10-08Added convenient and efficient Timer classThorbjørn Lindeijer1-1/+3
The Timer is efficient because it does not depend on incrementing a counter to keep track of time, nor does it call SDL_GetTicks every time its state is checked (this happens once per frame instead). Along with global functions Time::absoluteTimeMs() and Time::deltaTimeMs(), this replaces previous globals tick_time, cur_time and get_elapsed_time(). For now, there is still a fixed 100 times per second logic call rate, but the new Time::deltaTimeMs() function should allow getting rid of this.
2024-09-02Added a hand mouse cursor, used when hovering linksThorbjørn Lindeijer1-0/+3
InputEvent::mIsConsumed is used to tell the Window it should not change the mouse cursor as well. This change also adds a closed hand mouse cursor, though this is unused for now (might be useful when dragging stuff around). The new cursors are by meway.
2024-04-08Added UI debug drawingThorbjørn Lindeijer1-0/+2
Shows outlines of visible widgets as well as highlighting modal focus, modal mouse focus and regular focus. Can currently only be toggled in the Debug window, so needs source code modification to be used during login sequence for now.
2024-04-02General code cleanupsThorbjørn Lindeijer1-1/+1
* Removed some unused includes * Removed unused ListBox::mFont * Removed wrong cast to SDL_Scancode * Removed superfluous .c_str() * Removed superfluous explicit std::string construction * Removed unused variable * Use more emplace_back * Turned FindBeingFunctor into a lambda * Avoid needless pointer references for ambient layers and use a vector
2024-03-26Use SDL2 support for color and system mouse cursorsThorbjørn Lindeijer1-14/+17
This way the cursor is not limited by the framerate nor affected by input lag. Also, when custom cursor is disabled, a few different system cursors are now used instead. It also avoids an issue on Wayland, where hiding the cursor (as done to render our own one) would cause the cursor to get locked within the window. On macOS it fixes two cursors being visible when hovering the window while it is in the background. The cursor can unfortunately no longer gently fade away.
2024-03-26Added support for HiDPI fontsThorbjørn Lindeijer1-1/+3
* TrueTypeFont class now takes into account the graphics scale, in order to render an appropriate higher-resolution texture. * Removed TrueTypeFont::fontCounter, since TTF_Init/TTF_Quit already keep a counter. * Avoid copying the rendered string needlessly, when it already exists in the cache. Avoid another copy, when inserting a new chunk into the cache.
2024-03-02Updated mouse cursors to latest versionThorbjørn Lindeijer1-23/+26
The new cursor types are not used yet for now.
2024-02-27Added VSync and windowed fullscreen optionsThorbjørn Lindeijer1-1/+1
The configuration and setup UI were adjusted to the new options. This also fixes issues in applying new video settings. Default resolution was changed from 800x600 to 1280x720. VSync is enabled by default while FPS limit was disabled. Display aspect ratio for the resolution options. I had to work around some macOS issues: * Don't change window size when it appears to be "maximized", since it just changes the rendering area while leaving the window maximized. * Unset fullscreen display mode temporarily to allow changing resolutions, otherwise the rendering area no longer matches the screen and mouse input is also off. * Removed SDL_WINDOW_ALLOW_HIGHDPI for now because it causes issues on macOS, since we're not actually handling the scaling factor. A Video class and an SDLGraphics subclass were split off from Graphics. This setup has Less duplication and leaves the OpenGLGraphics and SDLGraphics better separated. Fixes #57 Fixes #58
2024-01-26Apply C++11 fixitsThorbjørn Lindeijer1-4/+4
modernize-use-auto modernize-use-nullptr modernize-use-override modernize-use-using
2024-01-25Ported to SDL2Thorbjørn Lindeijer1-0/+2
2012-01-26Updated copyrights to 2012Thorbjørn Lindeijer1-1/+1
2012-01-22Allow resizing of the game in windowed modeThorbjørn Lindeijer1-0/+5
Window positions are semi-smartly corrected as a result of the resize. Not supported when using OpenGL on Windows for now. Reviewed-by: Yohann Ferreira
2011-05-13Made the setup keyboard tab prettier.Angelo Castellani1-0/+5
Incidentally I added support for a monospaced font (which may come in handy).
2011-04-09Removed a lot of useless "documentation"Thorbjørn Lindeijer1-6/+0
I have to admit I contributed a large part of these. Sorry for that. Less empty space, more attention to the code. Acked-by: Jared Adams
2010-02-28Add some new mousers and simplify related codeidiomatic1-0/+3
Signed-off-by: Jared Adams <jaxad0127@gmail.com>
2010-02-22Modify copyright headersFreeyorp1-1/+2
2010-02-20License header update for The Mana ClientThorbjørn Lindeijer1-4/+3
2010-02-14Don't create the viewport until it's really needed.Tametomo1-1/+0
Signed-off-by: Tametomo <irarice@gmail.com>
2010-02-07Updated Copyright year to 2010!Bertram1-1/+1
Also added the update copyright tool from the Wormux Team. ( And not forgetting credit's due. :P )
2010-01-12Standardize header orderJared Adams1-2/+2
Also remove some extra new lines and fix eAthena's PartyTab define guards.
2009-05-10Don't show the chat input when a modal widget has focusBjørn Lindeijer1-0/+3
For example, the chat input would become visible when using Enter to confirm the exit dialog.
2009-05-03Moved strprintf into stringutils.{h,cpp}Bjørn Lindeijer1-4/+4
2009-04-15Also hardcode the bold font, we ship it after allBjørn Lindeijer1-7/+2
Plus some tweaks and cleanups.
2009-03-23Merge branch 'aethyra/master'Bjørn Lindeijer1-0/+5
Conflicts: Many files.
2009-03-19Reformatted the item amount window and the buy/sell windows so thatIra Rice1-0/+5
their guis are similarly laid out. Signed-off-by: Ira Rice <irarice@gmail.com>
2009-02-26Merge branch 'aethyra/master'Bjørn Lindeijer1-8/+1
Conflicts: data/graphics/images/login_wallpaper.png src/being.cpp src/beingmanager.cpp src/engine.cpp src/game.cpp src/gui/buysell.cpp src/gui/buysell.h src/gui/gui.h src/gui/npc_text.cpp src/gui/npc_text.h src/gui/npcintegerdialog.cpp src/gui/npclistdialog.cpp src/gui/npclistdialog.h src/gui/npcstringdialog.cpp src/gui/sell.cpp src/gui/shop.cpp src/gui/table.cpp src/net/beinghandler.cpp src/net/npchandler.cpp src/net/playerhandler.cpp src/npc.cpp src/npc.h src/shopitem.cpp src/shopitem.h src/utils/stringutils.cpp src/utils/stringutils.h src/utils/trim.h
2009-02-22Fixed another Particle/Paricle mismatch in a commentPhilipp Sehmisch1-1/+1
2009-02-22Fixed another Particle/Paricle mismatch in a commentPhilipp Sehmisch1-1/+1
2009-02-22Renamed InfoParicleFont to InfoParticleFont (typo?)Philipp Sehmisch1-2/+2
2009-02-20Removed the last of the image particle guichan fonts.Ira Rice1-9/+2
Signed-off-by: Ira Rice <irarice@gmail.com>
2009-02-20Added a pickup notification as particle effect. Also make a ui option to ↵Majin Sniper1-0/+8
enable/disable this effect (default is off) and another option to disable the pickup notification in the chat log (default is on).
2009-02-19Added a pickup notification as particle effect. Also make a ui option to ↵Majin Sniper1-0/+8
enable/disable this effect (default is off) and another option to disable the pickup notification in the chat log (default is on).
2009-02-10Fixed header files, as well as removed the unused buddy list class (notIra Rice1-2/+3
useful since buddy lists are tracked through the player relation interface instead) Signed-off-by: Ira Rice <irarice@gmail.com>
2009-02-07Some more include cleanups.Ira Rice1-1/+0
Signed-off-by: Ira Rice <irarice@gmail.com>
2009-01-25Removed the TMW branding from header guardsBjørn Lindeijer1-2/+2
2009-01-24Updated DejaVuSans ttf file, as well as adding the bolded version, whichIra Rice1-0/+4
is used in a few spots. Signed-off-by: Ira Rice <irarice@gmail.com>
2009-01-24Use standard GUI font also for speech and namesBjørn Lindeijer1-11/+0
The speech bitmap font can't handle unicode, so it has now been replaced by the standard GUI font, drawn with a shadow for chat and with a full outline for names.
2009-01-23Removed unnecessary references to The Mana World in code headersBjørn Lindeijer1-4/+4
This dates back to the old days of TMW, but the usage instructions of GPLv2 don't mention this being necessary. Since it doesn't add anything, avoid the branding in these sections.
2009-01-06Added support for unicode charset in textfields and chat.Guillaume Melquiond1-1/+2
Conflicts: src/Makefile.am src/game.cpp src/gui/browserbox.cpp src/gui/gui.cpp src/gui/textfield.cpp src/main.cpp (cherry picked from mainline commit 7b67e852086ad3ccd98a622f890b245ab6a0a321)
2008-12-05Fade out mouse cursor when not used for some timeBjørn Lindeijer1-0/+11
The mouse cursor will now disappear when not used for 15 seconds. When using OpenGL it will even fade. Requested by doorsman.
2008-11-18Pedantic fixes to the client, where I alphabetized all of the include Ira Rice1-3/+1
statements, as well as removing the new skill dialog, which we do not, nor will we use (if we do, it'd be a new one that we'd make). WARNING!!! This, and all other previous builds have a linker error for the Gnome libraries version 4.3.2 on my setup. It's assumed that this is also the case for other users of this library as well. I'm currently assuming that there's a bug in the compiler itself, and will look into reporting this, but in the mean time, it doesn't build for these users, unfortunately. Sorry about this.
2008-08-13Added support for different colored fonts for different being typesLloyd Bryant1-0/+8
2008-07-18Import of client treeLloyd Bryant1-1/+1
2007-10-18Merged removal of dependency on Guichan OpenGL from trunk to 0.0 branch, Bjørn Lindeijer1-2/+0
including optimization of OpenGL memory usage on modern OpenGL drivers. Patches by Guillaume Melquiond.
2007-08-24Removed unnecessary Gui::isCustomCursor method.Bjørn Lindeijer1-19/+8
2007-08-24Removed useless logic method and reverted mouse cursor to non-static sinceBjørn Lindeijer1-8/+1
there can be only one Gui instance so there is no point in supporting a shared resource.