Blender V4.3
type_convert.cc
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2018 Blender Foundation
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later
4 *
5 * Author: Sergey Sharybin. */
6
7#ifdef _MSC_VER
8# include <iso646.h>
9#endif
10
12
13#include <cassert>
14#include <opensubdiv/sdc/crease.h>
15
16namespace blender::opensubdiv {
17
18OpenSubdiv::Sdc::SchemeType getSchemeTypeFromCAPI(OpenSubdiv_SchemeType type)
19{
20 switch (type) {
22 return OpenSubdiv::Sdc::SCHEME_BILINEAR;
24 return OpenSubdiv::Sdc::SCHEME_CATMARK;
25 case OSD_SCHEME_LOOP:
26 return OpenSubdiv::Sdc::SCHEME_LOOP;
27 }
28 assert(!"Unknown scheme type passed via C-API");
29 return OpenSubdiv::Sdc::SCHEME_CATMARK;
30}
31
32OpenSubdiv::Sdc::Options::FVarLinearInterpolation getFVarLinearInterpolationFromCAPI(
33 OpenSubdiv_FVarLinearInterpolation linear_interpolation)
34{
35 typedef OpenSubdiv::Sdc::Options Options;
36 switch (linear_interpolation) {
38 return Options::FVAR_LINEAR_NONE;
40 return Options::FVAR_LINEAR_CORNERS_ONLY;
42 return Options::FVAR_LINEAR_CORNERS_PLUS1;
44 return Options::FVAR_LINEAR_CORNERS_PLUS2;
46 return Options::FVAR_LINEAR_BOUNDARIES;
48 return Options::FVAR_LINEAR_ALL;
49 }
50 assert(!"Unknown fvar linear interpolation passed via C-API");
51 return Options::FVAR_LINEAR_NONE;
52}
53
55 OpenSubdiv::Sdc::Options::FVarLinearInterpolation linear_interpolation)
56{
57 typedef OpenSubdiv::Sdc::Options Options;
58 switch (linear_interpolation) {
59 case Options::FVAR_LINEAR_NONE:
61 case Options::FVAR_LINEAR_CORNERS_ONLY:
63 case Options::FVAR_LINEAR_CORNERS_PLUS1:
65 case Options::FVAR_LINEAR_CORNERS_PLUS2:
67 case Options::FVAR_LINEAR_BOUNDARIES:
69 case Options::FVAR_LINEAR_ALL:
71 }
72 assert(!"Unknown fvar linear interpolation passed via C-API");
74}
75
76OpenSubdiv::Sdc::Options::VtxBoundaryInterpolation getVtxBoundaryInterpolationFromCAPI(
77 OpenSubdiv_VtxBoundaryInterpolation boundary_interpolation)
78{
79 using OpenSubdiv::Sdc::Options;
80
81 switch (boundary_interpolation) {
83 return Options::VTX_BOUNDARY_NONE;
85 return Options::VTX_BOUNDARY_EDGE_ONLY;
87 return Options::VTX_BOUNDARY_EDGE_AND_CORNER;
88 }
89 assert(!"Unknown veretx boundary interpolation.");
90 return Options::VTX_BOUNDARY_EDGE_ONLY;
91}
92
93} // namespace blender::opensubdiv
OpenSubdiv_FVarLinearInterpolation getCAPIFVarLinearInterpolationFromOSD(OpenSubdiv::Sdc::Options::FVarLinearInterpolation linear_interpolation)
OpenSubdiv::Sdc::Options::VtxBoundaryInterpolation getVtxBoundaryInterpolationFromCAPI(OpenSubdiv_VtxBoundaryInterpolation boundary_interpolation)
OpenSubdiv::Sdc::SchemeType getSchemeTypeFromCAPI(OpenSubdiv_SchemeType type)
OpenSubdiv::Sdc::Options::FVarLinearInterpolation getFVarLinearInterpolationFromCAPI(OpenSubdiv_FVarLinearInterpolation linear_interpolation)
OpenSubdiv_FVarLinearInterpolation
@ OSD_FVAR_LINEAR_INTERPOLATION_CORNERS_ONLY
@ OSD_FVAR_LINEAR_INTERPOLATION_ALL
@ OSD_FVAR_LINEAR_INTERPOLATION_NONE
@ OSD_FVAR_LINEAR_INTERPOLATION_CORNERS_PLUS1
@ OSD_FVAR_LINEAR_INTERPOLATION_BOUNDARIES
@ OSD_FVAR_LINEAR_INTERPOLATION_CORNERS_PLUS2
OpenSubdiv_VtxBoundaryInterpolation
@ OSD_VTX_BOUNDARY_NONE
@ OSD_VTX_BOUNDARY_EDGE_AND_CORNER
@ OSD_VTX_BOUNDARY_EDGE_ONLY
OpenSubdiv_SchemeType
@ OSD_SCHEME_CATMARK
@ OSD_SCHEME_BILINEAR
@ OSD_SCHEME_LOOP