ScummVM API documentation
Sword25::RenderObject Class Referenceabstract

Dieses ist die Klasse die sämtliche sichtbaren Objekte beschreibt. More...

#include <renderobject.h>

Inheritance diagram for Sword25::RenderObject:
Sword25::Bitmap Sword25::Panel Sword25::RootRenderObject Sword25::Text Sword25::TimedRenderObject Sword25::DynamicBitmap Sword25::StaticBitmap Sword25::Animation

Public Types

enum  TYPES {
  TYPE_ROOT, TYPE_STATICBITMAP, TYPE_DYNAMICBITMAP, TYPE_ANIMATION,
  TYPE_PANEL, TYPE_TEXT, TYPE_UNKNOWN
}
 

Public Member Functions

RenderObjectPtr< BitmapaddBitmap (const Common::String &fileName)
 Erzeugt ein Bitmap als Kinderobjekt des Renderobjektes. More...
 
RenderObjectPtr< BitmapaddDynamicBitmap (uint width, uint height)
 Erzeugt ein veränderbares Bitmap als Kinderobjekt des Renderobjektes. More...
 
RenderObjectPtr< AnimationaddAnimation (const Common::String &fileName)
 Erzeugt eine Animation auf Basis einer Animationsdatei als Kinderobjekt des Renderobjektes. More...
 
RenderObjectPtr< AnimationaddAnimation (const AnimationTemplate &animationTemplate)
 Erzeugt eine Animation auf Basis eines Animationstemplate als Kinderobjekt des Renderobjektes. More...
 
RenderObjectPtr< PaneladdPanel (int width, int height, uint color=BS_RGB(0, 0, 0))
 Erzeugt ein neues Farbpanel als Kinderobjekt des Renderobjektes. More...
 
RenderObjectPtr< TextaddText (const Common::String &font, const Common::String &text="")
 Erzeugt ein Textobjekt als Kinderobjekt des Renderobjektes. More...
 
RenderObjectPtr< BitmaptoBitmap ()
 Castet das Objekt zu einem BS_Bitmap-Objekt wenn zulässig. More...
 
RenderObjectPtr< AnimationtoAnimation ()
 Castet das Objekt zu einem BS_Animation-Objekt wenn zulässig. More...
 
RenderObjectPtr< PaneltoPanel ()
 Castet das Objekt zu einem BS_Panel-Objekt wenn zulässig. More...
 
RenderObjectPtr< TexttoText ()
 Castet das Object zu einem BS_Text-Objekt wenn zulässig. More...
 
 RenderObject (RenderObjectPtr< RenderObject > pParent, TYPES type, uint handle=0)
 Erzeugt ein neues BS_RenderObject. More...
 
void preRender (RenderObjectQueue *renderQueue)
 
bool render (RectangleList *updateRects, const Common::Array< int > &updateRectsMinZ)
 Rendert des Objekt und alle seine Unterobjekte. More...
 
bool updateObjectState ()
 Bereitet das Objekt und alle seine Unterobjekte auf einen Rendervorgang vor. Hierbei werden alle Dirty-Rectangles berechnet und die Renderreihenfolge aktualisiert. More...
 
void deleteAllChildren ()
 Löscht alle Kinderobjekte.
 
virtual void setPos (int x, int y)
 Setzt die Position des Objektes. More...
 
virtual void setX (int x)
 Setzt die Position des Objektes auf der X-Achse. More...
 
virtual void setY (int y)
 Setzt die Position des Objektes auf der Y-Achse. More...
 
virtual void setZ (int z)
 Setzt den Z-Wert des Objektes. More...
 
virtual void setVisible (bool visible)
 Setzt die Sichtbarkeit eine Objektes. More...
 
virtual int getX () const
 Gibt die Position des Objektes auf der X-Achse relativ zum Elternobjekt zurück.
 
virtual int getY () const
 Gibt die Position des Objektes auf der Y-Achse relativ zum Elternobjekt zurück.
 
virtual int getAbsoluteX () const
 Gibt die absolute Position des Objektes auf der X-Achse zurück.
 
virtual int getAbsoluteY () const
 Gibt die absolute Position des Objektes auf der Y-Achse zurück.
 
