summaryrefslogtreecommitdiffstats
path: root/scribus/text/frect.h
diff options
context:
space:
mode:
authorcraig <craig@11d20701-8431-0410-a711-e3c959e3b870>2012-01-01 11:40:09 +0000
committercraig <craig@11d20701-8431-0410-a711-e3c959e3b870>2012-01-01 11:40:09 +0000
commit7ed83b6c6666eb8b6b104c211ae7e52907350372 (patch)
tree4430b556abac0ad660a0aacf1887d77f85d8be02 /scribus/text/frect.h
downloadscribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.tar.gz
scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.tar.xz
scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.zip
Branch 1.3.5 tree to 1.4.x tree, goodbye 1.3.x
git-svn-id: svn://scribus.net/branches/Version14x/Scribus@17163 11d20701-8431-0410-a711-e3c959e3b870
Diffstat (limited to 'scribus/text/frect.h')
-rw-r--r--scribus/text/frect.h268
1 files changed, 268 insertions, 0 deletions
diff --git a/scribus/text/frect.h b/scribus/text/frect.h
new file mode 100644
index 0000000..5f67327
--- /dev/null
+++ b/scribus/text/frect.h
@@ -0,0 +1,268 @@
+/****************************************************************************
+** $Id$
+**
+** Definition of FRect class
+**
+** Created : 931028
+**
+** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
+**
+** This file is part of the kernel module of the Qt GUI Toolkit.
+**
+** This file may be distributed under the terms of the Q Public License
+** as defined by Trolltech AS of Norway and appearing in the file
+** LICENSE.QPL included in the packaging of this file.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
+** licenses may use this file in accordance with the Qt Commercial License
+** Agreement provided with the Software.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
+** information about Qt Commercial License Agreements.
+** See http://www.trolltech.com/qpl/ for QPL licensing information.
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#ifndef FRECT_H
+#define FRECT_H
+
+//#ifndef QT_H
+#include "fsize.h"
+//#endif // QT_H
+
+#if defined(topLeft)
+#error "Macro definition of topLeft conflicts with FRect"
+// don't just silently undo people's defines: #undef topLeft
+#endif
+
+class FRect // rectangle class
+{
+public:
+ FRect() { x1 = y1 = 0; x2 = y2 = -1; }
+ FRect( FPoint &topleft, FPoint &bottomright );
+ FRect( FPoint &topleft, FSize &size );
+ FRect( qreal left, qreal top, qreal width, qreal height );
+
+ bool isNull() const;
+ bool isEmpty() const;
+ bool isValid() const;
+ FRect normalize() const;
+
+ qreal left() const;
+ qreal top() const;
+ qreal right() const;
+ qreal bottom() const;
+
+ qreal &rLeft();
+ qreal &rTop();
+ qreal &rRight();
+ qreal &rBottom();
+
+ qreal x() const;
+ qreal y() const;
+ void setLeft( qreal pos );
+ void setTop( qreal pos );
+ void setRight( qreal pos );
+ void setBottom( qreal pos );
+ void setX( qreal x );
+ void setY( qreal y );
+
+ void setTopLeft( FPoint &p );
+ void setBottomRight( FPoint &p );
+ void setTopRight( FPoint &p );
+ void setBottomLeft( FPoint &p );
+
+ FPoint topLeft() const;
+ FPoint bottomRight() const;
+ FPoint topRight() const;
+ FPoint bottomLeft() const;
+ FPoint center() const;
+
+ void rect( qreal *x, qreal *y, qreal *w, qreal *h ) const;
+ void coords( qreal *x1, qreal *y1, qreal *x2, qreal *y2 ) const;
+
+ void moveLeft( qreal pos );
+ void moveTop( qreal pos );
+ void moveRight( qreal pos );
+ void moveBottom( qreal pos );
+ void moveTopLeft( FPoint &p );
+ void moveBottomRight( FPoint &p );
+ void moveTopRight( FPoint &p );
+ void moveBottomLeft( FPoint &p );
+ void moveCenter( FPoint &p );
+ void moveBy( qreal dx, qreal dy );
+
+ void setRect( qreal x, qreal y, qreal w, qreal h );
+ void setCoords( qreal x1, qreal y1, qreal x2, qreal y2 );
+ void addCoords( qreal x1, qreal y1, qreal x2, qreal y2 );
+
+ FSize size() const;
+ qreal width() const;
+ qreal height() const;
+ void setWidth( qreal w );
+ void setHeight( qreal h );
+ void setSize( const FSize &s );
+
+ FRect operator|(const FRect &r) const;
+ FRect operator&(const FRect &r) const;
+ FRect& operator|=(const FRect &r);
+ FRect& operator&=(const FRect &r);
+
+ bool contains( FPoint &p, bool proper=FALSE ) const;
+ bool contains( qreal x, qreal y ) const; // inline methods, _don't_ merge these
+ bool contains( qreal x, qreal y, bool proper ) const;
+ bool contains( const FRect &r, bool proper=FALSE ) const;
+ FRect unite( const FRect &r ) const;
+ FRect intersect( const FRect &r ) const;
+ bool intersects( const FRect &r ) const;
+
+ friend bool operator==( const FRect &, const FRect & );
+ friend bool operator!=( const FRect &, const FRect & );
+
+private:
+#if defined(Q_WS_X11) || defined(Q_OS_TEMP)
+ friend void qt_setCoords( FRect *r, qreal xp1, qreal yp1, qreal xp2, qreal yp2 );
+#endif
+
+ qreal x1;
+ qreal y1;
+ qreal x2;
+ qreal y2;
+
+};
+
+bool operator==( const FRect &, const FRect & );
+bool operator!=( const FRect &, const FRect & );
+
+
+/*****************************************************************************
+ FRect stream functions
+ *****************************************************************************/
+// #ifndef QT_NO_DATASTREAM
+// Q_EXPORT QDataStream &operator<<( QDataStream &, const FRect & );
+// Q_EXPORT QDataStream &operator>>( QDataStream &, FRect & );
+// #endif
+
+/*****************************************************************************
+ FRect inline member functions
+ *****************************************************************************/
+
+inline FRect::FRect( qreal left, qreal top, qreal width, qreal height )
+{
+ x1 = (qreal)left;
+ y1 = (qreal)top;
+ x2 = (qreal)(left+width-1);
+ y2 = (qreal)(top+height-1);
+}
+
+inline bool FRect::isNull() const
+{ return x2 == x1-1 && y2 == y1-1; }
+
+inline bool FRect::isEmpty() const
+{ return x1 > x2 || y1 > y2; }
+
+inline bool FRect::isValid() const
+{ return x1 <= x2 && y1 <= y2; }
+
+inline qreal FRect::left() const
+{ return x1; }
+
+inline qreal FRect::top() const
+{ return y1; }
+
+inline qreal FRect::right() const
+{ return x2; }
+
+inline qreal FRect::bottom() const
+{ return y2; }
+
+inline qreal &FRect::rLeft()
+{ return x1; }
+
+inline qreal & FRect::rTop()
+{ return y1; }
+
+inline qreal & FRect::rRight()
+{ return x2; }
+
+inline qreal & FRect::rBottom()
+{ return y2; }
+
+inline qreal FRect::x() const
+{ return x1; }
+
+inline qreal FRect::y() const
+{ return y1; }
+
+inline void FRect::setLeft( qreal pos )
+{ x1 = (qreal)pos; }
+
+inline void FRect::setTop( qreal pos )
+{ y1 = (qreal)pos; }
+
+inline void FRect::setRight( qreal pos )
+{ x2 = (qreal)pos; }
+
+inline void FRect::setBottom( qreal pos )
+{ y2 = (qreal)pos; }
+
+inline void FRect::setX( qreal x )
+{ x1 = (qreal)x; }
+
+inline void FRect::setY( qreal y )
+{ y1 = (qreal)y; }
+
+inline FPoint FRect::topLeft() const
+{ return FPoint(x1, y1); }
+
+inline FPoint FRect::bottomRight() const
+{ return FPoint(x2, y2); }
+
+inline FPoint FRect::topRight() const
+{ return FPoint(x2, y1); }
+
+inline FPoint FRect::bottomLeft() const
+{ return FPoint(x1, y2); }
+
+inline FPoint FRect::center() const
+{ return FPoint((x1+x2)/2, (y1+y2)/2); }
+
+inline qreal FRect::width() const
+{ return x2 - x1 + 1; }
+
+inline qreal FRect::height() const
+{ return y2 - y1 + 1; }
+
+inline FSize FRect::size() const
+{ return FSize(x2-x1+1, y2-y1+1); }
+
+inline bool FRect::contains( qreal x, qreal y, bool proper ) const
+{
+ if ( proper )
+ return x > x1 && x < x2 &&
+ y > y1 && y < y2;
+ else
+ return x >= x1 && x <= x2 &&
+ y >= y1 && y <= y2;
+}
+
+inline bool FRect::contains( qreal x, qreal y ) const
+{
+ return x >= x1 && x <= x2 &&
+ y >= y1 && y <= y2;
+}
+// #define Q_DEFINED_QRECT
+// #include "qwinexport.h"
+ #endif // QRECT_H