Commit: 71674680d64ddf525d690bc3aec3b9482092de03 Author: Julian Eisel Date: Thu Oct 13 16:15:47 2016 +0200 Branches: layer-manager https://developer.blender.org/rB71674680d64ddf525d690bc3aec3b9482092de03
Apply soc-2016-layer_manager as patch onto blender2.8 Creates a new branch layer-manager (based on blender2.8), old one will be removed (but will stay available at https://github.com/julianeisel/blender.git). Had lots of conflicts, lets hope nothing got lost :) =================================================================== M build_files/cmake/macros.cmake M release/scripts/startup/bl_ui/__init__.py A release/scripts/startup/bl_ui/space_layers.py M release/scripts/startup/bl_ui/space_view3d.py M source/blender/alembic/intern/abc_exporter.cc M source/blender/blenkernel/BKE_context.h A source/blender/blenkernel/BKE_layer.h M source/blender/blenkernel/BKE_object.h M source/blender/blenkernel/CMakeLists.txt M source/blender/blenkernel/intern/anim.c M source/blender/blenkernel/intern/blender.c M source/blender/blenkernel/intern/context.c M source/blender/blenkernel/intern/depsgraph.c M source/blender/blenkernel/intern/dynamicpaint.c M source/blender/blenkernel/intern/effect.c A source/blender/blenkernel/intern/layer.c M source/blender/blenkernel/intern/library_query.c M source/blender/blenkernel/intern/library_remap.c M source/blender/blenkernel/intern/object.c M source/blender/blenkernel/intern/object_dupli.c A source/blender/blenkernel/intern/object_layer.c M source/blender/blenkernel/intern/scene.c M source/blender/blenkernel/intern/softbody.c M source/blender/blenloader/intern/readfile.c M source/blender/blenloader/intern/versioning_270.c M source/blender/blenloader/intern/writefile.c M source/blender/collada/DocumentImporter.cpp M source/blender/collada/EffectExporter.cpp M source/blender/depsgraph/intern/builder/deg_builder_nodes.cc M source/blender/depsgraph/intern/builder/deg_builder_relations.cc M source/blender/editors/CMakeLists.txt M source/blender/editors/animation/anim_channels_edit.c M source/blender/editors/animation/anim_filter.c M source/blender/editors/armature/editarmature_sketch.c M source/blender/editors/include/BIF_glutil.h M source/blender/editors/include/ED_object.h A source/blender/editors/include/ED_scene.h M source/blender/editors/include/ED_screen.h M source/blender/editors/include/ED_space_api.h M source/blender/editors/include/UI_interface.h M source/blender/editors/include/UI_interface_icons.h M source/blender/editors/interface/interface_icons.c M source/blender/editors/interface/interface_widgets.c M source/blender/editors/interface/resources.c M source/blender/editors/object/object_add.c M source/blender/editors/object/object_edit.c M source/blender/editors/object/object_relations.c M source/blender/editors/object/object_select.c M source/blender/editors/object/object_vgroup.c M source/blender/editors/render/render_preview.c A source/blender/editors/scene/CMakeLists.txt A source/blender/editors/scene/layer_types.c M source/blender/editors/screen/glutil.c M source/blender/editors/screen/screen_context.c M source/blender/editors/screen/screen_ops.c M source/blender/editors/space_api/spacetypes.c M source/blender/editors/space_clip/tracking_ops_orient.c M source/blender/editors/space_info/info_stats.c A source/blender/editors/space_layers/CMakeLists.txt A source/blender/editors/space_layers/layers_draw.c A source/blender/editors/space_layers/layers_intern.h A source/blender/editors/space_layers/layers_ops.c A source/blender/editors/space_layers/layers_util.c A source/blender/editors/space_layers/space_layers.c M source/blender/editors/space_logic/logic_window.c M source/blender/editors/space_nla/nla_channels.c M source/blender/editors/space_outliner/outliner_draw.c M source/blender/editors/space_outliner/outliner_select.c M source/blender/editors/space_outliner/outliner_tools.c M source/blender/editors/space_outliner/outliner_tree.c M source/blender/editors/space_time/space_time.c M source/blender/editors/space_view3d/drawobject.c M source/blender/editors/space_view3d/space_view3d.c M source/blender/editors/space_view3d/view3d_draw_legacy.c M source/blender/editors/space_view3d/view3d_edit.c M source/blender/editors/space_view3d/view3d_header.c M source/blender/editors/space_view3d/view3d_intern.h M source/blender/editors/space_view3d/view3d_select.c M source/blender/editors/space_view3d/view3d_view.c M source/blender/editors/transform/transform_conversions.c M source/blender/editors/transform/transform_manipulator.c M source/blender/editors/transform/transform_orientations.c M source/blender/editors/transform/transform_snap_object.c M source/blender/editors/util/CMakeLists.txt M source/blender/editors/uvedit/uvedit_draw.c M source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp M source/blender/gpu/intern/gpu_draw.c M source/blender/makesdna/DNA_object_types.h M source/blender/makesdna/DNA_outliner_types.h M source/blender/makesdna/DNA_scene_types.h M source/blender/makesdna/DNA_space_types.h M source/blender/makesdna/DNA_userdef_types.h M source/blender/makesdna/DNA_view3d_types.h M source/blender/makesrna/RNA_access.h M source/blender/makesrna/intern/rna_object_api.c M source/blender/makesrna/intern/rna_object_force.c M source/blender/makesrna/intern/rna_pose.c M source/blender/makesrna/intern/rna_scene.c M source/blender/makesrna/intern/rna_space.c M source/blender/makesrna/intern/rna_userdef.c M source/blender/modifiers/intern/MOD_cloth.c M source/blender/modifiers/intern/MOD_dynamicpaint.c M source/blender/modifiers/intern/MOD_fluidsim.c M source/blender/modifiers/intern/MOD_smoke.c M source/blender/python/intern/bpy_rna_callback.c M source/blender/render/intern/source/convertblender.c M source/blender/render/intern/source/envmap.c M source/blender/windowmanager/WM_types.h M source/blender/windowmanager/intern/wm_init_exit.c M source/blender/windowmanager/intern/wm_keymap.c M source/creator/creator.c =================================================================== diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index 5a67ac9..b1fcd95 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -572,6 +572,7 @@ function(SETUP_BLENDER_SORTED_LIBS) bf_editor_space_userpref bf_editor_space_view3d bf_editor_space_clip + bf_editor_space_layers bf_editor_transform bf_editor_util @@ -585,6 +586,7 @@ function(SETUP_BLENDER_SORTED_LIBS) bf_editor_armature bf_editor_physics bf_editor_render + bf_editor_scene bf_editor_screen bf_editor_sculpt_paint bf_editor_sound diff --git a/release/scripts/startup/bl_ui/__init__.py b/release/scripts/startup/bl_ui/__init__.py index ac15039..5ccd698 100644 --- a/release/scripts/startup/bl_ui/__init__.py +++ b/release/scripts/startup/bl_ui/__init__.py @@ -68,6 +68,7 @@ _modules = [ "space_graph", "space_image", "space_info", + "space_layers", "space_logic", "space_nla", "space_node", diff --git a/release/scripts/startup/bl_ui/space_layers.py b/release/scripts/startup/bl_ui/space_layers.py new file mode 100644 index 0000000..1c2a55e --- /dev/null +++ b/release/scripts/startup/bl_ui/space_layers.py @@ -0,0 +1,38 @@ +# ##### 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 ##### + +# <pep8 compliant> +import bpy +from bpy.types import Header, Menu + + +class LAYERS_HT_header(Header): + bl_space_type = 'LAYER_MANAGER' + + def draw(self, context): + layout = self.layout + + layout.template_header() + + row = layout.row(align=True) + row.operator("layers.layer_add", text="", icon='NEW') + row.operator("layers.group_add", text="", icon='NEWFOLDER') + row.operator("layers.remove", text="", icon='X') + +if __name__ == "__main__": # only for live edit. + bpy.utils.register_module(__name__) diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index 36ada1e..abbcebc 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -3231,6 +3231,9 @@ class VIEW3D_PT_view3d_shading(Panel): if not scene.render.use_shading_nodes: col.prop(gs, "material_mode", text="") + if view.viewport_shade in {'BOUNDBOX', 'WIREFRAME', 'SOLID'}: + col.prop(view, "use_wire_color") + if view.viewport_shade == 'SOLID': col.prop(view, "show_textured_solid") col.prop(view, "use_matcap") diff --git a/source/blender/alembic/intern/abc_exporter.cc b/source/blender/alembic/intern/abc_exporter.cc index 5e66d6c..18df568 100644 --- a/source/blender/alembic/intern/abc_exporter.cc +++ b/source/blender/alembic/intern/abc_exporter.cc @@ -55,6 +55,7 @@ extern "C" { #include "BKE_idprop.h" #include "BKE_main.h" #include "BKE_modifier.h" +#include "BKE_object.h" #include "BKE_scene.h" } @@ -340,9 +341,8 @@ void AbcExporter::operator()(Main *bmain, float &progress, bool &was_canceled) void AbcExporter::createTransformWritersHierarchy(EvaluationContext *eval_ctx) { - Base *base = static_cast<Base *>(m_scene->base.first); - - while (base) { + BKE_BASES_ITER_START(m_scene, base) + { Object *ob = base->object; if (export_object(&m_settings, ob)) { @@ -358,25 +358,22 @@ void AbcExporter::createTransformWritersHierarchy(EvaluationContext *eval_ctx) exploreTransform(eval_ctx, ob, ob->parent, NULL); } } - - base = base->next; } + BKE_BASES_ITER_END; } void AbcExporter::createTransformWritersFlat() { - Base *base = static_cast<Base *>(m_scene->base.first); - - while (base) { + BKE_BASES_ITER_START(m_scene, base) + { Object *ob = base->object; if (export_object(&m_settings, ob) && object_is_shape(ob)) { std::string name = get_id_name(ob); m_xforms[name] = new AbcTransformWriter(ob, m_writer->archive().getTop(), 0, m_trans_sampling_index, m_settings); } - - base = base->next; } + BKE_BASES_ITER_END; } void AbcExporter::exploreTransform(EvaluationContext *eval_ctx, Object *ob, Object *parent, Object *dupliObParent) @@ -444,14 +441,12 @@ void AbcExporter::createTransformWriter(Object *ob, Object *parent, Object *dupl void AbcExporter::createShapeWriters(EvaluationContext *eval_ctx) { - Base *base = static_cast<Base *>(m_scene->base.first); - - while (base) { + BKE_BASES_ITER_START(m_scene, base) + { Object *ob = base->object; exploreObject(eval_ctx, ob, NULL); - - base = base->next; } + BKE_BASES_ITER_END; } void AbcExporter::exploreObject(EvaluationContext *eval_ctx, Object *ob, Object *dupliObParent) diff --git a/source/blender/blenkernel/BKE_context.h b/source/blender/blenkernel/BKE_context.h index c6795f8..c1ac313 100644 --- a/source/blender/blenkernel/BKE_context.h +++ b/source/blender/blenkernel/BKE_context.h @@ -165,6 +165,7 @@ struct SpaceAction *CTX_wm_space_action(const bContext *C); struct SpaceInfo *CTX_wm_space_info(const bContext *C); struct SpaceUserPref *CTX_wm_space_userpref(const bContext *C); struct SpaceClip *CTX_wm_space_clip(const bContext *C); +struct SpaceLayers *CTX_wm_space_layers(const bContext *C); void CTX_wm_manager_set(bContext *C, struct wmWindowManager *wm); void CTX_wm_window_set(bContext *C, struct wmWindow *win); diff --git a/source/blender/blenkernel/BKE_layer.h b/source/blender/blenkernel/BKE_layer.h new file mode 100644 index 0000000..7901d22 --- /dev/null +++ b/source/blender/blenkernel/BKE_layer.h @@ -0,0 +1,130 @@ +/* + * ***** 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. + * + * The Original Code is Copyright (C) 2016 Blender Foundation. + * All rights reserved. + * + * Contributor(s): none yet. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +/** \file BKE_layer.h + * \ingroup bke + */ + +#ifndef __BKE_LAYER_H__ +#define __BKE_LAYER_H__ + +struct bContext; +struct uiLayout; + +#include "DNA_space_types.h" + + +/* -------------------------------------------------------------------- */ +/* Layer Tree */ + +typedef bool (*LayerTreeIterFunc)(LayerTreeItem *, void *); + +/** + * LayerTree.type + * Defines the type used for the layer tree. + */ +typedef enum eLayerTree_Type { + LAYER_TREETYPE_OBJECT, +// LAYER_TREETYPE_GPENCIL, +// LAYER_TREETYPE_ARMATURE, +// ... +} eLayerTree_Type; + +LayerTree *BKE_layertree_new(const eLayerTree_Type type); +LayerTree *BKE_layertree_copy(const LayerTree *original_tree); +void BKE_layertree_delete(LayerTree *ltree); + +bool BKE_layertree_iterate(const LayerTree *ltree, LayerTreeIterFunc foreach, void *customdata, const bool inverse); +int BKE_layertree_get_totitems(const LayerTree *ltree); + +/** + * Macro to iterate over all layer items of a tree. + * Don't call #BKE_layeritem_remove inside, it will mess up iteration. + */ +#define BKE_LAYERTREE_ITER_START(ltree, start_at, idx_name, litem_name) \ + for (int idx_name = start_at; idx_name < BKE_layertree_get_totitems(ltree); idx_name++) { \ + LayerTreeItem *litem_name = ltree->items_all[idx_name]; +#define BKE_LAYERTREE_ITER_END } (void)0 + +/* -------------------------------------------------------------------- */ +/* Layer Types */ + +typedef enum eLayerTreeItem_Type { + LAYER_ITEMTYPE_LAYER = 0, + LAYER_ITEMTYPE_GROUP, /* layer group */ + LAYER_ITEMTYPE_COMP, /* compositing layer (wireframes, SSAO, blending type, etc) */ + + LAYER_ITEMTYPE_TOT, /* always last! */ +} eLayerTreeItem_Type; + +typedef struct LayerType { + /* idname is needed to support reading custom (.py defined) layers. During normal runtime + * using type below should be preferred though, avoids slow string comparisons */ + const char *idname; + eLayerTreeItem_Type type; + + /* drawing of the item in the list */ + void (*draw)(const struct bContext *, struct LayerTreeItem *, struct uiLayout *); /* LayerItemDrawFunc */ + /* drawing of the expanded layer settings (gear wheel icon) */ + void (*draw_settings)(const struct bContext *, struct LayerTreeItem *, struct uiLayout *); /* LayerItemDrawSettingsFunc */ + + /* Optional callback called when duplicating a layer */ + void (*copy)(struct LayerTreeItem *copied_item, const struct LayerTreeItem *original_item); + /* Optional free callback. Don't free item itself! */ + void (*free)(struct LayerTreeItem *); + + /* rna for properties */ + struct StructRNA *srna; +} LayerType; + +void BKE_layertype_append(void (*ltfunc)(LayerType *)); +void BKE_layertypes_free(void); +LayerType *BKE_layertype_find(const char *idname); + +/* -------------------------------------------------------------------- */ +/* Layer Tree Item */ + +typedef void (*LayerItemDrawFunc)(const struct bContext *, struct LayerTreeItem *, struct uiLayout *layout); +typedef void (*LayerItemDrawSettingsFunc)(const struct bContext *, struct LayerTreeItem *, struct uiLayout @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs