Commit Graph

1276 Commits

Author SHA1 Message Date
Johannes Schickel
af13b74d02 GRAPHICS: Unify drawing paths in VectorRendererSpec::drawString.
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-22 11:46:49 +02:00
Johannes Schickel
81ae06cae3 GRAPHICS: Simplify VectorRendererSpec::drawString.
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-22 11:46:48 +02:00
Torbjörn Andersson
8c2bbb09a8 GRAPHICS: Add missing "break"s in switch, CID 1063214
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.
2013-08-19 19:34:41 +02:00
Narek Mailian
6fa3c7751f GRAPHICS: Gradient blending on borders of rounded squares 2013-08-16 20:54:10 +02:00
Narek Mailian
52ee92625f GRAPHICS: Change soft-shadow calculation to not use doubles 2013-08-16 20:54:09 +02:00
Narek Mailian
b91e10f931 GRAPHICS: Shadows on tabs 2013-08-16 20:54:09 +02:00
Narek Mailian
5c00dbbd2a GRAPHICS: Add support for Soft Shadows with rounded squares 2013-08-16 20:54:08 +02:00
Narek Mailian
887a99e211 GRAPHICS: Added changes and improved code from inisider/scummvm (partial text)
Includes code from https://github.com/inisider/scummvm/ , which has been
squashed and bugfixed
2013-08-16 20:54:08 +02:00
richiesams
7e8e9bf3d1 GRAPHICS: Create copyRectToSurface member function 2013-08-15 14:31:21 -05:00
Johannes Schickel
a2a5d42a58 GRAPHICS: Fix warnings about mismatching format arguments. 2013-08-12 16:43:35 +02:00
Narek Mailian
1f1d35bd3d GRAPHICS: Allow VectorRenderer and ThemeEngine to init with 4BPP 2013-08-08 08:35:08 +02:00
Narek Mailian
f545a2f08f GUI: Change name of GUI-renderers to remove "16-bit" 2013-08-08 08:35:08 +02:00
Narek Mailian
ece8b7fb65 GRAPHICS: Fix fonts/bdf.cpp to allow for 32bpp to be used 2013-08-08 08:27:11 +02:00
Narek Mailian
1d40dca7a0 GRAPHICS: Add error-checking in blendPixelPtr for invalid BPPs 2013-08-08 08:27:11 +02:00
Johannes Schickel
0f59009e6e GRAPHICS: Fix VectorRendererSpec for RGBA8888.
Formerly values in the gradient and blending code overflowed and thus caused
incorrect colors. Now there's some special case for 32bpp modes, which needs
slightly more operations but assures a correct output.
2013-08-08 08:27:11 +02:00
Torbjörn Andersson
b8850522b6 GRAPHICS: Fix incorrect parameter order for getBasePtr.
This caused createThumbnail() to crash, e.g. when saving in the
Kyrandia engine. Probably other engines as well.
2013-08-08 06:55:17 +02:00
Johannes Schickel
7f8308e0eb Merge pull request #365 from lordhoto/protected-pixels
Make Graphics::Surface::pixels protected.
2013-08-07 12:24:59 -07:00
Johannes Schickel
363a5a95cf GRAPHICS: Make Surface::pixels protected. 2013-08-06 03:51:49 +02:00
Johannes Schickel
604e1b0070 GRAPHICS: Fix typo. 2013-08-04 01:01:15 +02:00
Johannes Schickel
260ec7a430 GRAPHICS: Add two new methods to change 'pixels' of a Surface.
One method is a simpler setter for 'pixels'. The other one can be used to
setup a Surface with custom data.
2013-08-03 04:02:54 +02:00
Johannes Schickel
5111746911 GRAPHICS: Take advantage of Surface::getPixels. 2013-08-03 04:02:49 +02:00
Johannes Schickel
f03dc05847 GRAPHICS: Add an easy way to query 'pixels' of Surface.
This introduced getPixels which is a shortcut for getBasePtr(0, 0).
2013-08-03 04:02:49 +02:00
Johannes Schickel
dbef9fef3b GRAPHICS: Prefer getBasePtr over direct Surface::pixels access. 2013-08-03 04:02:49 +02:00
Johannes Schickel
affb7c3cb3 GRAPHICS: Prefer getBasePtr over direct Surface::pixels access. 2013-08-03 02:52:34 +02:00
Johannes Schickel
058c22ddaa GRAPHICS: Allow to query a Surface describing a subarea in Surface. 2013-08-02 18:47:00 +02:00
Johannes Schickel
ff451ba2dc GRAPHICS: Slight formatting fixes in thumbnail_intern.cpp. 2013-08-02 17:48:31 +02:00
Johannes Schickel
9a787fa586 GRAPHICS: Silence conversion warnings by using an explicit cast. 2013-08-02 17:33:13 +02:00
Johannes Schickel
9db17152c1 GRAPHICS: Make Surface::copyFrom work for any src pitch.
Formerly we assumed that the newly created surface has the same pitch as the
source surface. This is a assumption that might be invalid (for example in
case of the Surface returned by OSystem::lockScreen.)
2013-08-01 23:57:10 +02:00
Johannes Schickel
adf8cee449 GRAPHICS: Allow arbitrary input sizes for thumbnail scaling.
Instead of a fixed 1/2 or 1/4 scaling we do a two step scaling now:
1) Scale image to width < 160*2 && height < [100,120]*2 with 1/4 or 1/2
   nearest-neighbor.
