aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/graphics/picture.h
diff options
context:
space:
mode:
authorColin Snover2016-12-31 20:39:57 -0600
committerColin Snover2017-03-27 19:42:31 -0500
commit31daa956d62b39429cb6638ed3fb549ac488833a (patch)
treefa831adefae05d82209b3f565055f7b761ca8691 /engines/sci/graphics/picture.h
parent1298762b7665dc1b7aeedf0271eadfb284309ef1 (diff)
downloadscummvm-rg350-31daa956d62b39429cb6638ed3fb549ac488833a.tar.gz
scummvm-rg350-31daa956d62b39429cb6638ed3fb549ac488833a.tar.bz2
scummvm-rg350-31daa956d62b39429cb6638ed3fb549ac488833a.zip
SCI: Implement bounds-checked reads of game resources
Diffstat (limited to 'engines/sci/graphics/picture.h')
-rw-r--r--engines/sci/graphics/picture.h26
1 files changed, 9 insertions, 17 deletions
diff --git a/engines/sci/graphics/picture.h b/engines/sci/graphics/picture.h
index 1be1ae3004..48f80323b1 100644
--- a/engines/sci/graphics/picture.h
+++ b/engines/sci/graphics/picture.h
@@ -23,6 +23,8 @@
#ifndef SCI_GRAPHICS_PICTURE_H
#define SCI_GRAPHICS_PICTURE_H
+#include "sci/util.h"
+
namespace Sci {
#define SCI_PATTERN_CODE_RECTANGLE 0x10
@@ -54,28 +56,18 @@ public:
GuiResourceId getResourceId();
void draw(int16 animationNr, bool mirroredFlag, bool addToFlag, int16 EGApaletteNo);
-#ifdef ENABLE_SCI32
- int16 getSci32celCount();
- int16 getSci32celY(int16 celNo);
- int16 getSci32celX(int16 celNo);
- int16 getSci32celWidth(int16 celNo);
- int16 getSci32celHeight(int16 celNo);
- int16 getSci32celPriority(int16 celNo);
- void drawSci32Vga(int16 celNo, int16 callerX, int16 callerY, int16 pictureX, int16 pictureY, bool mirrored);
-#endif
-
private:
void initData(GuiResourceId resourceId);
void reset();
void drawSci11Vga();
- void drawCelData(byte *inbuffer, int size, int headerPos, int rlePos, int literalPos, int16 drawX, int16 drawY, int16 pictureX, int16 pictureY, bool isEGA);
- void drawVectorData(byte *data, int size);
+ void drawCelData(const SciSpan<const byte> &inbuffer, int headerPos, int rlePos, int literalPos, int16 drawX, int16 drawY, int16 pictureX, int16 pictureY, bool isEGA);
+ void drawVectorData(const SciSpan<const byte> &data);
bool vectorIsNonOpcode(byte pixel);
- void vectorGetAbsCoords(byte *data, int &curPos, int16 &x, int16 &y);
- void vectorGetAbsCoordsNoMirror(byte *data, int &curPos, int16 &x, int16 &y);
- void vectorGetRelCoords(byte *data, int &curPos, int16 &x, int16 &y);
- void vectorGetRelCoordsMed(byte *data, int &curPos, int16 &x, int16 &y);
- void vectorGetPatternTexture(byte *data, int &curPos, int16 pattern_Code, int16 &pattern_Texture);
+ void vectorGetAbsCoords(const SciSpan<const byte> &data, uint &curPos, int16 &x, int16 &y);
+ void vectorGetAbsCoordsNoMirror(const SciSpan<const byte> &data, uint &curPos, int16 &x, int16 &y);
+ void vectorGetRelCoords(const SciSpan<const byte> &data, uint &curPos, int16 &x, int16 &y);
+ void vectorGetRelCoordsMed(const SciSpan<const byte> &data, uint &curPos, int16 &x, int16 &y);
+ void vectorGetPatternTexture(const SciSpan<const byte> &data, uint &curPos, int16 pattern_Code, int16 &pattern_Texture);
void vectorFloodFill(int16 x, int16 y, byte color, byte prio, byte control);
void vectorPattern(int16 x, int16 y, byte pic_color, byte pic_priority, byte pic_control, byte code, byte texture);
void vectorPatternBox(Common::Rect box, byte color, byte prio, byte control);