aboutsummaryrefslogtreecommitdiff
path: root/engines/sword25/gfx/renderobject.h
diff options
context:
space:
mode:
authorjohndoe1232013-04-17 12:41:49 +0200
committerjohndoe1232013-04-17 12:41:49 +0200
commit0a0b2f397b95e6e219f2ac8c5b79bbe6300ef432 (patch)
tree4351e3a630eb9dc4e684d5147e1c1499fbf0e98e /engines/sword25/gfx/renderobject.h
parent6548104b96be211b1c93412a05802cc821b1d2e0 (diff)
downloadscummvm-rg350-0a0b2f397b95e6e219f2ac8c5b79bbe6300ef432.tar.gz
scummvm-rg350-0a0b2f397b95e6e219f2ac8c5b79bbe6300ef432.tar.bz2
scummvm-rg350-0a0b2f397b95e6e219f2ac8c5b79bbe6300ef432.zip
SWORD25: Optimize graphics drawing code
Diffstat (limited to 'engines/sword25/gfx/renderobject.h')
-rw-r--r--engines/sword25/gfx/renderobject.h30
1 files changed, 27 insertions, 3 deletions
diff --git a/engines/sword25/gfx/renderobject.h b/engines/sword25/gfx/renderobject.h
index f963ccaeb3..a22893a69e 100644
--- a/engines/sword25/gfx/renderobject.h
+++ b/engines/sword25/gfx/renderobject.h
@@ -53,6 +53,8 @@ namespace Sword25 {
class Kernel;
class RenderObjectManager;
+class RenderObjectQueue;
+class RectangleList;
class Bitmap;
class Animation;
class AnimationTemplate;
@@ -218,7 +220,10 @@ public:
Dieses kann entweder direkt geschehen oder durch den Aufruf von UpdateObjectState() an einem Vorfahren-Objekt.<br>
Diese Methode darf nur von BS_RenderObjectManager aufgerufen werden.
*/
- bool render();
+ bool render(RectangleList *updateRects, const Common::Array<int> &updateRectsMinZ);
+
+ void collectRenderQueue(RenderObjectQueue *renderQueue);
+
/**
@brief Bereitet das Objekt und alle seine Unterobjekte auf einen Rendervorgang vor.
Hierbei werden alle Dirty-Rectangles berechnet und die Renderreihenfolge aktualisiert.
@@ -230,7 +235,7 @@ public:
@brief Löscht alle Kinderobjekte.
*/
void deleteAllChildren();
-
+
// Accessor-Methoden
// -----------------
/**
@@ -299,6 +304,9 @@ public:
int getZ() const {
return _z;
}
+
+ int getAbsoluteZ() const;
+
/**
@brief Gibt die Breite des Objektes zurück.
*/
@@ -352,6 +360,15 @@ public:
return _handle;
}
+ // Get the RenderObjects current version
+ int getVersion() const {
+ return _version;
+ }
+
+ bool isSolid() const {
+ return _isSolid;
+ }
+
// Persistenz-Methoden
// -------------------
virtual bool persist(OutputPersistenceBlock &writer);
@@ -388,6 +405,13 @@ protected:
int _oldZ;
bool _oldVisible;
+ static int _nextGlobalVersion;
+
+ int _version;
+
+ // This should be set to true if the RenderObject is NOT alpha-blended to optimize drawing
+ bool _isSolid;
+
/// Ein Pointer auf den BS_RenderObjektManager, der das Objekt verwaltet.
RenderObjectManager *_managerPtr;
@@ -402,7 +426,7 @@ protected:
@return Gibt false zurück, falls das Rendern fehlgeschlagen ist.
@remark
*/
- virtual bool doRender() = 0; // { return true; }
+ virtual bool doRender(RectangleList *updateRects) = 0; // { return true; }
// RenderObject-Baum Variablen
// ---------------------------