vbooleancmd.h
1/* This file is part of the KDE project
2 Copyright (C) 2001, The Karbon Developers
3 Copyright (C) 2002, The Karbon Developers
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details.
14
15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 * Boston, MA 02110-1301, USA.
19*/
20
21#ifndef __VBOOLEANCMD_H__
22#define __VBOOLEANCMD_H__
23
24
25#include <tqvaluelist.h>
26
27#include "vcommand.h"
28
29class VSubpath;
30class VSegment;
31class VSelection;
32
33
34class VBooleanCmd : public VCommand
35{
36public:
37 enum VBooleanType
38 {
39 intersect,
40 shape_union,
41 shape_xor,
42 substract
43 };
44
45 VBooleanCmd( VDocument* doc, VBooleanType type = intersect );
46 virtual ~VBooleanCmd();
47
48 virtual void execute();
49 virtual void unexecute();
50
51
52 // We can only visit object pairs.
53 virtual bool visit( VObject& /*object*/ )
54 {
55 return false;
56 }
57
58 // A pair visit() function.
59 bool visit( VObject& object1, VObject& object2 );
60
61
62 virtual void visitVSubpath( VSubpath& path );
63
64protected:
65 typedef TQValueList<double> VParamList;
66
67 void recursiveSubdivision(
68 const VSegment& segment1, double t0_1, double t1_1,
69 const VSegment& segment2, double t0_2, double t1_2,
70 VParamList& params1, VParamList& params2 );
71
72
73 VSelection* m_selection;
74
75 VBooleanType m_type;
76
77 VSubpath* m_path1;
78 VSubpath* m_path2;
79};
80
81#endif
82
The base class for all karbon commands.
Definition vcommand.h:42
virtual void unexecute()
Unexecutes the command.
Definition vcommand.h:75
virtual void execute()=0
Executes the command.
All non-visual, static doc info is in here.
Definition vdocument.h:53
The base class for all karbon objects.
Definition vobject.h:50
A class representing lines and beziers.
Definition vsegment.h:43
VSelection manages a set of selected vobjects.
Definition vselection.h:62
VSubpath provides a sophisticated list of VSegment.
Definition vpath.h:43
virtual void visitVSubpath(VSubpath &path)
Visit method for a VSubpath.
Definition vvisitor.cpp:86
virtual bool visit(VObject &object)
General visit method.
Definition vvisitor.cpp:31