aboutsummaryrefslogtreecommitdiff
path: root/graphics
AgeCommit message (Collapse)Author
2014-10-19GRAPHICS: Silence an MSVC warningFilippos Karapetis
2014-09-07Merge pull request #500 from lordhoto/ttf-improvementsJohannes Schickel
Improve TTF Rendering (includes Font API changes).
2014-09-03GRAPHICS: Allow negative xOffset in TTF.Johannes Schickel
This should improve the visual looks of many fonts. However, it might result in the first line of the glyph to be drawn left of the position specified in drawChar.
2014-09-03GRAPHICS: Allow to query the bounding box of chars/strings drawn with Font API.Johannes Schickel
2014-08-29GRAPHICS: Fix some Doxygen comments that seem wrong.Einar Johan Trøan Sømåen
2014-08-17GRAPHICS: Improve color bit depth conversionMatthew Hoops
Data is no longer truncated it so should be more accurate. See pull request #486 for more info.
2014-06-23GRAPHICS: Added BE/LE to TS_ macrosEugene Sandulenko
2014-06-17GRAPHICS: Rename BS_ to TS_ (for TransparentSurface)Eugene Sandulenko
2014-06-15GRAPHICS: Fix compilation for AmigaEugene Sandulenko
2014-06-15Merge pull request #466 from sev-/transparent-surfaceEugene Sandulenko
COMMON: Move TransparentSurface to common code
2014-06-15COMMON: Copy TransparentSurface from Wintermute engine to common codeEugene Sandulenko
2014-06-09GRAPHICS: Allow client code to specify TTF render mode.Johannes Schickel
This allows clients to use the default FreeType2 render mode instead of light. We really only use light as default because that's what looks best with the font we use in our GUI right now (which is the same reason why formerly light was always used in non-monochrome mode).
2014-05-27GRAPHICS: colour -> color in VectorRendererSpec code.Johannes Schickel
2014-03-06GRAPHICS: Manually specify function alignment in ARM assembly.Johannes Schickel
2014-02-28IMAGE: Move all ImageDecoders to image/Matthew Hoops
2014-02-18GRAPHICS: Make GPL headers consistent in themselves.Johannes Schickel
2014-01-15ALL: Remove optimization unstable code on checking for null after new.D G Turner
These issues were identified by the STACK tool. By default, the C++ new operator will throw an exception on allocation failure, rather than returning a null pointer. The result is that testing the returned pointer for null is redundant and _may_ be removed by the compiler. This is thus optimization unstable and may result in incorrect behaviour at runtime. However, we do not use exceptions as they are not supported by all compilers and may be disabled. To make this stable without removing the null check, you could qualify the new operator call with std::nothrow to indicate that this should return a null, rather than throwing an exception. However, using (std::nothrow) was not desirable due to the Symbian toolchain lacking a <new> header. A global solution to this was also not easy by redefining "new" as "new (std::nothrow)" due to custom constructors in NDS toolchain and various common classes. Also, this would then need explicit checks for OOM adding to all new usages as per C malloc which is untidy. For now to remove this optimisation unstable code is best as it is likely to not be present anyway, and OOM will cause a system library exception instead, even without exceptions enabled in the application code.
2014-01-10GRAPHICS: Fix dest alpha formula in blendPixelPtrMarcus Comstedt
The original alpha computation formula had a problem: If something was drawn on top of a pixel that was already fully opaque, there would be an overflow in the computed alpha, and the destination alpha would be truncated to 0 (fully transparent). In commit 264ba4a9 this formula was replaced with another one, which did not have overflows but also was not correct. This commits introduces a new formula, where the rounding errors have been turned in another direction; drawing a fully opaque pixel on top of a transparent one would result in a pixel which is almost, but not fully, opaque. However, this is no problem in practice, since drawing fully opaque pixels can be achieved with much less code as a special case, so add that (also improves rendering speed).
2014-01-10GRAPHICS: Fix computation of addA in darkenFill()Marcus Comstedt
The old computation had rounding issues, causing alpha to leak into the red (usually) component. There's a much easier way to compute it that does not lead to such problems: What should really happen is that the two top bits of the A component should be set to 1 (thus adding 75% alpha). So compute it that way for speed and precision.
2013-12-13GRAPHICS: Minor readability fixes to drawBevelSquareAlg method.D G Turner
No functional change.
2013-12-08GRAPHICS: Document loadTTFFont a bit.Johannes Schickel
2013-12-01GRAPHICS: Initialize variable. CID 1133708Eugene Sandulenko
2013-11-27GRAPHICS: Fix SharedPtrSurfaceDeleter for nullptr inputs.Johannes Schickel
2013-11-23GRAPHICS: Allow Font to accept U32String as strings.Johannes Schickel
2013-11-23GRAPHICS: Allow TTFFont to cache glyphs when required.Johannes Schickel
This should allow TTFFont to display UTF-32 characters from fonts.
2013-11-23GRAPHICS: Get rid of _glyphSlots in TTFFont.Johannes Schickel
2013-11-23GRAPHICS: Let Font take uint32 as character codes.Johannes Schickel
This is required to support UTF-32 strings but does not make them work automatically!
2013-11-12GRAPHICS: Set PNG alpha bits to 0 if there's no alpha present.Alyssa Milburn
This fixes the color-keying checks in Wintermute for PNG images.
2013-10-26ALL: Mark off common code used by ZVisionMatthew Hoops
2013-10-26GRAPHICS: do not reset the extra parameters of IFFDecoder on destroy().peres
The two properties that control pixel packing and the size of the surface need to be preserved for loadStream() to work correctly. They are now under complete responsibility of the client.
2013-10-26Revert "GRAPHICS: do not clear the internal state of IFFDecoder on ↵peres
loadStream()." This reverts commit 92c1ff31d6d8d78e58caa4d123ceb0fea43a48ed.
2013-10-26GRAPHICS: Have TGA's loadStream() call destroy()Matthew Hoops
2013-10-26GRAPHICS: Clarify implicit destroy() usageMatthew Hoops
2013-10-26GRAPHICS: do not clear the internal state of IFFDecoder on loadStream().peres
This decoder needs to keep track of client parameters that control how the pixels are going to be packaged, so the responsibility for clearing the state has been moved on the client (using the destroy() method on ImageDecoder). As no client uses the IFFDecoder for more than one image at a time, this change does not require updates to the engines. The only effect is on Parallaction (BRA-Amiga), which can now control the way pixels are packaged in mask and path bitmaps.
2013-10-17Merge branch 'zvision'Willem Jan Palenstijn
This merges pull request 395 for the ZVision engine developed during GSoC2013.
2013-09-30GRAPHICS: Fix uninitialised field in PNG decoder. CID 1002280.D G Turner
2013-09-30GRAPHICS: Fix uninitialized cursor visibility variable. CID 1002283.D G Turner
The default at cursor construction has been set to not visible. This now requires an explicit call to setVisible(true) to show the cursor, but a basic test shows that this seems to be OK and engines which fail to do this would have been intermittently broken before.
2013-09-29Merge branch 'master' into zvisionRichieSams
2013-09-22GRAPHICS: Remove variable shadowingRichieSams
2013-09-16Merge pull request #376 from lordhoto/libjpegJohannes Schickel
GRAPHICS: Implement JPEGDecoder based on libjpeg.
2013-09-16GRAPHICS: Add some paranoia asserts in JPEGDecoder.Johannes Schickel
2013-09-16GRAPHICS: Make JPEGDecoder request RGB output from libjpeg by default.Johannes Schickel
This fixes loading of JPEG files which contain RGB color space instead of YUV. It is a pretty odd extension of JPEG files by Adobe which is indicated by this: http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/JPEG.html#Adobe To still support Groovie's need for YUV data I added some possibility to request direct YUV output.
2013-09-16GRAPHICS: Implement JPEGDecoder based on libjpeg.Johannes Schickel
2013-09-12ZVISION: Add wrapper function for copyRectToSurfaceRichieSams
Also rename some arguments to make them more clear
2013-09-24Merge branch 'master' into zvisionWillem Jan Palenstijn
Conflicts: video/avi_decoder.cpp
2013-08-22Merge pull request #361 from rundfunk47/guiimprovementsEugene Sandulenko
GUI: Various GUI Improvements
2013-08-22GRAPHICS: Increase robustness of VectorRendererSpec::drawString.Johannes Schickel
2013-08-22GRAPHICS: Unify drawing paths in VectorRendererSpec::drawString.Johannes Schickel
Formerly, the behavior between when a drawable area was specified and when not was different in a sense which is not expected. For example, when an empty textDrawableArea was passed and the text could be drawn outside the 'area' specified. While when a textDrawableArea covering the whole screen was passed the text was clipped inside 'area'. Now, the code does follow the latter logic in both cases. I am not sure whether this will cause any issues, but a quick check of the launcher and options menu didn't reveal anything...
2013-08-22GRAPHICS: Simplify VectorRendererSpec::drawString.Johannes Schickel
This removes the two additional copy steps for rendering when a drawable text area is specified. Instead it uses Surface::getSubArea to draw directly onto _activeSurface.
2013-08-19GRAPHICS: Add missing "break"s in switch, CID 1063214Torbjörn Andersson
This won't actually make any difference, since the fall through would do nothing and then reach the break in the default case. But I think it's less error-prone this way if the code is ever modified.