Freestyle: fix crash unlinking object
authorSergey Sharybin <sergey.vfx@gmail.com>
Tue, 26 Mar 2013 08:32:53 +0000 (08:32 +0000)
committerSergey Sharybin <sergey.vfx@gmail.com>
Tue, 26 Mar 2013 08:32:53 +0000 (08:32 +0000)
Was getting an address of pointer variable.

930 files changed:
CMakeLists.txt
SConstruct
build_files/scons/config/darwin-config.py
build_files/scons/config/freebsd7-config.py
build_files/scons/config/freebsd8-config.py
build_files/scons/config/freebsd9-config.py
build_files/scons/config/linux-config.py
build_files/scons/config/linuxcross-config.py
build_files/scons/config/win32-mingw-config.py
build_files/scons/config/win32-vc-config.py
build_files/scons/config/win64-mingw-config.py
build_files/scons/config/win64-vc-config.py
build_files/scons/tools/Blender.py
build_files/scons/tools/btools.py
doc/python_api/sphinx_doc_gen.py
extern/libmv/third_party/ceres/mkfiles.sh [changed mode: 0755->0644]
intern/cycles/blender/addon/ui.py
intern/cycles/blender/blender_session.cpp
intern/elbeem/intern/solver_class.h
intern/elbeem/intern/solver_init.cpp
intern/ghost/intern/GHOST_SystemCocoa.mm
intern/ghost/intern/GHOST_WindowX11.cpp
release/bin/blender-softwaregl [changed mode: 0755->0644]
release/datafiles/startup.blend
release/scripts/freestyle/data/env_map/brown00.png [new file with mode: 0644]
release/scripts/freestyle/data/env_map/gray00.png [new file with mode: 0644]
release/scripts/freestyle/data/env_map/gray01.png [new file with mode: 0644]
release/scripts/freestyle/data/env_map/gray02.png [new file with mode: 0644]
release/scripts/freestyle/data/env_map/gray03.png [new file with mode: 0644]
release/scripts/freestyle/style_modules/ChainingIterators.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/Functions0D.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/Functions1D.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/PredicatesB1D.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/PredicatesU0D.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/PredicatesU1D.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/anisotropic_diffusion.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/apriori_and_causal_density.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/apriori_density.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/backbone_stretcher.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/blueprint_circles.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/blueprint_ellipses.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/blueprint_squares.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/cartoon.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/contour.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/curvature2d.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/external_contour.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/external_contour_sketchy.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/external_contour_smooth.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/haloing.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/ignore_small_occlusions.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/invisible_lines.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/japanese_bigbrush.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/logical_operators.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/long_anisotropically_dense.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/multiple_parameterization.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/nature.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/near_lines.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/occluded_by_specific_object.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/parameter_editor.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/polygonalize.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/qi0.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/qi0_not_external_contour.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/qi1.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/qi2.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/sequentialsplit_sketchy.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/shaders.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/sketchy_multiple_parameterization.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/sketchy_topology_broken.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/sketchy_topology_preserved.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/split_at_highest_2d_curvatures.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/split_at_tvertices.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/stroke_texture.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/suggestive.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/thickness_fof_depth_discontinuity.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/tipremover.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/tvertex_remover.py [new file with mode: 0644]
release/scripts/freestyle/style_modules/uniformpruning_zsort.py [new file with mode: 0644]
release/scripts/modules/bl_i18n_utils/bl_extract_messages.py
release/scripts/modules/bl_i18n_utils/settings.py
release/scripts/modules/bl_i18n_utils/utils_spell_check.py
release/scripts/startup/bl_operators/__init__.py
release/scripts/startup/bl_operators/freestyle.py [new file with mode: 0644]
release/scripts/startup/bl_ui/__init__.py
release/scripts/startup/bl_ui/properties_freestyle.py [new file with mode: 0644]
release/scripts/startup/bl_ui/properties_paint_common.py
release/scripts/startup/bl_ui/properties_render.py
release/scripts/startup/bl_ui/properties_render_layer.py [new file with mode: 0644]
release/scripts/startup/bl_ui/space_image.py
release/scripts/startup/bl_ui/space_userpref_keymap.py
release/scripts/startup/bl_ui/space_view3d.py
release/scripts/startup/bl_ui/space_view3d_toolbar.py
source/blender/CMakeLists.txt
source/blender/SConscript
source/blender/avi/intern/avi_intern.h
source/blender/blenfont/BLF_translation.h
source/blender/blenkernel/BKE_blender.h
source/blender/blenkernel/BKE_booleanops_mesh.h [new file with mode: 0644]
source/blender/blenkernel/BKE_brush.h
source/blender/blenkernel/BKE_effect.h
source/blender/blenkernel/BKE_freestyle.h [new file with mode: 0644]
source/blender/blenkernel/BKE_global.h
source/blender/blenkernel/BKE_library.h
source/blender/blenkernel/BKE_linestyle.h [new file with mode: 0644]
source/blender/blenkernel/BKE_main.h
source/blender/blenkernel/BKE_mesh.h
source/blender/blenkernel/BKE_particle.h
source/blender/blenkernel/BKE_pbvh.h
source/blender/blenkernel/BKE_sketch.h
source/blender/blenkernel/BKE_softbody.h
source/blender/blenkernel/CMakeLists.txt
source/blender/blenkernel/SConscript
source/blender/blenkernel/intern/DerivedMesh.c
source/blender/blenkernel/intern/action.c
source/blender/blenkernel/intern/anim_sys.c
source/blender/blenkernel/intern/bmfont.c
source/blender/blenkernel/intern/booleanops_mesh.c [new file with mode: 0644]
source/blender/blenkernel/intern/bpath.c
source/blender/blenkernel/intern/brush.c
source/blender/blenkernel/intern/constraint.c
source/blender/blenkernel/intern/curve.c
source/blender/blenkernel/intern/customdata.c
source/blender/blenkernel/intern/deform.c
source/blender/blenkernel/intern/displist.c
source/blender/blenkernel/intern/dynamicpaint.c
source/blender/blenkernel/intern/fcurve.c
source/blender/blenkernel/intern/freestyle.c [new file with mode: 0644]
source/blender/blenkernel/intern/gpencil.c
source/blender/blenkernel/intern/group.c
source/blender/blenkernel/intern/idcode.c
source/blender/blenkernel/intern/ipo.c
source/blender/blenkernel/intern/key.c
source/blender/blenkernel/intern/library.c
source/blender/blenkernel/intern/linestyle.c [new file with mode: 0644]
source/blender/blenkernel/intern/mask.c
source/blender/blenkernel/intern/material.c
source/blender/blenkernel/intern/mesh.c
source/blender/blenkernel/intern/modifier.c
source/blender/blenkernel/intern/movieclip.c
source/blender/blenkernel/intern/nla.c
source/blender/blenkernel/intern/node.c
source/blender/blenkernel/intern/object.c
source/blender/blenkernel/intern/pbvh.c
source/blender/blenkernel/intern/scene.c
source/blender/blenkernel/intern/seqmodifier.c
source/blender/blenkernel/intern/subsurf_ccg.c
source/blender/blenkernel/intern/texture.c
source/blender/blenkernel/intern/tracking.c
source/blender/blenlib/BLI_fileops.h
source/blender/blenlib/BLI_math_rotation.h
source/blender/blenlib/BLI_path_util.h
source/blender/blenlib/intern/math_color.c
source/blender/blenlib/intern/path_util.c
source/blender/blenloader/intern/readfile.c
source/blender/blenloader/intern/versioning_250.c
source/blender/blenloader/intern/writefile.c
source/blender/bmesh/CMakeLists.txt
source/blender/bmesh/SConscript
source/blender/bmesh/intern/bmesh_mesh_conv.c
source/blender/bmesh/intern/bmesh_opdefines.c
source/blender/bmesh/intern/bmesh_operators.h
source/blender/bmesh/intern/bmesh_private.h
source/blender/bmesh/intern/bmesh_queries.c
source/blender/bmesh/intern/bmesh_queries.h
source/blender/bmesh/intern/bmesh_structure.c
source/blender/bmesh/intern/bmesh_structure.h
source/blender/bmesh/operators/bmo_beautify.c [deleted file]
source/blender/bmesh/operators/bmo_dissolve.c
source/blender/bmesh/operators/bmo_hull.c
source/blender/bmesh/operators/bmo_mesh_conv.c
source/blender/bmesh/operators/bmo_primitive.c
source/blender/bmesh/operators/bmo_removedoubles.c
source/blender/bmesh/operators/bmo_similar.c
source/blender/bmesh/operators/bmo_smooth_laplacian.c
source/blender/bmesh/operators/bmo_subdivide.c
source/blender/bmesh/operators/bmo_triangulate.c
source/blender/bmesh/tools/bmesh_bevel.c
source/blender/collada/AnimationImporter.cpp
source/blender/collada/ArmatureImporter.cpp
source/blender/collada/CMakeLists.txt
source/blender/collada/SConscript
source/blender/collada/TransformWriter.cpp
source/blender/collada/collada_utils.cpp
source/blender/compositor/intern/COM_ExecutionSystemHelper.cpp
source/blender/compositor/operations/COM_CompositorOperation.cpp
source/blender/editors/animation/anim_channels_defines.c
source/blender/editors/animation/anim_channels_edit.c
source/blender/editors/animation/anim_filter.c
source/blender/editors/armature/armature_naming.c
source/blender/editors/armature/pose_lib.c
source/blender/editors/armature/pose_slide.c
source/blender/editors/curve/editcurve.c
source/blender/editors/gpencil/drawgpencil.c
source/blender/editors/gpencil/gpencil_paint.c
source/blender/editors/include/BIF_glutil.h
source/blender/editors/include/ED_anim_api.h
source/blender/editors/include/ED_view3d.h
source/blender/editors/include/UI_interface.h
source/blender/editors/include/UI_resources.h
source/blender/editors/interface/interface.c
source/blender/editors/interface/interface_handlers.c
source/blender/editors/interface/interface_intern.h
source/blender/editors/interface/interface_templates.c
source/blender/editors/interface/interface_widgets.c
source/blender/editors/interface/resources.c
source/blender/editors/mesh/CMakeLists.txt
source/blender/editors/mesh/SConscript
source/blender/editors/mesh/editmesh_add.c
source/blender/editors/mesh/editmesh_select.c
source/blender/editors/mesh/editmesh_tools.c
source/blender/editors/mesh/mesh_intern.h
source/blender/editors/mesh/mesh_ops.c
source/blender/editors/object/object_add.c
source/blender/editors/object/object_vgroup.c
source/blender/editors/physics/dynamicpaint_ops.c
source/blender/editors/render/CMakeLists.txt
source/blender/editors/render/SConscript
source/blender/editors/render/render_intern.h
source/blender/editors/render/render_ops.c
source/blender/editors/render/render_shading.c
source/blender/editors/screen/area.c
source/blender/editors/screen/screen_ops.c
source/blender/editors/sculpt_paint/paint_image.c
source/blender/editors/sculpt_paint/paint_image_2d.c
source/blender/editors/sculpt_paint/paint_image_proj.c
source/blender/editors/sculpt_paint/paint_intern.h
source/blender/editors/sculpt_paint/paint_stroke.c
source/blender/editors/sculpt_paint/sculpt.c
source/blender/editors/space_buttons/CMakeLists.txt
source/blender/editors/space_buttons/SConscript
source/blender/editors/space_buttons/buttons_context.c
source/blender/editors/space_buttons/buttons_header.c
source/blender/editors/space_buttons/space_buttons.c
source/blender/editors/space_clip/clip_editor.c
source/blender/editors/space_file/CMakeLists.txt
source/blender/editors/space_file/SConscript
source/blender/editors/space_file/file_draw.c
source/blender/editors/space_file/file_ops.c
source/blender/editors/space_file/filelist.c
source/blender/editors/space_logic/logic_window.c
source/blender/editors/space_nla/nla_buttons.c
source/blender/editors/space_nla/nla_channels.c
source/blender/editors/space_node/node_intern.h
source/blender/editors/space_outliner/outliner_draw.c
source/blender/editors/space_sequencer/sequencer_intern.h
source/blender/editors/space_text/space_text.c
source/blender/editors/space_text/text_header.c
source/blender/editors/space_text/text_intern.h
source/blender/editors/space_text/text_ops.c
source/blender/editors/space_view3d/CMakeLists.txt
source/blender/editors/space_view3d/SConscript
source/blender/editors/space_view3d/drawobject.c
source/blender/editors/space_view3d/view3d_edit.c
source/blender/editors/space_view3d/view3d_intern.h
source/blender/editors/space_view3d/view3d_ops.c
source/blender/editors/space_view3d/view3d_project.c
source/blender/editors/space_view3d/view3d_ruler.c
source/blender/editors/space_view3d/view3d_select.c
source/blender/editors/transform/transform_ops.c
source/blender/editors/transform/transform_orientations.c
source/blender/editors/transform/transform_snap.c
source/blender/editors/util/crazyspace.c
source/blender/editors/uvedit/uvedit_smart_stitch.c
source/blender/freestyle/CMakeLists.txt [new file with mode: 0644]
source/blender/freestyle/FRS_freestyle.h [new file with mode: 0644]
source/blender/freestyle/SConscript [new file with mode: 0644]
source/blender/freestyle/intern/application/AppCanvas.cpp [new file with mode: 0644]
source/blender/freestyle/intern/application/AppCanvas.h [new file with mode: 0644]
source/blender/freestyle/intern/application/AppConfig.cpp [new file with mode: 0644]
source/blender/freestyle/intern/application/AppConfig.h [new file with mode: 0644]
source/blender/freestyle/intern/application/AppView.cpp [new file with mode: 0644]
source/blender/freestyle/intern/application/AppView.h [new file with mode: 0644]
source/blender/freestyle/intern/application/Controller.cpp [new file with mode: 0644]
source/blender/freestyle/intern/application/Controller.h [new file with mode: 0644]
source/blender/freestyle/intern/blender_interface/BlenderFileLoader.cpp [new file with mode: 0644]
source/blender/freestyle/intern/blender_interface/BlenderFileLoader.h [new file with mode: 0644]
source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp [new file with mode: 0644]
source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.h [new file with mode: 0644]
source/blender/freestyle/intern/blender_interface/BlenderStyleModule.h [new file with mode: 0644]
source/blender/freestyle/intern/blender_interface/BlenderTextureManager.cpp [new file with mode: 0644]
source/blender/freestyle/intern/blender_interface/BlenderTextureManager.h [new file with mode: 0644]
source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp [new file with mode: 0644]
source/blender/freestyle/intern/geometry/BBox.h [new file with mode: 0644]
source/blender/freestyle/intern/geometry/Bezier.cpp [new file with mode: 0644]
source/blender/freestyle/intern/geometry/Bezier.h [new file with mode: 0644]
source/blender/freestyle/intern/geometry/FastGrid.cpp [new file with mode: 0644]
source/blender/freestyle/intern/geometry/FastGrid.h [new file with mode: 0644]
source/blender/freestyle/intern/geometry/FitCurve.cpp [new file with mode: 0644]
source/blender/freestyle/intern/geometry/FitCurve.h [new file with mode: 0644]
source/blender/freestyle/intern/geometry/Geom.h [new file with mode: 0644]
source/blender/freestyle/intern/geometry/GeomCleaner.cpp [new file with mode: 0644]
source/blender/freestyle/intern/geometry/GeomCleaner.h [new file with mode: 0644]
source/blender/freestyle/intern/geometry/GeomUtils.cpp [new file with mode: 0644]
source/blender/freestyle/intern/geometry/GeomUtils.h [new file with mode: 0644]
source/blender/freestyle/intern/geometry/Grid.cpp [new file with mode: 0644]
source/blender/freestyle/intern/geometry/Grid.h [new file with mode: 0644]
source/blender/freestyle/intern/geometry/GridHelpers.cpp [new file with mode: 0644]
source/blender/freestyle/intern/geometry/GridHelpers.h [new file with mode: 0644]
source/blender/freestyle/intern/geometry/HashGrid.cpp [new file with mode: 0644]
source/blender/freestyle/intern/geometry/HashGrid.h [new file with mode: 0644]
source/blender/freestyle/intern/geometry/Noise.cpp [new file with mode: 0644]
source/blender/freestyle/intern/geometry/Noise.h [new file with mode: 0644]
source/blender/freestyle/intern/geometry/Polygon.h [new file with mode: 0644]
source/blender/freestyle/intern/geometry/SweepLine.h [new file with mode: 0644]
source/blender/freestyle/intern/geometry/VecMat.h [new file with mode: 0644]
source/blender/freestyle/intern/geometry/matrix_util.cpp [new file with mode: 0644]
source/blender/freestyle/intern/geometry/matrix_util.h [new file with mode: 0644]
source/blender/freestyle/intern/geometry/normal_cycle.cpp [new file with mode: 0644]
source/blender/freestyle/intern/geometry/normal_cycle.h [new file with mode: 0644]
source/blender/freestyle/intern/image/GaussianFilter.cpp [new file with mode: 0644]
source/blender/freestyle/intern/image/GaussianFilter.h [new file with mode: 0644]
source/blender/freestyle/intern/image/Image.h [new file with mode: 0644]
source/blender/freestyle/intern/image/ImagePyramid.cpp [new file with mode: 0644]
source/blender/freestyle/intern/image/ImagePyramid.h [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_BBox.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_BBox.h [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_BinaryPredicate0D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_BinaryPredicate0D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_BinaryPredicate1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_BinaryPredicate1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_ContextFunctions.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_ContextFunctions.h [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_Convert.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_Convert.h [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_Freestyle.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_Freestyle.h [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_FrsMaterial.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_FrsMaterial.h [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_FrsNoise.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_FrsNoise.h [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_Id.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_Id.h [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_IntegrationType.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_IntegrationType.h [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_Interface0D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_Interface0D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_Interface1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_Interface1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_Iterator.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_Iterator.h [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_MediumType.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_MediumType.h [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_Nature.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_Nature.h [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_Operators.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_Operators.h [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_SShape.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_SShape.h [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_StrokeAttribute.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_StrokeAttribute.h [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_StrokeShader.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_StrokeShader.h [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_UnaryFunction0D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_UnaryFunction0D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_UnaryFunction1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_UnaryFunction1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_UnaryPredicate0D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_UnaryPredicate0D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_UnaryPredicate1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_UnaryPredicate1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_ViewMap.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_ViewMap.h [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_ViewShape.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/BPy_ViewShape.h [new file with mode: 0644]
source/blender/freestyle/intern/python/BinaryPredicate1D/BPy_FalseBP1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/BinaryPredicate1D/BPy_FalseBP1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/BinaryPredicate1D/BPy_Length2DBP1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/BinaryPredicate1D/BPy_Length2DBP1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/BinaryPredicate1D/BPy_SameShapeIdBP1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/BinaryPredicate1D/BPy_SameShapeIdBP1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/BinaryPredicate1D/BPy_TrueBP1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/BinaryPredicate1D/BPy_TrueBP1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/BinaryPredicate1D/BPy_ViewMapGradientNormBP1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/BinaryPredicate1D/BPy_ViewMapGradientNormBP1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/Director.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/Director.h [new file with mode: 0644]
source/blender/freestyle/intern/python/Interface0D/BPy_CurvePoint.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/Interface0D/BPy_CurvePoint.h [new file with mode: 0644]
source/blender/freestyle/intern/python/Interface0D/BPy_SVertex.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/Interface0D/BPy_SVertex.h [new file with mode: 0644]
source/blender/freestyle/intern/python/Interface0D/BPy_ViewVertex.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/Interface0D/BPy_ViewVertex.h [new file with mode: 0644]
source/blender/freestyle/intern/python/Interface0D/CurvePoint/BPy_StrokeVertex.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/Interface0D/CurvePoint/BPy_StrokeVertex.h [new file with mode: 0644]
source/blender/freestyle/intern/python/Interface0D/ViewVertex/BPy_NonTVertex.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/Interface0D/ViewVertex/BPy_NonTVertex.h [new file with mode: 0644]
source/blender/freestyle/intern/python/Interface0D/ViewVertex/BPy_TVertex.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/Interface0D/ViewVertex/BPy_TVertex.h [new file with mode: 0644]
source/blender/freestyle/intern/python/Interface1D/BPy_FEdge.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/Interface1D/BPy_FEdge.h [new file with mode: 0644]
source/blender/freestyle/intern/python/Interface1D/BPy_FrsCurve.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/Interface1D/BPy_FrsCurve.h [new file with mode: 0644]
source/blender/freestyle/intern/python/Interface1D/BPy_Stroke.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/Interface1D/BPy_Stroke.h [new file with mode: 0644]
source/blender/freestyle/intern/python/Interface1D/BPy_ViewEdge.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/Interface1D/BPy_ViewEdge.h [new file with mode: 0644]
source/blender/freestyle/intern/python/Interface1D/Curve/BPy_Chain.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/Interface1D/Curve/BPy_Chain.h [new file with mode: 0644]
source/blender/freestyle/intern/python/Interface1D/FEdge/BPy_FEdgeSharp.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/Interface1D/FEdge/BPy_FEdgeSharp.h [new file with mode: 0644]
source/blender/freestyle/intern/python/Interface1D/FEdge/BPy_FEdgeSmooth.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/Interface1D/FEdge/BPy_FEdgeSmooth.h [new file with mode: 0644]
source/blender/freestyle/intern/python/Iterator/BPy_AdjacencyIterator.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/Iterator/BPy_AdjacencyIterator.h [new file with mode: 0644]
source/blender/freestyle/intern/python/Iterator/BPy_ChainPredicateIterator.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/Iterator/BPy_ChainPredicateIterator.h [new file with mode: 0644]
source/blender/freestyle/intern/python/Iterator/BPy_ChainSilhouetteIterator.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/Iterator/BPy_ChainSilhouetteIterator.h [new file with mode: 0644]
source/blender/freestyle/intern/python/Iterator/BPy_ChainingIterator.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/Iterator/BPy_ChainingIterator.h [new file with mode: 0644]
source/blender/freestyle/intern/python/Iterator/BPy_CurvePointIterator.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/Iterator/BPy_CurvePointIterator.h [new file with mode: 0644]
source/blender/freestyle/intern/python/Iterator/BPy_Interface0DIterator.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/Iterator/BPy_Interface0DIterator.h [new file with mode: 0644]
source/blender/freestyle/intern/python/Iterator/BPy_SVertexIterator.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/Iterator/BPy_SVertexIterator.h [new file with mode: 0644]
source/blender/freestyle/intern/python/Iterator/BPy_StrokeVertexIterator.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/Iterator/BPy_StrokeVertexIterator.h [new file with mode: 0644]
source/blender/freestyle/intern/python/Iterator/BPy_ViewEdgeIterator.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/Iterator/BPy_ViewEdgeIterator.h [new file with mode: 0644]
source/blender/freestyle/intern/python/Iterator/BPy_orientedViewEdgeIterator.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/Iterator/BPy_orientedViewEdgeIterator.h [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_BackboneStretcherShader.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_BackboneStretcherShader.h [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_BezierCurveShader.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_BezierCurveShader.h [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_CalligraphicShader.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_CalligraphicShader.h [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_ColorNoiseShader.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_ColorNoiseShader.h [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_ColorVariationPatternShader.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_ColorVariationPatternShader.h [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_ConstantColorShader.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_ConstantColorShader.h [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_ConstantThicknessShader.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_ConstantThicknessShader.h [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_ConstrainedIncreasingThicknessShader.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_ConstrainedIncreasingThicknessShader.h [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_GuidingLinesShader.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_GuidingLinesShader.h [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_IncreasingColorShader.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_IncreasingColorShader.h [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_IncreasingThicknessShader.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_IncreasingThicknessShader.h [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_PolygonalizationShader.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_PolygonalizationShader.h [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_SamplingShader.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_SamplingShader.h [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_SmoothingShader.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_SmoothingShader.h [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_SpatialNoiseShader.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_SpatialNoiseShader.h [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_StrokeTextureShader.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_StrokeTextureShader.h [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_TextureAssignerShader.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_TextureAssignerShader.h [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_ThicknessNoiseShader.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_ThicknessNoiseShader.h [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_ThicknessVariationPatternShader.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_ThicknessVariationPatternShader.h [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_TipRemoverShader.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_TipRemoverShader.h [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_fstreamShader.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_fstreamShader.h [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_streamShader.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/StrokeShader/BPy_streamShader.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/BPy_UnaryFunction0DDouble.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/BPy_UnaryFunction0DDouble.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/BPy_UnaryFunction0DEdgeNature.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/BPy_UnaryFunction0DEdgeNature.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/BPy_UnaryFunction0DFloat.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/BPy_UnaryFunction0DFloat.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/BPy_UnaryFunction0DId.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/BPy_UnaryFunction0DId.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/BPy_UnaryFunction0DMaterial.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/BPy_UnaryFunction0DMaterial.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/BPy_UnaryFunction0DUnsigned.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/BPy_UnaryFunction0DUnsigned.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/BPy_UnaryFunction0DVec2f.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/BPy_UnaryFunction0DVec2f.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/BPy_UnaryFunction0DVec3f.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/BPy_UnaryFunction0DVec3f.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/BPy_UnaryFunction0DVectorViewShape.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/BPy_UnaryFunction0DVectorViewShape.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/BPy_UnaryFunction0DViewShape.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/BPy_UnaryFunction0DViewShape.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_Id/BPy_ShapeIdF0D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_Id/BPy_ShapeIdF0D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_Material/BPy_MaterialF0D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_Material/BPy_MaterialF0D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_Nature_EdgeNature/BPy_CurveNatureF0D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_Nature_EdgeNature/BPy_CurveNatureF0D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_Vec2f/BPy_Normal2DF0D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_Vec2f/BPy_Normal2DF0D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_Vec2f/BPy_VertexOrientation2DF0D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_Vec2f/BPy_VertexOrientation2DF0D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_Vec3f/BPy_VertexOrientation3DF0D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_Vec3f/BPy_VertexOrientation3DF0D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_ViewShape/BPy_GetOccludeeF0D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_ViewShape/BPy_GetOccludeeF0D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_ViewShape/BPy_GetShapeF0D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_ViewShape/BPy_GetShapeF0D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_double/BPy_Curvature2DAngleF0D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_double/BPy_Curvature2DAngleF0D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_double/BPy_DensityF0D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_double/BPy_DensityF0D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_double/BPy_GetProjectedXF0D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_double/BPy_GetProjectedXF0D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_double/BPy_GetProjectedYF0D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_double/BPy_GetProjectedYF0D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_double/BPy_GetProjectedZF0D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_double/BPy_GetProjectedZF0D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_double/BPy_GetXF0D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_double/BPy_GetXF0D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_double/BPy_GetYF0D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_double/BPy_GetYF0D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_double/BPy_GetZF0D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_double/BPy_GetZF0D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_double/BPy_LocalAverageDepthF0D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_double/BPy_LocalAverageDepthF0D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_double/BPy_ZDiscontinuityF0D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_double/BPy_ZDiscontinuityF0D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_float/BPy_GetCurvilinearAbscissaF0D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_float/BPy_GetCurvilinearAbscissaF0D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_float/BPy_GetParameterF0D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_float/BPy_GetParameterF0D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_float/BPy_GetViewMapGradientNormF0D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_float/BPy_GetViewMapGradientNormF0D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_float/BPy_ReadCompleteViewMapPixelF0D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_float/BPy_ReadCompleteViewMapPixelF0D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_float/BPy_ReadMapPixelF0D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_float/BPy_ReadMapPixelF0D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_float/BPy_ReadSteerableViewMapPixelF0D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_float/BPy_ReadSteerableViewMapPixelF0D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_unsigned_int/BPy_QuantitativeInvisibilityF0D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_unsigned_int/BPy_QuantitativeInvisibilityF0D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_vector_ViewShape/BPy_GetOccludersF0D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction0D/UnaryFunction0D_vector_ViewShape/BPy_GetOccludersF0D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/BPy_UnaryFunction1DDouble.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/BPy_UnaryFunction1DDouble.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/BPy_UnaryFunction1DEdgeNature.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/BPy_UnaryFunction1DEdgeNature.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/BPy_UnaryFunction1DFloat.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/BPy_UnaryFunction1DFloat.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/BPy_UnaryFunction1DUnsigned.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/BPy_UnaryFunction1DUnsigned.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/BPy_UnaryFunction1DVec2f.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/BPy_UnaryFunction1DVec2f.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/BPy_UnaryFunction1DVec3f.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/BPy_UnaryFunction1DVec3f.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/BPy_UnaryFunction1DVectorViewShape.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/BPy_UnaryFunction1DVectorViewShape.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/BPy_UnaryFunction1DVoid.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/BPy_UnaryFunction1DVoid.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_Nature_EdgeNature/BPy_CurveNatureF1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_Nature_EdgeNature/BPy_CurveNatureF1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_Vec2f/BPy_Normal2DF1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_Vec2f/BPy_Normal2DF1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_Vec2f/BPy_Orientation2DF1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_Vec2f/BPy_Orientation2DF1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_Vec3f/BPy_Orientation3DF1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_Vec3f/BPy_Orientation3DF1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_double/BPy_Curvature2DAngleF1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_double/BPy_Curvature2DAngleF1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_double/BPy_DensityF1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_double/BPy_DensityF1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_double/BPy_GetCompleteViewMapDensityF1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_double/BPy_GetCompleteViewMapDensityF1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_double/BPy_GetDirectionalViewMapDensityF1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_double/BPy_GetDirectionalViewMapDensityF1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_double/BPy_GetProjectedXF1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_double/BPy_GetProjectedXF1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_double/BPy_GetProjectedYF1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_double/BPy_GetProjectedYF1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_double/BPy_GetProjectedZF1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_double/BPy_GetProjectedZF1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_double/BPy_GetSteerableViewMapDensityF1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_double/BPy_GetSteerableViewMapDensityF1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_double/BPy_GetViewMapGradientNormF1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_double/BPy_GetViewMapGradientNormF1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_double/BPy_GetXF1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_double/BPy_GetXF1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_double/BPy_GetYF1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_double/BPy_GetYF1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_double/BPy_GetZF1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_double/BPy_GetZF1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_double/BPy_LocalAverageDepthF1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_double/BPy_LocalAverageDepthF1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_double/BPy_ZDiscontinuityF1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_double/BPy_ZDiscontinuityF1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_unsigned_int/BPy_QuantitativeInvisibilityF1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_unsigned_int/BPy_QuantitativeInvisibilityF1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_vector_ViewShape/BPy_GetOccludeeF1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_vector_ViewShape/BPy_GetOccludeeF1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_vector_ViewShape/BPy_GetOccludersF1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_vector_ViewShape/BPy_GetOccludersF1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_vector_ViewShape/BPy_GetShapeF1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_vector_ViewShape/BPy_GetShapeF1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_void/BPy_ChainingTimeStampF1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_void/BPy_ChainingTimeStampF1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_void/BPy_IncrementChainingTimeStampF1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_void/BPy_IncrementChainingTimeStampF1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_void/BPy_TimeStampF1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryFunction1D/UnaryFunction1D_void/BPy_TimeStampF1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryPredicate0D/BPy_FalseUP0D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryPredicate0D/BPy_FalseUP0D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryPredicate0D/BPy_TrueUP0D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryPredicate0D/BPy_TrueUP0D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryPredicate1D/BPy_ContourUP1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryPredicate1D/BPy_ContourUP1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryPredicate1D/BPy_DensityLowerThanUP1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryPredicate1D/BPy_DensityLowerThanUP1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryPredicate1D/BPy_EqualToChainingTimeStampUP1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryPredicate1D/BPy_EqualToChainingTimeStampUP1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryPredicate1D/BPy_EqualToTimeStampUP1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryPredicate1D/BPy_EqualToTimeStampUP1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryPredicate1D/BPy_ExternalContourUP1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryPredicate1D/BPy_ExternalContourUP1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryPredicate1D/BPy_FalseUP1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryPredicate1D/BPy_FalseUP1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryPredicate1D/BPy_QuantitativeInvisibilityUP1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryPredicate1D/BPy_QuantitativeInvisibilityUP1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryPredicate1D/BPy_ShapeUP1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryPredicate1D/BPy_ShapeUP1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryPredicate1D/BPy_TrueUP1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryPredicate1D/BPy_TrueUP1D.h [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryPredicate1D/BPy_WithinImageBoundaryUP1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/python/UnaryPredicate1D/BPy_WithinImageBoundaryUP1D.h [new file with mode: 0644]
source/blender/freestyle/intern/scene_graph/DrawingStyle.h [new file with mode: 0644]
source/blender/freestyle/intern/scene_graph/FrsMaterial.h [new file with mode: 0644]
source/blender/freestyle/intern/scene_graph/IndexedFaceSet.cpp [new file with mode: 0644]
source/blender/freestyle/intern/scene_graph/IndexedFaceSet.h [new file with mode: 0644]
source/blender/freestyle/intern/scene_graph/LineRep.cpp [new file with mode: 0644]
source/blender/freestyle/intern/scene_graph/LineRep.h [new file with mode: 0644]
source/blender/freestyle/intern/scene_graph/Node.h [new file with mode: 0644]
source/blender/freestyle/intern/scene_graph/NodeCamera.cpp [new file with mode: 0644]
source/blender/freestyle/intern/scene_graph/NodeCamera.h [new file with mode: 0644]
source/blender/freestyle/intern/scene_graph/NodeDrawingStyle.cpp [new file with mode: 0644]
source/blender/freestyle/intern/scene_graph/NodeDrawingStyle.h [new file with mode: 0644]
source/blender/freestyle/intern/scene_graph/NodeGroup.cpp [new file with mode: 0644]
source/blender/freestyle/intern/scene_graph/NodeGroup.h [new file with mode: 0644]
source/blender/freestyle/intern/scene_graph/NodeLight.cpp [new file with mode: 0644]
source/blender/freestyle/intern/scene_graph/NodeLight.h [new file with mode: 0644]
source/blender/freestyle/intern/scene_graph/NodeShape.cpp [new file with mode: 0644]
source/blender/freestyle/intern/scene_graph/NodeShape.h [new file with mode: 0644]
source/blender/freestyle/intern/scene_graph/NodeTransform.cpp [new file with mode: 0644]
source/blender/freestyle/intern/scene_graph/NodeTransform.h [new file with mode: 0644]
source/blender/freestyle/intern/scene_graph/OrientedLineRep.cpp [new file with mode: 0644]
source/blender/freestyle/intern/scene_graph/OrientedLineRep.h [new file with mode: 0644]
source/blender/freestyle/intern/scene_graph/Rep.cpp [new file with mode: 0644]
source/blender/freestyle/intern/scene_graph/Rep.h [new file with mode: 0644]
source/blender/freestyle/intern/scene_graph/ScenePrettyPrinter.cpp [new file with mode: 0644]
source/blender/freestyle/intern/scene_graph/ScenePrettyPrinter.h [new file with mode: 0644]
source/blender/freestyle/intern/scene_graph/SceneVisitor.cpp [new file with mode: 0644]
source/blender/freestyle/intern/scene_graph/SceneVisitor.h [new file with mode: 0644]
source/blender/freestyle/intern/scene_graph/TriangleRep.cpp [new file with mode: 0644]
source/blender/freestyle/intern/scene_graph/TriangleRep.h [new file with mode: 0644]
source/blender/freestyle/intern/scene_graph/VertexRep.cpp [new file with mode: 0644]
source/blender/freestyle/intern/scene_graph/VertexRep.h [new file with mode: 0644]
source/blender/freestyle/intern/stroke/AdvancedFunctions0D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/stroke/AdvancedFunctions0D.h [new file with mode: 0644]
source/blender/freestyle/intern/stroke/AdvancedFunctions1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/stroke/AdvancedFunctions1D.h [new file with mode: 0644]
source/blender/freestyle/intern/stroke/AdvancedPredicates1D.h [new file with mode: 0644]
source/blender/freestyle/intern/stroke/AdvancedStrokeShaders.cpp [new file with mode: 0644]
source/blender/freestyle/intern/stroke/AdvancedStrokeShaders.h [new file with mode: 0644]
source/blender/freestyle/intern/stroke/BasicStrokeShaders.cpp [new file with mode: 0644]
source/blender/freestyle/intern/stroke/BasicStrokeShaders.h [new file with mode: 0644]
source/blender/freestyle/intern/stroke/Canvas.cpp [new file with mode: 0644]
source/blender/freestyle/intern/stroke/Canvas.h [new file with mode: 0644]
source/blender/freestyle/intern/stroke/Chain.cpp [new file with mode: 0644]
source/blender/freestyle/intern/stroke/Chain.h [new file with mode: 0644]
source/blender/freestyle/intern/stroke/ChainingIterators.cpp [new file with mode: 0644]
source/blender/freestyle/intern/stroke/ChainingIterators.h [new file with mode: 0644]
source/blender/freestyle/intern/stroke/ContextFunctions.cpp [new file with mode: 0644]
source/blender/freestyle/intern/stroke/ContextFunctions.h [new file with mode: 0644]
source/blender/freestyle/intern/stroke/Curve.cpp [new file with mode: 0644]
source/blender/freestyle/intern/stroke/Curve.h [new file with mode: 0644]
source/blender/freestyle/intern/stroke/CurveAdvancedIterators.h [new file with mode: 0644]
source/blender/freestyle/intern/stroke/CurveIterators.h [new file with mode: 0644]
source/blender/freestyle/intern/stroke/Modifiers.h [new file with mode: 0644]
source/blender/freestyle/intern/stroke/Module.h [new file with mode: 0644]
source/blender/freestyle/intern/stroke/Operators.cpp [new file with mode: 0644]
source/blender/freestyle/intern/stroke/Operators.h [new file with mode: 0644]
source/blender/freestyle/intern/stroke/PSStrokeRenderer.cpp [new file with mode: 0644]
source/blender/freestyle/intern/stroke/PSStrokeRenderer.h [new file with mode: 0644]
source/blender/freestyle/intern/stroke/Predicates0D.h [new file with mode: 0644]
source/blender/freestyle/intern/stroke/Predicates1D.h [new file with mode: 0644]
source/blender/freestyle/intern/stroke/QInformationMap.h [new file with mode: 0644]
source/blender/freestyle/intern/stroke/Stroke.cpp [new file with mode: 0644]
source/blender/freestyle/intern/stroke/Stroke.h [new file with mode: 0644]
source/blender/freestyle/intern/stroke/StrokeAdvancedIterators.h [new file with mode: 0644]
source/blender/freestyle/intern/stroke/StrokeIO.cpp [new file with mode: 0644]
source/blender/freestyle/intern/stroke/StrokeIO.h [new file with mode: 0644]
source/blender/freestyle/intern/stroke/StrokeIterators.h [new file with mode: 0644]
source/blender/freestyle/intern/stroke/StrokeLayer.cpp [new file with mode: 0644]
source/blender/freestyle/intern/stroke/StrokeLayer.h [new file with mode: 0644]
source/blender/freestyle/intern/stroke/StrokeRenderer.cpp [new file with mode: 0644]
source/blender/freestyle/intern/stroke/StrokeRenderer.h [new file with mode: 0644]
source/blender/freestyle/intern/stroke/StrokeRep.cpp [new file with mode: 0644]
source/blender/freestyle/intern/stroke/StrokeRep.h [new file with mode: 0644]
source/blender/freestyle/intern/stroke/StrokeShader.h [new file with mode: 0644]
source/blender/freestyle/intern/stroke/StrokeTesselator.cpp [new file with mode: 0644]
source/blender/freestyle/intern/stroke/StrokeTesselator.h [new file with mode: 0644]
source/blender/freestyle/intern/stroke/StyleModule.h [new file with mode: 0644]
source/blender/freestyle/intern/stroke/TextStrokeRenderer.cpp [new file with mode: 0644]
source/blender/freestyle/intern/stroke/TextStrokeRenderer.h [new file with mode: 0644]
source/blender/freestyle/intern/system/BaseIterator.h [new file with mode: 0644]
source/blender/freestyle/intern/system/BaseObject.cpp [new file with mode: 0644]
source/blender/freestyle/intern/system/BaseObject.h [new file with mode: 0644]
source/blender/freestyle/intern/system/Cast.h [new file with mode: 0644]
source/blender/freestyle/intern/system/Exception.cpp [new file with mode: 0644]
source/blender/freestyle/intern/system/Exception.h [new file with mode: 0644]
source/blender/freestyle/intern/system/FreestyleConfig.h [new file with mode: 0644]
source/blender/freestyle/intern/system/Id.h [new file with mode: 0644]
source/blender/freestyle/intern/system/Interpreter.h [new file with mode: 0644]
source/blender/freestyle/intern/system/Iterator.cpp [new file with mode: 0644]
source/blender/freestyle/intern/system/Iterator.h [new file with mode: 0644]
source/blender/freestyle/intern/system/PointerSequence.h [new file with mode: 0644]
source/blender/freestyle/intern/system/Precision.h [new file with mode: 0644]
source/blender/freestyle/intern/system/ProgressBar.h [new file with mode: 0644]
source/blender/freestyle/intern/system/PseudoNoise.cpp [new file with mode: 0644]
source/blender/freestyle/intern/system/PseudoNoise.h [new file with mode: 0644]
source/blender/freestyle/intern/system/PythonInterpreter.cpp [new file with mode: 0644]
source/blender/freestyle/intern/system/PythonInterpreter.h [new file with mode: 0644]
source/blender/freestyle/intern/system/RandGen.cpp [new file with mode: 0644]
source/blender/freestyle/intern/system/RandGen.h [new file with mode: 0644]
source/blender/freestyle/intern/system/RenderMonitor.h [new file with mode: 0644]
source/blender/freestyle/intern/system/StringUtils.cpp [new file with mode: 0644]
source/blender/freestyle/intern/system/StringUtils.h [new file with mode: 0644]
source/blender/freestyle/intern/system/TimeStamp.cpp [new file with mode: 0644]
source/blender/freestyle/intern/system/TimeStamp.h [new file with mode: 0644]
source/blender/freestyle/intern/system/TimeUtils.h [new file with mode: 0644]
source/blender/freestyle/intern/view_map/ArbitraryGridDensityProvider.cpp [new file with mode: 0644]
source/blender/freestyle/intern/view_map/ArbitraryGridDensityProvider.h [new file with mode: 0644]
source/blender/freestyle/intern/view_map/AverageAreaGridDensityProvider.cpp [new file with mode: 0644]
source/blender/freestyle/intern/view_map/AverageAreaGridDensityProvider.h [new file with mode: 0644]
source/blender/freestyle/intern/view_map/BoxGrid.cpp [new file with mode: 0644]
source/blender/freestyle/intern/view_map/BoxGrid.h [new file with mode: 0644]
source/blender/freestyle/intern/view_map/CulledOccluderSource.cpp [new file with mode: 0644]
source/blender/freestyle/intern/view_map/CulledOccluderSource.h [new file with mode: 0644]
source/blender/freestyle/intern/view_map/FEdgeXDetector.cpp [new file with mode: 0644]
source/blender/freestyle/intern/view_map/FEdgeXDetector.h [new file with mode: 0644]
source/blender/freestyle/intern/view_map/Functions0D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/view_map/Functions0D.h [new file with mode: 0644]
source/blender/freestyle/intern/view_map/Functions1D.cpp [new file with mode: 0644]
source/blender/freestyle/intern/view_map/Functions1D.h [new file with mode: 0644]
source/blender/freestyle/intern/view_map/GridDensityProvider.h [new file with mode: 0644]
source/blender/freestyle/intern/view_map/HeuristicGridDensityProviderFactory.cpp [new file with mode: 0644]
source/blender/freestyle/intern/view_map/HeuristicGridDensityProviderFactory.h [new file with mode: 0644]
source/blender/freestyle/intern/view_map/Interface0D.h [new file with mode: 0644]
source/blender/freestyle/intern/view_map/Interface1D.h [new file with mode: 0644]
source/blender/freestyle/intern/view_map/OccluderSource.cpp [new file with mode: 0644]
source/blender/freestyle/intern/view_map/OccluderSource.h [new file with mode: 0644]
source/blender/freestyle/intern/view_map/Pow23GridDensityProvider.cpp [new file with mode: 0644]
source/blender/freestyle/intern/view_map/Pow23GridDensityProvider.h [new file with mode: 0644]
source/blender/freestyle/intern/view_map/Silhouette.cpp [new file with mode: 0644]
source/blender/freestyle/intern/view_map/Silhouette.h [new file with mode: 0644]
source/blender/freestyle/intern/view_map/SilhouetteGeomEngine.cpp [new file with mode: 0644]
source/blender/freestyle/intern/view_map/SilhouetteGeomEngine.h [new file with mode: 0644]
source/blender/freestyle/intern/view_map/SphericalGrid.cpp [new file with mode: 0644]
source/blender/freestyle/intern/view_map/SphericalGrid.h [new file with mode: 0644]
source/blender/freestyle/intern/view_map/SteerableViewMap.cpp [new file with mode: 0644]
source/blender/freestyle/intern/view_map/SteerableViewMap.h [new file with mode: 0644]
source/blender/freestyle/intern/view_map/ViewEdgeXBuilder.cpp [new file with mode: 0644]
source/blender/freestyle/intern/view_map/ViewEdgeXBuilder.h [new file with mode: 0644]
source/blender/freestyle/intern/view_map/ViewMap.cpp [new file with mode: 0644]
source/blender/freestyle/intern/view_map/ViewMap.h [new file with mode: 0644]
source/blender/freestyle/intern/view_map/ViewMapAdvancedIterators.h [new file with mode: 0644]
source/blender/freestyle/intern/view_map/ViewMapBuilder.cpp [new file with mode: 0644]
source/blender/freestyle/intern/view_map/ViewMapBuilder.h [new file with mode: 0644]
source/blender/freestyle/intern/view_map/ViewMapIO.cpp [new file with mode: 0644]
source/blender/freestyle/intern/view_map/ViewMapIO.h [new file with mode: 0644]
source/blender/freestyle/intern/view_map/ViewMapIterators.h [new file with mode: 0644]
source/blender/freestyle/intern/view_map/ViewMapTesselator.cpp [new file with mode: 0644]
source/blender/freestyle/intern/view_map/ViewMapTesselator.h [new file with mode: 0644]
source/blender/freestyle/intern/winged_edge/Curvature.cpp [new file with mode: 0644]
source/blender/freestyle/intern/winged_edge/Curvature.h [new file with mode: 0644]
source/blender/freestyle/intern/winged_edge/Nature.h [new file with mode: 0644]
source/blender/freestyle/intern/winged_edge/WEdge.cpp [new file with mode: 0644]
source/blender/freestyle/intern/winged_edge/WEdge.h [new file with mode: 0644]
source/blender/freestyle/intern/winged_edge/WFillGrid.cpp [new file with mode: 0644]
source/blender/freestyle/intern/winged_edge/WFillGrid.h [new file with mode: 0644]
source/blender/freestyle/intern/winged_edge/WSFillGrid.cpp [new file with mode: 0644]
source/blender/freestyle/intern/winged_edge/WSFillGrid.h [new file with mode: 0644]
source/blender/freestyle/intern/winged_edge/WXEdge.cpp [new file with mode: 0644]
source/blender/freestyle/intern/winged_edge/WXEdge.h [new file with mode: 0644]
source/blender/freestyle/intern/winged_edge/WXEdgeBuilder.cpp [new file with mode: 0644]
source/blender/freestyle/intern/winged_edge/WXEdgeBuilder.h [new file with mode: 0644]
source/blender/freestyle/intern/winged_edge/WingedEdgeBuilder.cpp [new file with mode: 0644]
source/blender/freestyle/intern/winged_edge/WingedEdgeBuilder.h [new file with mode: 0644]
source/blender/imbuf/IMB_imbuf.h
source/blender/imbuf/intern/IMB_filetype.h
source/blender/imbuf/intern/IMB_indexer.h
source/blender/imbuf/intern/anim_movie.c
source/blender/imbuf/intern/colormanagement.c
source/blender/imbuf/intern/dds/BlockDXT.cpp
source/blender/imbuf/intern/dds/ColorBlock.cpp
source/blender/imbuf/intern/dds/dds_api.cpp
source/blender/imbuf/intern/targa.c
source/blender/makesdna/CMakeLists.txt
source/blender/makesdna/DNA_ID.h
source/blender/makesdna/DNA_action_types.h
source/blender/makesdna/DNA_brush_types.h
source/blender/makesdna/DNA_customdata_types.h
source/blender/makesdna/DNA_freestyle_types.h [new file with mode: 0644]
source/blender/makesdna/DNA_linestyle_types.h [new file with mode: 0644]
source/blender/makesdna/DNA_material_types.h
source/blender/makesdna/DNA_mesh_types.h
source/blender/makesdna/DNA_meshdata_types.h
source/blender/makesdna/DNA_scene_types.h
source/blender/makesdna/DNA_space_types.h
source/blender/makesdna/DNA_texture_types.h
source/blender/makesdna/DNA_userdef_types.h
source/blender/makesdna/SConscript
source/blender/makesdna/intern/CMakeLists.txt
source/blender/makesdna/intern/makesdna.c
source/blender/makesrna/RNA_access.h
source/blender/makesrna/RNA_enum_types.h
source/blender/makesrna/SConscript
source/blender/makesrna/intern/CMakeLists.txt
source/blender/makesrna/intern/SConscript
source/blender/makesrna/intern/makesrna.c
source/blender/makesrna/intern/rna_ID.c
source/blender/makesrna/intern/rna_action.c
source/blender/makesrna/intern/rna_actuator.c
source/blender/makesrna/intern/rna_brush.c
source/blender/makesrna/intern/rna_color.c
source/blender/makesrna/intern/rna_controller.c
source/blender/makesrna/intern/rna_gpencil.c
source/blender/makesrna/intern/rna_internal.h
source/blender/makesrna/intern/rna_key.c
source/blender/makesrna/intern/rna_linestyle.c [new file with mode: 0644]
source/blender/makesrna/intern/rna_main.c
source/blender/makesrna/intern/rna_main_api.c
source/blender/makesrna/intern/rna_mesh.c
source/blender/makesrna/intern/rna_particle.c
source/blender/makesrna/intern/rna_pose.c
source/blender/makesrna/intern/rna_scene.c
source/blender/makesrna/intern/rna_sensor.c
source/blender/makesrna/intern/rna_sequencer.c
source/blender/makesrna/intern/rna_space.c
source/blender/makesrna/intern/rna_userdef.c
source/blender/python/SConscript
source/blender/python/bmesh/CMakeLists.txt
source/blender/python/bmesh/bmesh_py_types.c
source/blender/python/bmesh/bmesh_py_types_customdata.c
source/blender/python/intern/CMakeLists.txt
source/blender/python/intern/bpy.c
source/blender/python/intern/bpy_app.c
source/blender/python/intern/bpy_app_build_options.c
source/blender/python/intern/bpy_app_ffmpeg.c
source/blender/python/intern/bpy_library.c
source/blender/python/intern/bpy_props.c
source/blender/python/mathutils/mathutils.c
source/blender/python/mathutils/mathutils.h
source/blender/quicktime/apple/qtkit_export.m
source/blender/quicktime/apple/qtkit_import.m
source/blender/quicktime/quicktime_import.h
source/blender/render/CMakeLists.txt
source/blender/render/SConscript
source/blender/render/extern/include/RE_pipeline.h
source/blender/render/intern/include/raycounter.h
source/blender/render/intern/include/render_types.h
source/blender/render/intern/include/zbuf.h
source/blender/render/intern/raytrace/rayobject_blibvh.cpp
source/blender/render/intern/raytrace/rayobject_internal.h
source/blender/render/intern/source/convertblender.c
source/blender/render/intern/source/pipeline.c
source/blender/render/intern/source/render_result.c
source/blender/render/intern/source/render_texture.c
source/blender/render/intern/source/shadeoutput.c
source/blender/render/intern/source/zbuf.c
source/blender/windowmanager/WM_api.h
source/blender/windowmanager/WM_types.h
source/blender/windowmanager/intern/wm_event_system.c
source/blenderplayer/bad_level_call_stubs/CMakeLists.txt
source/blenderplayer/bad_level_call_stubs/SConscript
source/blenderplayer/bad_level_call_stubs/stubs.c
source/creator/CMakeLists.txt
source/creator/creator.c
source/gameengine/BlenderRoutines/KX_BlenderCanvas.cpp
source/gameengine/BlenderRoutines/KX_BlenderGL.cpp
source/gameengine/BlenderRoutines/KX_BlenderGL.h
source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp
source/gameengine/Converter/BL_ActionActuator.cpp
source/gameengine/Converter/BL_BlenderDataConversion.cpp
source/gameengine/Converter/BL_ShapeActionActuator.cpp
source/gameengine/Expressions/EmptyValue.cpp
source/gameengine/Expressions/KX_HashedPtr.cpp
source/gameengine/Expressions/KX_HashedPtr.h
source/gameengine/Expressions/ListValue.cpp
source/gameengine/Expressions/Operator1Expr.cpp
source/gameengine/Expressions/Value.cpp
source/gameengine/Expressions/VectorValue.cpp
source/gameengine/Expressions/VectorValue.h
source/gameengine/GameLogic/SCA_LogicManager.cpp
source/gameengine/GamePlayer/common/GPC_RenderTools.cpp
source/gameengine/GamePlayer/common/bmfont.cpp
source/gameengine/Ketsji/KX_ConstraintActuator.cpp
source/gameengine/Ketsji/KX_Dome.cpp
source/gameengine/Ketsji/KX_FontObject.cpp
source/gameengine/Ketsji/KX_GameObject.cpp
source/gameengine/Ketsji/KX_MeshProxy.cpp
source/gameengine/Ketsji/KX_MouseFocusSensor.cpp
source/gameengine/Ketsji/KX_NearSensor.cpp
source/gameengine/Ketsji/KX_PythonSeq.cpp
source/gameengine/Ketsji/KX_RayCast.cpp
source/gameengine/Ketsji/KX_RaySensor.cpp
source/gameengine/Ketsji/KX_Scene.cpp
source/gameengine/Ketsji/KX_SceneActuator.cpp
source/gameengine/Ketsji/KX_TouchEventManager.cpp
source/gameengine/Ketsji/KX_TouchSensor.cpp
source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
source/gameengine/SceneGraph/SG_IObject.h
source/gameengine/VideoTexture/Exception.cpp
source/gameengine/VideoTexture/FilterBase.cpp
source/gameengine/VideoTexture/FilterBlueScreen.cpp
source/gameengine/VideoTexture/FilterColor.cpp
source/gameengine/VideoTexture/FilterNormal.cpp
source/gameengine/VideoTexture/ImageBase.cpp
source/gameengine/VideoTexture/ImageBase.h
source/gameengine/VideoTexture/ImageBuff.cpp
source/gameengine/VideoTexture/ImageMix.cpp
source/gameengine/VideoTexture/ImageRender.cpp
source/gameengine/VideoTexture/ImageViewport.cpp
source/gameengine/VideoTexture/ImageViewport.h
source/gameengine/VideoTexture/Texture.cpp
source/gameengine/VideoTexture/VideoBase.cpp
source/gameengine/VideoTexture/VideoFFmpeg.cpp
source/gameengine/VideoTexture/VideoFFmpeg.h

index 9c0e0ae6c9f585fcf0e2eed098f41954d22d2c8c..58f0fb0831873c13d2c6c9f6f529e37cc78a598a 100644 (file)
@@ -237,6 +237,9 @@ option(WITH_LZMA          "Enable best LZMA compression, (used for pointcache)"
 # Camera/motion tracking
 option(WITH_LIBMV         "Enable libmv structure from motion library" ON)
 
+# Freestyle
+option(WITH_FREESTYLE     "Enable Freestyle (advanced edges rendering)" ON)
+
 # Misc
 option(WITH_INPUT_NDOF "Enable NDOF input devices (SpaceNavigator and friends)" ON)
 option(WITH_RAYOPTIMIZATION    "Enable use of SIMD (SSE) optimizations for the raytracer" ON)
index 16e929073725ce27ded70dac6dc68a16f6be5659..03cfe3ed4caa8a55b79e0d17eb96dead0a431ca2 100644 (file)
@@ -269,6 +269,7 @@ if 'blenderlite' in B.targets:
     target_env_defs['WITH_BF_PYTHON'] = False
     target_env_defs['WITH_BF_3DMOUSE'] = False
     target_env_defs['WITH_BF_LIBMV'] = False
+    target_env_defs['WITH_BF_FREESTYLE'] = False
 
     # Merge blenderlite, let command line to override
     for k,v in target_env_defs.iteritems():
@@ -715,6 +716,10 @@ if env['OURPLATFORM']!='darwin':
                 if VERSION_RELEASE_CYCLE == "release" and "addons_contrib" in dn:
                     dn.remove('addons_contrib')
 
+                # do not install freestyle if disabled
+                if not env['WITH_BF_FREESTYLE'] and "freestyle" in dn:
+                    dn.remove("freestyle")
+
                 dir = os.path.join(env['BF_INSTALLDIR'], VERSION)
                 dir += os.sep + os.path.basename(scriptpath) + dp[len(scriptpath):]
 
index 267505bc449e55a064655ebcd563dbe45f3ca8f0..0e4137112102093797858bf2320f306042275ff5 100644 (file)
@@ -317,6 +317,9 @@ WITH_BF_CYCLES_CUDA_BINARIES = False
 BF_CYCLES_CUDA_NVCC = '/usr/local/cuda/bin/nvcc'
 BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_20', 'sm_21', 'sm_30']
 
+#Freestyle
+WITH_BF_FREESTYLE = True
+
 #Ray trace optimization
 if MACOSX_ARCHITECTURE == 'x86_64' or MACOSX_ARCHITECTURE == 'i386':
     WITH_BF_RAYOPTIMIZATION = True
index 02c9093567a964c3275dbfd659692a48c3fc2a5e..6c39039c4fb74a3d660602e9975233b3c9690ff1 100644 (file)
@@ -162,6 +162,9 @@ WITH_GHOST_XDND = False
 
 WITH_BF_OPENMP = True
 
+#Freestyle
+WITH_BF_FREESTYLE = True
+
 #Ray trace optimization
 WITH_BF_RAYOPTIMIZATION = True
 BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse','-pthread']
index 5d3308c50d4c1a399498899115b1b1c13e1f77ad..3318e21bf1db08aea0106ed9ee7f04c607a39c86 100644 (file)
@@ -162,6 +162,9 @@ WITH_BF_OPENMP = True
 
 WITH_GHOST_XDND = False
 
+#Freestyle
+WITH_BF_FREESTYLE = True
+
 #Ray trace optimization
 WITH_BF_RAYOPTIMIZATION = True
 BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse','-pthread']
index 98c2c8fa50018b4620696404235b10f3c1f66436..b6c5c0d45eb5cad9f62732e0a5f0c6cb68b58286 100644 (file)
@@ -162,6 +162,9 @@ WITH_BF_OPENMP = True
 
 WITH_GHOST_XDND = False
 
+#Freestyle
+WITH_BF_FREESTYLE = True
+
 #Ray trace optimization
 WITH_BF_RAYOPTIMIZATION = True
 BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse','-pthread']
index bef34727014320b292823392f3966fca9ae0a5e3..2aec75edb0853e398101871789a75ebdfdecdee1 100644 (file)
@@ -226,6 +226,9 @@ BF_3DMOUSE_LIBPATH = '${BF_3DMOUSE}/lib'
 BF_3DMOUSE_LIB = 'spnav'
 BF_3DMOUSE_LIB_STATIC = '${BF_3DMOUSE_LIBPATH}/libspnav.a'
 
+#Freestyle
+WITH_BF_FREESTYLE = True
+
 ##
 CC = 'gcc'
 CXX = 'g++'
index 54faf59b2a47092792971ddc169670365b2209a5..925ca5bb8890d34ae92d5b110e53f50d7ecd3c69 100644 (file)
@@ -160,6 +160,9 @@ BF_OPENCOLLADA_INC = '${BF_OPENCOLLADA}/include'
 BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver expat pcre buffer ftoa'
 BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib ${BF_ICONV_LIBPATH}'
 
+#Freestyle
+WITH_BF_FREESTYLE = True
+
 #Ray trace optimization
 WITH_BF_RAYOPTIMIZATION = True
 BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse']
index b5bcbc9266558aa98a7d23628b6ff1f792a637c3..691a4842625583ac113cc68a9ea9677a4ee1484c 100644 (file)
@@ -176,6 +176,9 @@ WITH_BF_CYCLES_CUDA_BINARIES = False
 #BF_CYCLES_CUDA_NVCC = "" # Path to the nvidia compiler
 BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_20', 'sm_21', 'sm_30']
 
+#Freestyle
+WITH_BF_FREESTYLE = True
+
 ##
 CC = 'gcc'
 CXX = 'g++'
index 8d17c777b0fcbb4c05290c0532729d228e62e273..5aa1e7650ccaf16774daba2f5f3d116fbca703e7 100644 (file)
@@ -195,6 +195,9 @@ BF_CYCLES_CUDA_BINARIES_ARCH = ['sm_20', 'sm_21', 'sm_30']
 WITH_BF_RAYOPTIMIZATION = True
 BF_RAYOPTIMIZATION_SSE_FLAGS = ['/arch:SSE']
 
+#Freestyle
+WITH_BF_FREESTYLE = True
+
 WITH_BF_STATICOPENGL = False
 BF_OPENGL_INC = '${BF_OPENGL}/include'
 BF_OPENGL_LIBINC = '${BF_OPENGL}/lib'
index 0a604b0f861763868f5842521ed75f2c67fddaf3..203d63bb1a19015e8afff8fa875c26cb3fcdc432 100644 (file)
@@ -174,6 +174,9 @@ BF_RAYOPTIMIZATION_SSE_FLAGS = ['-mmmx', '-msse', '-msse2']
 #May produce errors with unsupported MinGW-w64 builds
 WITH_BF_OPENMP = False
 
+#Freestyle
+WITH_BF_FREESTYLE = True
+
 ##
 CC = 'gcc'
 CXX = 'g++'
index 4e763343fe64e313d4390b180e5aab64f852b84f..c2f57dab0a75a7aa89eb90e18b8d1f6741cca9c0 100644 (file)
@@ -192,6 +192,9 @@ WITH_BF_RAYOPTIMIZATION = True
 # No need to manually specify SSE/SSE2 on x64 systems.
 BF_RAYOPTIMIZATION_SSE_FLAGS = ['']
 
+#Freestyle
+WITH_BF_FREESTYLE = True
+
 WITH_BF_STATICOPENGL = False
 BF_OPENGL_INC = '${BF_OPENGL}/include'
 BF_OPENGL_LIBINC = '${BF_OPENGL}/lib'
index b3c3907129f165c24c51fca99604c45034cd908a..4572ee7f742bc682c210ba140f3f99c0e5247035 100644 (file)
@@ -391,6 +391,10 @@ def creator(env):
         if env['BF_DEBUG']:
             defs.append('_DEBUG')
 
+    if env['WITH_BF_FREESTYLE']:
+        incs.append('#/source/blender/freestyle')
+        defs.append('WITH_FREESTYLE')
+
     if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'):
         incs.append(env['BF_PTHREADS_INC'])
         incs.append('#/intern/utfconv')
index ee6dd20ecc033c4fa6381cf2f34562a73f49c8ab..9a31ba650f5f0e5ab8bd2a9d171a393a3387ee97 100644 (file)
@@ -116,6 +116,7 @@ def validate_arguments(args, bc):
             'WITH_BF_TIFF', 'BF_TIFF', 'BF_TIFF_INC', 'BF_TIFF_LIB', 'BF_TIFF_LIBPATH', 'WITH_BF_STATICTIFF', 'BF_TIFF_LIB_STATIC',
             'WITH_BF_ZLIB', 'BF_ZLIB', 'BF_ZLIB_INC', 'BF_ZLIB_LIB', 'BF_ZLIB_LIBPATH', 'WITH_BF_STATICZLIB', 'BF_ZLIB_LIB_STATIC',
             'WITH_BF_INTERNATIONAL',
+            'WITH_BF_FREESTYLE',
             'WITH_BF_ICONV', 'BF_ICONV', 'BF_ICONV_INC', 'BF_ICONV_LIB', 'BF_ICONV_LIBPATH',
             'WITH_BF_GAMEENGINE',
             'WITH_BF_BULLET', 'BF_BULLET', 'BF_BULLET_INC', 'BF_BULLET_LIB',
@@ -386,6 +387,8 @@ def read_opts(env, cfg, args):
 
         (BoolVariable('WITH_BF_INTERNATIONAL', 'Use Boost::locale if true', True)),
 
+        (BoolVariable('WITH_BF_FREESTYLE', 'Build advanced edge renderer', True)),
+
         (BoolVariable('WITH_BF_ICONV', 'Use iconv if true', True)),
         ('BF_ICONV', 'iconv base path', ''),
         ('BF_ICONV_INC', 'iconv include path', ''),
index 09e844adae3a2a46e015cf83c5621c7b06c6e172..72e92e5855ff3cd459aa9d26537d0b238b5cd763 100644 (file)
@@ -262,6 +262,7 @@ else:
         "mathutils",
         "mathutils.geometry",
         "mathutils.noise",
+        "Freestyle",
         ]
 
     # ------
@@ -449,6 +450,7 @@ if ARGS.sphinx_build_pdf:
 ClassMethodDescriptorType = type(dict.__dict__['fromkeys'])
 MethodDescriptorType = type(dict.get)
 GetSetDescriptorType = type(int.real)
+StaticMethodType = type(staticmethod(lambda: None))
 from types import MemberDescriptorType
 
 _BPY_STRUCT_FAKE = "bpy_struct"
@@ -915,6 +917,12 @@ def pymodule2sphinx(basepath, module_name, module, title):
             if type(descr) == GetSetDescriptorType:
                 py_descr2sphinx("   ", fw, descr, module_name, type_name, key)
 
+        for key, descr in descr_items:
+            if type(descr) == StaticMethodType:
+                descr = getattr(value, key)
+                write_indented_lines("   ", fw, descr.__doc__ or "Undocumented", False)
+                fw("\n")
+
         fw("\n\n")
 
     file.close()
@@ -1547,7 +1555,7 @@ def write_rst_contents(basepath):
         # mathutils
         "mathutils", "mathutils.geometry", "mathutils.noise",
         # misc
-        "bgl", "blf", "gpu", "aud", "bpy_extras",
+        "Freestyle", "bgl", "blf", "gpu", "aud", "bpy_extras",
         # bmesh, submodules are in own page
         "bmesh",
         )
@@ -1695,6 +1703,7 @@ def write_rst_importable_modules(basepath):
         "mathutils"         : "Math Types & Utilities",
         "mathutils.geometry": "Geometry Utilities",
         "mathutils.noise"   : "Noise Utilities",
+        "Freestyle"         : "Freestyle Data Types & Operators",
     }
     for mod_name, mod_descr in importable_modules.items():
         if mod_name not in EXCLUDE_MODULES:
old mode 100755 (executable)
new mode 100644 (file)
index aa489a297e78d7133f66f2e54eaec2f15955c453..0d1437e13e4674d644ccce500a53ee37e66acc75 100644 (file)
@@ -244,8 +244,9 @@ class CyclesRender_PT_opengl(CyclesButtonsPanel, Panel):
         
 class CyclesRender_PT_layers(CyclesButtonsPanel, Panel):
     bl_label = "Layers"
-    bl_options = {'DEFAULT_CLOSED'}
-    COMPAT_ENGINES = {'BLENDER_RENDER'}
+    bl_options = {'HIDE_HEADER'}
+    bl_context = "render_layer"
+    COMPAT_ENGINES = {'CYCLES'}
 
     def draw(self, context):
         layout = self.layout
@@ -254,7 +255,7 @@ class CyclesRender_PT_layers(CyclesButtonsPanel, Panel):
         rd = scene.render
 
         row = layout.row()
-        row.template_list("RENDER_UL_renderlayers", "", rd, "layers", rd.layers, "active_index", rows=2)
+        row.template_list("RENDERLAYER_UL_renderlayers", "", rd, "layers", rd.layers, "active_index", rows=2)
 
         col = row.column(align=True)
         col.operator("scene.render_layer_add", icon='ZOOMIN', text="")
@@ -262,9 +263,24 @@ class CyclesRender_PT_layers(CyclesButtonsPanel, Panel):
 
         row = layout.row()
         rl = rd.layers.active
-        row.prop(rl, "name")
+        if rl:
+            row.prop(rl, "name")
         row.prop(rd, "use_single_layer", text="", icon_only=True)
 
+
+class CyclesRender_PT_layer_options(CyclesButtonsPanel, Panel):
+    bl_label = "Layer"
+    bl_options = {'DEFAULT_CLOSED'}
+    bl_context = "render_layer"
+    COMPAT_ENGINES = {'CYCLES'}
+
+    def draw(self, context):
+        layout = self.layout
+
+        scene = context.scene
+        rd = scene.render
+        rl = rd.layers.active
+
         split = layout.split()
 
         col = split.column()
@@ -286,6 +302,20 @@ class CyclesRender_PT_layers(CyclesButtonsPanel, Panel):
         col.prop(rl, "samples")
         col.prop(rl, "use_sky", "Use Environment")
 
+
+class CyclesRender_PT_layer_passes(CyclesButtonsPanel, Panel):
+    bl_label = "Render Passes"
+    bl_options = {'DEFAULT_CLOSED'}
+    bl_context = "render_layer"
+    COMPAT_ENGINES = {'CYCLES'}
+
+    def draw(self, context):
+        layout = self.layout
+
+        scene = context.scene
+        rd = scene.render
+        rl = rd.layers.active
+
         split = layout.split()
 
         col = split.column()
index d10fb99450d1ca2aa59bb8ac11644494ba88a17a..8eec383850e98c201a7facb1578b591870f02a69 100644 (file)
@@ -126,8 +126,8 @@ void BlenderSession::reset_session(BL::BlendData b_data_, BL::Scene b_scene_)
        SceneParams scene_params = BlenderSync::get_scene_params(b_scene, background);
        SessionParams session_params = BlenderSync::get_session_params(b_engine, b_userpref, b_scene, background);
 
-       width = (int)(b_render.resolution_x()*b_render.resolution_percentage()/100);
-       height = (int)(b_render.resolution_y()*b_render.resolution_percentage()/100);
+       width = b_render.resolution_x();
+       height = b_render.resolution_y();
 
        if(scene->params.modified(scene_params) ||
           session->params.modified(session_params) ||
index 1962e801a4e0d3b783857ea11f7db83fa5b4087e..1548aaa19bc60d53cadb86c22f8361e5f91dae13 100644 (file)
@@ -765,19 +765,19 @@ class LbmFsgrSolver :
 
 // lbm testsolver get index define, note - ignores is (set) as flag
 // array is only a single entry
-#define _LBMGI(level, ii,ij,ik, is) ( (LONGINT)((LONGINT)mLevel[level].lOffsy*(LONGINT)(ik)) + ((LONGINT)mLevel[level].lOffsx*(LONGINT)(ij)) + (LONGINT)(ii) )
+#define _LBMGI(level, ii,ij,ik, is) ( (mLevel[level].lOffsy*(ik)) + (mLevel[level].lOffsx*(ij)) + (ii) )
 
 //! flag array acces macro
-#define _RFLAG(level,xx,yy,zz,set) mLevel[level].mprsFlags[set][ (LONGINT)LBMGI((level),(xx),(yy),(zz),(set)) ]
-#define _RFLAG_NB(level,xx,yy,zz,set, dir) mLevel[level].mprsFlags[set][ (LONGINT)LBMGI((level),(xx)+this->dfVecX[dir],(yy)+this->dfVecY[dir],(zz)+this->dfVecZ[dir],set) ]
-#define _RFLAG_NBINV(level,xx,yy,zz,set, dir) mLevel[level].mprsFlags[set][ (LONGINT)LBMGI((level),(xx)+this->dfVecX[this->dfInv[dir]],(yy)+this->dfVecY[this->dfInv[dir]],(zz)+this->dfVecZ[this->dfInv[dir]],set) ]
+#define _RFLAG(level,xx,yy,zz,set) mLevel[level].mprsFlags[set][ LBMGI((level),(xx),(yy),(zz),(set)) ]
+#define _RFLAG_NB(level,xx,yy,zz,set, dir) mLevel[level].mprsFlags[set][ LBMGI((level),(xx)+this->dfVecX[dir],(yy)+this->dfVecY[dir],(zz)+this->dfVecZ[dir],set) ]
+#define _RFLAG_NBINV(level,xx,yy,zz,set, dir) mLevel[level].mprsFlags[set][ LBMGI((level),(xx)+this->dfVecX[this->dfInv[dir]],(yy)+this->dfVecY[this->dfInv[dir]],(zz)+this->dfVecZ[this->dfInv[dir]],set) ]
 
 // array handling  -----------------------------------------------------------------------------------------------
 
-#define _LBMQI(level, ii,ij,ik, is, lunused) ( (LONGINT)((LONGINT)mLevel[level].lOffsy*(LONGINT)(ik)) + (LONGINT)((LONGINT)mLevel[level].lOffsx*(LONGINT)(ij)) + (LONGINT)(ii) )
-#define _QCELL(level,xx,yy,zz,set,l) (mLevel[level].mprsCells[(set)][ (LONGINT)LBMQI((level),(xx),(yy),(zz),(set), l)*(LONGINT)dTotalNum +(LONGINT)(l)])
-#define _QCELL_NB(level,xx,yy,zz,set, dir,l) (mLevel[level].mprsCells[(set)][ (LONGINT)LBMQI((level),(xx)+this->dfVecX[dir],(yy)+this->dfVecY[dir],(zz)+this->dfVecZ[dir],set, l)*dTotalNum +(l)])
-#define _QCELL_NBINV(level,xx,yy,zz,set, dir,l) (mLevel[level].mprsCells[(set)][ (LONGINT)LBMQI((level),(xx)+this->dfVecX[this->dfInv[dir]],(yy)+this->dfVecY[this->dfInv[dir]],(zz)+this->dfVecZ[this->dfInv[dir]],set, l)*dTotalNum +(l)])
+#define _LBMQI(level, ii,ij,ik, is, lunused) ( (mLevel[level].lOffsy*(ik)) + (mLevel[level].lOffsx*(ij)) + (ii) )
+#define _QCELL(level,xx,yy,zz,set,l) (mLevel[level].mprsCells[(set)][ LBMQI((level),(xx),(yy),(zz),(set), l)*dTotalNum +(l)])
+#define _QCELL_NB(level,xx,yy,zz,set, dir,l) (mLevel[level].mprsCells[(set)][ LBMQI((level),(xx)+this->dfVecX[dir],(yy)+this->dfVecY[dir],(zz)+this->dfVecZ[dir],set, l)*dTotalNum +(l)])
+#define _QCELL_NBINV(level,xx,yy,zz,set, dir,l) (mLevel[level].mprsCells[(set)][ LBMQI((level),(xx)+this->dfVecX[this->dfInv[dir]],(yy)+this->dfVecY[this->dfInv[dir]],(zz)+this->dfVecZ[this->dfInv[dir]],set, l)*dTotalNum +(l)])
 
 #define QCELLSTEP dTotalNum
 #define _RACPNT(level, ii,ij,ik, is )  &QCELL(level,ii,ij,ik,is,0)
index 63ce1570eea083fea8f7d768dcff6e488c98cce8..aede617a4d387fa91056828afad5cace6571feb4 100644 (file)
@@ -817,16 +817,16 @@ bool LbmFsgrSolver::initializeSolverMemory()
        mLevel[ mMaxRefine ].nodeSize = ((mvGeoEnd[0]-mvGeoStart[0]) / (LbmFloat)(mSizex));
        mLevel[ mMaxRefine ].simCellSize = mpParam->getCellSize();
        mLevel[ mMaxRefine ].lcellfactor = 1.0;
-       LONGINT rcellSize = (LONGINT)((LONGINT)((LONGINT)mLevel[mMaxRefine].lSizex*(LONGINT)mLevel[mMaxRefine].lSizey*(LONGINT)mLevel[mMaxRefine].lSizez) * (LONGINT)dTotalNum);
+       LONGINT rcellSize = ((mLevel[mMaxRefine].lSizex*mLevel[mMaxRefine].lSizey*mLevel[mMaxRefine].lSizez) *dTotalNum);
 
 #if COMPRESSGRIDS==0
        mLevel[ mMaxRefine ].mprsCells[0] = new LbmFloat[ rcellSize +4 ];
        mLevel[ mMaxRefine ].mprsCells[1] = new LbmFloat[ rcellSize +4 ];
        ownMemCheck += 2 * sizeof(LbmFloat) * (rcellSize+4);
 #else // COMPRESSGRIDS==0
-       LONGINT compressOffset = (LONGINT)((LONGINT)mLevel[mMaxRefine].lSizex * (LONGINT)mLevel[mMaxRefine].lSizey * (LONGINT)dTotalNum * 2);
-       // LONGINT tmp = ( (rcellSize +compressOffset +4)/(1024*1024) )*sizeof(LbmFloat);
-       // printf("Debug MEMMMM excee: %I64d, %I64d, %I64d, %d, %d\n", tmp, compressOffset, rcellSize, mLevel[mMaxRefine].lSizex, mLevel[mMaxRefine].lSizey );
+       LONGINT compressOffset = (mLevel[mMaxRefine].lSizex*mLevel[mMaxRefine].lSizey*dTotalNum*2);
+       // D int tmp = ( (rcellSize +compressOffset +4)/(1024*1024) )*4;
+       // D printf("Debug MEMMMM excee: %d\n", tmp);
        mLevel[ mMaxRefine ].mprsCells[1] = new LbmFloat[ rcellSize +compressOffset +4 ];
        mLevel[ mMaxRefine ].mprsCells[0] = mLevel[ mMaxRefine ].mprsCells[1]+compressOffset;
        ownMemCheck += sizeof(LbmFloat) * (rcellSize +compressOffset +4);
index 1f6da80069ed9bb13b1dea9123a449a0b5cb3879..e4f859217cd29e18985b356cbd8696bc4a9e5889 100644 (file)
@@ -664,7 +664,7 @@ GHOST_TSuccess GHOST_SystemCocoa::init()
                                
 #if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060 // make it build with  10.6 deployment target, but as it is not available in 10.6, it will get weaklinked
                                menuItem = [windowMenu addItemWithTitle:@"Enter Full Screen" action:@selector(toggleFullScreen:) keyEquivalent:@"f" ];
-                               [menuItem setKeyEquivalentModifierMask:NSControlKeyMask | NSCommandKeyMask];
+                               [menuItem setKeyEquivalentModifierMask:NSCommandKeyMask];
 #endif
 
                                menuItem = [windowMenu addItemWithTitle:@"Close" action:@selector(performClose:) keyEquivalent:@"w"];
index 20855a126a8cae04cac61c5c72c16d767d83de15..6c17e9e715950da99cb4e9d9ab05ec603944cbba 100644 (file)
@@ -94,6 +94,8 @@ typedef struct {
  */
 
 /* See the python script above to regenerate the 48x48 icon within blender */
+#define BLENDER_ICON_WIDTH 48
+#define BLENDER_ICON_HEIGHT 48
 static long BLENDER_ICON_48x48x32[] = {
        48,48,
        4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303, 4671303,
old mode 100755 (executable)
new mode 100644 (file)
index 970a787..63e6d9a
@@ -1,25 +1,25 @@
-#!/bin/sh
-BF_DIST_BIN=`dirname "$0"`
-BF_PROGRAM="blender" # BF_PROGRAM=`basename "$0"`-bin
-exitcode=0
-
-LD_LIBRARY_PATH=${BF_DIST_BIN}/lib:${LD_LIBRARY_PATH}
-
-if [ -n "$LD_LIBRARYN32_PATH" ]; then
-    LD_LIBRARYN32_PATH=${BF_DIST_BIN}/lib:${LD_LIBRARYN32_PATH}
-fi
-if [ -n "$LD_LIBRARYN64_PATH" ]; then
-    LD_LIBRARYN64_PATH=${BF_DIST_BIN}/lib:${LD_LIBRARYN64_PATH}
-fi
-if [ -n "$LD_LIBRARY_PATH_64" ]; then
-    LD_LIBRARY_PATH_64=${BF_DIST_BIN}/lib:${LD_LIBRARY_PATH_64}
-fi
-
-# Workaround for half-transparent windows when compiz is enabled
-XLIB_SKIP_ARGB_VISUALS=1
-
-export LD_LIBRARY_PATH LD_LIBRARYN32_PATH LD_LIBRARYN64_PATH LD_LIBRARY_PATH_64 LD_PRELOAD XLIB_SKIP_ARGB_VISUALS
-
-"$BF_DIST_BIN/$BF_PROGRAM" ${1+"$@"}
-exitcode=$?
-exit $exitcode
+#!/bin/sh\r
+BF_DIST_BIN=`dirname "$0"`\r
+BF_PROGRAM="blender" # BF_PROGRAM=`basename "$0"`-bin\r
+exitcode=0\r
+\r
+LD_LIBRARY_PATH=${BF_DIST_BIN}/lib:${LD_LIBRARY_PATH}\r
+\r
+if [ -n "$LD_LIBRARYN32_PATH" ]; then\r
+    LD_LIBRARYN32_PATH=${BF_DIST_BIN}/lib:${LD_LIBRARYN32_PATH}\r
+fi\r
+if [ -n "$LD_LIBRARYN64_PATH" ]; then\r
+    LD_LIBRARYN64_PATH=${BF_DIST_BIN}/lib:${LD_LIBRARYN64_PATH}\r
+fi\r
+if [ -n "$LD_LIBRARY_PATH_64" ]; then\r
+    LD_LIBRARY_PATH_64=${BF_DIST_BIN}/lib:${LD_LIBRARY_PATH_64}\r
+fi\r
+\r
+# Workaround for half-transparent windows when compiz is enabled\r
+XLIB_SKIP_ARGB_VISUALS=1\r
+\r
+export LD_LIBRARY_PATH LD_LIBRARYN32_PATH LD_LIBRARYN64_PATH LD_LIBRARY_PATH_64 LD_PRELOAD XLIB_SKIP_ARGB_VISUALS\r
+\r
+"$BF_DIST_BIN/$BF_PROGRAM" ${1+"$@"}\r
+exitcode=$?\r
+exit $exitcode\r
index e5d781e06e2be5d817c3edd87dc54b43ca26f086..40e1363797ad100631cf8053b1565b4b7f8a6aa5 100644 (file)
Binary files a/release/datafiles/startup.blend and b/release/datafiles/startup.blend differ
diff --git a/release/scripts/freestyle/data/env_map/brown00.png b/release/scripts/freestyle/data/env_map/brown00.png
new file mode 100644 (file)
index 0000000..855f06f
Binary files /dev/null and b/release/scripts/freestyle/data/env_map/brown00.png differ
diff --git a/release/scripts/freestyle/data/env_map/gray00.png b/release/scripts/freestyle/data/env_map/gray00.png
new file mode 100644 (file)
index 0000000..7c9b1a8
Binary files /dev/null and b/release/scripts/freestyle/data/env_map/gray00.png differ
diff --git a/release/scripts/freestyle/data/env_map/gray01.png b/release/scripts/freestyle/data/env_map/gray01.png
new file mode 100644 (file)
index 0000000..0654290
Binary files /dev/null and b/release/scripts/freestyle/data/env_map/gray01.png differ
diff --git a/release/scripts/freestyle/data/env_map/gray02.png b/release/scripts/freestyle/data/env_map/gray02.png
new file mode 100644 (file)
index 0000000..0208f49
Binary files /dev/null and b/release/scripts/freestyle/data/env_map/gray02.png differ
diff --git a/release/scripts/freestyle/data/env_map/gray03.png b/release/scripts/freestyle/data/env_map/gray03.png
new file mode 100644 (file)
index 0000000..aab9b95
Binary files /dev/null and b/release/scripts/freestyle/data/env_map/gray03.png differ
diff --git a/release/scripts/freestyle/style_modules/ChainingIterators.py b/release/scripts/freestyle/style_modules/ChainingIterators.py
new file mode 100644 (file)
index 0000000..f0dfc46
--- /dev/null
@@ -0,0 +1,703 @@
+# ##### BEGIN GPL LICENSE BLOCK #####
+#
+#  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.
+#
+# ##### END GPL LICENSE BLOCK #####
+
+#  Filename : ChainingIterators.py
+#  Author   : Stephane Grabli
+#  Date     : 04/08/2005
+#  Purpose  : Chaining Iterators to be used with chaining operators
+
+from Freestyle import AdjacencyIterator, ChainingIterator, ExternalContourUP1D, Nature, TVertex
+from Freestyle import ContextFunctions as CF
+
+## the natural chaining iterator
+## It follows the edges of same nature following the topology of
+## objects with  preseance on silhouettes, then borders, 
+## then suggestive contours, then everything else. It doesn't chain the same ViewEdge twice
+## You can specify whether to stay in the selection or not.
+class pyChainSilhouetteIterator(ChainingIterator):
+       def __init__(self, stayInSelection=True):
+               ChainingIterator.__init__(self, stayInSelection, True, None, True)
+       def init(self):
+               pass
+       def traverse(self, iter):
+               winner = None
+               it = AdjacencyIterator(iter)
+               tvertex = self.next_vertex
+               if type(tvertex) is TVertex:
+                       mateVE = tvertex.get_mate(self.current_edge)
+                       while not it.is_end:
+                               ve = it.object
+                               if ve.id == mateVE.id:
+                                       winner = ve
+                                       break
+                               it.increment()
+               else:
+                       ## case of NonTVertex
+                       natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE]
+                       for i in range(len(natures)):
+                               currentNature = self.current_edge.nature
+                               if (natures[i] & currentNature) != 0:
+                                       count=0
+                                       while not it.is_end:
+                                               visitNext = 0
+                                               oNature = it.object.nature
+                                               if (oNature & natures[i]) != 0:
+                                                       if natures[i] != oNature:
+                                                               for j in range(i):
+                                                                       if (natures[j] & oNature) != 0:
+                                                                               visitNext = 1
+                                                                               break
+                                                               if visitNext != 0:
+                                                                       break    
+                                                       count = count+1
+                                                       winner = it.object
+                                               it.increment()
+                                       if count != 1:
+                                               winner = None
+                                       break
+               return winner
+
+## the natural chaining iterator
+## It follows the edges of same nature on the same
+## objects with  preseance on silhouettes, then borders, 
+## then suggestive contours, then everything else. It doesn't chain the same ViewEdge twice
+## You can specify whether to stay in the selection or not.
+## You can specify whether to chain iterate over edges that were 
+## already visited or not.
+class pyChainSilhouetteGenericIterator(ChainingIterator):
+       def __init__(self, stayInSelection=True, stayInUnvisited=True):
+               ChainingIterator.__init__(self, stayInSelection, stayInUnvisited, None, True)
+       def init(self):
+               pass
+       def traverse(self, iter):
+               winner = None
+               it = AdjacencyIterator(iter)
+               tvertex = self.next_vertex
+               if type(tvertex) is TVertex:
+                       mateVE = tvertex.get_mate(self.current_edge)
+                       while not it.is_end:
+                               ve = it.object
+                               if ve.id == mateVE.id:
+                                       winner = ve
+                                       break
+                               it.increment()
+               else:
+                       ## case of NonTVertex
+                       natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE]
+                       for i in range(len(natures)):
+                               currentNature = self.current_edge.nature
+                               if (natures[i] & currentNature) != 0:
+                                       count=0
+                                       while not it.is_end:
+                                               visitNext = 0
+                                               oNature = it.object.nature
+                                               ve = it.object
+                                               if ve.id == self.current_edge.id:
+                                                       it.increment()
+                                                       continue
+                                               if (oNature & natures[i]) != 0:
+                                                       if natures[i] != oNature:
+                                                               for j in range(i):
+                                                                       if (natures[j] & oNature) != 0:
+                                                                               visitNext = 1
+                                                                               break
+                                                               if visitNext != 0:
+                                                                       break    
+                                                       count = count+1
+                                                       winner = ve
+                                               it.increment()
+                                       if count != 1:
+                                               winner = None
+                                       break
+               return winner
+                       
+class pyExternalContourChainingIterator(ChainingIterator):
+       def __init__(self):
+               ChainingIterator.__init__(self, False, True, None, True)
+               self._isExternalContour = ExternalContourUP1D()
+       def init(self):
+               self._nEdges = 0
+               self._isInSelection = 1
+       def checkViewEdge(self, ve, orientation):
+               if orientation != 0:
+                       vertex = ve.second_svertex()
+               else:
+                       vertex = ve.first_svertex()
+               it = AdjacencyIterator(vertex,1,1)
+               while not it.is_end:
+                       ave = it.object
+                       if self._isExternalContour(ave):
+                               return 1
+                       it.increment()
+               print("pyExternlContourChainingIterator : didn't find next edge")
+               return 0
+       def traverse(self, iter):
+               winner = None
+               it = AdjacencyIterator(iter)
+               while not it.is_end:
+                       ve = it.object
+                       if self._isExternalContour(ve):
+                               if ve.time_stamp == CF.get_time_stamp():
+                                       winner = ve
+                       it.increment()
+               
+               self._nEdges = self._nEdges+1
+               if winner is None:
+                       orient = 1
+                       it = AdjacencyIterator(iter)
+                       while not it.is_end:
+                               ve = it.object
+                               if it.is_incoming:
+                                       orient = 0
+                               good = self.checkViewEdge(ve,orient)
+                               if good != 0:
+                                       winner = ve
+                               it.increment()
+               return winner
+
+## the natural chaining iterator
+## with a sketchy multiple touch
+class pySketchyChainSilhouetteIterator(ChainingIterator):
+       def __init__(self, nRounds=3,stayInSelection=True):
+               ChainingIterator.__init__(self, stayInSelection, False, None, True)
+               self._timeStamp = CF.get_time_stamp()+nRounds
+               self._nRounds = nRounds
+       def init(self):
+               self._timeStamp = CF.get_time_stamp()+self._nRounds
+       def traverse(self, iter):
+               winner = None
+               it = AdjacencyIterator(iter)
+               tvertex = self.next_vertex
+               if type(tvertex) is TVertex:
+                       mateVE = tvertex.get_mate(self.current_edge)
+                       while not it.is_end:
+                               ve = it.object
+                               if ve.id == mateVE.id:
+                                       winner = ve
+                                       break
+                               it.increment()
+               else:
+                       ## case of NonTVertex
+                       natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE]
+                       for i in range(len(natures)):
+                               currentNature = self.current_edge.nature
+                               if (natures[i] & currentNature) != 0:
+                                       count=0
+                                       while not it.is_end:
+                                               visitNext = 0
+                                               oNature = it.object.nature
+                                               ve = it.object
+                                               if ve.id == self.current_edge.id:
+                                                       it.increment()
+                                                       continue
+                                               if (oNature & natures[i]) != 0:
+                                                       if (natures[i] != oNature) != 0:
+                                                               for j in range(i):
+                                                                       if (natures[j] & oNature) != 0:
+                                                                               visitNext = 1
+                                                                               break
+                                                               if visitNext != 0:
+                                                                       break    
+                                                       count = count+1
+                                                       winner = ve
+                                               it.increment()
+                                       if count != 1:
+                                               winner = None
+                                       break
+               if winner is None:
+                       winner = self.current_edge
+               if winner.chaining_time_stamp == self._timeStamp:
+                       winner = None
+               return winner
+
+
+# Chaining iterator designed for sketchy style.
+# can chain several times the same ViewEdge
+# in order to produce multiple strokes per ViewEdge.
+class pySketchyChainingIterator(ChainingIterator):
+       def __init__(self, nRounds=3, stayInSelection=True):
+               ChainingIterator.__init__(self, stayInSelection, False, None, True)
+               self._timeStamp = CF.get_time_stamp()+nRounds
+               self._nRounds = nRounds
+       def init(self):
+               self._timeStamp = CF.get_time_stamp()+self._nRounds
+       def traverse(self, iter):
+               winner = None
+               it = AdjacencyIterator(iter)
+               while not it.is_end:
+                       ve = it.object
+                       if ve.id == self.current_edge.id:
+                               it.increment()
+                               continue
+                       winner = ve
+                       it.increment()
+               if winner is None:
+                       winner = self.current_edge
+               if winner.chaining_time_stamp == self._timeStamp:
+                       return None
+               return winner
+
+
+## Chaining iterator that fills small occlusions
+##     percent
+##             The max length of the occluded part 
+##             expressed in % of the total chain length
+class pyFillOcclusionsRelativeChainingIterator(ChainingIterator):
+       def __init__(self, percent):
+               ChainingIterator.__init__(self, False, True, None, True)
+               self._length = 0
+               self._percent = float(percent)
+       def init(self):
+               # each time we're evaluating a chain length 
+               # we try to do it once. Thus we reinit 
+               # the chain length here:
+               self._length = 0
+       def traverse(self, iter):
+               winner = None
+               winnerOrientation = 0
+               print(self.current_edge.id.first, self.current_edge.id.second)
+               it = AdjacencyIterator(iter)
+               tvertex = self.next_vertex
+               if type(tvertex) is TVertex:
+                       mateVE = tvertex.get_mate(self.current_edge)
+                       while not it.is_end:
+                               ve = it.object
+                               if ve.id == mateVE.id:
+                                       winner = ve
+                                       if not it.is_incoming:
+                                               winnerOrientation = 1
+                                       else:
+                                               winnerOrientation = 0
+                                       break
+                               it.increment()
+               else:
+                       ## case of NonTVertex
+                       natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE]
+                       for nat in natures:
+                               if (self.current_edge.nature & nat) != 0:
+                                       count=0
+                                       while not it.is_end:
+                                               ve = it.object
+                                               if (ve.nature & nat) != 0:
+                                                       count = count+1
+                                                       winner = ve
+                                                       if not it.is_incoming:
+                                                               winnerOrientation = 1
+                                                       else:
+                                                               winnerOrientation = 0
+                                               it.increment()
+                                       if count != 1:
+                                               winner = None
+                                       break
+               if winner is not None:
+                       # check whether this edge was part of the selection
+                       if winner.time_stamp != CF.get_time_stamp():
+                               #print("---", winner.id.first, winner.id.second)
+                               # if not, let's check whether it's short enough with
+                               # respect to the chain made without staying in the selection
+                               #------------------------------------------------------------
+                               # Did we compute the prospective chain length already ?
+                               if self._length == 0:
+                                       #if not, let's do it
+                                       _it = pyChainSilhouetteGenericIterator(0,0)
+                                       _it.begin = winner
+                                       _it.current_edge = winner
+                                       _it.orientation = winnerOrientation
+                                       _it.init()
+                                       while not _it.is_end:
+                                               ve = _it.object
+                                               #print("--------", ve.id.first, ve.id.second)
+                                               self._length = self._length + ve.length_2d
+                                               _it.increment()
+                                               if _it.is_begin:
+                                                       break;
+                                       _it.begin = winner
+                                       _it.current_edge = winner
+                                       _it.orientation = winnerOrientation
+                                       if not _it.is_begin:
+                                               _it.decrement()
+                                               while (not _it.is_end) and (not _it.is_begin):
+                                                       ve = _it.object
+                                                       #print("--------", ve.id.first, ve.id.second)
+                                                       self._length = self._length + ve.length_2d
+                                                       _it.decrement()
+
+                               # let's do the comparison:
+                               # nw let's compute the length of this connex non selected part:
+                               connexl = 0
+                               _cit = pyChainSilhouetteGenericIterator(0,0)
+                               _cit.begin = winner
+                               _cit.current_edge = winner
+                               _cit.orientation = winnerOrientation
+                               _cit.init()
+                               while _cit.is_end == 0 and _cit.object.time_stamp != CF.get_time_stamp():
+                                       ve = _cit.object
+                                       #print("-------- --------", ve.id.first, ve.id.second)
+                                       connexl = connexl + ve.length_2d
+                                       _cit.increment()
+                               if connexl > self._percent * self._length:
+                                       winner = None
+               return winner
+
+## Chaining iterator that fills small occlusions
+##     size
+##             The max length of the occluded part 
+##             expressed in pixels
+class pyFillOcclusionsAbsoluteChainingIterator(ChainingIterator):
+       def __init__(self, length):
+               ChainingIterator.__init__(self, False, True, None, True)
+               self._length = float(length)
+       def init(self):
+               pass
+       def traverse(self, iter):
+               winner = None
+               winnerOrientation = 0
+               #print(self.current_edge.id.first, self.current_edge.id.second)
+               it = AdjacencyIterator(iter)
+               tvertex = self.next_vertex
+               if type(tvertex) is TVertex:
+                       mateVE = tvertex.get_mate(self.current_edge)
+                       while not it.is_end:
+                               ve = it.object
+                               if ve.id == mateVE.id:
+                                       winner = ve
+                                       if not it.is_incoming:
+                                               winnerOrientation = 1
+                                       else:
+                                               winnerOrientation = 0
+                                       break
+                               it.increment()
+               else:
+                       ## case of NonTVertex
+                       natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE]
+                       for nat in natures:
+                               if (self.current_edge.nature & nat) != 0:
+                                       count=0
+                                       while not it.is_end:
+                                               ve = it.object
+                                               if (ve.nature & nat) != 0:
+                                                       count = count+1
+                                                       winner = ve
+                                                       if not it.is_incoming:
+                                                               winnerOrientation = 1
+                                                       else:
+                                                               winnerOrientation = 0
+                                               it.increment()
+                                       if count != 1:
+                                               winner = None
+                                       break
+               if winner is not None:
+                       # check whether this edge was part of the selection
+                       if winner.time_stamp != CF.get_time_stamp():
+                               #print("---", winner.id.first, winner.id.second)
+                               # nw let's compute the length of this connex non selected part:
+                               connexl = 0
+                               _cit = pyChainSilhouetteGenericIterator(0,0)
+                               _cit.begin = winner
+                               _cit.current_edge = winner
+                               _cit.orientation = winnerOrientation
+                               _cit.init()
+                               while _cit.is_end == 0 and _cit.object.time_stamp != CF.get_time_stamp():
+                                       ve = _cit.object
+                                       #print("-------- --------", ve.id.first, ve.id.second)
+                                       connexl = connexl + ve.length_2d
+                                       _cit.increment()
+                               if connexl > self._length:
+                                       winner = None
+               return winner
+
+
+## Chaining iterator that fills small occlusions
+##     percent
+##             The max length of the occluded part 
+##             expressed in % of the total chain length
+class pyFillOcclusionsAbsoluteAndRelativeChainingIterator(ChainingIterator):
+       def __init__(self, percent, l):
+               ChainingIterator.__init__(self, False, True, None, True)
+               self._length = 0
+               self._absLength = l
+               self._percent = float(percent)
+       def init(self):
+               # each time we're evaluating a chain length 
+               # we try to do it once. Thus we reinit 
+               # the chain length here:
+               self._length = 0
+       def traverse(self, iter):
+               winner = None
+               winnerOrientation = 0
+               print(self.current_edge.id.first, self.current_edge.id.second)
+               it = AdjacencyIterator(iter)
+               tvertex = self.next_vertex
+               if type(tvertex) is TVertex:
+                       mateVE = tvertex.get_mate(self.current_edge)
+                       while not it.is_end:
+                               ve = it.object
+                               if ve.id == mateVE.id:
+                                       winner = ve
+                                       if not it.is_incoming:
+                                               winnerOrientation = 1
+                                       else:
+                                               winnerOrientation = 0
+                                       break
+                               it.increment()
+               else:
+                       ## case of NonTVertex
+                       natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE]
+                       for nat in natures:
+                               if (self.current_edge.nature & nat) != 0:
+                                       count=0
+                                       while not it.is_end:
+                                               ve = it.object
+                                               if (ve.nature & nat) != 0:
+                                                       count = count+1
+                                                       winner = ve
+                                                       if not it.is_incoming:
+                                                               winnerOrientation = 1
+                                                       else:
+                                                               winnerOrientation = 0
+                                               it.increment()
+                                       if count != 1:
+                                               winner = None
+                                       break
+               if winner is not None:
+                       # check whether this edge was part of the selection
+                       if winner.time_stamp != CF.get_time_stamp():
+                               #print("---", winner.id.first, winner.id.second)
+                               # if not, let's check whether it's short enough with
+                               # respect to the chain made without staying in the selection
+                               #------------------------------------------------------------
+                               # Did we compute the prospective chain length already ?
+                               if self._length == 0:
+                                       #if not, let's do it
+                                       _it = pyChainSilhouetteGenericIterator(0,0)
+                                       _it.begin = winner
+                                       _it.current_edge = winner
+                                       _it.orientation = winnerOrientation
+                                       _it.init()
+                                       while not _it.is_end:
+                                               ve = _it.object
+                                               #print("--------", ve.id.first, ve.id.second)
+                                               self._length = self._length + ve.length_2d
+                                               _it.increment()
+                                               if _it.is_begin:
+                                                       break;
+                                       _it.begin = winner
+                                       _it.current_edge = winner
+                                       _it.orientation = winnerOrientation
+                                       if not _it.is_begin:
+                                               _it.decrement()
+                                               while (not _it.is_end) and (not _it.is_begin):
+                                                       ve = _it.object
+                                                       #print("--------", ve.id.first, ve.id.second)
+                                                       self._length = self._length + ve.length_2d
+                                                       _it.decrement()
+
+                               # let's do the comparison:
+                               # nw let's compute the length of this connex non selected part:
+                               connexl = 0
+                               _cit = pyChainSilhouetteGenericIterator(0,0)
+                               _cit.begin = winner
+                               _cit.current_edge = winner
+                               _cit.orientation = winnerOrientation
+                               _cit.init()
+                               while _cit.is_end == 0 and _cit.object.time_stamp != CF.get_time_stamp():
+                                       ve = _cit.object
+                                       #print("-------- --------", ve.id.first, ve.id.second)
+                                       connexl = connexl + ve.length_2d
+                                       _cit.increment()
+                               if (connexl > self._percent * self._length) or (connexl > self._absLength):
+                                       winner = None
+               return winner
+
+## Chaining iterator that fills small occlusions without caring about the 
+## actual selection
+##     percent
+##             The max length of the occluded part 
+##             expressed in % of the total chain length
+class pyFillQi0AbsoluteAndRelativeChainingIterator(ChainingIterator):
+       def __init__(self, percent, l):
+               ChainingIterator.__init__(self, False, True, None, True)
+               self._length = 0
+               self._absLength = l
+               self._percent = float(percent)
+       def init(self):
+               # each time we're evaluating a chain length 
+               # we try to do it once. Thus we reinit 
+               # the chain length here:
+               self._length = 0
+       def traverse(self, iter):
+               winner = None
+               winnerOrientation = 0
+               print(self.current_edge.id.first, self.current_edge.id.second)
+               it = AdjacencyIterator(iter)
+               tvertex = self.next_vertex
+               if type(tvertex) is TVertex:
+                       mateVE = tvertex.get_mate(self.current_edge)
+                       while not it.is_end:
+                               ve = it.object
+                               if ve.id == mateVE.id:
+                                       winner = ve
+                                       if not it.is_incoming:
+                                               winnerOrientation = 1
+                                       else:
+                                               winnerOrientation = 0
+                                       break
+                               it.increment()
+               else:
+                       ## case of NonTVertex
+                       natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE]
+                       for nat in natures:
+                               if (self.current_edge.nature & nat) != 0:
+                                       count=0
+                                       while not it.is_end:
+                                               ve = it.object
+                                               if (ve.nature & nat) != 0:
+                                                       count = count+1
+                                                       winner = ve
+                                                       if not it.is_incoming:
+                                                               winnerOrientation = 1
+                                                       else:
+                                                               winnerOrientation = 0
+                                               it.increment()
+                                       if count != 1:
+                                               winner = None
+                                       break
+               if winner is not None:
+                       # check whether this edge was part of the selection
+                       if winner.qi != 0:
+                               #print("---", winner.id.first, winner.id.second)
+                               # if not, let's check whether it's short enough with
+                               # respect to the chain made without staying in the selection
+                               #------------------------------------------------------------
+                               # Did we compute the prospective chain length already ?
+                               if self._length == 0:
+                                       #if not, let's do it
+                                       _it = pyChainSilhouetteGenericIterator(0,0)
+                                       _it.begin = winner
+                                       _it.current_edge = winner
+                                       _it.orientation = winnerOrientation
+                                       _it.init()
+                                       while not _it.is_end:
+                                               ve = _it.object
+                                               #print("--------", ve.id.first, ve.id.second)
+                                               self._length = self._length + ve.length_2d
+                                               _it.increment()
+                                               if _it.is_begin:
+                                                       break;
+                                       _it.begin = winner
+                                       _it.current_edge = winner
+                                       _it.orientation = winnerOrientation
+                                       if not _it.is_begin:
+                                               _it.decrement()
+                                               while (not _it.is_end) and (not _it.is_begin):
+                                                       ve = _it.object
+                                                       #print("--------", ve.id.first, ve.id.second)
+                                                       self._length = self._length + ve.length_2d
+                                                       _it.decrement()
+
+                               # let's do the comparison:
+                               # nw let's compute the length of this connex non selected part:
+                               connexl = 0
+                               _cit = pyChainSilhouetteGenericIterator(0,0)
+                               _cit.begin = winner
+                               _cit.current_edge = winner
+                               _cit.orientation = winnerOrientation
+                               _cit.init()
+                               while not _cit.is_end and _cit.object.qi != 0:
+                                       ve = _cit.object
+                                       #print("-------- --------", ve.id.first, ve.id.second)
+                                       connexl = connexl + ve.length_2d
+                                       _cit.increment()
+                               if (connexl > self._percent * self._length) or (connexl > self._absLength):
+                                       winner = None
+               return winner
+
+
+## the natural chaining iterator
+## It follows the edges of same nature on the same
+## objects with  preseance on silhouettes, then borders, 
+## then suggestive contours, then everything else. It doesn't chain the same ViewEdge twice
+## You can specify whether to stay in the selection or not.
+class pyNoIdChainSilhouetteIterator(ChainingIterator):
+       def __init__(self, stayInSelection=True):
+               ChainingIterator.__init__(self, stayInSelection, True, None, True)
+       def init(self):
+               pass
+       def traverse(self, iter):
+               winner = None
+               it = AdjacencyIterator(iter)
+               tvertex = self.next_vertex
+               if type(tvertex) is TVertex:
+                       mateVE = tvertex.get_mate(self.current_edge)
+                       while not it.is_end:
+                               ve = it.object
+                               feB = self.current_edge.last_fedge
+                               feA = ve.first_fedge
+                               vB = feB.second_svertex
+                               vA = feA.first_svertex
+                               if vA.id.first == vB.id.first:
+                                       winner = ve
+                                       break
+                               feA = self.current_edge.first_fedge
+                               feB = ve.last_fedge
+                               vB = feB.second_svertex
+                               vA = feA.first_svertex
+                               if vA.id.first == vB.id.first:
+                                       winner = ve
+                                       break
+                               feA = self.current_edge.last_fedge
+                               feB = ve.last_fedge
+                               vB = feB.second_svertex
+                               vA = feA.second_svertex
+                               if vA.id.first == vB.id.first:
+                                       winner = ve
+                                       break
+                               feA = self.current_edge.first_fedge
+                               feB = ve.first_fedge
+                               vB = feB.first_svertex
+                               vA = feA.first_svertex
+                               if vA.id.first == vB.id.first:
+                                       winner = ve
+                                       break
+                               it.increment()
+               else:
+                       ## case of NonTVertex
+                       natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE]
+                       for i in range(len(natures)):
+                               currentNature = self.current_edge.nature
+                               if (natures[i] & currentNature) != 0:
+                                       count=0
+                                       while not it.is_end:
+                                               visitNext = 0
+                                               oNature = it.object.nature
+                                               if (oNature & natures[i]) != 0:
+                                                       if natures[i] != oNature:
+                                                               for j in range(i):
+                                                                       if (natures[j] & oNature) != 0:
+                                                                               visitNext = 1
+                                                                               break
+                                                               if visitNext != 0:
+                                                                       break    
+                                                       count = count+1
+                                                       winner = it.object
+                                               it.increment()
+                                       if count != 1:
+                                               winner = None
+                                       break
+               return winner
+
diff --git a/release/scripts/freestyle/style_modules/Functions0D.py b/release/scripts/freestyle/style_modules/Functions0D.py
new file mode 100644 (file)
index 0000000..b36961f
--- /dev/null
@@ -0,0 +1,105 @@
+# ##### BEGIN GPL LICENSE BLOCK #####
+#
+#  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.
+#
+# ##### END GPL LICENSE BLOCK #####
+
+#  Filename : Functions0D.py
+#  Authors  : Fredo Durand, Stephane Grabli, Francois Sillion, Emmanuel Turquin 
+#  Date     : 30/06/2005
+#  Purpose  : Functions (functors) to be used for 0D elements
+
+from Freestyle import Curvature2DAngleF0D, CurvePoint, ReadCompleteViewMapPixelF0D, \
+    ReadSteerableViewMapPixelF0D, UnaryFunction0DDouble, UnaryFunction0DMaterial, \
+    UnaryFunction0DVec2f
+from Freestyle import ContextFunctions as CF
+
+import math
+import mathutils
+
+class CurveMaterialF0D(UnaryFunction0DMaterial):
+       # A replacement of the built-in MaterialF0D for stroke creation.
+       # MaterialF0D does not work with Curves and Strokes.
+       def __call__(self, inter):
+               cp = inter.object
+               assert(isinstance(cp, CurvePoint))
+               fe = cp.first_svertex.get_fedge(cp.second_svertex)
+               assert(fe is not None)
+               return fe.material if fe.is_smooth else fe.material_left
+
+class pyInverseCurvature2DAngleF0D(UnaryFunction0DDouble):
+       def __call__(self, inter):
+               func = Curvature2DAngleF0D()
+               c = func(inter)
+               return (3.1415 - c)
+
+class pyCurvilinearLengthF0D(UnaryFunction0DDouble):
+       def __call__(self, inter):
+               cp = inter.object               
+               assert(isinstance(cp, CurvePoint))
+               return cp.t2d
+
+## estimate anisotropy of density
+class pyDensityAnisotropyF0D(UnaryFunction0DDouble):
+       def __init__(self,level):
+               UnaryFunction0DDouble.__init__(self)
+               self.IsoDensity = ReadCompleteViewMapPixelF0D(level)
+               self.d0Density = ReadSteerableViewMapPixelF0D(0, level)
+               self.d1Density = ReadSteerableViewMapPixelF0D(1, level)
+               self.d2Density = ReadSteerableViewMapPixelF0D(2, level)
+               self.d3Density = ReadSteerableViewMapPixelF0D(3, level)
+       def __call__(self, inter):
+               c_iso = self.IsoDensity(inter) 
+               c_0 = self.d0Density(inter) 
+               c_1 = self.d1Density(inter) 
+               c_2 = self.d2Density(inter) 
+               c_3 = self.d3Density(inter) 
+               cMax = max(max(c_0,c_1), max(c_2,c_3))
+               cMin = min(min(c_0,c_1), min(c_2,c_3))
+               if c_iso == 0:
+                       v = 0
+               else:
+                       v = (cMax-cMin)/c_iso
+               return v
+
+## Returns the gradient vector for a pixel 
+##     l
+##       the level at which one wants to compute the gradient
+class pyViewMapGradientVectorF0D(UnaryFunction0DVec2f):
+       def __init__(self, l):
+               UnaryFunction0DVec2f.__init__(self)
+               self._l = l
+               self._step = math.pow(2,self._l)
+       def __call__(self, iter):
+               p = iter.object.point_2d
+               gx = CF.read_complete_view_map_pixel(self._l, int(p.x+self._step), int(p.y)) - \
+                   CF.read_complete_view_map_pixel(self._l, int(p.x), int(p.y))
+               gy = CF.read_complete_view_map_pixel(self._l, int(p.x), int(p.y+self._step)) - \
+                   CF.read_complete_view_map_pixel(self._l, int(p.x), int(p.y))
+               return mathutils.Vector([gx, gy])
+
+class pyViewMapGradientNormF0D(UnaryFunction0DDouble):
+       def __init__(self, l):
+               UnaryFunction0DDouble.__init__(self)
+               self._l = l
+               self._step = math.pow(2,self._l)
+       def __call__(self, iter):
+               p = iter.object.point_2d
+               gx = CF.read_complete_view_map_pixel(self._l, int(p.x+self._step), int(p.y)) - \
+                   CF.read_complete_view_map_pixel(self._l, int(p.x), int(p.y))
+               gy = CF.read_complete_view_map_pixel(self._l, int(p.x), int(p.y+self._step)) - \
+                   CF.read_complete_view_map_pixel(self._l, int(p.x), int(p.y))
+               grad = mathutils.Vector([gx, gy])
+               return grad.length
diff --git a/release/scripts/freestyle/style_modules/Functions1D.py b/release/scripts/freestyle/style_modules/Functions1D.py
new file mode 100644 (file)
index 0000000..17b4f19
--- /dev/null
@@ -0,0 +1,58 @@
+# ##### BEGIN GPL LICENSE BLOCK #####
+#
+#  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.
+#
+# ##### END GPL LICENSE BLOCK #####
+
+#  Filename : Functions1D.py
+#  Authors  : Fredo Durand, Stephane Grabli, Francois Sillion, Emmanuel Turquin 
+#  Date     : 08/04/2005
+#  Purpose  : Functions (functors) to be used for 1D elements
+
+from Freestyle import GetProjectedZF1D, IntegrationType, UnaryFunction1DDouble, integrate
+from Functions0D import pyDensityAnisotropyF0D, pyViewMapGradientNormF0D
+import string 
+
+class pyGetInverseProjectedZF1D(UnaryFunction1DDouble):
+       def __call__(self, inter):
+               func = GetProjectedZF1D()
+               z = func(inter)
+               return (1.0 - z)
+
+class pyGetSquareInverseProjectedZF1D(UnaryFunction1DDouble):
+       def __call__(self, inter):
+               func = GetProjectedZF1D()
+               z = func(inter)
+               return (1.0 - z*z)
+
+class pyDensityAnisotropyF1D(UnaryFunction1DDouble):
+       def __init__(self,level,  integrationType=IntegrationType.MEAN, sampling=2.0):
+               UnaryFunction1DDouble.__init__(self, integrationType)
+               self._func = pyDensityAnisotropyF0D(level)
+               self._integration = integrationType
+               self._sampling = sampling
+       def __call__(self, inter):
+               v = integrate(self._func, inter.pointsBegin(self._sampling), inter.pointsEnd(self._sampling), self._integration)
+               return v
+
+class pyViewMapGradientNormF1D(UnaryFunction1DDouble):
+       def __init__(self,l, integrationType, sampling=2.0):
+               UnaryFunction1DDouble.__init__(self, integrationType)
+               self._func = pyViewMapGradientNormF0D(l)
+               self._integration = integrationType
+               self._sampling = sampling
+       def __call__(self, inter):
+               v = integrate(self._func, inter.pointsBegin(self._sampling), inter.pointsEnd(self._sampling), self._integration)
+               return v
diff --git a/release/scripts/freestyle/style_modules/PredicatesB1D.py b/release/scripts/freestyle/style_modules/PredicatesB1D.py
new file mode 100644 (file)
index 0000000..642ff5f
--- /dev/null
@@ -0,0 +1,73 @@
+# ##### BEGIN GPL LICENSE BLOCK #####
+#
+#  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.
+#
+# ##### END GPL LICENSE BLOCK #####
+
+#  Filename : PredicatesB1D.py
+#  Authors  : Fredo Durand, Stephane Grabli, Francois Sillion, Emmanuel Turquin 
+#  Date     : 08/04/2005
+#  Purpose  : Binary predicates (functors) to be used for 1D elements
+
+from Freestyle import BinaryPredicate1D, GetZF1D, IntegrationType, Nature, SameShapeIdBP1D, ZDiscontinuityF1D
+from Functions1D import pyViewMapGradientNormF1D
+
+import random
+
+class pyZBP1D(BinaryPredicate1D):
+       def __call__(self, i1, i2):
+               func = GetZF1D()
+               return (func(i1) > func(i2))
+
+class pyZDiscontinuityBP1D(BinaryPredicate1D):
+       def __init__(self, iType = IntegrationType.MEAN):
+               BinaryPredicate1D.__init__(self)
+               self._GetZDiscontinuity = ZDiscontinuityF1D(iType)
+       def __call__(self, i1, i2):
+               return (self._GetZDiscontinuity(i1) > self._GetZDiscontinuity(i2))
+
+class pyLengthBP1D(BinaryPredicate1D):
+       def __call__(self, i1, i2):
+               return (i1.length_2d > i2.length_2d)
+
+class pySilhouetteFirstBP1D(BinaryPredicate1D):
+       def __call__(self, inter1, inter2):
+               bpred = SameShapeIdBP1D()
+               if (bpred(inter1, inter2) != 1):
+                       return 0
+               if (inter1.nature & Nature.SILHOUETTE):
+                       return (inter2.nature & Nature.SILHOUETTE) != 0
+               return (inter1.nature == inter2.nature)
+
+class pyNatureBP1D(BinaryPredicate1D):
+       def __call__(self, inter1, inter2):
+               return (inter1.nature & inter2.nature)
+
+class pyViewMapGradientNormBP1D(BinaryPredicate1D):
+       def __init__(self,l, sampling=2.0):
+               BinaryPredicate1D.__init__(self)
+               self._GetGradient = pyViewMapGradientNormF1D(l, IntegrationType.MEAN)
+       def __call__(self, i1,i2):
+               print("compare gradient")
+               return (self._GetGradient(i1) > self._GetGradient(i2))
+
+class pyShuffleBP1D(BinaryPredicate1D):
+       def __init__(self):
+               BinaryPredicate1D.__init__(self)
+               random.seed(1)
+       def __call__(self, inter1, inter2):
+               r1 = random.uniform(0,1)
+               r2 = random.uniform(0,1)
+               return (r1<r2)
diff --git a/release/scripts/freestyle/style_modules/PredicatesU0D.py b/release/scripts/freestyle/style_modules/PredicatesU0D.py
new file mode 100644 (file)
index 0000000..49675eb
--- /dev/null
@@ -0,0 +1,96 @@
+# ##### BEGIN GPL LICENSE BLOCK #####
+#
+#  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.
+#
+# ##### END GPL LICENSE BLOCK #####
+
+#  Filename : PredicatesU0D.py
+#  Authors  : Fredo Durand, Stephane Grabli, Francois Sillion, Emmanuel Turquin 
+#  Date     : 08/04/2005
+#  Purpose  : Unary predicates (functors) to be used for 0D elements
+
+from Freestyle import Curvature2DAngleF0D, Nature, QuantitativeInvisibilityF0D, UnaryPredicate0D
+from Functions0D import pyCurvilinearLengthF0D
+
+class pyHigherCurvature2DAngleUP0D(UnaryPredicate0D):
+       def __init__(self,a):
+               UnaryPredicate0D.__init__(self)
+               self._a = a
+       def __call__(self, inter):
+               func = Curvature2DAngleF0D()
+               a = func(inter)
+               return (a > self._a)
+
+class pyUEqualsUP0D(UnaryPredicate0D):
+       def __init__(self,u, w):
+               UnaryPredicate0D.__init__(self)
+               self._u = u
+               self._w = w
+       def __call__(self, inter):
+               func = pyCurvilinearLengthF0D()
+               u = func(inter)
+               return (u > (self._u-self._w)) and (u < (self._u+self._w))
+
+class pyVertexNatureUP0D(UnaryPredicate0D):
+       def __init__(self,nature):
+               UnaryPredicate0D.__init__(self)
+               self._nature = nature
+       def __call__(self, inter):
+               v = inter.object
+               return (v.nature & self._nature) != 0
+
+## check whether an Interface0DIterator
+## is a TVertex and is the one that is 
+## hidden (inferred from the context)
+class pyBackTVertexUP0D(UnaryPredicate0D):
+       def __init__(self):
+               UnaryPredicate0D.__init__(self)
+               self._getQI = QuantitativeInvisibilityF0D()
+       def __call__(self, iter):
+               if (iter.object.nature & Nature.T_VERTEX) == 0:
+                       return 0
+               if iter.is_end:
+                       return 0
+               if self._getQI(iter) != 0:
+                       return 1
+               return 0
+
+class pyParameterUP0DGoodOne(UnaryPredicate0D):
+       def __init__(self,pmin,pmax):
+               UnaryPredicate0D.__init__(self)
+               self._m = pmin
+               self._M = pmax
+               #self.getCurvilinearAbscissa = GetCurvilinearAbscissaF0D()
+       def __call__(self, inter):
+               #s = self.getCurvilinearAbscissa(inter)
+               u = inter.u
+               #print(u)
+               return ((u>=self._m) and (u<=self._M))
+
+class pyParameterUP0D(UnaryPredicate0D):
+       def __init__(self,pmin,pmax):
+               UnaryPredicate0D.__init__(self)
+               self._m = pmin
+               self._M = pmax
+               #self.getCurvilinearAbscissa = GetCurvilinearAbscissaF0D()
+       def __call__(self, inter):
+               func = Curvature2DAngleF0D()
+               c = func(inter)
+               b1 = (c>0.1)
+               #s = self.getCurvilinearAbscissa(inter)
+               u = inter.u
+               #print(u)
+               b = ((u>=self._m) and (u<=self._M))
+               return b and b1
diff --git a/release/scripts/freestyle/style_modules/PredicatesU1D.py b/release/scripts/freestyle/style_modules/PredicatesU1D.py
new file mode 100644 (file)
index 0000000..5c48219
--- /dev/null
@@ -0,0 +1,342 @@
+# ##### BEGIN GPL LICENSE BLOCK #####
+#
+#  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.
+#
+# ##### END GPL LICENSE BLOCK #####
+
+#  Filename : PredicatesU1D.py
+#  Authors  : Fredo Durand, Stephane Grabli, Francois Sillion, Emmanuel Turquin 
+#  Date     : 08/04/2005
+#  Purpose  : Unary predicates (functors) to be used for 1D elements
+
+from Freestyle import Curvature2DAngleF0D, CurveNatureF1D, DensityF1D, GetCompleteViewMapDensityF1D, \
+    GetDirectionalViewMapDensityF1D, GetOccludersF1D, GetProjectedZF1D, GetShapeF1D, GetSteerableViewMapDensityF1D, \
+    IntegrationType, ShapeUP1D, TVertex, UnaryPredicate1D
+from Functions1D import pyDensityAnisotropyF1D, pyViewMapGradientNormF1D
+
+class pyNFirstUP1D(UnaryPredicate1D):
+       def __init__(self, n):
+               UnaryPredicate1D.__init__(self)
+               self.__n = n
+               self.__count = 0
+       def __call__(self, inter):
+               self.__count = self.__count + 1
+               if self.__count <= self.__n:
+                       return 1
+               return 0
+
+class pyHigherLengthUP1D(UnaryPredicate1D):
+       def __init__(self,l):
+               UnaryPredicate1D.__init__(self)
+               self._l = l
+       def __call__(self, inter):
+               return (inter.length_2d > self._l)
+
+class pyNatureUP1D(UnaryPredicate1D):
+       def __init__(self,nature):
+               UnaryPredicate1D.__init__(self)
+               self._nature = nature
+               self._getNature = CurveNatureF1D()
+       def __call__(self, inter):
+               if(self._getNature(inter) & self._nature):
+                       return 1
+               return 0
+
+class pyHigherNumberOfTurnsUP1D(UnaryPredicate1D):
+       def __init__(self,n,a):
+               UnaryPredicate1D.__init__(self)
+               self._n = n
+               self._a = a
+       def __call__(self, inter):
+               count = 0
+               func = Curvature2DAngleF0D()
+               it = inter.vertices_begin()
+               w