int getZ () const
 Gibt den Z-Wert des Objektes relativ zum Elternobjekt zurück. More...
 
int getAbsoluteZ () const
 
int getWidth () const
 Gibt die Breite des Objektes zurück.
 
int getHeight () const
 Gibt die Höhe des Objektes zurück.
 
bool isVisible () const
 Gibt den Sichtbarkeitszustand des Objektes zurück. More...
 
TYPES getType () const
 Gibt den Typ des Objektes zurück.
 
bool getInitSuccess () const
 Gibt zurück, ob das Objekt erfolgreich initialisiert wurde. More...
 
const Common::RectgetBbox () const
 Gibt die Bounding-Box des Objektes zurück. More...
 
void forceRefresh ()
 Stellt sicher, dass das Objekt im nächsten Frame neu gezeichnet wird.
 
uint32 getHandle () const
 Gibt das Handle des Objekte zurück.
 
int getVersion () const
 
bool isSolid () const
 
virtual bool persist (OutputPersistenceBlock &writer)
 
virtual bool unpersist (InputPersistenceBlock &reader)
 
bool persistChildren (OutputPersistenceBlock &writer)
 
bool unpersistChildren (InputPersistenceBlock &reader)
 
RenderObjectPtr< RenderObjectrecreatePersistedRenderObject (InputPersistenceBlock &reader)
 

Protected Types

typedef Common::List< RenderObjectPtr< RenderObject > > RENDEROBJECT_LIST
 
typedef Common::List< RenderObjectPtr< RenderObject > >::iterator RENDEROBJECT_ITER
 

Protected Member Functions

virtual bool doRender (RectangleList *updateRects)=0
 Einschubmethode, die den tatsächlichen Redervorgang durchführt. More...
 
RenderObjectManagergetManager () const
 Gibt einen Pointer auf den BS_RenderObjektManager zurück, der das Objekt verwaltet.
 
bool addObject (RenderObjectPtr< RenderObject > pObject)
 Fügt dem Objekt ein neues Kinderobjekt hinzu. More...
 

Protected Attributes

int32 _x
 Die X-Position des Objektes relativ zum Eltern-Objekt.
 
int32 _y
 Die Y-Position des Objektes relativ zum Eltern-Objekt.
 
int32 _z
 Der Z-Wert des Objektes relativ zum Eltern-Objekt.
 
int32 _absoluteX
 Die absolute X-Position des Objektes.
 
int32 _absoluteY
 Die absolute Y-Position des Objektes.
 
int32 _absoluteZ
 
int32 _width
 Die Breite des Objektes.
 
int32 _height
 Die Höhe des Objektes.
 
bool _visible
 Ist true, wenn das Objekt sichtbar ist.
 
bool _childChanged
 Ist true, wenn sich ein Kinderobjekt verändert hat.
 
TYPES _type
 Der Objekttyp.
 
bool _initSuccess
 Ist true, wenn Objekt erfolgreich intialisiert werden konnte.
 
Common::Rect _bbox
 Die Bounding-Box des Objektes in Bildschirmkoordinaten.
 
Common::Rect _oldBbox
 
int32 _oldX
 
int32 _oldY
 
int32 _oldZ
 
bool _oldVisible
 
int32 _version
 
bool _isSolid
 
RenderObjectManager_managerPtr
 Ein Pointer auf den BS_RenderObjektManager, der das Objekt verwaltet.
 
RenderObjectPtr< RenderObject_parentPtr
 Ein Pointer auf das Elternobjekt.
 
RENDEROBJECT_LIST _children
 Die Liste der Kinderobjekte nach der Renderreihenfolge geordnet.
 

Static Protected Attributes

static int _nextGlobalVersion
 

Detailed Description

Dieses ist die Klasse die sämtliche sichtbaren Objekte beschreibt.

Alle anderen sichtbaren Objekte müssen von ihr abgeleitet werden. Diese Klasse erledigt Aufgaben wie: minimales Neuzeichnen, Renderreihenfolge, Objekthierachie. Alle BS_RenderObject Instanzen werden von einem BS_RenderObjektManager in einem Baum verwaltet.

Member Enumeration Documentation

◆ TYPES

Enumerator
TYPE_ROOT 

Das Wurzelobjekt. Siehe BS_RenderObjectManager.

TYPE_STATICBITMAP 

Ein Image. Siehe BS_Bitmap.

TYPE_ANIMATION 

Eine Animation. Siehe BS_Animation.

TYPE_PANEL 

Eine farbige Fläche. Siehe BS_Panel.

TYPE_TEXT 

Ein Text. Siehe BS_Text.

TYPE_UNKNOWN 

Ein unbekannter Objekttyp. Diesen Typ sollte kein Renderobjekt annehmen.

Constructor & Destructor Documentation

◆ RenderObject()

Sword25::RenderObject::RenderObject ( RenderObjectPtr< RenderObject pParent,
TYPES  type,
uint  handle = 0 
)

Erzeugt ein neues BS_RenderObject.

Parameters
pKernelein Pointer auf den Kernel
pParentein Pointer auf das Elternobjekt des neuen Objektes im Objektbaum.
Der Pointer darf nicht NULL sein.
Typeder Objekttyp
Der Typ BS_RenderObject::TYPE_ROOT ist nicht zulässig. Wurzelknoten müssen mit dem alternativen Konstruktor erzeugt werden.
Handledas Handle, welches dem Objekt zugewiesen werden soll.
Dieser Parameter erzwingt ein bestimmtes Handle für das neue Objekt, oder wählt automatisch ein Handle, wenn der Parameter 0 ist. Ist das gewünschte Handle bereits vergeben, gibt GetInitSuccess() false zurück.
Der Standardwert ist 0.
Remarks
Nach dem Aufruf des Konstruktors kann über die Methode GetInitSuccess() abgefragt werden, ob die Konstruktion erfolgreich war.
Es ist nicht notwendig alle BS_RenderObject Instanzen einzeln zu löschen. Dieses geschiet automatisch beim Löschen eines Vorfahren oder beim Löschen des zuständigen BS_RenderObjectManager.

Member Function Documentation

◆ addBitmap()

RenderObjectPtr<Bitmap> Sword25::RenderObject::addBitmap ( const Common::String fileName)

Erzeugt ein Bitmap als Kinderobjekt des Renderobjektes.

Parameters
FileNameder Dateiname der Quellbilddatei
Returns
Gibt einen BS_RenderObjectPtr auf das erzeugte Objekt zurück.
Falls ein Fehler aufgetreten ist wird ein ungültiger BS_RenderObjectPtr zurückgegeben.

◆ addDynamicBitmap()

RenderObjectPtr<Bitmap> Sword25::RenderObject::addDynamicBitmap ( uint  width,
uint  height 
)

Erzeugt ein veränderbares Bitmap als Kinderobjekt des Renderobjektes.

Parameters
Widthdie Breite des Bitmaps
Heightdie Höhe des Bitmaps
Returns
Gibt einen BS_RenderObjectPtr auf das erzeugte Objekt zurück.
Falls ein Fehler aufgetreten ist wird ein ungültiger BS_RenderObjectPtr zurückgegeben.

◆ addAnimation() [1/2]

RenderObjectPtr<Animation> Sword25::RenderObject::addAnimation ( const Common::String fileName)

Erzeugt eine Animation auf Basis einer Animationsdatei als Kinderobjekt des Renderobjektes.

Parameters
FileNameder Dateiname der Quelldatei
Returns
Gibt einen BS_RenderObjectPtr auf das erzeugte Objekt zurück.
Falls ein Fehler aufgetreten ist wird ein ungültiger BS_RenderObjectPtr zurückgegeben.

◆ addAnimation() [2/2]

RenderObjectPtr<Animation> Sword25::RenderObject::addAnimation ( const AnimationTemplate animationTemplate)

Erzeugt eine Animation auf Basis eines Animationstemplate als Kinderobjekt des Renderobjektes.

Parameters
pAnimationTemplateein Pointer auf das Animationstemplate
Returns
Gibt einen BS_RenderObjectPtr auf das erzeugte Objekt zurück.
Falls ein Fehler aufgetreten ist wird ein ungültiger BS_RenderObjectPtr zurückgegeben.
Remarks
Das Renderobjekt übernimmt die Verwaltung des Animationstemplate.

◆ addPanel()

