/usr/include/CGAL/Three/Scene_interface.h is in libcgal-dev 4.11-2build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 | // Copyright (c) 2012-2015 GeometryFactory Sarl (France)
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).
// You can redistribute it and/or modify it under the terms of the GNU
// General Public License as published by the Free Software Foundation,
// either version 3 of the License, or (at your option) any later version.
//
// Licensees holding a valid commercial license may use this file in
// accordance with the commercial license agreement provided with the software.
//
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
//
// $URL$
// $Id$
//
//
// Author(s) : Laurent RINEAU
//! \file Scene_interface.h
#ifndef SCENE_INTERFACE_H
#define SCENE_INTERFACE_H
#include <CGAL/license/Three.h>
/*!
* \ingroup PkgThree
* The RenderingMode determines which of an item's primitives must be drawn.
* It can be Points, PointsPlusNormals, Wireframe, Flat, FlatPlusEdges, or Gouraud.
* - Points, PointsPlusNormals, and Wireframe have no light model.
* - Flat and FlatPlusEdges use a basic light model with one normal per facet.
* - Gouraud uses the same light model but with one normal per vertex.
*/
enum RenderingMode
{
Points = 0, //! Renders only points without lighting.
PointsPlusNormals, //!Renders points and normals.
Splatting, //!Renders splats. Splats are oriented points that look like discs.
Wireframe, //!Renders only edges.
Flat, //!Renders only faces, with a lighting per face.
FlatPlusEdges, //!Renders flat faces and edges.
Gouraud, //!Renders only faces, with a lighting per vertex.
ShadedPoints, //!Renders only points with lighting.
NumberOfRenderingMode //!Number of values in this enum.
};
#include <QString>
#include <QColor>
#include <QList>
#include <algorithm>
#include <cmath>
#include <CGAL/Bbox_3.h>
namespace CGAL{
namespace Three{
class Scene_item;
class Scene_group_item;
}
}
namespace CGAL {
namespace Three{
/*!
* This is the class given to the plugins to interact with the scene.
* */
class Scene_interface {
public:
//!A bounding box is a box with each face corresponding to an extremum of its contents.
typedef CGAL::Bbox_3 Bbox;
//!\brief Integer used as the index of a Scene_item.
//! An item's index is its position in the Geometric Objects list.
typedef int Item_id;
virtual ~Scene_interface() {};
//!Adds an item to the Geometric Objects list.
//!@returns the index of the new item.
virtual Item_id addItem(CGAL::Three::Scene_item* item) = 0;
//! \brief Replaces an item by a new one in the scene.
//! The item which id is `id` is replaced by `item`.
//! The first one is deleted and gives its index to the second one.
//! If emit_item_about_to_be_destroyed is true, emits
//! an itemAboutToBeDestroyed signal.
//!@returns a pointer to the old item.
virtual Scene_item* replaceItem(Item_id id, CGAL::Three::Scene_item* item, bool emit_item_about_to_be_destroyed = false) = 0;
//!Moves item to the targeted group.
virtual void changeGroup(CGAL::Three::Scene_item* item, CGAL::Three::Scene_group_item* target_group) = 0;
/*! Erases an item in the list.
* @returns the index of the item just before the one that is erased,
* or just after.
* @returns -1 if the list is empty.*/
virtual Item_id erase(Item_id) = 0;
/*! Deletes the items with the target indices.
* @returns the index of the polyhedron just before the
* one that is erased, or just after. Returns -1 if
* the list is empty.
*/
virtual int erase(QList<int>) = 0;
/*! Creates a copy of the item whith the id `id`.
* @returns the index of the new item (-1 on error).
*/
virtual Item_id duplicate(Item_id id) = 0;
// Accessors (getters)
//! \brief The number of items
//!@returns the number of items in the scene.
virtual int numberOfEntries() const = 0;
//!\brief The `id`th item.
//! @returns the item with the specified index.
virtual CGAL::Three::Scene_item* item(Item_id id) const = 0;
//!\brief The id of `item`
//! @returns the id of the specified item.
virtual Item_id item_id(CGAL::Three::Scene_item* item) const = 0;
//!\brief The currently selected item's index.
//!@returns the currently selected item's index.
//!@returns -1 if none or several items are selected
virtual Item_id mainSelectionIndex() const = 0;
//!The id of the currently selected item.
//!@returns the list of currently selected items indices.
virtual QList<Item_id> selectionIndices() const = 0;
//!Item_A is designated with the column A/B in the Geometric Objetcts widget.
//!@returns the index of the Item_A
virtual Item_id selectionAindex() const = 0;
//!Item_B is designated with the column A/B in the Geometric Objetcts widget.
//!@returns the index of the Item_B
virtual Item_id selectionBindex() const = 0;
//!\brief The scene's Bbox
//!@returns the scene's bounding box
//! @see Scene_interface::Bbox
virtual Bbox bbox() const = 0;
//!The length of the diagonal of the scene's Bbox
//!@returns the length of the bounding box's diagonal.
virtual double len_diagonal() const = 0;
public:
//! Updates the information about the `i`th item in the
//! Geometric Objects list and redraws the scene.
virtual void itemChanged(Item_id i) = 0;
//! Updates the information about `item` in the
//! Geometric Objects list and redraws the scene.
virtual void itemChanged(CGAL::Three::Scene_item* item) = 0;
//! Re computes the scene Bbox without recentering it.
virtual void itemVisibilityChanged(CGAL::Three::Scene_item*) = 0;
//! Clears the current selection then sets the selected item to the target index.
//! Used to update the selection in the Geometric Objects view.
virtual void setSelectedItem(Item_id) = 0;
}; // end interface Scene_interface
}
}
#endif // SCENE_INTERFACE_H
|