~ubuntu-branches/ubuntu/edgy/koffice/edgy-updates

« back to all changes in this revision

Viewing changes to karbon/commands/vbooleancmd.h

  • Committer: Bazaar Package Importer
  • Author(s): Ben Burton
  • Date: 2004-05-09 11:33:00 UTC
  • mto: This revision was merged to the branch mainline in revision 3.
  • Revision ID: james.westby@ubuntu.com-20040509113300-xi5t1z4yxe7n03x7
Tags: upstream-1.3.1
ImportĀ upstreamĀ versionĀ 1.3.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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., 59 Temple Place - Suite 330,
 
18
   Boston, MA 02111-1307, USA.
 
19
*/
 
20
 
 
21
#ifndef __VBOOLEANCMD_H__
 
22
#define __VBOOLEANCMD_H__
 
23
 
 
24
 
 
25
#include <qvaluelist.h>
 
26
 
 
27
#include "vcommand.h"
 
28
 
 
29
class VSubpath;
 
30
class VSegment;
 
31
class VSelection;
 
32
 
 
33
 
 
34
class VBooleanCmd : public VCommand
 
35
{
 
36
public:
 
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
 
 
64
protected:
 
65
        typedef QValueList<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