2 * Copyright (C) 2004 Apple Computer, Inc. All rights reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35 #include "KWQMemArray.h"
37 typedef struct _NSPoint NSPoint;
38 typedef struct CGPoint CGPoint;
46 explicit QPoint(const NSPoint &); // don't do this implicitly since it's lossy
48 int x() const { return xCoord; }
49 int y() const { return yCoord; }
51 void setX(int x) { xCoord = x; }
52 void setY(int y) { yCoord = y; }
54 bool isNull() const { return xCoord == 0 && yCoord == 0; }
56 QPoint &operator -=(const QPoint &two) { xCoord -= two.xCoord; yCoord -= two.yCoord; return *this; }
57 friend const QPoint operator*(const QPoint &p, double s);
58 friend QPoint operator+(const QPoint &, const QPoint &);
59 friend QPoint operator-(const QPoint &, const QPoint &);
61 operator NSPoint() const;
62 operator CGPoint() const;
69 class QPointArray : public QMemArray<QPoint> {
72 QPointArray(int size) : QMemArray<QPoint>(size) { }
73 QPointArray(const QRect &rect);
74 QPointArray(int, const int *);
76 QRect boundingRect() const;
78 QPointArray copy() const;
80 void point(uint, int *, int *);
81 void setPoint(uint, int, int);
83 // FIXME: Workaround for Radar 2921061.
84 bool setPoints(int, int, int, ...);
86 bool setPoints(int, int, int, int, int, int, int, int, int);
88 bool setPoints( int nPoints, const int *points );
91 friend std::ostream &operator<<(std::ostream &, const QPoint &);