PEBL 2.2
Psychology Experiment Building Language - Cross-platform psychological experiment development system
PDrawObject.h
Go to the documentation of this file.
1//* -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*- */
3// Name: src/objects/PDrawObject.h
4// Purpose: Utility class drawing things.
5// Author: Shane T. Mueller, Ph.D.
6// Copyright: (c) 2005-2026 Shane T. Mueller <smueller@obereed.net>
7// License: GPL 2
8//
9//
10//
11// This file is part of the PEBL project.
12//
13// PEBL is free software; you can redistribute it and/or modify
14// it under the terms of the GNU General Public License as published by
15// the Free Software Foundation; either version 2 of the License, or
16// (at your option) any later version.
17//
18// PEBL is distributed in the hope that it will be useful,
19// but WITHOUT ANY WARRANTY; without even the implied warranty of
20// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21// GNU General Public License for more details.
22//
23// You should have received a copy of the GNU General Public License
24// along with PEBL; if not, write to the Free Software
25// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
27#ifndef __PDRAWOBJECT_H__
28#define __PDRAWOBJECT_H__
29
30#include "PWidget.h"
31#include "PColor.h"
32#include "../utility/Defs.h"
33#include "../utility/rc_ptrs.h"
34
35#include <vector>
36
37//A DrawObject is parallel to PWidget, but specific to drawing
38//primitives.
39class PDrawObject: virtual public PWidget
40
41{
42
43public:
44
46 //PDrawObject(int x, int y, const PColor & fg, const PColor & outline);
47 //PDrawObject(int x, int y, const PColor & fg, const PColor & outline, bool filled);
48 virtual ~PDrawObject();
49 virtual void SetFilled(bool filled);
50 virtual void SetColor(Variant col);
51 virtual void SetOutlineColor(Variant ocol);
52 virtual void SetAA(bool aa);
53 //overloaded generic PEBLObjectBase methods
54 virtual bool SetProperty(std::string, Variant v);
55 virtual Variant GetProperty(std::string)const;
56 virtual ObjectValidationError ValidateProperty(std::string, Variant v)const;
57 virtual ObjectValidationError ValidateProperty(std::string)const;
58
59protected:
60
62 virtual std::ostream & SendToStream(std::ostream& out) const=0;
63
64 // Helper method to get color from property system
65 PColor* GetColor() const;
66 PColor* GetOutlineColor() const;
67
68 bool mFilled;
70private:
71
72};
73
74
75class PLine: public PDrawObject
76{
77public:
78 PLine(pInt x1, pInt y1, pInt dx, pInt dy, Variant fg);
79 virtual ~PLine();
80 virtual pInt GetWidth() const{return mDX;};
81 virtual pInt GetHeight() const{return mDY;};
82 virtual void SetSize(pInt dx, pInt dy);
83 virtual std::ostream & SendToStream(std::ostream& out);
84
85
86
87 //overloaded generic PEBLObjectBase methods
88 virtual bool SetProperty(std::string, Variant v);
89 virtual Variant GetProperty(std::string)const;
90 virtual ObjectValidationError ValidateProperty(std::string, Variant v)const;
91 virtual ObjectValidationError ValidateProperty(std::string)const;
92
93
94protected:
95 //X1--Y2 are relative to mX and mY
98
99
100
101private:
102};
103
105{
106public:
107 PThickLine(pInt x1, pInt y1, pInt x2, pInt y2, pInt width, Variant fg);
108 virtual ~PThickLine();
109
110 virtual std::ostream & SendToStream(std::ostream& out);
111
112 virtual void SetPosition(pInt x, pInt y);
113 virtual void SetEnds(pInt x1, pInt y1,pInt x2, pInt y2);
114 virtual void SetThickness(pInt t);
115
116
117 //overloaded generic PEBLObjectBase methods
118 virtual bool SetProperty(std::string, Variant v);
119 virtual Variant GetProperty(std::string)const;
120 virtual ObjectValidationError ValidateProperty(std::string, Variant v)const;
121 virtual ObjectValidationError ValidateProperty(std::string)const;
122
123
124protected:
125 //X1--Y2 are relative to mX and mY
126
129
132
134
135private:
136};
137
138
139
140
141
142
143
144
145
146
147
148
149// class PBezier: public PDrawObject
150// {
151// };
152// class PTriangle: public PPolygon
153// {
154// public:
155// PTriangle();
156// ~PTriangle();
157// protected:
158// private:
159
160// };
161
162// class PTrapezoid: public PPolygon
163// {
164// public:
165// PTrapezoid();
166// ~PTrapezoid();
167// protected:
168// private:
169// };
170
171
172
173//For rectangles/squares, the 'position' is at the center of the object.
174//
176 {
177 public:
178 PRectangle(pInt x1, pInt y1, pInt dx, pInt dy, Variant fg, bool filled);
179 virtual ~PRectangle();
180 virtual pInt GetWidth() const{return mDX;};
181 virtual pInt GetHeight() const{return mDY;};
182 virtual void SetSize(pInt dx, pInt dy);
183 virtual std::ostream & SendToStream(std::ostream& out);
184
185 //overloaded generic PEBLObjectBase methods
186 virtual bool SetProperty(std::string, Variant v);
187 virtual Variant GetProperty(std::string)const;
188 virtual ObjectValidationError ValidateProperty(std::string, Variant v)const;
189 virtual ObjectValidationError ValidateProperty(std::string)const;
190
191
192 protected:
195 private:
196 };
197
198 class PSquare: public PRectangle
199 {
200 public:
201 PSquare(pInt x, pInt y, pInt size, Variant fg, bool filled);
202 virtual ~PSquare();
203 virtual pInt GetWidth() const{return mDX;};
204 virtual pInt GetHeight() const{return mDY;};
205 virtual void SetSize(pInt size);
206 virtual std::ostream & SendToStream(std::ostream& out);
207
208
209
210 //overloaded generic PEBLObjectBase methods
211 virtual bool SetProperty(std::string, Variant v);
212 virtual Variant GetProperty(std::string)const;
213 virtual ObjectValidationError ValidateProperty(std::string, Variant v)const;
214 virtual ObjectValidationError ValidateProperty(std::string)const;
215
216 protected:
217 private:
218 };
219
220
222 {
223 public:
224 PEllipse(pInt x1, pInt y1, pInt rx, pInt ry, Variant fg, bool filled);
225 virtual ~PEllipse();
226 virtual pInt GetWidth() const{return mRX;};
227 virtual pInt GetHeight() const{return mRY;};
228 virtual void SetSize(pInt dx, pInt dy);
229 virtual std::ostream & SendToStream(std::ostream& out);
230
231
232 //overloaded generic PEBLObjectBase methods
233 virtual bool SetProperty(std::string, Variant v);
234 virtual Variant GetProperty(std::string)const;
235 virtual ObjectValidationError ValidateProperty(std::string, Variant v)const;
236 virtual ObjectValidationError ValidateProperty(std::string)const;
237
238
239 protected:
240
241 //X1--Y2 are relative to mX and mY
244
245
246 private:
247};
248
249
250 class PCircle: public PDrawObject
251 {
252 public:
253 PCircle(pInt x1, pInt y1, pInt r, Variant fg, bool filled);
254 virtual ~PCircle();
255
256 virtual pInt GetWidth() const{return (pInt)(2*mR);};
257 virtual pInt GetHeight() const{return (pInt)(2*mR);};
258 virtual std::ostream & SendToStream(std::ostream& out);
259
260 virtual void SetSize(pInt r);
261
262 //overloaded generic PEBLObjectBase methods
263 virtual bool SetProperty(std::string, Variant v);
264 virtual Variant GetProperty(std::string)const;
265 virtual ObjectValidationError ValidateProperty(std::string, Variant v)const;
266 virtual ObjectValidationError ValidateProperty(std::string)const;
267
268
269 protected:
270
272 private:
273 };
274
275
276
277 class PPolygon: public PDrawObject
278 {
279 public:
280 PPolygon(pInt x, pInt y, Variant xpoints, Variant ypoints, Variant fg, bool filled);
281 virtual ~PPolygon();
282
283 virtual pInt GetWidth() const{return mWidth;};
284 virtual pInt GetHeight() const{return mHeight;};
285
286 virtual bool SetXPoints(Variant v);
287 virtual bool SetYPoints(Variant v);
288
289 virtual std::ostream & SendToStream(std::ostream& out);
290
291
292 //overloaded generic PEBLObjectBase methods
293 virtual bool SetProperty(std::string, Variant v);
294 virtual Variant GetProperty(std::string)const;
295 virtual ObjectValidationError ValidateProperty(std::string, Variant v)const;
296 virtual ObjectValidationError ValidateProperty(std::string)const;
297
298
299 protected:
300
303
304 private:
305 };
306
307
308 class PBezier: public PDrawObject
309 {
310 public:
311 PBezier(pInt x, pInt y, Variant xpoints, Variant ypoints, pInt steps, Variant fg);
312 virtual ~PBezier();
313
314 virtual pInt GetWidth() const{return mWidth;};
315 virtual pInt GetHeight() const{return mHeight;};
316
317 virtual bool SetXPoints(Variant v);
318 virtual bool SetYPoints(Variant v);
319 virtual bool SetSteps(Variant v);
320
321 virtual std::ostream & SendToStream(std::ostream& out);
322
323
324 //overloaded generic PEBLObjectBase methods
325 virtual bool SetProperty(std::string, Variant v);
326 virtual Variant GetProperty(std::string)const;
327 virtual ObjectValidationError ValidateProperty(std::string, Variant v)const;
328 virtual ObjectValidationError ValidateProperty(std::string)const;
329
330
331 protected:
332
336 private:
337 };
338
339#endif
340
341
342
343
344
#define pInt
Definition Defs.h:8
#define pDouble
Definition Defs.h:7
ObjectValidationError
Definition PEBLObject.h:37
virtual pInt GetHeight() const
virtual std::ostream & SendToStream(std::ostream &out)
virtual bool SetSteps(Variant v)
virtual bool SetXPoints(Variant v)
virtual ObjectValidationError ValidateProperty(std::string, Variant v) const
Variant mYPoints
virtual ~PBezier()
virtual bool SetYPoints(Variant v)
virtual Variant GetProperty(std::string) const
virtual pInt GetWidth() const
virtual bool SetProperty(std::string, Variant v)
pInt mSteps
Variant mXPoints
virtual pInt GetHeight() const
virtual void SetSize(pInt r)
virtual pInt GetWidth() const
virtual Variant GetProperty(std::string) const
virtual bool SetProperty(std::string, Variant v)
virtual ~PCircle()
virtual ObjectValidationError ValidateProperty(std::string, Variant v) const
pDouble mR
virtual std::ostream & SendToStream(std::ostream &out)
bool mAntiAliased
Definition PDrawObject.h:69
virtual void SetAA(bool aa)
virtual bool SetProperty(std::string, Variant v)
virtual void SetOutlineColor(Variant ocol)
PColor * GetOutlineColor() const
virtual void SetColor(Variant col)
PColor * GetColor() const
virtual ~PDrawObject()
virtual std::ostream & SendToStream(std::ostream &out) const =0
An inheritable printing class used by PEBLObjectBase::operator<<.
virtual ObjectValidationError ValidateProperty(std::string, Variant v) const
virtual Variant GetProperty(std::string) const
virtual void SetFilled(bool filled)
virtual pInt GetWidth() const
virtual bool SetProperty(std::string, Variant v)
virtual ~PEllipse()
virtual ObjectValidationError ValidateProperty(std::string, Variant v) const
virtual pInt GetHeight() const
virtual Variant GetProperty(std::string) const
virtual std::ostream & SendToStream(std::ostream &out)
virtual void SetSize(pInt dx, pInt dy)
virtual pInt GetWidth() const
Definition PDrawObject.h:80
pInt mDX
Definition PDrawObject.h:96
virtual std::ostream & SendToStream(std::ostream &out)
virtual pInt GetHeight() const
Definition PDrawObject.h:81
pInt mDY
Definition PDrawObject.h:97
virtual void SetSize(pInt dx, pInt dy)
virtual ~PLine()
virtual ObjectValidationError ValidateProperty(std::string, Variant v) const
virtual bool SetProperty(std::string, Variant v)
virtual Variant GetProperty(std::string) const
virtual pInt GetHeight() const
Variant mYPoints
virtual pInt GetWidth() const
Variant mXPoints
virtual bool SetYPoints(Variant v)
virtual Variant GetProperty(std::string) const
virtual ObjectValidationError ValidateProperty(std::string, Variant v) const
virtual bool SetXPoints(Variant v)
virtual ~PPolygon()
virtual std::ostream & SendToStream(std::ostream &out)
virtual bool SetProperty(std::string, Variant v)
virtual bool SetProperty(std::string, Variant v)
virtual pInt GetHeight() const
virtual Variant GetProperty(std::string) const
virtual ObjectValidationError ValidateProperty(std::string, Variant v) const
virtual pInt GetWidth() const
virtual std::ostream & SendToStream(std::ostream &out)
virtual ~PRectangle()
virtual void SetSize(pInt dx, pInt dy)
virtual pInt GetHeight() const
virtual bool SetProperty(std::string, Variant v)
virtual Variant GetProperty(std::string) const
virtual ~PSquare()
virtual std::ostream & SendToStream(std::ostream &out)
virtual ObjectValidationError ValidateProperty(std::string, Variant v) const
virtual pInt GetWidth() const
virtual void SetSize(pInt size)
virtual ~PThickLine()
pInt mThickness
virtual std::ostream & SendToStream(std::ostream &out)
virtual Variant GetProperty(std::string) const
virtual bool SetProperty(std::string, Variant v)
virtual void SetPosition(pInt x, pInt y)
This sets the widget's position on its parent widget.
virtual void SetEnds(pInt x1, pInt y1, pInt x2, pInt y2)
virtual ObjectValidationError ValidateProperty(std::string, Variant v) const
virtual void SetThickness(pInt t)
pInt mWidth
Definition PWidget.h:136
pInt mHeight
Definition PWidget.h:136