box3d-face.h revision 209527815f6ad1b81d21bb3188947aef3d845010
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#ifndef __SP_3DBOX_FACE_H__
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#define __SP_3DBOX_FACE_H__
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/*
506aa7c68b127eefb0197e329af7e9abcc3ebc98Garrett D'Amore * Face of a 3D box ('perspectivic rectangle')
3f7d54a6b84904c8f4d8daa4c7b577bede7df8b9Garrett D'Amore *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Authors:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Maximilian Albert <Anhalter42@gmx.de>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Copyright (C) 2007 Authors
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
00687e57f8c568d4f8fb446b6530a2942842292fartem * Released under GNU GPL, read the file 'COPYING' for more information
00687e57f8c568d4f8fb446b6530a2942842292fartem */
00687e57f8c568d4f8fb446b6530a2942842292fartem
00687e57f8c568d4f8fb446b6530a2942842292fartem#include "perspective-line.h"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include "display/curve.h"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include "sp-path.h"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include "sp-object.h"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include "inkscape.h"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include "desktop-style.h"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include "desktop.h"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include "xml/document.h"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemclass SP3DBox;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemclass Box3DFace {
18c2aff776a775d34a4c9893a4c72e0434d68e36artempublic:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem Box3DFace(SP3DBox *box, NR::Point &A, NR::Point &B, NR::Point &C, NR::Point &D,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem Box3D::Axis plane, Box3D::FrontOrRear rel_pos);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem Box3DFace(Box3DFace const &box3dface);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem ~Box3DFace();
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem NR::Point operator[](unsigned int i);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem void draw(SP3DBox *box3d, SPCurve *c);
7b840e52d558c34b70cbcde044d8d79852d169d2phitran
a9da3307db733eb1739ba859952610bba3d894abnp /***
18c2aff776a775d34a4c9893a4c72e0434d68e36artem void set_shape(NR::Point const ul, NR::Point const lr,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem Box3D::Axis const dir1, Box3D::Axis const dir2,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem unsigned int shift_count = 0, NR::Maybe<NR::Point> pt_align = NR::Nothing(),
18c2aff776a775d34a4c9893a4c72e0434d68e36artem bool align_along_PL = false);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem ***/
18c2aff776a775d34a4c9893a4c72e0434d68e36artem void set_corners (NR::Point &A, NR::Point &B, NR::Point &C, NR::Point &D);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem //void set_face (NR::Point const A, NR::Point const C, Box3D::Axis const dir1, Box3D::Axis const dir2);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem void hook_path_to_3dbox(SPPath * existing_path = NULL);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem void set_path_repr();
18c2aff776a775d34a4c9893a4c72e0434d68e36artem void set_curve();
18c2aff776a775d34a4c9893a4c72e0434d68e36artem inline void lower_to_bottom() { SP_ITEM (path)->lowerToBottom(); }
18c2aff776a775d34a4c9893a4c72e0434d68e36artem inline void raise_to_top() { SP_ITEM (path)->raiseToTop(); }
18c2aff776a775d34a4c9893a4c72e0434d68e36artem gchar * axes_string();
18c2aff776a775d34a4c9893a4c72e0434d68e36artem gchar * svg_repr_string();
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemprivate:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem NR::Point *corners[4];
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem Box3D::Axis dir1;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem Box3D::Axis dir2;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem Box3D::FrontOrRear front_or_rear;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem SPPath *path;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem SP3DBox *parent_box3d;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem};
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#endif
18c2aff776a775d34a4c9893a4c72e0434d68e36artem