Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/makesdna/DNA_curveprofile_types.h')
-rw-r--r--source/blender/makesdna/DNA_curveprofile_types.h91
1 files changed, 91 insertions, 0 deletions
diff --git a/source/blender/makesdna/DNA_curveprofile_types.h b/source/blender/makesdna/DNA_curveprofile_types.h
new file mode 100644
index 00000000000..d7e3591a9b8
--- /dev/null
+++ b/source/blender/makesdna/DNA_curveprofile_types.h
@@ -0,0 +1,91 @@
+/*
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Copyright (C) 2019 Blender Foundation.
+ * All rights reserved.
+ */
+
+/** \file
+ * \ingroup DNA
+ */
+
+#ifndef DNA_PROFILEPATH_TYPES_H
+#define DNA_PROFILEPATH_TYPES_H
+
+#include "DNA_vec_types.h"
+
+/** Number of points in high resolution table is dynamic up to a maximum. */
+#define PROF_TABLE_MAX 512
+/** Number of table points per control point. */
+#define PROF_RESOL 16
+/** Dynamic size of widget's high resolution table. Input should be profile->totpoint. */
+#define PROF_N_TABLE(n_pts) min_ii(PROF_TABLE_MAX, (((n_pts - 1)) * PROF_RESOL) + 1)
+
+/** Each control point that makes up the profile.
+ * \note The flags use the same enum as Bezier curves, but they aren't garanteed
+ * to have identical functionality, and all types aren't implemented. */
+typedef struct CurveProfilePoint {
+ /** Location of the point, keep together. */
+ float x, y;
+ /** Flag selection state and others. */
+ short flag;
+ /** Flags for both handle's type (eBezTriple_Handle). */
+ char h1, h2;
+} CurveProfilePoint;
+
+/** #CurveProfilePoint.flag */
+enum {
+ PROF_SELECT = (1 << 0),
+};
+
+/** Defines a profile */
+typedef struct CurveProfile {
+ /** Number of user-added points that define the profile. */
+ short path_len;
+ /** Number of sampled points. */
+ short segments_len;
+ /** Preset to use when reset. */
+ int preset;
+ /** Sequence of points defining the shape of the curve. */
+ CurveProfilePoint *path;
+ /** Display and evaluation table at higher resolution for curves. */
+ CurveProfilePoint *table;
+ /** The positions of the sampled points. Used to display a preview of where they will be. */
+ CurveProfilePoint *segments;
+ /** Flag for mode states, sampling options, etc... */
+ int flag;
+ /** Used for keeping track how many times the widget is changed. */
+ int changed_timestamp;
+ /** Widget's current view, and clipping rect (is default rect too). */
+ rctf view_rect, clip_rect;
+} CurveProfile;
+
+/** #CurveProfile.flag */
+enum {
+ PROF_USE_CLIP = (1 << 0), /* Keep control points inside bounding rectangle. */
+ PROF_SYMMETRY_MODE = (1 << 1), /* Unused for now. */
+ PROF_SAMPLE_STRAIGHT_EDGES = (1 << 2), /* Sample extra points on straight edges. */
+ PROF_SAMPLE_EVEN_LENGTHS = (1 << 3), /* Put segments evenly spaced along the path. */
+};
+
+typedef enum eCurveProfilePresets {
+ PROF_PRESET_LINE = 0, /* Default simple line between end points. */
+ PROF_PRESET_SUPPORTS = 1, /* Support loops for a regular curved profile. */
+ PROF_PRESET_CORNICE = 2, /* Moulding type example. */
+ PROF_PRESET_CROWN = 3, /* Second moulding example. */
+ PROF_PRESET_STEPS = 4, /* Dynamic number of steps defined by totsegments. */
+} eCurveProfilePresets;
+
+#endif