#ifndef RENDER_BOX_H
#define RENDER_BOX_H
#include "render_container.h"
#include "misc/loader.h"
#include "render_layer.h"
namespace khtml {
class CachedObject;
enum WidthType { Width, MinWidth, MaxWidth };
class RenderBox : public RenderContainer
{
public:
RenderBox(DOM::NodeImpl* node);
virtual ~RenderBox();
virtual const char *renderName() const { return "RenderBox"; }
virtual void setStyle(RenderStyle *style);
virtual void paint(QPainter *p, int _x, int _y, int _w, int _h,
int _tx, int _ty, PaintAction paintAction);
virtual void close();
virtual void detach(RenderArena* renderArena);
virtual short minWidth() const { return m_minWidth; }
virtual short maxWidth() const { return m_maxWidth; }
virtual short contentWidth() const;
virtual int contentHeight() const;
virtual bool absolutePosition(int &xPos, int &yPos, bool f = false);
virtual void setPos( int xPos, int yPos );
virtual int xPos() const { return m_x; }
virtual int yPos() const { return m_y; }
virtual short width() const;
virtual int height() const;
virtual short marginTop() const { return m_marginTop; }
virtual short marginBottom() const { return m_marginBottom; }
virtual short marginLeft() const { return m_marginLeft; }
virtual short marginRight() const { return m_marginRight; }
virtual void setWidth( int width ) { m_width = width; }
virtual void setHeight( int height ) { m_height = height; }
void calcHorizontalMargins(const Length& ml, const Length& mr, int cw);
virtual void position(InlineBox* box, int from, int len, bool reverse);
virtual int lowestPosition(bool includeOverflowInterior=true) const;
virtual int rightmostPosition(bool includeOverflowInterior=true) const;
virtual void repaint(bool immediate=false);
virtual void repaintRectangle(int x, int y, int w, int h, bool immediate=false, bool f=false);
virtual void setPixmap(const QPixmap &, const QRect&, CachedImage *);
virtual short containingBlockWidth() const;
virtual void calcWidth();
virtual void calcHeight();
int calcWidthUsing(WidthType widthType, int cw, LengthType& lengthType);
virtual short calcReplacedWidth() const;
virtual int calcReplacedHeight() const;
virtual int availableHeight() const;
void calcVerticalMargins();
void relativePositionOffset(int &tx, int &ty);
virtual RenderLayer* layer() const { return m_layer; }
virtual void paintBackgroundExtended(QPainter *p, const QColor &c, CachedImage *bg, int clipy, int cliph,
int _tx, int _ty, int w, int height,
int bleft, int bright);
virtual void setStaticX(short staticX);
virtual void setStaticY(int staticY);
protected:
virtual void paintBoxDecorations(QPainter *p,int _x, int _y,
int _w, int _h, int _tx, int _ty);
void paintRootBoxDecorations(QPainter *p,int, int _y,
int, int _h, int _tx, int _ty);
void paintBackground(QPainter *p, const QColor &c, CachedImage *bg, int clipy, int cliph, int _tx, int _ty, int w, int h);
void outlineBox(QPainter *p, int _tx, int _ty, const char *color = "red");
virtual int borderTopExtra() { return 0; }
virtual int borderBottomExtra() { return 0; }
void calcAbsoluteHorizontal();
void calcAbsoluteVertical();
virtual QRect getOverflowClipRect(int tx, int ty);
virtual QRect getClipRect(int tx, int ty);
void adjustZIndex();
int m_height;
int m_y;
short m_x;
short m_width;
short m_marginTop;
short m_marginBottom;
short m_marginLeft;
short m_marginRight;
short m_minWidth;
short m_maxWidth;
short m_staticX;
int m_staticY;
RenderLayer* m_layer;
};
};
#endif