Blender  V2.93
DNA_linestyle_types.h
Go to the documentation of this file.
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  *
16  * The Original Code is Copyright (C) 2010 Blender Foundation.
17  * All rights reserved.
18  */
19 
20 #pragma once
21 
26 #include "DNA_ID.h"
27 #include "DNA_listBase.h"
28 
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32 
33 #ifndef MAX_MTEX
34 # define MAX_MTEX 18
35 #endif
36 
37 /* texco (also in DNA_material_types.h) */
38 #define TEXCO_STROKE 16 /* actually its UV */
39 
40 struct AnimData;
41 struct ColorBand;
42 struct CurveMapping;
43 struct MTex;
44 struct Object;
45 struct bNodeTree;
46 
47 typedef struct LineStyleModifier {
49 
51  char name[64];
52  int type;
53  float influence;
54  int flags;
55  int blend;
57 
58 /* LineStyleModifier::type */
59 #define LS_MODIFIER_ALONG_STROKE 1
60 #define LS_MODIFIER_DISTANCE_FROM_CAMERA 2
61 #define LS_MODIFIER_DISTANCE_FROM_OBJECT 3
62 #define LS_MODIFIER_MATERIAL 4
63 #define LS_MODIFIER_SAMPLING 5
64 #define LS_MODIFIER_BEZIER_CURVE 6
65 #define LS_MODIFIER_SINUS_DISPLACEMENT 7
66 #define LS_MODIFIER_SPATIAL_NOISE 8
67 #define LS_MODIFIER_PERLIN_NOISE_1D 9
68 #define LS_MODIFIER_PERLIN_NOISE_2D 10
69 #define LS_MODIFIER_BACKBONE_STRETCHER 11
70 #define LS_MODIFIER_TIP_REMOVER 12
71 #define LS_MODIFIER_CALLIGRAPHY 13
72 #define LS_MODIFIER_POLYGONIZATION 14
73 #define LS_MODIFIER_GUIDING_LINES 15
74 #define LS_MODIFIER_BLUEPRINT 16
75 #define LS_MODIFIER_2D_OFFSET 17
76 #define LS_MODIFIER_2D_TRANSFORM 18
77 #define LS_MODIFIER_TANGENT 19
78 #define LS_MODIFIER_NOISE 20
79 #define LS_MODIFIER_CREASE_ANGLE 21
80 #define LS_MODIFIER_SIMPLIFICATION 22
81 #define LS_MODIFIER_CURVATURE_3D 23
82 #define LS_MODIFIER_NUM 24
83 
84 /* LineStyleModifier::flags */
85 #define LS_MODIFIER_ENABLED 1
86 #define LS_MODIFIER_EXPANDED 2
87 
88 /* flags (for color) */
89 #define LS_MODIFIER_USE_RAMP 1
90 
91 /* flags (for alpha & thickness) */
92 #define LS_MODIFIER_USE_CURVE 1
93 #define LS_MODIFIER_INVERT 2
94 
95 /* flags (for asymmetric thickness application) */
96 #define LS_THICKNESS_ASYMMETRIC 1
97 
98 /* blend (for alpha & thickness) */
99 #define LS_VALUE_BLEND 0
100 #define LS_VALUE_ADD 1
101 #define LS_VALUE_MULT 2
102 #define LS_VALUE_SUB 3
103 #define LS_VALUE_DIV 4
104 #define LS_VALUE_DIFF 5
105 #define LS_VALUE_MIN 6
106 #define LS_VALUE_MAX 7
107 
108 /* Along Stroke modifiers */
109 
112 
115 
118 
120  int flags;
121  char _pad[4];
123 
126 
128  int flags;
130  char _pad[4];
132 
133 /* Distance from Camera modifiers */
134 
137 
141 
144 
146  int flags;
148  char _pad[4];
150 
153 
155  int flags;
158  char _pad[4];
160 
161 /* Distance from Object modifiers */
162 
165 
166  struct Object *target;
170 
173 
174  struct Object *target;
176  int flags;
178  char _pad[4];
180 
183 
184  struct Object *target;
186  int flags;
189  char _pad[4];
191 
192 /* 3D curvature modifiers */
193 
196 
201 
204 
206  int flags;
208  char _pad[4];
210 
213 
215  int flags;
216  char _pad[4];
220 
221 /* Noise modifiers (for color, alpha and thickness) */
222 
225 
228  int seed;
229  char _pad[4];
231 
234 
236  int flags;
238  int seed;
240 
243 
245  int flags;
246  int seed;
248 
249 /* Crease Angle modifiers */
250 
253 
257 
260 
262  int flags;
264  char _pad[4];
266 
269 
271  int flags;
272  char _pad[4];
276 
277 /* Tangent modifiers */
278 
281 
284 
287 
289  int flags;
290  char _pad[4];
292 
295 
297  int flags;
299  char _pad[4];
301 
302 /* Material modifiers */
303 
304 /* mat_attr */
305 #define LS_MODIFIER_MATERIAL_DIFF 1
306 #define LS_MODIFIER_MATERIAL_DIFF_R 2
307 #define LS_MODIFIER_MATERIAL_DIFF_G 3
308 #define LS_MODIFIER_MATERIAL_DIFF_B 4
309 #define LS_MODIFIER_MATERIAL_SPEC 5
310 #define LS_MODIFIER_MATERIAL_SPEC_R 6
311 #define LS_MODIFIER_MATERIAL_SPEC_G 7
312 #define LS_MODIFIER_MATERIAL_SPEC_B 8
313 #define LS_MODIFIER_MATERIAL_SPEC_HARD 9
314 #define LS_MODIFIER_MATERIAL_ALPHA 10
315 #define LS_MODIFIER_MATERIAL_LINE 11
316 #define LS_MODIFIER_MATERIAL_LINE_R 12
317 #define LS_MODIFIER_MATERIAL_LINE_G 13
318 #define LS_MODIFIER_MATERIAL_LINE_B 14
319 #define LS_MODIFIER_MATERIAL_LINE_A 15
320 
323 
325  int flags;
326  int mat_attr;
328 
331 
333  int flags;
334  int mat_attr;
336 
339 
341  int flags;
343  int mat_attr;
345 
346 /* Geometry modifiers */
347 
350 
351  float sampling;
352  char _pad[4];
354 
357 
358  float error;
359  char _pad[4];
361 
364 
366  char _pad[4];
368 
369 /* LineStyleGeometryModifier_SpatialNoise::flags */
370 #define LS_MODIFIER_SPATIAL_NOISE_SMOOTH 1
371 #define LS_MODIFIER_SPATIAL_NOISE_PURERANDOM 2
372 
375 
376  float amplitude, scale;
377  unsigned int octaves;
378  int flags;
380 
383 
386  float angle;
387  unsigned int octaves;
388  int seed;
389  char _pad1[4];
391 
394 
397  float angle;
398  unsigned int octaves;
399  int seed;
400  char _pad1[4];
402 
405 
407  char _pad[4];
409 
412 
413  float tip_length;
414  char _pad[4];
416 
419 
420  float error;
421  char _pad[4];
423 
426 
427  float offset;
428  char _pad[4];
430 
431 /* LineStyleGeometryModifier_BluePrintLines::shape */
432 #define LS_MODIFIER_BLUEPRINT_CIRCLES 1
433 #define LS_MODIFIER_BLUEPRINT_ELLIPSES 2
434 #define LS_MODIFIER_BLUEPRINT_SQUARES 4
435 
438 
439  int flags;
440  unsigned int rounds;
442  unsigned int random_radius;
443  unsigned int random_center;
444  unsigned int random_backbone;
446 
449 
450  float start, end;
451  float x, y;
453 
454 /* LineStyleGeometryModifier_2DTransform::pivot */
455 #define LS_MODIFIER_2D_TRANSFORM_PIVOT_CENTER 1
456 #define LS_MODIFIER_2D_TRANSFORM_PIVOT_START 2
457 #define LS_MODIFIER_2D_TRANSFORM_PIVOT_END 3
458 #define LS_MODIFIER_2D_TRANSFORM_PIVOT_PARAM 4
459 #define LS_MODIFIER_2D_TRANSFORM_PIVOT_ABSOLUTE 5
460 
463 
464  int pivot;
465  float scale_x, scale_y;
467  float angle;
468  float pivot_u;
469  float pivot_x, pivot_y;
470  char _pad[4];
472 
475 
476  float tolerance;
477  char _pad[4];
479 
480 /* Calligraphic thickness modifier */
481 
484 
487  float orientation;
488  char _pad[4];
490 
491 /* FreestyleLineStyle::panel */
492 #define LS_PANEL_STROKES 1
493 #define LS_PANEL_COLOR 2
494 #define LS_PANEL_ALPHA 3
495 #define LS_PANEL_THICKNESS 4
496 #define LS_PANEL_GEOMETRY 5
497 #define LS_PANEL_TEXTURE 6
498 #define LS_PANEL_MISC 7
499 
500 /* FreestyleLineStyle::flag */
501 #define LS_DS_EXPAND (1 << 0) /* for animation editors */
502 #define LS_SAME_OBJECT (1 << 1)
503 #define LS_DASHED_LINE (1 << 2)
504 #define LS_MATERIAL_BOUNDARY (1 << 3)
505 #define LS_MIN_2D_LENGTH (1 << 4)
506 #define LS_MAX_2D_LENGTH (1 << 5)
507 #define LS_NO_CHAINING (1 << 6)
508 #define LS_MIN_2D_ANGLE (1 << 7)
509 #define LS_MAX_2D_ANGLE (1 << 8)
510 #define LS_SPLIT_LENGTH (1 << 9)
511 #define LS_SPLIT_PATTERN (1 << 10)
512 #define LS_NO_SORTING (1 << 11)
513 #define LS_REVERSE_ORDER (1 << 12) /* for sorting */
514 #define LS_TEXTURE (1 << 13)
515 #define LS_CHAIN_COUNT (1 << 14)
516 
517 /* FreestyleLineStyle::chaining */
518 #define LS_CHAINING_PLAIN 1
519 #define LS_CHAINING_SKETCHY 2
520 
521 /* FreestyleLineStyle::caps */
522 #define LS_CAPS_BUTT 1
523 #define LS_CAPS_ROUND 2
524 #define LS_CAPS_SQUARE 3
525 
526 /* FreestyleLineStyle::thickness_position */
527 #define LS_THICKNESS_CENTER 1
528 #define LS_THICKNESS_INSIDE 2
529 #define LS_THICKNESS_OUTSIDE 3
530 #define LS_THICKNESS_RELATIVE 4 /* thickness_ratio is used */
531 
532 /* FreestyleLineStyle::sort_key */
533 #define LS_SORT_KEY_DISTANCE_FROM_CAMERA 1
534 #define LS_SORT_KEY_2D_LENGTH 2
535 #define LS_SORT_KEY_PROJECTED_X 3
536 #define LS_SORT_KEY_PROJECTED_Y 4
537 
538 /* FreestyleLineStyle::integration_type */
539 #define LS_INTEGRATION_MEAN 1
540 #define LS_INTEGRATION_MIN 2
541 #define LS_INTEGRATION_MAX 3
542 #define LS_INTEGRATION_FIRST 4
543 #define LS_INTEGRATION_LAST 5
544 
545 typedef struct FreestyleLineStyle {
547  struct AnimData *adt;
548 
549  float r, g, b, alpha;
550  float thickness;
553  int flag, caps;
554  int chaining;
555  unsigned int rounds;
560  unsigned int chain_count;
561  unsigned short split_dash1, split_gap1;
562  unsigned short split_dash2, split_gap2;
563  unsigned short split_dash3, split_gap3;
565  float texstep;
567  short use_nodes;
568  char _pad[6];
569  unsigned short dash1, gap1, dash2, gap2, dash3, gap3;
571  int panel;
573  struct MTex *mtex[18];
574  /* nodes */
576 
582 
583 #ifdef __cplusplus
584 }
585 #endif
ID and Library types, which are fundamental for sdna.
struct LineStyleColorModifier_Curvature_3D LineStyleColorModifier_Curvature_3D
struct LineStyleGeometryModifier_SinusDisplacement LineStyleGeometryModifier_SinusDisplacement
struct FreestyleLineStyle FreestyleLineStyle
struct LineStyleThicknessModifier_Curvature_3D LineStyleThicknessModifier_Curvature_3D
struct LineStyleModifier LineStyleModifier
struct LineStyleThicknessModifier_CreaseAngle LineStyleThicknessModifier_CreaseAngle
struct LineStyleGeometryModifier_Simplification LineStyleGeometryModifier_Simplification
struct LineStyleThicknessModifier_Noise LineStyleThicknessModifier_Noise
struct LineStyleColorModifier_DistanceFromCamera LineStyleColorModifier_DistanceFromCamera
struct LineStyleGeometryModifier_2DOffset LineStyleGeometryModifier_2DOffset
struct LineStyleAlphaModifier_CreaseAngle LineStyleAlphaModifier_CreaseAngle
struct LineStyleAlphaModifier_DistanceFromCamera LineStyleAlphaModifier_DistanceFromCamera
struct LineStyleColorModifier_AlongStroke LineStyleColorModifier_AlongStroke
struct LineStyleColorModifier_Material LineStyleColorModifier_Material
struct LineStyleThicknessModifier_DistanceFromCamera LineStyleThicknessModifier_DistanceFromCamera
struct LineStyleGeometryModifier_2DTransform LineStyleGeometryModifier_2DTransform
struct LineStyleGeometryModifier_PerlinNoise2D LineStyleGeometryModifier_PerlinNoise2D
struct LineStyleThicknessModifier_AlongStroke LineStyleThicknessModifier_AlongStroke
struct LineStyleGeometryModifier_GuidingLines LineStyleGeometryModifier_GuidingLines
struct LineStyleGeometryModifier_SpatialNoise LineStyleGeometryModifier_SpatialNoise
struct LineStyleThicknessModifier_DistanceFromObject LineStyleThicknessModifier_DistanceFromObject
struct LineStyleThicknessModifier_Material LineStyleThicknessModifier_Material
struct LineStyleColorModifier_Tangent LineStyleColorModifier_Tangent
struct LineStyleColorModifier_CreaseAngle LineStyleColorModifier_CreaseAngle
struct LineStyleAlphaModifier_AlongStroke LineStyleAlphaModifier_AlongStroke
struct LineStyleAlphaModifier_Tangent LineStyleAlphaModifier_Tangent
struct LineStyleColorModifier_Noise LineStyleColorModifier_Noise
struct LineStyleGeometryModifier_BackboneStretcher LineStyleGeometryModifier_BackboneStretcher
struct LineStyleGeometryModifier_PerlinNoise1D LineStyleGeometryModifier_PerlinNoise1D
struct LineStyleAlphaModifier_Curvature_3D LineStyleAlphaModifier_Curvature_3D
struct LineStyleColorModifier_DistanceFromObject LineStyleColorModifier_DistanceFromObject
struct LineStyleThicknessModifier_Tangent LineStyleThicknessModifier_Tangent
struct LineStyleGeometryModifier_Blueprint LineStyleGeometryModifier_Blueprint
struct LineStyleAlphaModifier_Noise LineStyleAlphaModifier_Noise
struct LineStyleAlphaModifier_Material LineStyleAlphaModifier_Material
struct LineStyleAlphaModifier_DistanceFromObject LineStyleAlphaModifier_DistanceFromObject
struct LineStyleGeometryModifier_Sampling LineStyleGeometryModifier_Sampling
struct LineStyleGeometryModifier_Polygonalization LineStyleGeometryModifier_Polygonalization
struct LineStyleThicknessModifier_Calligraphy LineStyleThicknessModifier_Calligraphy
struct LineStyleGeometryModifier_TipRemover LineStyleGeometryModifier_TipRemover
struct LineStyleGeometryModifier_BezierCurve LineStyleGeometryModifier_BezierCurve
These structs are the foundation for all linked lists in the library system.
struct AnimData * adt
unsigned short split_gap2
unsigned short split_dash2
struct bNodeTree * nodetree
unsigned short split_dash1
unsigned short split_gap3
unsigned short split_gap1
struct MTex * mtex[18]
unsigned short split_dash3
Definition: DNA_ID.h:273
struct LineStyleModifier modifier
struct LineStyleModifier modifier
struct LineStyleModifier modifier
struct LineStyleModifier modifier
struct LineStyleModifier modifier
struct LineStyleModifier modifier
struct LineStyleModifier * next
struct LineStyleModifier * prev
struct LineStyleModifier modifier