aboutsummaryrefslogtreecommitdiff
path: root/graphics
AgeCommit message (Collapse)Author
2018-08-18COMMON: Move new_strdup to common/str.cppCameron Cawley
2018-08-18GRAPHICS: Fix incorrect maximum length passed to strlcpyColin Snover
2018-08-18GRAPHICS: Remove use of nonstandard strdup API & fix mismatched malloc/deleteColin Snover
2018-08-17JANITORIAL: Removing trailing spaces after int castsPaul Gilbert
2018-08-05GRAPHICS: MACGUI: fixed mem leak in MacTextAndrei Prykhodko
2018-08-03GRAPHICS: Improve check to test if text fits in the target surfaceBastien Bouclet
When rendering text, especially truetype fonts, we would use the next character avance metric to check if the character fits in the target surface. This commit changes it to use the bounding box metric. The bounding box represents the actual pixels that will be touched when drawing the character. This fixes an issue noticed on the main menu of Myst ME where the last character of the string "OPTIONEN" would not be rendered despite there being enough room to render it. More precisely, this ensures that calling Font::getBoundingBox for a string, and then passing a surface exactly the size of the returned bounding box to the draw function actually renders all the characters.
2018-08-03GRAPHICS: Set thumbnail to nullptr when loading the thumbnail is skippedDavid Fioramonti
Since Graphics::loadThumbnail can return successfully when a thumbnail is skipped the caller may want to check to the see that the thumbnail is not null before using it. Setting it to null is just defensive in case the caller didn't do so. If the user tries to use the thumbnail in setThumbnail then it will just show a black screen for the thumbnail rather than crashing if they have not set the thumbnail to null.
2018-08-02COMMON: Fix kerning issue in wordWrapText.Ľubomír Remák
2018-07-30GRAPHICS: MACGUI: fixed memory leaks in MacTextWindowAndrei Prykhodko
2018-07-29GRAPHICS: MACGUI: add additional arg to MacTextWindow's constructor to ↵Andrei Prykhodko
disable cursor handler
2018-07-29GRAPHICS: MACGUI: fixed SIGSEGV when ptr to menu in MacTextWindow is NULLAndrei Prykhodko
2018-07-26GRAPHICS: MACGUI: fixed restoring screenAndrei Prykhodko
2018-07-26GRAPHICS: MACGUI: added field initializationAndrei Prykhodko
2018-07-26GRAPHICS: MACGUI: fixed memory leakAndrei Prykhodko
2018-07-23GRAPHICS: MACGUI: Restore screen on exiting from menuEugene Sandulenko
2018-07-22GRAPHICS: MACGUI: fixes for menu parser from win exeAndrei Prykhodko
2018-07-22GRAPHICS: MACGUI: added unicode submenu renderingAndrei Prykhodko
2018-07-22GRAPHICS: MACGUI: fixed engine unpausing after releasing mouseAndrei Prykhodko
2018-07-22GRAPHICS: MACMENU: added missing field initializationAndrei Prykhodko
2018-07-21GRAPHICS: MACGUI: Fix color searchingEugene Sandulenko
2018-07-21GRAPHICS: MACGUI: Fix compilationEugene Sandulenko
2018-07-21GRAPHICS: MACMENU: added menu parser from Win32 PE executableAndrei Prykhodko
2018-07-21GRAPHICS: MACMENU: added partial unicode supportAndrei Prykhodko
It misses renderSubmenu impl and accelerator rendering
2018-07-20GRAPHICS: MACGUI: moved engine ptr, pause callback to private sectionAndrei Prykhodko
2018-07-20GRAPHICS: MACGUI: added initialization of engine ptrAndrei Prykhodko
2018-07-18GRAPHICS: MACGUI: added WMModalMenuModeAndrei Prykhodko
2018-07-12GRAPHICS: MACGUI: Do not use hardcoded colorsEugene Sandulenko
2018-07-11GRAPHICS: MACGUI: Added isMenuActive() helper methodEugene Sandulenko
2018-07-11GRAPHICS: MACMENU: Calculate menu bounds after adding static itemsEugene Sandulenko
2018-07-11GRAPHICS: MACGUI: Made autohiding menu reentrableEugene Sandulenko
2018-07-11GRAPHICS: MACGUI: Implemented autohide menusEugene Sandulenko
2018-07-11GRAPHICS: MACGUI: Added possibility to specify WM behaviourEugene Sandulenko
2018-07-08GRAPHICS: fixed creating cursor group from some old executablesAndrei Prykhodko
2018-07-03GFX: Use degree conversion common math funcsDavid Fioramonti
2018-06-03GRAPHICS: Remove BOM at start of larryscale filesThierry Crozat
Note that larryScale_generated.cpp still contains UTF-8 characters, but they are all in comments, so hopefully they will not cause problems.
2018-06-03Merge pull request #1141 from DanielSWolf/larryscaleThierry Crozat
SCI: High-quality "LarryScale" cel scaler for LSL7
2018-04-22JANITORIAL: Fix formattingAdrian Frühwirth
2018-04-19JANITORIAL: Fix whitespaceAdrian Frühwirth
2018-04-15JANITORIAL: Fix whitespaceAdrian Frühwirth
2018-04-07ALL: Load savegame thumbnail only when necessaryAdrian Frühwirth
This commit introduces the following changes: 1. Graphics::loadThumbnail() Now returns a boolean and takes a new argument skipThumbnail which defaults to false. In case of true, loadThumbnail() reads past the thumbnail data in the input stream instead of actually loading the thumbnail. This simplifies savegame handling where, up until now, many engines always read the whole savegame metadata (including the thumbnail) and then threw away the thumbnail when not needed (which is in almost all cases, the most common exception being MetaEngine::querySaveMetaInfos() which is responsible for loading savegame metadata for displaying it in the GUI launcher. 2. readSavegameHeader() Engines which already implement such a method (name varies) now take a new argument skipThumbnail (default: true) which is passed through to loadThumbnail(). This means that the default case for readSavegameHeader() is now _not_ loading the thumbnail from a savegame and just reading past it. In those cases, e.g. querySaveMetaInfos(), where we actually are interested in loading the thumbnail readSavegameHeader() needs to explicitely be called with skipThumbnail == false. Engines whose readSavegameHeader() (name varies) already takes an argument loadThumbnail have been adapted to have a similar prototype and semantics. I.e. readSaveHeader(in, loadThumbnail, header) now is readSaveHeader(in, header, skipThumbnail). 3. Error handling Engines which previously did not check the return value of readSavegameHeader() (name varies) now do so ensuring that possibly broken savegames (be it a broken thumbnail or something else) don't make it into the GUI launcher list in the first place.
2018-03-23JANITORIAL: Fix formattingAdrian Frühwirth
2018-03-17GRAPHICS: Dont clip in the non-clip version of drawRoundedSquareAlgBastien Bouclet
Fixes missing modern theme GUI dialog borders when using the non-antialiased renderer.
2018-03-16GRAPHICS: Implement LarryScale cel scaling algorithmDaniel Wolf
2018-03-12GUI: Remove the ThemeItem draw queuesBastien Bouclet
Drawing nows happens directly when the Dialog or Widget draw methods are called. This makes it easy to debug why a particular low level draw method was called, by inspecting the call stack. This replaces the notion of "buffering" by two independant ways to control what is drawn and where: - The active layer is used to select whether the foreground or background part of the dialogs are rendered by the draw calls. - The active surface is used to select if the draw calls affect the back buffer or the screen. The foreground layer of the active dialog is drawn directly to the screen. Its background layer is drawn to the back buffer. This way widgets can restore the back buffer in order to update without having to redraw the dialog's background. Dialogs lower in the dialog stack are drawn entirely to the back buffer.
2018-01-27GRAPHICS: Fix drawing clipped key colored bitmapsBastien Bouclet
The previous implementation was not clipping the bottom part of the bitmap.
2017-12-30GRAPHICS: Fix incorrect call to blendFill in drawRoundedSquareShadowClipBastien Bouclet
Was broken in commit 622adff628519c16991b4edacb7283660d1630e1.
2017-12-30GRAPHICS: Speed up drawing of rounded square soft shadowsBastien Bouclet
When drawing a rounded rectangle, first its shadow is drawn, and then the rectangle proper is drawn over it. This optimization skips drawing a shadow rectangle that is entirely occluded by the main rectangle. A quick benchmark shows large improvements to the modern theme GUI draw speed. On a 1 GHz ARMv7 CPU with optimizations enabled, drawing the add game dialog @ 1920x1080 went from 976 ms to 136 ms.
2017-12-03ALL: Remove obsolete register keywordColin Snover
The register keyword was deprecated from the C++11 standard, <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4193.html#809>, and removed from the C++17 standard, <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4340>, so cannot exist in a well-formed C++17 program. It has never done anything in GCC <https://gcc.gnu.org/ml/gcc/2010-05/msg00113.html> and because of the way it is specified in the standard, it is “as meaningful as whitespace” <http://www.drdobbs.com/keywords-that-arent-or-comments-by-anoth/184403859>. The one remaining use of the register keyword is in the DS backend, where it is used to create a local register variable using the non-standard GCC Extended Asm feature. Closes gh-1079.
2017-12-03GRAPHICS: Fix ManagedSurface clear calls when no surface is setPaul Gilbert
2017-11-18COMMON: Add limited support for custom deleters to ScopedPtrColin Snover
Custom deleters of ScopedPtr are not currently fully conforming to C++11's support for custom deleters in std::unique_ptr for the sake of simplicity of implementation. Unlike in the standard library, plain functions and lvalue references are not supported, nor may custom deleters be passed to the constructor at runtime. This can be improved in the future, if necessary, by doing what standard library implementations usually do and creating a Pair class that uses the Empty Base Optimization idiom to avoid extra storage overhead of the deleter instance when it is not needed, as in typical standard library implementations, plus some additional type traits to support the necessary metaprogramming for the different type overloads.