aboutsummaryrefslogtreecommitdiffstats
path: root/lib/dialyzer/test/opaque_tests_SUITE_data/src/wings/wings_edge_cmd.erl
diff options
context:
space:
mode:
Diffstat (limited to 'lib/dialyzer/test/opaque_tests_SUITE_data/src/wings/wings_edge_cmd.erl')
-rw-r--r--lib/dialyzer/test/opaque_tests_SUITE_data/src/wings/wings_edge_cmd.erl91
1 files changed, 0 insertions, 91 deletions
diff --git a/lib/dialyzer/test/opaque_tests_SUITE_data/src/wings/wings_edge_cmd.erl b/lib/dialyzer/test/opaque_tests_SUITE_data/src/wings/wings_edge_cmd.erl
deleted file mode 100644
index e478ec245b..0000000000
--- a/lib/dialyzer/test/opaque_tests_SUITE_data/src/wings/wings_edge_cmd.erl
+++ /dev/null
@@ -1,91 +0,0 @@
-%%
-%% wings_edge.erl --
-%%
-%% This module contains most edge command and edge utility functions.
-%%
-
--module(wings_edge_cmd).
-
--export([loop_cut/1]).
-
--include("wings.hrl").
-
-%%%
-%%% The Loop Cut command.
-%%%
-
-loop_cut(St0) ->
- {Sel,St} = wings_sel:fold(fun loop_cut/3, {[],St0}, St0),
- wings_sel:set(body, Sel, St).
-
-loop_cut(Edges, #we{name=Name,id=Id,fs=Ftab}=We0, {Sel,St0}) ->
- AdjFaces = wings_face:from_edges(Edges, We0),
- case loop_cut_partition(AdjFaces, Edges, We0, []) of
- [_] ->
- io:format("Edge loop doesn't divide ~p into two parts.", [Name]);
- Parts0 ->
- %% We arbitrarily decide that the largest part of the object
- %% will be left unselected and will keep the name of the object.
-
- Parts1 = [{gb_trees:size(P),P} || P <- Parts0],
- Parts2 = lists:reverse(lists:sort(Parts1)),
- [_|Parts] = [gb_sets:to_list(P) || {_,P} <- Parts2],
-
- %% Also, this first part will also contain any sub-object
- %% that was not reachable from any of the edges. Therefore,
- %% we calculate the first part as the complement of the union
- %% of all other parts.
-
- FirstComplement = ordsets:union(Parts),
- First = ordsets:subtract(gb_trees:keys(Ftab), FirstComplement),
-
- We = wings_dissolve:complement(First, We0),
- Shs = St0#st.shapes,
- St = St0#st{shapes=gb_trees:update(Id, We, Shs)},
- loop_cut_make_copies(Parts, We0, Sel, St)
- end.
-
-loop_cut_make_copies([P|Parts], We0, Sel0, #st{onext=Id}=St0) ->
- Sel = [{Id,gb_sets:singleton(0)}|Sel0],
- We = wings_dissolve:complement(P, We0),
- St = wings_shape:insert(We, cut, St0),
- loop_cut_make_copies(Parts, We0, Sel, St);
-loop_cut_make_copies([], _, Sel, St) -> {Sel,St}.
-
-loop_cut_partition(Faces0, Edges, We, Acc) ->
- case gb_sets:is_empty(Faces0) of
- true -> Acc;
- false ->
- {AFace,Faces1} = gb_sets:take_smallest(Faces0),
- Reachable = collect_faces(AFace, Edges, We),
- Faces = gb_sets:difference(Faces1, Reachable),
- loop_cut_partition(Faces, Edges, We, [Reachable|Acc])
- end.
-
-collect_faces(Face, Edges, We) ->
- collect_faces(gb_sets:singleton(Face), We, Edges, gb_sets:empty()).
-
-collect_faces(Work0, We, Edges, Acc0) ->
- case gb_sets:is_empty(Work0) of
- true -> Acc0;
- false ->
- {Face,Work1} = gb_sets:take_smallest(Work0),
- Acc = gb_sets:insert(Face, Acc0),
- Work = collect_maybe_add(Work1, Face, Edges, We, Acc),
- collect_faces(Work, We, Edges, Acc)
- end.
-
-collect_maybe_add(Work, Face, Edges, We, Res) ->
- wings_face:fold(
- fun(_, Edge, Rec, A) ->
- case gb_sets:is_member(Edge, Edges) of
- true -> A;
- false ->
- Of = wings_face:other(Face, Rec),
- case gb_sets:is_member(Of, Res) of
- true -> A;
- false -> gb_sets:add(Of, A)
- end
- end
- end, Work, Face, We).
-