Files
test2/source/blender/blenkernel/intern/multires_unsubdivide.h
Sergey Sharybin a12a8a71bb Remove "All Rights Reserved" from Blender Foundation copyright code
The goal is to solve confusion of the "All rights reserved" for licensing
code under an open-source license.

The phrase "All rights reserved" comes from a historical convention that
required this phrase for the copyright protection to apply. This convention
is no longer relevant.

However, even though the phrase has no meaning in establishing the copyright
it has not lost meaning in terms of licensing.

This change makes it so code under the Blender Foundation copyright does
not use "all rights reserved". This is also how the GPL license itself
states how to apply it to the source code:

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software ...

This change does not change copyright notice in cases when the copyright
is dual (BF and an author), or just an author of the code. It also does
mot change copyright which is inherited from NaN Holding BV as it needs
some further investigation about what is the proper way to handle it.
2023-03-30 10:51:59 +02:00

74 lines
2.0 KiB
C

/* SPDX-License-Identifier: GPL-2.0-or-later
* Copyright 2020 Blender Foundation */
/** \file
* \ingroup bke
*/
#pragma once
#include "BLI_sys_types.h"
struct BMesh;
struct Mesh;
struct MultiresModifierData;
typedef struct MultiresUnsubdivideGrid {
/* For sanity checks. */
int grid_index;
int grid_size;
/** Grid coordinates in object space. */
float (*grid_co)[3];
} MultiresUnsubdivideGrid;
typedef struct MultiresUnsubdivideContext {
/* Input Mesh to un-subdivide. */
struct Mesh *original_mesh;
struct MDisps *original_mdisp;
/** Number of subdivision in the grids of the input mesh. */
int num_original_levels;
/** Level 0 base mesh after applying the maximum amount of unsubdivisions. */
struct Mesh *base_mesh;
/** Limit on how many levels down the unsubdivide operation should create, if possible. */
int max_new_levels;
/** New levels that were created after unsubdividing. */
int num_new_levels;
/**
* Number of subdivisions that should be applied to the base mesh.
* (num_new_levels + num_original_levels).
*/
int num_total_levels;
/** Data for the new grids, indexed by base mesh loop index. */
int num_grids;
struct MultiresUnsubdivideGrid *base_mesh_grids;
/* Private data. */
struct BMesh *bm_original_mesh;
int *loop_to_face_map;
const int *base_to_orig_vmap;
} MultiresUnsubdivideContext;
/* --------------------------------------------------------------------
* Construct/destruct reshape context.
*/
void multires_unsubdivide_context_init(MultiresUnsubdivideContext *context,
struct Mesh *original_mesh,
struct MultiresModifierData *mmd);
void multires_unsubdivide_context_free(MultiresUnsubdivideContext *context);
/* --------------------------------------------------------------------
* Rebuild Lower Subdivisions.
*/
/* Rebuilds all subdivision to the level 0 base mesh. */
bool multires_unsubdivide_to_basemesh(MultiresUnsubdivideContext *context);