Code

Refactoring of 3D box internals.
[inkscape.git] / src / box3d-face.h
1 #ifndef __SP_3DBOX_FACE_H__
2 #define __SP_3DBOX_FACE_H__
4 /*
5  * Face of a 3D box ('perspectivic rectangle')
6  *
7  * Authors:
8  *   Maximilian Albert <Anhalter42@gmx.de>
9  *
10  * Copyright (C) 2007      Authors
11  *
12  * Released under GNU GPL, read the file 'COPYING' for more information
13  */
15 #include "perspective-line.h"
16 #include "display/curve.h"
17 #include "sp-path.h"
18 #include "sp-object.h"
19 #include "inkscape.h"
20 #include "desktop-style.h"
21 #include "desktop.h"
22 #include "xml/document.h"
24 class SP3DBox;
26 class Box3DFace {
27 public:
28     Box3DFace(SP3DBox *box3d);
29     Box3DFace(SP3DBox *box3d, NR::Point &A, NR::Point &B, NR::Point &C, NR::Point &D);
30     //Box3DFace(SP3DBox *box3d, NR::Point const ul, NR::Point const lr,
31     //          Box3D::Axis const dir1, Box3D::Axis const dir2,
32     //          unsigned int shift_count = 0, NR::Maybe<NR::Point> pt_align = NR::Nothing(), bool align_along_PL = false);
33     Box3DFace(Box3DFace const &box3dface);
34     ~Box3DFace();
36     NR::Point operator[](unsigned int i);
37     void draw(SP3DBox *box3d, SPCurve *c);
39     /***
40     void set_shape(NR::Point const ul, NR::Point const lr,
41                    Box3D::Axis const dir1, Box3D::Axis const dir2,
42                    unsigned int shift_count = 0, NR::Maybe<NR::Point> pt_align = NR::Nothing(),
43                    bool align_along_PL = false);
44     ***/
45     void set_corners (NR::Point &A, NR::Point &B, NR::Point &C, NR::Point &D);
46     void set_face (NR::Point const A, NR::Point const C, Box3D::Axis const dir1, Box3D::Axis const dir2);
47     
48     void hook_path_to_3dbox();
49     void set_path_repr();
50     void set_curve();
51     gchar * svg_repr_string();
53 private:
54     NR::Point *corners[4];
56     Box3D::Axis dir1;
57     Box3D::Axis dir2;
58     
59     SPPath *path;
60     SP3DBox *parent_box3d; // the parent box
61 };
63 #endif