summaryrefslogtreecommitdiffstats
path: root/khtml/rendering/render_layer.h
diff options
context:
space:
mode:
Diffstat (limited to 'khtml/rendering/render_layer.h')
-rw-r--r--khtml/rendering/render_layer.h342
1 files changed, 0 insertions, 342 deletions
diff --git a/khtml/rendering/render_layer.h b/khtml/rendering/render_layer.h
deleted file mode 100644
index a8f1e5adc..000000000
--- a/khtml/rendering/render_layer.h
+++ /dev/null
@@ -1,342 +0,0 @@
-/*
- * Copyright (C) 2003 Apple Computer, Inc.
- *
- * Portions are Copyright (C) 1998 Netscape Communications Corporation.
- *
- * Other contributors:
- * Robert O'Callahan <roc+@cs.cmu.edu>
- * David Baron <dbaron@fas.harvard.edu>
- * Christian Biesinger <cbiesinger@web.de>
- * Randall Jesup <rjesup@wgate.com>
- * Roland Mainz <roland.mainz@informatik.med.uni-giessen.de>
- * Josh Soref <timeless@mac.com>
- * Boris Zbarsky <bzbarsky@mit.edu>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Alternatively, the contents of this file may be used under the terms
- * of either the Mozilla Public License Version 1.1, found at
- * http://www.mozilla.org/MPL/ (the "MPL") or the GNU General Public
- * License Version 2.0, found at http://www.fsf.org/copyleft/gpl.html
- * (the "GPL"), in which case the provisions of the MPL or the GPL are
- * applicable instead of those above. If you wish to allow use of your
- * version of this file only under the terms of one of those two
- * licenses (the MPL or the GPL) and not to allow others to use your
- * version of this file under the LGPL, indicate your decision by
- * deletingthe provisions above and replace them with the notice and
- * other provisions required by the MPL or the GPL, as the case may be.
- * If you do not delete the provisions above, a recipient may use your
- * version of this file under any of the LGPL, the MPL or the GPL.
- */
-
-#ifndef render_layer_h
-#define render_layer_h
-
-#include <tqcolor.h>
-#include <tqrect.h>
-#include <assert.h>
-
-#include "render_object.h"
-
-class TQScrollBar;
-template <class T> class TQPtrVector;
-
-namespace khtml {
- class RenderStyle;
- class RenderTable;
- class CachedObject;
- class RenderCanvas;
- class RenderText;
- class RenderFrameSet;
- class RenderObject;
- class RenderScrollMediator;
-
-class RenderScrollMediator: public TQObject
-{
- Q_OBJECT
-public:
- RenderScrollMediator(RenderLayer* layer)
- :m_layer(layer) {}
-
-public slots:
- void slotValueChanged();
-
-private:
- RenderLayer* m_layer;
-};
-
-// This class handles the auto-scrolling of layers with overflow: marquee.
-class Marquee: public TQObject
-{
- Q_OBJECT
-
-public:
- Marquee(RenderLayer* l);
-
- void timerEvent(TQTimerEvent*);
-
- int speed() const { return m_speed; }
- int marqueeSpeed() const;
- EMarqueeDirection direction() const;
- EMarqueeDirection reverseDirection() const { return static_cast<EMarqueeDirection>(-direction()); }
- bool isHorizontal() const;
- bool isUnfurlMarquee() const;
- int unfurlPos() const { return m_unfurlPos; }
-
- EWhiteSpace whiteSpace() { return m_whiteSpace; }
-
- int computePosition(EMarqueeDirection dir, bool stopAtClientEdge);
-
- void setEnd(int end) { m_end = end; }
-
- void start();
- void suspend();
- void stop();
-
- void updateMarqueeStyle();
- void updateMarqueePosition();
-
-private:
- RenderLayer* m_layer;
- int m_currentLoop;
- int m_totalLoops;
- int m_timerId;
- int m_start;
- int m_end;
- int m_speed;
- int m_unfurlPos;
- bool m_reset:1;
- bool m_suspended:1;
- bool m_stopped:1;
- EWhiteSpace m_whiteSpace : 3;
- EMarqueeDirection m_direction : 4;
-};
-
-class RenderLayer
-{
-public:
-#ifdef APPLE_CHANGES
- static TQScrollBar* gScrollBar;
-#endif
-
- RenderLayer(RenderObject* object);
- ~RenderLayer();
-
- RenderObject* renderer() const { return m_object; }
- RenderLayer *parent() const { return m_parent; }
- RenderLayer *previousSibling() const { return m_previous; }
- RenderLayer *nextSibling() const { return m_next; }
-
- RenderLayer *firstChild() const { return m_first; }
- RenderLayer *lastChild() const { return m_last; }
-
- void addChild(RenderLayer *newChild, RenderLayer* beforeChild = 0);
- RenderLayer* removeChild(RenderLayer *oldChild);
-
- void removeOnlyThisLayer();
- void insertOnlyThisLayer();
-
- void styleChanged();
-
- Marquee* marquee() const { return m_marquee; }
- void suspendMarquees();
-
- bool isOverflowOnly() const { return m_isOverflowOnly; }
-
-#ifdef APPLE_CHANGES
- bool isTransparent();
- RenderLayer* transparentAncestor();
-#endif
-
- RenderLayer* root() {
- RenderLayer* curr = this;
- while (curr->parent()) curr = curr->parent();
- return curr;
- }
-
- int xPos() const { return m_x; }
- int yPos() const { return m_y; }
-
- short width() const;
- int height() const;
-
- short scrollWidth() const { return m_scrollWidth; }
- int scrollHeight() const { return m_scrollHeight; }
-
- void resize( int w, int h ) {
- m_scrollWidth = w; m_scrollHeight = h;
- }
-
- void setPos( int xPos, int yPos ) {
- m_x = xPos;
- m_y = yPos;
- }
-
- // Scrolling methods for layers that can scroll their overflow.
- void scrollOffset(int& x, int& y);
- void subtractScrollOffset(int& x, int& y);
- void checkInlineRelOffset(const RenderObject* o, int& x, int& y);
- short scrollXOffset() { return m_scrollX; }
- int scrollYOffset() { return m_scrollY; }
- void scrollToOffset(int x, int y, bool updateScrollbars = true, bool repaint = true);
- void scrollToXOffset(int x) { scrollToOffset(x, m_scrollY); }
- void scrollToYOffset(int y) { scrollToOffset(m_scrollX, y); }
- void showScrollbar(Qt::Orientation, bool);
- TQScrollBar* horizontalScrollbar() { return m_hBar; }
- TQScrollBar* verticalScrollbar() { return m_vBar; }
- int verticalScrollbarWidth();
- int horizontalScrollbarHeight();
- void positionScrollbars(const TQRect &damageRect);
- void paintScrollbars(RenderObject::PaintInfo& pI);
- void checkScrollbarsAfterLayout();
- void slotValueChanged(int);
- void repaint(Priority p=NormalPriority, bool markForRepaint = false);
- void updateScrollPositionFromScrollbars();
-
- void updateLayerPosition();
- void updateLayerPositions( RenderLayer* rootLayer, bool doFullRepaint = false, bool checkForRepaint = false);
-
- // Get the enclosing stacking context for this layer. A stacking context is a layer
- // that has a non-auto z-index.
- RenderLayer* stackingContext() const;
- bool isStackingContext() const { return !hasAutoZIndex() || renderer()->isCanvas(); }
-
- void dirtyZOrderLists();
- void updateZOrderLists();
- TQPtrVector<RenderLayer>* posZOrderList() const { return m_posZOrderList; }
- TQPtrVector<RenderLayer>* negZOrderList() const { return m_negZOrderList; }
-
- void dirtyOverflowList();
- void updateOverflowList();
- TQValueList<RenderLayer*>* overflowList() const { return m_overflowList; }
-
- void setHasOverlaidWidgets(bool b=true) { m_hasOverlaidWidgets = b; }
- bool hasOverlaidWidgets() const { return m_hasOverlaidWidgets; }
- TQRegion getMask() const { return m_region; }
- TQRegion paintedRegion(RenderLayer* rootLayer);
- void updateWidgetMasks(RenderLayer* rootLayer);
-
- // Gets the nearest enclosing positioned ancestor layer (also includes
- // the <html> layer and the root layer).
- RenderLayer* enclosingPositionedAncestor() const;
-
- void convertToLayerCoords(const RenderLayer* ancestorLayer, int& x, int& y) const;
-
- bool hasAutoZIndex() const { return renderer()->style()->hasAutoZIndex(); }
- int zIndex() const { return renderer()->style()->zIndex(); }
-
- // The two main functions that use the layer system. The paint method
- // paints the layers that intersect the damage rect from back to
- // front. The nodeAtPoint method looks for mouse events by walking
- // layers that intersect the point from front to back.
- KDE_EXPORT void paint(TQPainter *p, const TQRect& damageRect, bool selectionOnly=false);
- bool nodeAtPoint(RenderObject::NodeInfo& info, int x, int y);
-
- // This method figures out our layerBounds in coordinates relative to
- // |rootLayer}. It also computes our background and foreground clip rects
- // for painting/event handling.
- void calculateRects(const RenderLayer* rootLayer, const TQRect& paintDirtyRect, TQRect& layerBounds,
- TQRect& backgroundRect, TQRect& foregroundRect);
- void calculateClipRects(const RenderLayer* rootLayer, TQRect& overflowClipRect,
- TQRect& posClipRect, TQRect& fixedClipRect);
-
- bool intersectsDamageRect(const TQRect& layerBounds, const TQRect& damageRect) const;
- bool containsPoint(int x, int y, const TQRect& damageRect) const;
-
- void updateHoverActiveState(RenderObject::NodeInfo& info);
-
- void detach(RenderArena* renderArena);
-
-#ifdef ENABLE_DUMP
- KDE_EXPORT void dump(TQTextStream &stream, const TQString &ind = TQString::null);
-#endif
-
- // Overloaded new operator. Derived classes must override operator new
- // in order to allocate out of the RenderArena.
- void* operator new(size_t sz, RenderArena* renderArena) throw();
-
- // Overridden to prevent the normal delete from being called.
- void operator delete(void* ptr, size_t sz);
-
-private:
- // The normal operator new is disallowed on all render objects.
- void* operator new(size_t sz) throw();
-
-private:
- void setNextSibling(RenderLayer* next) { m_next = next; }
- void setPreviousSibling(RenderLayer* prev) { m_previous = prev; }
- void setParent(RenderLayer* parent) { m_parent = parent; }
- void setFirstChild(RenderLayer* first) { m_first = first; }
- void setLastChild(RenderLayer* last) { m_last = last; }
-
- void collectLayers(TQPtrVector<RenderLayer>*&, TQPtrVector<RenderLayer>*&);
-
- KDE_EXPORT void paintLayer(RenderLayer* rootLayer, TQPainter *p, const TQRect& paintDirtyRect, bool selectionOnly=false);
- RenderLayer* nodeAtPointForLayer(RenderLayer* rootLayer, RenderObject::NodeInfo& info,
- int x, int y, const TQRect& hitTestRect);
- bool shouldBeOverflowOnly() const;
-
-protected:
- RenderObject* m_object;
-
- RenderLayer* m_parent;
- RenderLayer* m_previous;
- RenderLayer* m_next;
-
- RenderLayer* m_first;
- RenderLayer* m_last;
-
- // Our (x,y) coordinates are in our parent layer's coordinate space.
- short m_x;
- int m_y;
-
- // Our scroll offsets if the view is scrolled.
- short m_scrollX;
- int m_scrollY;
-
- // The width/height of our scrolled area.
- short m_scrollWidth;
- int m_scrollHeight;
-
- // For layers with overflow, we have a pair of scrollbars.
- TQScrollBar* m_hBar;
- TQScrollBar* m_vBar;
- RenderScrollMediator* m_scrollMediator;
-
- // For layers that establish stacking contexts, m_posZOrderList holds a sorted list of all the
- // descendant layers within the stacking context that have z-indices of 0 or greater
- // (auto will count as 0). m_negZOrderList holds descendants within our stacking context with negative
- // z-indices.
- TQPtrVector<RenderLayer>* m_posZOrderList;
- TQPtrVector<RenderLayer>* m_negZOrderList;
-
- // This list contains our overflow child layers.
- TQValueList<RenderLayer*>* m_overflowList;
-
- bool m_zOrderListsDirty: 1;
- bool m_overflowListDirty: 1;
- bool m_isOverflowOnly: 1;
- bool m_markedForRepaint: 1;
- bool m_hasOverlaidWidgets: 1;
-
- TQRect m_visibleRect;
-
- TQRegion m_region; // used by overlaid (non z-order aware) widgets
-
- Marquee* m_marquee; // Used by layers with overflow:marquee
-};
-
-} // namespace
-#endif