This file is indexed.

/usr/include/SFCGAL/detail/triangulate/markDomains.h is in libsfcgal-dev 1.2.2-1.

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
/**
 *   SFCGAL
 *
 *   Copyright (C) 2012-2013 Oslandia <infos@oslandia.com>
 *   Copyright (C) 2012-2013 IGN (http://www.ign.fr)
 *
 *   This library is free software; you can redistribute it and/or
 *   modify it under the terms of the GNU Library General Public
 *   License as published by the Free Software Foundation; either
 *   version 2 of the License, or (at your option) any later version.
 *
 *   This library is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *   Library General Public License for more details.

 *   You should have received a copy of the GNU Library General Public
 *   License along with this library; if not, see <http://www.gnu.org/licenses/>.
 */

#ifndef _SFCGAL_TRIANGULATE_DETAIL_MARKDOMAINS_H_
#define _SFCGAL_TRIANGULATE_DETAIL_MARKDOMAINS_H_


namespace SFCGAL {
namespace triangulate {
namespace detail {

/**
 * @brief fill nestingLevel
 *
 * Adapted from CGAL-4.1/examples/Triangulation_2/polygon_triangulation.cpp
 */
template < typename CDT >
void markDomains(
    CDT& cdt,
    typename CDT::Face_handle start,
    int index,
    std::list< typename CDT::Edge >& border
)
{
    typedef typename CDT::Face_handle Face_handle ;
    typedef typename CDT::Edge        Edge ;

    if ( start->info().nestingLevel != -1 ) {
        return;
    }

    std::list< Face_handle > queue;
    queue.push_back( start );

    while ( !queue.empty() ) {
        Face_handle fh = queue.front();
        queue.pop_front();

        if ( fh->info().nestingLevel == -1 ) {
            fh->info().nestingLevel = index;

            for ( int i = 0; i < 3; i++ ) {
                Edge e( fh, i );
                Face_handle n = fh->neighbor( i );

                if ( n->info().nestingLevel == -1 ) {
                    if ( cdt.is_constrained( e ) ) {
                        border.push_back( e );
                    }
                    else {
                        queue.push_back( n );
                    }
                }
            }
        }
    }
}

/**
 * @brief fill nestingLevel
 *
 * Adapted from CGAL-4.1/examples/Triangulation_2/polygon_triangulation.cpp
 */
template < typename CDT >
void markDomains( CDT& cdt )
{
    typedef typename CDT::All_faces_iterator All_faces_iterator ;
    typedef typename CDT::Face_handle        Face_handle ;
    typedef typename CDT::Edge               Edge ;

    for ( All_faces_iterator it = cdt.all_faces_begin(); it != cdt.all_faces_end(); ++it ) {
        it->info().nestingLevel = -1;
    }

    int index = 0;
    std::list< Edge > border;
    markDomains( cdt, cdt.infinite_face(), index++, border );

    while ( ! border.empty() ) {
        Edge e = border.front();
        border.pop_front();
        Face_handle n = e.first->neighbor( e.second );

        if ( n->info().nestingLevel == -1 ) {
            markDomains( cdt, n, e.first->info().nestingLevel + 1, border );
        }
    }
}

}//namespace detail
}//namespace triangulate
}//namespace SFCGAL


#endif