DataElements.h
1 //##################################################################################################
2 //
3 // Ceetron Desktop Components
4 // Component: UnstructGrid
5 //
6 // --------------------------------------------------------------------------------------------
7 // Copyright (C) 2011, Ceetron AS
8 // This is UNPUBLISHED PROPRIETARY SOURCE CODE of Ceetron AS. The contents of this file may
9 // not be disclosed to third parties, copied or duplicated in any form, in whole or in part,
10 // without the prior written permission of Ceetron AS.
11 //##################################################################################################
12 
13 #pragma once
14 
15 #include "CeeUnstructGrid/Base.h"
16 
17 #include "CeeCore/RefCountedObject.h"
18 #include "CeeUnstructGrid/Element.h"
19 
20 #include <vector>
21 
22 namespace cee {
23 namespace ug {
24 
25 
26 //==================================================================================================
27 //
28 //
29 //
30 //==================================================================================================
31 class CEE_UG_EXPORT DataElements : public RefCountedObject
32 {
33 public:
34  DataElements(bool withElementIds, size_t userPropertyCount);
35  virtual ~DataElements();
36 
37  size_t elementCount() const;
38  Element::Type elementType(size_t elementIndex) const;
39  Element::Type singleElementType() const;
40  std::vector<unsigned int> elementNodes(size_t elementIndex) const;
41  void reserve(size_t elementCount, size_t elementNodeCount);
42  size_t addElement(Element::Type elementType, const std::vector<unsigned int>& elementNodes);
43  size_t addElement(Element::Type elementType, const unsigned int elementNodes[], size_t elementNodeCount);
44  size_t addElementInt(Element::Type elementType, const int elementNodes[], size_t elementNodeCount);
45  void addElements(Element::Type elementType, size_t elementCount, const std::vector<unsigned int>& elementNodes);
46  void addElements(Element::Type elementType, size_t elementCount, const unsigned int elementNodes[], size_t totalElementNodeCount);
47  void addElementsInt(Element::Type elementType, size_t elementCount, const int elementNodes[], size_t totalElementNodeCount);
48 
49  void removeAllElements();
50 
51  bool hasElementIds() const;
52  int elementId(size_t elementIndex) const;
53  void setElementId(size_t elementIndex, int elementId);
54 
55  size_t elementIndex(int elementId) const;
56 
57  size_t userPropertyCount() const;
58  void setUserProperty(size_t userPropertyIndex, size_t elementIndex, int userProperty);
59  int userProperty(size_t userPropertyIndex, size_t elementIndex) const;
60 
61  size_t elementNodeCount() const;
62  size_t elementSurfaceCount() const;
63 
64  size_t nodesPerElement(size_t elementIndex) const;
65  size_t surfacesPerElement(size_t elementIndex) const;
66  size_t edgesPerElement(size_t elementIndex) const;
67 
68 private:
69  CEE_PRIVATE_F(DataPart);
70  CEE_PRIVATE_F(ElementsQuery);
71  CEE_PRIVATE_IMPL(DataElements);
72  CEE_DISALLOW_COPY_AND_ASSIGN(DataElements);
73 };
74 
75 
76 } // namespace ug
77 } // namespace cee
A part in the geometry. Consists of a collection of node coordinates and a collection element connect...
Definition: DataPart.h:28
Namespace cee contains all functionality and structures under the Core component. ...
Definition: AppComponent.cpp:26
Type
List of supported element types.
Definition: Element.h:32
A query object for extracting data and information from data elements.
Definition: ElementsQuery.h:33
Base class for all reference counted objects with built-in support for intrusive reference counting...
Definition: RefCountedObject.h:34
Collection of elements in a part. Examples of element types are points, triangles or hexahedrons...
Definition: DataElements.h:31