2) Use a bilinear scaler to scale aspect preserving to 160x[100,120]

This fixes bug #3614568 "GRAPHICS: Odd thumbnail sizes crash".
2013-07-13 01:57:23 +02:00
Johannes Schickel
e9bb9ddcf5 GRAPHICS: Be more robust with broken/unsupported thumbnail headers.
This fixes future issues like bug #3614654:
"ALL: ScummVM 1.5.0 can't read newer saved games".

There are a few behavior changes introduced with this commit:

- checkThumbnailHeader will now also report the presence of
  unsupported/broken (but skippable) headers.

- skipThumbnail will also try to skip the data for broken/unsupported
  thumbnail data.

- loadThumbnail will skip over broken/unsupported thumbnail data but still
  return 0 in this case.
2013-07-12 22:54:53 +02:00
Eugene Sandulenko
49210a803a Merge pull request #331 from sev-/gsoc2012-eventsrecorder
GSoC2012: Event Recorder (reworked)
2013-07-04 04:58:54 -07:00
Matthew Hoops
7445459c9d GRAPHICS: Cleanup the YUV to RGB usage documentation 2013-06-30 17:56:36 -04:00
Eugene Sandulenko
f59512c47e RECORDER: Implement Events Recorder 2013-05-17 00:18:09 +03:00
Matthew Hoops
2d6b66ef41 GRAPHICS: Fix quantization table id check 2013-04-16 12:00:39 -04:00
Einar Johan Trøan Sømåen
0db8a0b3b1 GRAPHICS: Let JPEGs pixelformat state 0 alpha bits. 2013-02-01 01:54:39 +01:00
Johannes Schickel
b4d0a8ba66 JANITORIAL: Enforce "} // End of namespace" with a single space after }. 2013-01-26 19:38:02 +01:00
Matthew Hoops
6ae97cdfbe GRAPHICS: Modify the JFIF version warning
v1.02 images should only differ with the thumbnail from v1.01, and should be handled correctly by our decoder.
2013-01-26 11:56:13 -05:00
Johannes Schickel
2ef500ce81 Merge pull request #256 from lordhoto/thumbnail-pixelformat
GRAPHICS: Serialize PixelFormat for thumbnails and allow 4Bpp surfaces.
2013-01-26 05:37:32 -08:00
Einar Johan Trøan Sømåen
5d4d65d6d9 JANITORIAL: Fix ){ -> ) { 2013-01-24 20:15:13 +01:00
Einar Johan Trøan Sømåen
58777682fe GRAPHICS: Fix leak in PNG-decoder. 2013-01-24 17:39:16 +01:00
Tomas Jakobsson
befa207bfa GRAPHICS: Delete iff.cpp and iff.h since all ILBM and PBM decoding is handled by IFFDecoder now 2013-01-06 20:04:50 +01:00
Tomas Jakobsson
fe2b4b39f7 GRAPHICS: New IFFDecoder that decodes ILBM and PBM images 2013-01-06 20:04:42 +01:00
D G Turner
0b72bd2dea GRAPHICS: Add ability to override outputPitch to ILBM decoder.
This allows loading an image into a buffer of a larger width.

Thanks to Tomaz^ for this patch.
2012-12-26 02:54:18 +00:00
D G Turner
5fecf5bcb5 GRAPHICS: Allow ILBM bitmap loading for images with 6 planes.
Thanks to Tomaz^ for this.
2012-12-26 02:09:33 +00:00
D G Turner
0eb68f6c97 GRAPHICS: Add support for ILBM files containing uncompressed data.
Thanks to Tomaz^ for this patch.
2012-12-26 00:52:30 +00:00
Einar Johan Trøan Sømåen
1ef63578bb GRAPHICS: Mark decoders used by Wintermute as such. 2012-10-23 21:48:27 +02:00
David-John Willis
e7921438cd GRAPHICS: Rename NEON_ASPECT_CORRECTOR to USE_ARM_NEON_ASPECT_CORRECTOR
* This better matches other ARM codepaths.
* Also remove #ifdef OPENPANDORA as moved to configure.
2012-10-21 18:43:07 +01:00
Matthew Hoops
c645f7dc93 GRAPHICS: Make failing to find the PICT header return false from loadStream 2012-10-16 22:15:09 -04:00
Johannes Schickel
a5bce74635 GRAPHICS: Fix compilation of conversion.cpp on motomagx.
Using plain "inline" instead of "FORCEINLINE" allows the compiler to continue
even when it fails to inline crossBlitLogic/crossBlitLogic3BppSource. The
impact of other systems now not inlining the functions anymore is hopefully
small enough to not cause any problems.
2012-10-09 23:32:51 +02:00
Johannes Schickel
c2971374cd Merge pull request #257 from lordhoto/graphics-conversion
Extend crossBlit for abitrary (in-place) conversions and add a in-place conversion to Surface
2012-10-08 14:18:33 -07:00
Johannes Schickel
89abab97e3 JANITORIAL: Remove trailing whitespaces.
Powered by:
git ls-files "*.cpp" "*.h" "*.m" "*.mm" | xargs sed -i -e 's/[ \t]*$//'
2012-09-26 04:17:55 +02:00
Johannes Schickel
dc6b98f64c GRAPHICS: Slight formatting fixes in aspect.cpp. 2012-09-25 15:16:54 +02:00
clone2727
2e4ee0b2d0 Merge pull request #275 from clone2727/pegasus
Pegasus engine (The Journeyman Project: Pegasus Prime)
2012-09-20 13:17:39 -07:00
Matthew Hoops
0677871ea9 GRAPHICS: Update YUV410 conversion docs 2012-09-19 16:00:27 -04:00
Matthew Hoops
09269fce8c GRAPHICS: Implement different luminance ranges
Bink and Theora are now much improved
2012-09-18 16:50:01 -04:00
Matthew Hoops
893a2b37ff GRAPHICS: Rework YUV->RGB code a bit 2012-09-17 19:30:46 -04:00
Bertrand Augereau
4c02e19742 SCALER: Neon code for aspect correction for OpenPandora
It gains 35% on the first function of the profiling on Indy IV
It is now nearly memory-bound (~10%) so it might not be needed to schedule the code better than this
2012-09-17 22:13:34 +02:00
Matthew Hoops
7759f47607 GRAPHICS: Fix BMP palette color count with bpp != 8 2012-09-17 12:35:17 -04:00
Filippos Karapetis
c0babb010a Merge pull request #278 from bluegr/pcxdecoder
GRAPHICS: Add a PCX decoder
2012-09-16 14:06:42 -07:00
Einar Johan Trøan Sømåen
25aa19b272 GRAPHICS: Reinsert attributeBits as a comment to the TGA-decoder 2012-09-15 18:08:34 +02:00
Einar Johan Trøan Sømåen
cffda7710c GRAPHICS: Force alphaBits to 8 for 32bpp TGAs for now 2012-09-15 17:57:08 +02:00
Matthew Hoops
d5ed8b1901 Merge remote branch 'upstream/master' into pegasus
Conflicts:
	AUTHORS
2012-09-12 20:18:13 -04:00
Filippos Karapetis
ccccb392b5 GRAPHICS: Add a common PCX image decoder 2012-09-13 01:49:29 +03:00
Matthew Hoops
ed2be9d873 GRAPHICS: Fix ImageDecoder inconsistency with getPalette()
Per LordHoto's suggestion
2012-09-09 17:20:07 -04:00
Filippos Karapetis
1f11ce6df2 PNG: call png_set_interlace_handling() before calling png_read_update_info()
This matches the documentation, information from the PNG bug tracker and the
behavior of example decoders off the net. It fixes warnings thrown from the PNG
decoder
2012-09-06 01:35:58 +03:00
Matthew Hoops
f35e820e9f Merge remote branch 'upstream/master' into pegasus 2012-09-05 11:45:25 -04:00
Bertrand Augereau
5f6a98cb5b SCALER: No need to inline interpolate5Line, it just bloats stretch200To240 for nothing 2012-09-03 01:34:41 +02:00
Matthew Hoops
2f9b1b67b0 ALL: Mark off some things as used by Pegasus 2012-08-31 22:26:02 -04:00
Matthew Hoops
790a74ab9d Merge remote branch 'upstream/master' into pegasus 2012-08-31 21:58:58 -04:00
Bertrand Augereau
10a947a0be GRAPHICS: Scope reduction of the sometimes unused alpha component in TGADecoder::readHeader 2012-08-30 18:32:27 +02:00
Bertrand Augereau
3b4d713ba1 GRAPHICS: Undefined behaviour/warnings removal in the TGA decoder 2012-08-30 18:13:00 +02:00
Johannes Schickel
f87154def8 GRAPHICS: Slight formatting change for consistency. 2012-08-29 15:59:15 +02:00
Johannes Schickel
f189d8a541 GRAPHICS: Remove extra semicolon. 2012-08-29 15:58:55 +02:00
Johannes Schickel
933726a7e8 Merge pull request #263 from somaen/tgaloader
GRAPHICS: Add in a TGA-decoder
2012-08-29 06:58:22 -07:00
Einar Johan Trøan Sømåen
47a7df2d0f GRAPHICS: Add in a TGA-decoder 2012-08-29 14:05:54 +02:00
Johannes Schickel
eeb3959259 GRAPHICS: Add an in-place Surface PixelFormat conversion. 2012-08-28 02:27:48 +02:00
Johannes Schickel
e8cf0adf95 GRAPHICS: Slight cleanup in crossBlit code. 2012-08-28 02:27:48 +02:00
Johannes Schickel
a92a509ac8 GRAPHICS: Allow in-place conversion with any color formats in crossBlit. 2012-08-28 02:27:48 +02:00
Johannes Schickel
0d78d46a0e GRAPHICS: Remove crossBlit's dstBpp >= srcBpp limitation. 2012-08-28 02:27:48 +02:00
Johannes Schickel
3a55adbf5e GRAPHICS: Fix a bug in crossBlit with 3Bpp source.
Formerly it added 2 to the source pixel pointer instead of 3.
2012-08-28 02:27:48 +02:00
Johannes Schickel
a0f46e9396 GRAPHICS: Remove 3Bpp destination support in crossBlit. 2012-08-28 02:27:47 +02:00
Johannes Schickel
ea1bcaad33 GRAPHICS: Refactor crossBlit logic into a template. 2012-08-28 02:27:47 +02:00
Johannes Schickel
05d24e892c GRAPHICS: Clean up crossBlit a bit. 2012-08-28 02:27:47 +02:00
Matthew Hoops
bb1e60e8b2 Merge remote branch 'upstream/master' into pegasus
Conflicts:
	AUTHORS
	devtools/credits.pl
	gui/credits.h
2012-08-26 16:12:25 -04:00
Johannes Schickel
5df8c99768 GPRAHICS: Slight cleanup in png.cpp.
This adds an explanation why we use FORBIDDEN_SYMBOL_ALLOW_ALL and removes
some trailing whitespaces.
2012-08-21 02:19:51 +02:00
Johannes Schickel
05eb6eecfc Merge pull request #262 from somaen/pngwithlibpng
GRAPHICS: Reimplement the PNG-decoder using libpng
2012-08-20 17:12:52 -07:00
Einar Johan Trøan Sømåen
af05b1b80e GRAPHICS: Reimplement the PNG-decoder using libpng 2012-08-20 21:14:59 +02:00
Einar Johan Trøan Sømåen
8982026661 GRAPHICS: Add support for 32bpp BMPs 2012-08-13 02:31:34 +02:00
Matthew Hoops
c839fd50b5 GRAPHICS: Clarify format of the palette in ImageDecoder 2012-08-12 17:44:23 -04:00
Johannes Schickel
b4196e48b1 GRAPHICS: Add a DPI parameter to loadTTFFont.
Will be used by WME.
2012-08-09 03:13:00 +02:00
Johannes Schickel
50a93c2e71 GRAPHICS: Small formatting fixes in iff.cpp. 2012-07-25 21:07:19 +02:00
Johannes Schickel
f1a1938253 GRAPHICS: Serialize PixelFormat for thumbnails and allow 4Bpp surfaces.
This allows any 2Bpp/4Bpp Surfaces to be written via saveThumbnail
and loadThumbnail now. It furthermore will preserve the loaded Surface
in loadThumbnail.
2012-07-14 03:07:48 +02:00
Matthew Hoops
91efe792d5 Merge remote branch 'upstream/master' into pegasus 2012-06-24 09:37:53 -04:00
Johannes Schickel
82a553a12c Merge pull request #247 from clone2727/pixelformat-argb-fix
GRAPHICS: Fix colorToARGB's alpha value when no alpha channel is present
2012-06-20 09:24:08 -07:00
Matthew Hoops
625f6cc716 Merge remote branch 'upstream/master' into pegasus 2012-06-16 01:43:32 -04:00
Matthew Hoops
984e0012d9 GRAPHICS: Fix colorToARGB's alpha value when no alpha channel is present 2012-06-15 23:11:28 -04:00
Johannes Schickel
aec9b9e22a ALL: Let overlay related methods in OSystem take a void * and use a proper pitch values.
This is a first step to get rid of OverlayColor, which is a requirement for
proper 4Bpp overlay support.
2012-06-16 04:17:14 +02:00
Johannes Schickel
e1e1f01b87 GRAPHICS: Let CursorMan's cursor functions take "const void *" buffers. 2012-06-16 03:28:42 +02:00
Johannes Schickel
0075fa2f98 GRAPHICS: Replace OverlayColor with uint16 in scaler code.
Scalers are actually fixed at 2Bpp right now and not at the
depth of OverlayColor.
2012-06-12 04:18:59 +02:00
Johannes Schickel
a401f0a19e ALL: Replace cursorTargetScale in OSystem API with a simple "do not scale" logic.
All uses of the old target scale API actually wanted to disallow scaling of
the mouse cursor. This commit adapts our API to this and thus simplifies
backend implementations.

Some backends, most notable the Wii and Android, did some implementation of
the cursor target scale, which I didn't adapt yet. I added a TODO for the
porters there.
2012-06-03 02:02:57 +02:00