RenderObjectPtr<Panel> Sword25::RenderObject::addPanel ( int  width,
int  height,
uint  color = BS_RGB(0, 0, 0) 
)

Erzeugt ein neues Farbpanel als Kinderobjekt des Renderobjektes.

Parameters
Widthdie Breite des Panels
Heightdie Höhe des Panels
Colordie Farbe des Panels.
Der Standardwert ist Schwarz (BS_RGB(0, 0, 0)).
Returns
Gibt einen BS_RenderObjectPtr auf das erzeugte Objekt zurück.
Falls ein Fehler aufgetreten ist wird ein ungültiger BS_RenderObjectPtr zurückgegeben.

◆ addText()

RenderObjectPtr<Text> Sword25::RenderObject::addText ( const Common::String font,
const Common::String text = "" 
)

Erzeugt ein Textobjekt als Kinderobjekt des Renderobjektes.

Parameters
Fontder Dateiname des zu verwendenen Fonts
Textder anzuzeigende Text.
Der Standardwert ist "".
Returns
Gibt einen BS_RenderObjectPtr auf das erzeugte Objekt zurück.
Falls ein Fehler aufgetreten ist wird ein ungültiger BS_RenderObjectPtr zurückgegeben.

◆ toBitmap()

RenderObjectPtr<Bitmap> Sword25::RenderObject::toBitmap ( )
inline

Castet das Objekt zu einem BS_Bitmap-Objekt wenn zulässig.

Returns
Gibt einen BS_RenderObjectPtr auf das Objekt zurück.
Falls der Cast nicht zulässig ist, wird ein ungültiger BS_RenderObjectPtr zurückgegeben.

◆ toAnimation()

RenderObjectPtr<Animation> Sword25::RenderObject::toAnimation ( )
inline

Castet das Objekt zu einem BS_Animation-Objekt wenn zulässig.

Returns
Gibt einen BS_RenderObjectPtr auf das Objekt zurück.
Falls der Cast nicht zulässig ist, wird ein ungültiger BS_RenderObjectPtr zurückgegeben.

◆ toPanel()

RenderObjectPtr<Panel> Sword25::RenderObject::toPanel ( )
inline

Castet das Objekt zu einem BS_Panel-Objekt wenn zulässig.

Returns
Gibt einen BS_RenderObjectPtr auf das Objekt zurück.
Falls der Cast nicht zulässig ist, wird ein ungültiger BS_RenderObjectPtr zurückgegeben.

◆ toText()

RenderObjectPtr<Text> Sword25::RenderObject::toText ( )
inline

Castet das Object zu einem BS_Text-Objekt wenn zulässig.

Returns
Gibt einen BS_RenderObjectPtr auf das Objekt zurück.
Falls der Cast nicht zulässig ist, wird ein ungültiger BS_RenderObjectPtr zurückgegeben.

◆ render()

bool Sword25::RenderObject::render ( RectangleList updateRects,
const Common::Array< int > &  updateRectsMinZ 
)

Rendert des Objekt und alle seine Unterobjekte.

Returns
Gibt false zurück, falls beim Rendern ein Fehler aufgetreten ist.
Remarks
Vor jedem Aufruf dieser Methode muss ein Aufruf von UpdateObjectState() erfolgt sein. Dieses kann entweder direkt geschehen oder durch den Aufruf von UpdateObjectState() an einem Vorfahren-Objekt.
Diese Methode darf nur von BS_RenderObjectManager aufgerufen werden.

◆ updateObjectState()

bool Sword25::RenderObject::updateObjectState ( )

Bereitet das Objekt und alle seine Unterobjekte auf einen Rendervorgang vor. Hierbei werden alle Dirty-Rectangles berechnet und die Renderreihenfolge aktualisiert.

Returns
Gibt false zurück, falls ein Fehler aufgetreten ist.
Remarks
Diese Methode darf nur von BS_RenderObjectManager aufgerufen werden.

◆ setPos()

virtual void Sword25::RenderObject::setPos ( int  x,
int  y 
)
virtual

Setzt die Position des Objektes.

Parameters
Xdie neue X-Koordinate des Objektes relativ zum Elternobjekt.
Ydie neue Y-Koordinate des Objektes relativ zum Elternobjekt.

Reimplemented in Sword25::Animation.

