Currently job artifacts in CI/CD pipelines on LRZ GitLab never expire. Starting from Wed 26.1.2022 the default expiration time will be 30 days (GitLab default). Currently existing artifacts in already completed jobs will not be affected by the change. The latest artifacts for all jobs in the latest successful pipelines will be kept. More information: https://gitlab.lrz.de/help/user/admin_area/settings/continuous_integration.html#default-artifacts-expiration

geometrydatafactory.h 4.13 KB
Newer Older
1
2
3
4
// ================================================================================================
// 
// This file is part of the CAMPVis Software Framework.
// 
5
// If not explicitly stated otherwise: Copyright (C) 2012-2014, all rights reserved,
6
7
//      Christian Schulte zu Berge <christian.szb@in.tum.de>
//      Chair for Computer Aided Medical Procedures
8
9
//      Technische Universitaet Muenchen
//      Boltzmannstr. 3, 85748 Garching b. Muenchen, Germany
10
// 
11
12
// For a full list of authors and contributors, please refer to the file "AUTHORS.txt".
// 
13
14
15
16
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file 
// except in compliance with the License. You may obtain a copy of the License at
// 
// http://www.apache.org/licenses/LICENSE-2.0
17
// 
18
19
20
21
// Unless required by applicable law or agreed to in writing, software distributed under the 
// License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
// either express or implied. See the License for the specific language governing permissions 
// and limitations under the License.
22
23
24
25
26
27
28
29
// 
// ================================================================================================

#ifndef GEOMETRYFACTORY_H__
#define GEOMETRYFACTORY_H__

#include "tgt/bounds.h"
#include "tgt/vector.h"
30

31
32
33
#include "core/datastructures/geometrydata.h"
#include "core/datastructures/facegeometry.h"
#include "core/datastructures/meshgeometry.h"
34
#include "core/datastructures/multiindexedgeometry.h"
35
36
37
38
39

#include <vector>

namespace campvis {

40
    class CAMPVIS_CORE_API GeometryDataFactory {
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
    public:
        /**
         * Creates a FaceGeometry building an axis-aligned rectangle face in the YX plane (quad) 
         * with the given bounds and texture coordinates.
         * \note    Caller has to take ownership of the returned pointer.
         * \param   llf     Coordinates of the lower left vertex
         * \param   urb     Coordinates of the upper right vertex
         * \param   texLlf  Texture coordinates of the lower left vertex
         * \param   texUrb  Texture coordinates of the upper right vertex
         * \return  A FaceGeometry building a quad with the given bounds and texture coordinates.
         */
        static FaceGeometry* createQuad(const tgt::vec3& llf, const tgt::vec3& urb, const tgt::vec3& texLlf, const tgt::vec3& texUrb);

        /**
         * Creates a MeshGeometry building a cube with the given bounds and texture coordinates.
         * \note    Caller has to take ownership of the returned pointer.
         * \param   bounds      coordinates of the cube bounds
         * \param   texBounds   texture coordinates at the cube bounds
         * \return  A MeshGeometry building a cube with the given bounds and texture coordinates.
         */
        static MeshGeometry* createCube(const tgt::Bounds& bounds, const tgt::Bounds& texBounds);

63
64
65
66
67
        /**
         * Creates an MultiIndexedGeometry storing the famous Utah teapot.
         * \return  MultiIndexedGeometry storing the famous Utah teapot.
         */
        static MultiIndexedGeometry* createTeapot();
68
69
70

        /**
         * Creates an MultiIndexedGeometry storing a unit sphere around the origin.
71
72
         * \param   numStacks     Number of stacks in the sphere
         * \param   numSlices     Number of slices in the sphere
73
74
75
         * \return  MultiIndexedGeometry storing a unit sphere around the origin.
         */
        static MultiIndexedGeometry* createSphere(uint16_t numStacks = 6, uint16_t numSlices = 12);
76
77
78
79
80
81
82
83
84
85
86


        /**
         * Creates an MultiIndexedGeometry storing a unit length arrow in Z direction starting from the origin.
         * \param   numSlices	Number of slices in the cylinder and cone
		 * \param	tipLen		Length of arrow tip (between 0 and 1)
         * \param   cylRadius	Radius of the cylinder (arrow shaft)
		 * \param	tipRadius	Radius of the bottom of the arrow tip
         * \return  MultiIndexedGeometry storing a unit arrow in Z direction starting from the origin.
         */
		static MultiIndexedGeometry* createArrow(uint16_t numSlices = 12, float tipLen = 0.35, float cylRadius = 0.05, float tipRadius = 0.15);
87
88
89
90
91
    };

}

#endif // GEOMETRYFACTORY_H__