Files
test/source/blender/geometry/GEO_mesh_selection.hh
Iliya Katueshenock 361174b588 Refactor: GEO: Mesh selection header file
Share code of geometry processing of mesh selection.
For now, `mesh_copy_selection` is only user of this code,
but in #115142 this will also be used.

Pull Request: https://projects.blender.org/blender/blender/pulls/115376
2023-11-25 13:41:17 +01:00

52 lines
2.1 KiB
C++

/* SPDX-FileCopyrightText: 2023 Blender Authors
*
* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#include "BLI_index_mask.hh"
#include "BLI_math_vector_types.hh"
#include "BLI_offset_indices.hh"
#include "BLI_span.hh"
namespace blender::geometry {
/** A vertex is selected if it's used by a selected edge. */
IndexMask vert_selection_from_edge(Span<int2> edges,
const IndexMask &edge_mask,
int verts_num,
IndexMaskMemory &memory);
/** A vertex is selected if it is used by a selected face. */
IndexMask vert_selection_from_face(OffsetIndices<int> faces,
const IndexMask &face_mask,
Span<int> corner_verts,
int verts_num,
IndexMaskMemory &memory);
/** An edge is selected if it is used by a selected face. */
IndexMask edge_selection_from_face(OffsetIndices<int> faces,
const IndexMask &face_mask,
Span<int> corner_edges,
int edges_num,
IndexMaskMemory &memory);
/** An edge is selected if both of its vertices are selected. */
IndexMask edge_selection_from_vert(Span<int2> edges,
Span<bool> vert_selection,
IndexMaskMemory &memory);
/** A face is selected if all of its vertices are selected. */
IndexMask face_selection_from_vert(OffsetIndices<int> faces,
Span<int> corner_verts,
Span<bool> vert_selection,
IndexMaskMemory &memory);
/** A face is selected if all of its edges are selected. */
IndexMask face_selection_from_edge(OffsetIndices<int> faces,
Span<int> corner_edges,
Span<bool> edge_mask,
IndexMaskMemory &memory);
} // namespace blender::geometry