◆ setX()

virtual void Sword25::RenderObject::setX ( int  x)
virtual

Setzt die Position des Objektes auf der X-Achse.

Parameters
Xdie neue X-Koordinate des Objektes relativ zum Elternobjekt.

Reimplemented in Sword25::Animation.

◆ setY()

virtual void Sword25::RenderObject::setY ( int  y)
virtual

Setzt die Position des Objektes auf der Y-Achse.

Parameters
Ydie neue Y-Koordinate des Objektes relativ zum Elternobjekt.

Reimplemented in Sword25::Animation.

◆ setZ()

virtual void Sword25::RenderObject::setZ ( int  z)
virtual

Setzt den Z-Wert des Objektes.

Parameters
Zder neue Z-Wert des Objektes relativ zum Elternobjekt
Negative Z-Werte sind nicht zulässig.
Remarks
Der Z-Wert legt die Renderreihenfolge der Objekte fest. Objekte mit niedrigem Z-Wert werden vor Objekten mit höherem Z-Wert gezeichnet. Je höher der Z-Wert desto weiter "vorne" liegt ein Objekt also.
Wie alle andere Attribute ist auch dieses relativ zum Elternobjekt, ein Kinderobjekt kann also nie unter seinem Elternobjekt liegen, auch wenn es einen Z-Wert von 0 hat.

◆ setVisible()

virtual void Sword25::RenderObject::setVisible ( bool  visible)
virtual

Setzt die Sichtbarkeit eine Objektes.

Parameters
Visibleder neue Sichtbarkeits-Zustand des Objektes
true entspricht sichtbar, false entspricht unsichtbar.

◆ getZ()

int Sword25::RenderObject::getZ ( ) const
inline

Gibt den Z-Wert des Objektes relativ zum Elternobjekt zurück.

Remarks
Der Z-Wert legt die Renderreihenfolge der Objekte fest. Objekte mit niedrigem Z-Wert werden vor Objekten mit höherem Z-Wert gezeichnet. Je höher der Z-Wert desto weiter "vorne" liegt ein Objekt also.
Wie alle andere Attribute ist auch dieses relativ zum Elternobjekt, ein Kinderobjekt kann also nie unter seinem Elternobjekt liegen, auch wenn es einen Z-Wert von 0 hat.

◆ isVisible()

bool Sword25::RenderObject::isVisible ( ) const
inline

Gibt den Sichtbarkeitszustand des Objektes zurück.

Returns
Gibt den Sichtbarkeitszustand des Objektes zurück.
true entspricht sichtbar, false entspricht unsichtbar.

◆ getInitSuccess()

bool Sword25::RenderObject::getInitSuccess ( ) const
inline

Gibt zurück, ob das Objekt erfolgreich initialisiert wurde.

Remarks
Hässlicher Workaround um das Problem, dass Konstruktoren keine Rückgabewerte haben.

◆ getBbox()

const Common::Rect& Sword25::RenderObject::getBbox ( ) const
inline

Gibt die Bounding-Box des Objektes zurück.

Remarks
Diese Angabe erfolgt ausnahmsweise in Bildschirmkoordianten und nicht relativ zum Elternobjekt.

◆ doRender()

virtual bool Sword25::RenderObject::doRender ( RectangleList updateRects)
protectedpure virtual

Einschubmethode, die den tatsächlichen Redervorgang durchführt.

Diese Methode wird von Render() aufgerufen um das Objekt darzustellen. Diese Methode sollte von allen Klassen implementiert werden, die von BS_RederObject erben, um das Zeichnen umzusetzen.

Returns
Gibt false zurück, falls das Rendern fehlgeschlagen ist.
Remarks

Implemented in Sword25::Animation, Sword25::Text, Sword25::StaticBitmap, Sword25::Panel, Sword25::DynamicBitmap, and Sword25::RootRenderObject.

◆ addObject()

bool Sword25::RenderObject::addObject ( RenderObjectPtr< RenderObject pObject)
protected

Fügt dem Objekt ein neues Kinderobjekt hinzu.

Parameters
pObjectein Pointer auf das einzufügende Objekt
Returns
Gibt false zurück, falls das Objekt nicht eingefügt werden konnte.

The documentation for this class was generated from the following file: