|
From: <got...@us...> - 2010-05-08 12:14:45
|
Revision: 746
http://scstudio.svn.sourceforge.net/scstudio/?rev=746&view=rev
Author: gotthardp
Date: 2010-05-08 12:14:32 +0000 (Sat, 08 May 2010)
Log Message:
-----------
Fixed some warnings and file properties.
Modified Paths:
--------------
trunk/src/check/time/hmsc_all_paths.h
trunk/src/check/time/time_trace_race.h
trunk/src/data/beautify/length_optimizer.cpp
trunk/src/data/beautify/length_optimizer.h
trunk/src/data/beautify/unoverlaying_messages.cpp
trunk/src/data/beautify/unoverlaying_messages.h
trunk/src/data/elementary_cycles_traverser.cpp
trunk/src/data/elementary_cycles_traverser.h
trunk/tests/membership/test_bmsc11_1.mpr
trunk/tests/membership/test_bmsc11_2.mpr
trunk/tests/membership/test_bmsc11_3.mpr
trunk/tests/membership/test_bmsc11_4.mpr
trunk/tests/membership/test_bmsc12_1.mpr
trunk/tests/membership/test_bmsc12_2.mpr
trunk/tests/membership/test_bmsc12_3.mpr
trunk/tests/membership/test_bmsc12_4.mpr
trunk/tests/membership/test_bmsc12_5.mpr
trunk/tests/membership/test_bmsc13_1.mpr
trunk/tests/membership/test_bmsc13_2.mpr
trunk/tests/membership/test_bmsc13_3.mpr
trunk/tests/membership/test_bmsc14_1.mpr
trunk/tests/membership/test_bmsc14_2.mpr
trunk/tests/membership/test_bmsc14_3.mpr
trunk/tests/membership/test_bmsc14_4.mpr
trunk/tests/membership/test_bmsc15_1.mpr
trunk/tests/membership/test_bmsc15_2.mpr
trunk/tests/membership/test_bmsc16_1.mpr
trunk/tests/membership/test_bmsc16_2.mpr
trunk/tests/membership/test_bmsc16_3.mpr
trunk/tests/membership/test_bmsc18_1.mpr
trunk/tests/membership/test_bmsc18_2.mpr
trunk/tests/membership/test_bmsc18_3.mpr
trunk/tests/membership/test_bmsc19.mpr
trunk/tests/membership/test_bmsc26_1.mpr
trunk/tests/membership/test_bmsc26_2.mpr
trunk/tests/membership/test_bmsc27.mpr
trunk/tests/membership/test_bmsc27_1.mpr
trunk/tests/membership/test_hmsc11.mpr
trunk/tests/membership/test_hmsc12.mpr
trunk/tests/membership/test_hmsc13.mpr
trunk/tests/membership/test_hmsc14.mpr
trunk/tests/membership/test_hmsc15.mpr
trunk/tests/membership/test_hmsc16.mpr
trunk/tests/membership/test_hmsc18.mpr
trunk/tests/membership/test_hmsc19.mpr
trunk/tests/membership/test_hmsc26.mpr
trunk/tests/membership/time_cycleWithEmpty_neg_hmsc.mpr
trunk/tests/membership/time_cycleWithEmpty_neg_pat.mpr
trunk/tests/membership/time_cycleWithEmpty_pos_hmsc.mpr
trunk/tests/membership/time_cycleWithEmpty_pos_pat.mpr
trunk/tests/membership/time_cycle_neg_hmsc.mpr
trunk/tests/membership/time_cycle_neg_pat.mpr
trunk/tests/membership/time_cycle_pos_hmsc.mpr
trunk/tests/membership/time_cycle_pos_pat.mpr
trunk/tests/membership/time_simple1_neg_hmsc.mpr
trunk/tests/membership/time_simple1_neg_pat.mpr
trunk/tests/membership/time_simple1_pos_hmsc.mpr
trunk/tests/membership/time_simple1_pos_pat.mpr
trunk/tests/membership/time_simple2_neg_hmsc.mpr
trunk/tests/membership/time_simple2_neg_pat.mpr
trunk/tests/membership/time_simple2_pos_hmsc.mpr
trunk/tests/membership/time_simple2_pos_pat.mpr
trunk/tests/time/consistency/cons_neg_1.mpr
trunk/tests/time/consistency/cons_neg_11.mpr
trunk/tests/time/consistency/cons_neg_12.mpr
trunk/tests/time/consistency/cons_neg_13.mpr
trunk/tests/time/consistency/cons_neg_15.mpr
trunk/tests/time/consistency/cons_neg_16.mpr
trunk/tests/time/consistency/cons_neg_17.mpr
trunk/tests/time/consistency/cons_neg_2.mpr
trunk/tests/time/consistency/cons_neg_3.mpr
trunk/tests/time/consistency/cons_neg_4.mpr
trunk/tests/time/consistency/cons_neg_5.mpr
trunk/tests/time/consistency/cons_neg_6.mpr
trunk/tests/time/consistency/cons_neg_7.mpr
trunk/tests/time/consistency/cons_neg_8.mpr
trunk/tests/time/consistency/cons_neg_9.mpr
trunk/tests/time/time_race/race_neg1.mpr
trunk/tests/time/time_race/race_neg2.mpr
trunk/tests/time/time_race/race_neg3.mpr
trunk/tests/time/time_race/race_neg4.mpr
trunk/tests/time/time_race/race_neg5.mpr
trunk/tests/time/time_race/race_neg6.mpr
trunk/tests/time/time_race/race_neg7.mpr
trunk/tests/time/time_race/race_pos1.mpr
trunk/tests/time/time_race/race_pos10.mpr
trunk/tests/time/time_race/race_pos11.mpr
trunk/tests/time/time_race/race_pos12.mpr
trunk/tests/time/time_race/race_pos13.mpr
trunk/tests/time/time_race/race_pos14.mpr
trunk/tests/time/time_race/race_pos2.mpr
trunk/tests/time/time_race/race_pos3.mpr
trunk/tests/time/time_race/race_pos4.mpr
trunk/tests/time/time_race/race_pos5.mpr
trunk/tests/time/time_race/race_pos6.mpr
trunk/tests/time/time_race/race_pos7.mpr
trunk/tests/time/time_race/race_pos8.mpr
trunk/tests/time/time_race/race_pos9.mpr
trunk/tests/time_constraints/proper_neg29.mpr
trunk/tests/time_constraints/proper_neg30.mpr
trunk/tests/time_constraints/proper_neg31.mpr
trunk/tests/time_constraints/proper_neg32.mpr
trunk/tests/time_constraints/proper_neg33.mpr
trunk/tests/time_constraints/proper_neg34.mpr
trunk/tests/time_constraints/proper_neg35.mpr
Property Changed:
----------------
trunk/src/check/time/find_block.cpp
trunk/src/check/time/find_block.h
trunk/src/check/time/hmsc_all_paths.cpp
trunk/src/check/time/hmsc_all_paths.h
trunk/src/check/time/hmsc_block_paths.cpp
trunk/src/check/time/hmsc_block_paths.h
trunk/src/check/time/time_trace_race.h
trunk/src/check/time/traverse_erase.cpp
trunk/src/check/time/traverse_erase.h
trunk/src/data/beautify/length_optimizer.cpp
trunk/src/data/beautify/length_optimizer.h
trunk/src/data/beautify/unoverlaying_messages.cpp
trunk/src/data/beautify/unoverlaying_messages.h
trunk/src/data/elementary_cycles_traverser.cpp
trunk/src/data/elementary_cycles_traverser.h
trunk/tests/find_block_test.cpp
trunk/tests/membership/test_bmsc08.mpr
trunk/tests/membership/test_bmsc09.mpr
trunk/tests/membership/test_bmsc10.mpr
trunk/tests/membership/test_bmsc11_1.mpr
trunk/tests/membership/test_bmsc11_2.mpr
trunk/tests/membership/test_bmsc11_3.mpr
trunk/tests/membership/test_bmsc11_4.mpr
trunk/tests/membership/test_bmsc11_5.mpr
trunk/tests/membership/test_bmsc12_1.mpr
trunk/tests/membership/test_bmsc12_2.mpr
trunk/tests/membership/test_bmsc12_3.mpr
trunk/tests/membership/test_bmsc12_4.mpr
trunk/tests/membership/test_bmsc12_5.mpr
trunk/tests/membership/test_bmsc13_1.mpr
trunk/tests/membership/test_bmsc13_2.mpr
trunk/tests/membership/test_bmsc13_3.mpr
trunk/tests/membership/test_bmsc14_1.mpr
trunk/tests/membership/test_bmsc14_2.mpr
trunk/tests/membership/test_bmsc14_3.mpr
trunk/tests/membership/test_bmsc14_4.mpr
trunk/tests/membership/test_bmsc15_1.mpr
trunk/tests/membership/test_bmsc15_2.mpr
trunk/tests/membership/test_bmsc16_1.mpr
trunk/tests/membership/test_bmsc16_2.mpr
trunk/tests/membership/test_bmsc16_3.mpr
trunk/tests/membership/test_bmsc17_1.mpr
trunk/tests/membership/test_bmsc17_2.mpr
trunk/tests/membership/test_bmsc18_1.mpr
trunk/tests/membership/test_bmsc18_2.mpr
trunk/tests/membership/test_bmsc18_3.mpr
trunk/tests/membership/test_bmsc19.mpr
trunk/tests/membership/test_bmsc20_1.mpr
trunk/tests/membership/test_bmsc20_2.mpr
trunk/tests/membership/test_bmsc21_1.mpr
trunk/tests/membership/test_bmsc21_2.mpr
trunk/tests/membership/test_bmsc21_3.mpr
trunk/tests/membership/test_bmsc21_4.mpr
trunk/tests/membership/test_bmsc22_1.mpr
trunk/tests/membership/test_bmsc22_2.mpr
trunk/tests/membership/test_bmsc22_3.mpr
trunk/tests/membership/test_bmsc22_4.mpr
trunk/tests/membership/test_bmsc23_1.mpr
trunk/tests/membership/test_bmsc23_2.mpr
trunk/tests/membership/test_bmsc23_3.mpr
trunk/tests/membership/test_bmsc23_4.mpr
trunk/tests/membership/test_bmsc24_1.mpr
trunk/tests/membership/test_bmsc24_2.mpr
trunk/tests/membership/test_bmsc25_1.mpr
trunk/tests/membership/test_bmsc25_2.mpr
trunk/tests/membership/test_bmsc26_1.mpr
trunk/tests/membership/test_bmsc26_2.mpr
trunk/tests/membership/test_bmsc27.mpr
trunk/tests/membership/test_bmsc27_1.mpr
trunk/tests/membership/test_hmsc08.mpr
trunk/tests/membership/test_hmsc09.mpr
trunk/tests/membership/test_hmsc10.mpr
trunk/tests/membership/test_hmsc11.mpr
trunk/tests/membership/test_hmsc12.mpr
trunk/tests/membership/test_hmsc13.mpr
trunk/tests/membership/test_hmsc14.mpr
trunk/tests/membership/test_hmsc15.mpr
trunk/tests/membership/test_hmsc16.mpr
trunk/tests/membership/test_hmsc17.mpr
trunk/tests/membership/test_hmsc18.mpr
trunk/tests/membership/test_hmsc19.mpr
trunk/tests/membership/test_hmsc20.mpr
trunk/tests/membership/test_hmsc21.mpr
trunk/tests/membership/test_hmsc22.mpr
trunk/tests/membership/test_hmsc23.mpr
trunk/tests/membership/test_hmsc24.mpr
trunk/tests/membership/test_hmsc25.mpr
trunk/tests/membership/test_hmsc26.mpr
trunk/tests/membership/time_cycleWithEmpty_neg_hmsc.mpr
trunk/tests/membership/time_cycleWithEmpty_neg_pat.mpr
trunk/tests/membership/time_cycleWithEmpty_pos_hmsc.mpr
trunk/tests/membership/time_cycleWithEmpty_pos_pat.mpr
trunk/tests/membership/time_cycle_neg_hmsc.mpr
trunk/tests/membership/time_cycle_neg_pat.mpr
trunk/tests/membership/time_cycle_pos_hmsc.mpr
trunk/tests/membership/time_cycle_pos_pat.mpr
trunk/tests/membership/time_simple1_neg_hmsc.mpr
trunk/tests/membership/time_simple1_neg_pat.mpr
trunk/tests/membership/time_simple1_pos_hmsc.mpr
trunk/tests/membership/time_simple1_pos_pat.mpr
trunk/tests/membership/time_simple2_neg_hmsc.mpr
trunk/tests/membership/time_simple2_neg_pat.mpr
trunk/tests/membership/time_simple2_pos_hmsc.mpr
trunk/tests/membership/time_simple2_pos_pat.mpr
trunk/tests/tighten_hmsc_test.cpp
trunk/tests/time/consistency/cons_neg_1.mpr
trunk/tests/time/consistency/cons_neg_11.mpr
trunk/tests/time/consistency/cons_neg_12.mpr
trunk/tests/time/consistency/cons_neg_13.mpr
trunk/tests/time/consistency/cons_neg_15.mpr
trunk/tests/time/consistency/cons_neg_16.mpr
trunk/tests/time/consistency/cons_neg_17.mpr
trunk/tests/time/consistency/cons_neg_2.mpr
trunk/tests/time/consistency/cons_neg_3.mpr
trunk/tests/time/consistency/cons_neg_4.mpr
trunk/tests/time/consistency/cons_neg_5.mpr
trunk/tests/time/consistency/cons_neg_6.mpr
trunk/tests/time/consistency/cons_neg_7.mpr
trunk/tests/time/consistency/cons_neg_8.mpr
trunk/tests/time/consistency/cons_neg_9.mpr
trunk/tests/time/time_race/race_neg1.mpr
trunk/tests/time/time_race/race_neg2.mpr
trunk/tests/time/time_race/race_neg3.mpr
trunk/tests/time/time_race/race_neg4.mpr
trunk/tests/time/time_race/race_neg5.mpr
trunk/tests/time/time_race/race_neg6.mpr
trunk/tests/time/time_race/race_neg7.mpr
trunk/tests/time/time_race/race_pos1.mpr
trunk/tests/time/time_race/race_pos10.mpr
trunk/tests/time/time_race/race_pos11.mpr
trunk/tests/time/time_race/race_pos12.mpr
trunk/tests/time/time_race/race_pos13.mpr
trunk/tests/time/time_race/race_pos14.mpr
trunk/tests/time/time_race/race_pos2.mpr
trunk/tests/time/time_race/race_pos3.mpr
trunk/tests/time/time_race/race_pos4.mpr
trunk/tests/time/time_race/race_pos5.mpr
trunk/tests/time/time_race/race_pos6.mpr
trunk/tests/time/time_race/race_pos7.mpr
trunk/tests/time/time_race/race_pos8.mpr
trunk/tests/time/time_race/race_pos9.mpr
trunk/tests/time_constraints/proper_neg29.mpr
trunk/tests/time_constraints/proper_neg30.mpr
trunk/tests/time_constraints/proper_neg31.mpr
trunk/tests/time_constraints/proper_neg32.mpr
trunk/tests/time_constraints/proper_neg33.mpr
trunk/tests/time_constraints/proper_neg34.mpr
trunk/tests/time_constraints/proper_neg35.mpr
Property changes on: trunk/src/check/time/find_block.cpp
___________________________________________________________________
Added: svn:keywords
+ Id
Property changes on: trunk/src/check/time/find_block.h
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Property changes on: trunk/src/check/time/hmsc_all_paths.cpp
___________________________________________________________________
Added: svn:keywords
+ Id
Modified: trunk/src/check/time/hmsc_all_paths.h
===================================================================
--- trunk/src/check/time/hmsc_all_paths.h 2010-05-08 12:09:38 UTC (rev 745)
+++ trunk/src/check/time/hmsc_all_paths.h 2010-05-08 12:14:32 UTC (rev 746)
@@ -101,4 +101,5 @@
};
-#endif
\ No newline at end of file
+#endif
+
Property changes on: trunk/src/check/time/hmsc_all_paths.h
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Property changes on: trunk/src/check/time/hmsc_block_paths.cpp
___________________________________________________________________
Added: svn:keywords
+ Id
Property changes on: trunk/src/check/time/hmsc_block_paths.h
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Modified: trunk/src/check/time/time_trace_race.h
===================================================================
--- trunk/src/check/time/time_trace_race.h 2010-05-08 12:09:38 UTC (rev 745)
+++ trunk/src/check/time/time_trace_race.h 2010-05-08 12:14:32 UTC (rev 746)
@@ -13,7 +13,7 @@
*
* Copyright (c) 2009 Ondrej Kocian <koc...@ma...>
*
- * $Id: time_pseudocode.h 569 2010-02-06 10:28:26Z kocianon $
+ * $Id$
*/
#ifndef _TIME_TRACE_RACE_H_
Property changes on: trunk/src/check/time/time_trace_race.h
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Property changes on: trunk/src/check/time/traverse_erase.cpp
___________________________________________________________________
Added: svn:keywords
+ Id
Property changes on: trunk/src/check/time/traverse_erase.h
___________________________________________________________________
Added: svn:keywords
+ Id
Modified: trunk/src/data/beautify/length_optimizer.cpp
===================================================================
--- trunk/src/data/beautify/length_optimizer.cpp 2010-05-08 12:09:38 UTC (rev 745)
+++ trunk/src/data/beautify/length_optimizer.cpp 2010-05-08 12:14:32 UTC (rev 746)
@@ -1,90 +1,91 @@
-/*
- * scstudio - Sequence Chart Studio
- * http://scstudio.sourceforge.net
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * Copyright (c) 2009 Zuzana Pekarcikova <20...@ma...>
- *
- * $Id: length_optimizer.cpp 660 2010-03-05 12:21:53Z xpekarc $
- */
-
-#include "length_optimizer.h"
-
-LengthOptimizer::LengthOptimizer(ConfigProvider *config_provider) :
- ConfigReader(config_provider)
-{
- // minimal distance between the instance bottom and the last event on this instance [mm]
- m_min_instance_bottom_distance = (float)get_config_long(L"Beautify", L"MinInstanceBottomDistance", 8);
-}
-
-int LengthOptimizer::process(BMscPtr bmsc)
-{
- InstancePtrList instances;
- InstancePtrList::const_iterator it;
- DFSInstanceEventsTraverser traverser;
- MscPoint coord_begin, coord_end;
- GetLengthInstances inst_listener;
-
- for(it = bmsc->get_instances().begin(); it != bmsc->get_instances().end(); it++)
- {
- instances.push_back(*it);
- }
- SortByX compare;
- instances.sort(compare);
- int max_length = 0;
-
- traverser.add_white_event_found_listener(&inst_listener);
- for(it = instances.begin(); it != instances.end();it++)
- {
- if((*it)->get_height() > max_length)
- {
- max_length = (int)((*it)->get_height());
- }
- traverser.traverse(it->get());
- }
-
-
- static const int min_length = 20;
- Coordinate inst_length = 0;
- // set base length of instances
- if(inst_listener.get_max_inst())
- inst_length = inst_listener.get_max_length_y() + m_min_instance_bottom_distance;
- // avoid very small instances
- inst_length = (int(inst_length) < min_length) ? min_length : inst_length;
- inst_length = (int(inst_length) < max_length) ? max_length : inst_length;
-
- it = instances.begin();
- coord_begin = (*it)->get_line_begin();
- coord_end = (*it)->get_line_end();
-
- // move instance if it or its label is not in the window
- if(coord_begin.get_y() < 5)
- {
- coord_begin.set_y(5);
- }
-
- // align instances and set the same height
- for(; it != instances.end(); it++)
- {
- coord_end.set_x(coord_begin.get_x());
- coord_end.set_y(coord_begin.get_y() + inst_length);
-
- (*it)->set_line_end(coord_end);
- (*it)->set_line_begin(coord_begin);
- (*it)->set_width(10);
-
- coord_begin.set_x(coord_begin.get_x() + 20);
- }
-
- return 0;
-}
-
-// $Id: $
\ No newline at end of file
+/*
+ * scstudio - Sequence Chart Studio
+ * http://scstudio.sourceforge.net
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * Copyright (c) 2009 Zuzana Pekarcikova <20...@ma...>
+ *
+ * $Id$
+ */
+
+#include "length_optimizer.h"
+
+LengthOptimizer::LengthOptimizer(ConfigProvider *config_provider) :
+ ConfigReader(config_provider)
+{
+ // minimal distance between the instance bottom and the last event on this instance [mm]
+ m_min_instance_bottom_distance = (float)get_config_long(L"Beautify", L"MinInstanceBottomDistance", 8);
+}
+
+int LengthOptimizer::process(BMscPtr bmsc)
+{
+ InstancePtrList instances;
+ InstancePtrList::const_iterator it;
+ DFSInstanceEventsTraverser traverser;
+ MscPoint coord_begin, coord_end;
+ GetLengthInstances inst_listener;
+
+ for(it = bmsc->get_instances().begin(); it != bmsc->get_instances().end(); it++)
+ {
+ instances.push_back(*it);
+ }
+ SortByX compare;
+ instances.sort(compare);
+ int max_length = 0;
+
+ traverser.add_white_event_found_listener(&inst_listener);
+ for(it = instances.begin(); it != instances.end();it++)
+ {
+ if((*it)->get_height() > max_length)
+ {
+ max_length = (int)((*it)->get_height());
+ }
+ traverser.traverse(it->get());
+ }
+
+
+ static const int min_length = 20;
+ Coordinate inst_length = 0;
+ // set base length of instances
+ if(inst_listener.get_max_inst())
+ inst_length = inst_listener.get_max_length_y() + m_min_instance_bottom_distance;
+ // avoid very small instances
+ inst_length = (int(inst_length) < min_length) ? min_length : inst_length;
+ inst_length = (int(inst_length) < max_length) ? max_length : inst_length;
+
+ it = instances.begin();
+ coord_begin = (*it)->get_line_begin();
+ coord_end = (*it)->get_line_end();
+
+ // move instance if it or its label is not in the window
+ if(coord_begin.get_y() < 5)
+ {
+ coord_begin.set_y(5);
+ }
+
+ // align instances and set the same height
+ for(; it != instances.end(); it++)
+ {
+ coord_end.set_x(coord_begin.get_x());
+ coord_end.set_y(coord_begin.get_y() + inst_length);
+
+ (*it)->set_line_end(coord_end);
+ (*it)->set_line_begin(coord_begin);
+ (*it)->set_width(10);
+
+ coord_begin.set_x(coord_begin.get_x() + 20);
+ }
+
+ return 0;
+}
+
+// $Id$
+
Property changes on: trunk/src/data/beautify/length_optimizer.cpp
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Modified: trunk/src/data/beautify/length_optimizer.h
===================================================================
--- trunk/src/data/beautify/length_optimizer.h 2010-05-08 12:09:38 UTC (rev 745)
+++ trunk/src/data/beautify/length_optimizer.h 2010-05-08 12:14:32 UTC (rev 746)
@@ -1,71 +1,72 @@
-/*
- * scstudio - Sequence Chart Studio
- * http://scstudio.sourceforge.net
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * Copyright (c) 2009 Zuzana Pekarcikova <20...@ma...>
- *
- * $Id: length_optimizer.h 660 2010-03-05 12:21:53Z xpekarc $
- */
-
-#include "data/msc.h"
-#include <set>
-#include "data/configurator.h"
-#include "data/dfs_instance_events_traverser.h"
-
-class LengthOptimizer : public ConfigReader
-{
-public:
- float m_min_instance_bottom_distance;
- LengthOptimizer(ConfigProvider* config_provider);
- int process(BMscPtr bmsc);
-};
-
-class SortByX
-{
-public:
- bool operator() (InstancePtr i, InstancePtr j)
- {
- return (i->get_line_begin().get_x() < j->get_line_begin().get_x());
- }
-};
-
-class GetLengthInstances : public WhiteEventFoundListener
-{
-private:
- Coordinate m_max_length_y;
- Instance* m_max_inst;
-public:
- void on_white_event_found(Event *e)
- {
- if(m_max_length_y < e->get_position().get_y())
- {
- m_max_length_y = e->get_position().get_y();
- m_max_inst = e->get_instance();
- }
-
- }
- GetLengthInstances():
- m_max_length_y(0), m_max_inst(NULL)
- {}
-
- Coordinate get_max_length_y(void)
- {
- return m_max_length_y;
- }
-
- Instance* get_max_inst(void)
- {
- return m_max_inst;
- }
-};
-
-// $Id: $
\ No newline at end of file
+/*
+ * scstudio - Sequence Chart Studio
+ * http://scstudio.sourceforge.net
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * Copyright (c) 2009 Zuzana Pekarcikova <20...@ma...>
+ *
+ * $Id$
+ */
+
+#include "data/msc.h"
+#include <set>
+#include "data/configurator.h"
+#include "data/dfs_instance_events_traverser.h"
+
+class LengthOptimizer : public ConfigReader
+{
+public:
+ float m_min_instance_bottom_distance;
+ LengthOptimizer(ConfigProvider* config_provider);
+ int process(BMscPtr bmsc);
+};
+
+class SortByX
+{
+public:
+ bool operator() (InstancePtr i, InstancePtr j)
+ {
+ return (i->get_line_begin().get_x() < j->get_line_begin().get_x());
+ }
+};
+
+class GetLengthInstances : public WhiteEventFoundListener
+{
+private:
+ Coordinate m_max_length_y;
+ Instance* m_max_inst;
+public:
+ void on_white_event_found(Event *e)
+ {
+ if(m_max_length_y < e->get_position().get_y())
+ {
+ m_max_length_y = e->get_position().get_y();
+ m_max_inst = e->get_instance();
+ }
+
+ }
+ GetLengthInstances():
+ m_max_length_y(0), m_max_inst(NULL)
+ {}
+
+ Coordinate get_max_length_y(void)
+ {
+ return m_max_length_y;
+ }
+
+ Instance* get_max_inst(void)
+ {
+ return m_max_inst;
+ }
+};
+
+// $Id$
+
Property changes on: trunk/src/data/beautify/length_optimizer.h
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Modified: trunk/src/data/beautify/unoverlaying_messages.cpp
===================================================================
--- trunk/src/data/beautify/unoverlaying_messages.cpp 2010-05-08 12:09:38 UTC (rev 745)
+++ trunk/src/data/beautify/unoverlaying_messages.cpp 2010-05-08 12:14:32 UTC (rev 746)
@@ -1,251 +1,252 @@
-/*
- * scstudio - Sequence Chart Studio
- * http://scstudio.sourceforge.net
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * Copyright (c) 2009 Zuzana Pekarcikova <20...@ma...>
- *
- * $Id: unoverlaying_messages.cpp 660 2010-03-05 12:21:53Z xpekarc $
- */
-
-#include "unoverlaying_messages.h"
-#include "layout_optimizer.h"
-
-int UnoverlayingMessages::shift(BMscPtr bmsc, EventPtr e)
-{
-{
- LayoutOptimizer optimizer(this->get_config_provider());
-
- //set attributes of event to false
- SetAttribute set_attributes_listaner;
- DFSInstanceEventsTraverser set_attributes_traverser;
- set_attributes_traverser.add_white_event_found_listener(&set_attributes_listaner);
- for(InstancePtrList::const_iterator it = bmsc->get_instances().begin();it != bmsc->get_instances().end(); it++ )
- {
- set_attributes_traverser.traverse(it->get());
- (*it)->set_attribute("limit", 0);
- }
-
- InstancePtrList untreated;
- untreated.push_back(e->get_instance());
- //set limit on this instance
- e->get_instance()->set_attribute("limit",(int)(e->get_position().get_y()+0.5));
-
-
- std::set<InstancePtr> treated;
-
- while(!untreated.empty())
- {
- // inicialize
- InstancePtrList::const_iterator instance;
- instance = untreated.begin();
- treated.insert(*instance);
-
- DFSInstanceEventsTraverser inst_traverser;
- InstanceEvents inst_listener;
- inst_traverser.add_white_event_found_listener(&inst_listener);
- inst_traverser.traverse(instance->get());
-
- // all which is bigger of equel to limit has to be shift
- int limit;
- limit = (*instance)->get_attribute("limit", limit);
-
- SortEventByY compare_y;
- EventPtrList events = inst_listener.get_instance_events();
- events.sort(compare_y);
-
- for(EventPtrList::const_iterator ev=events.begin(); ev!=events.end(); ev++)
- {
- // ev is bigger or equal to limit
- if((int)((*ev)->get_position().get_y()+0.5) >= limit)
- {
- (*ev)->set_attribute("id", true);
-
- // put instance of matching event into untreated
- // note: event must be matched, message must be straight, instance of matching
- // event must not have been treated yet and must not to be in untreated yet
- if((*ev)->is_matched())
- if((int)((*ev)->get_matching_event()->get_position().get_y()+0.5) == (int)((*ev)->get_position().get_y()+0.5))
- if(treated.find((*ev)->get_matching_event()->get_instance()) == treated.end())
- {
- int attribute;
- if((*ev)->get_matching_event()->get_instance()->get_attribute("limit",attribute) == 0)
- {
- // set limit for instance of matching event
- (*ev)->get_matching_event()->get_instance()->set_attribute("limit",
- (int)((*ev)->get_matching_event()->get_position().get_y()+0.5));
- untreated.push_back((*ev)->get_matching_event()->get_instance());
- }
- }
- }
- }
- untreated.pop_front();
- }
-
- MoveListener movement;
- DFSInstanceEventsTraverser move_traverser;
-
- //move all events with attribute true and remove attributes
- move_traverser.add_white_event_found_listener(&movement);
- movement.distance = optimizer.m_successor_distance;
- for(InstancePtrList::const_iterator it_inst=bmsc->get_instances().begin(); it_inst!=bmsc->get_instances().end(); it_inst++)
- {
- move_traverser.traverse(it_inst->get());
- (*it_inst)->remove_attribute<int>("limit");
- }
-
-
- return 0;
-}
-}
-
-EventPtrList get_events_with_equal_y(EventPtrList e_list, int y)
-{
- EventPtrList list;
- for(EventPtrList::const_iterator it = e_list.begin(); it != e_list.end(); it++)
- {
- if((int)(*it)->get_position().get_y() == y)
- list.push_back(*it);
- }
- return list;
-}
-
-bool UnoverlayingMessages::solve_coregions_edges(BMscPtr bmsc, EventPtr e, std::set<CoregionArea*> &coregions)
-{
- bool conflict = false;
- std::set<CoregionArea*>coregions2 = coregions;
- int level = (int)(e->get_position().get_y()+0.5);
- int x1, x2, xcoreg;
- for(std::set<CoregionArea*>::const_iterator coregion=coregions.begin(); coregion!=coregions.end(); coregion++)
- {
- if(level > int((*coregion)->get_end_height()+0.5))
- coregions2.erase(*coregion);
- x1 = (int)(e->get_instance()->get_line_begin().get_x()+0.5);
- xcoreg = (int)((*coregion)->get_instance()->get_line_begin().get_x()+0.5);
- if(e->is_matched())
- x2 = (int)(e->get_matching_event()->get_instance()->get_line_begin().get_x()+0.5);
- else
- x2 = (int)(e->get_incomplete_message()->get_dot_position().get_x() + x1 + 0.5);
- if((level == int((*coregion)->get_end_height()+0.5)) ||
- level == int((*coregion)->get_begin_height()+0.5))
- {
- if((x1<xcoreg && xcoreg<x2) ||
- (x2<xcoreg && xcoreg<x1))
- {
- shift(bmsc, e);
- conflict = true;
- break;
- }
- }
- }
-
- coregions = coregions2;
- return conflict;
-}
-
-int UnoverlayingMessages::process(BMscPtr bmsc)
-{
- DFSInstanceEventsTraverser traverser;
- GetEventsList event_listener;
- SortEventByY e_compare_y;
- SortEventByX e_compare_x;
- int level;
- m_events.clear();
-
- traverser.add_white_event_found_listener(&event_listener);
- for(InstancePtrList::const_iterator it = bmsc->get_instances().begin(); it != bmsc->get_instances().end(); it++)
- {
- traverser.traverse(it->get());
- }
-
- EventPtrList evt_level;
- EventPtrList::const_iterator it_e2, it_e3;
- m_events = event_listener.get_absolute_events();//get_events_list();
- bool move = false, new_level;
- std::set<CoregionArea*> coregions;
- coregions = event_listener.get_coregions();
-
- while(!m_events.empty())
- {
- m_events.sort(e_compare_y);
- new_level = true;
- //set level to minimal y coordinate
- //note: it will check if there is some overlaying on this level
- level = (int)(*m_events.begin())->get_position().get_y();
- evt_level = get_events_with_equal_y(m_events, level);
- evt_level.sort(e_compare_x);
-
- for(it_e2 = evt_level.begin(); it_e2 != evt_level.end(); it_e2++)
- {
- //if move is true, this event has been treated yet and so move to next event
- if(move)
- {
- move = false;
- continue;
- }
- //incomplete message
- if(!(*it_e2)->is_matched())
- continue;
- //oblique message
- if((int)(*it_e2)->get_matching_event()->get_position().get_y() != (int)(*it_e2)->get_position().get_y())
- continue;
- //solve overlaying coregion edges and message
- if(solve_coregions_edges(bmsc, (*it_e2), coregions))
- {
- new_level = false;
- break;
- }
- it_e3 = it_e2;
- it_e3++;
- if(it_e3 != evt_level.end() && (*it_e2)->get_matching_event() == (*it_e3).get())
- {
- move = true;
- continue;
- }
- else if(it_e3 != evt_level.end())
- {
- shift(bmsc, (*it_e3));
- //stay on the same level of y
- new_level = false;
- break;
- }
- }
-
- if(new_level)
- {
- //remove all events with y coordinate which has been counted yet
- evt_level.clear();
- for(it_e2 = m_events.begin(); it_e2 != m_events.end(); it_e2++)
- {
- if((int)(*it_e2)->get_position().get_y() != level)
- {
- evt_level.push_back(*it_e2);
- }
- }
- m_events = evt_level;
- }
- }
-
- m_events = event_listener.get_events_list();
- CoregionArea* coregion;
- for(EventPtrList::const_iterator it_e=m_events.begin(); it_e!=m_events.end(); it_e++)
- {
- coregion = dynamic_cast<CoregionArea*>((*it_e)->get_general_area());
- if(coregion)
- {
- (*it_e)->set_position(MscPoint((*it_e)->get_position().get_x(),(*it_e)->get_position().get_y()-coregion->get_begin_height()));
- }
- }
-
- return 0;
-}
-
-// $Id: $
\ No newline at end of file
+/*
+ * scstudio - Sequence Chart Studio
+ * http://scstudio.sourceforge.net
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * Copyright (c) 2009 Zuzana Pekarcikova <20...@ma...>
+ *
+ * $Id$
+ */
+
+#include "unoverlaying_messages.h"
+#include "layout_optimizer.h"
+
+int UnoverlayingMessages::shift(BMscPtr bmsc, EventPtr e)
+{
+{
+ LayoutOptimizer optimizer(this->get_config_provider());
+
+ //set attributes of event to false
+ SetAttribute set_attributes_listaner;
+ DFSInstanceEventsTraverser set_attributes_traverser;
+ set_attributes_traverser.add_white_event_found_listener(&set_attributes_listaner);
+ for(InstancePtrList::const_iterator it = bmsc->get_instances().begin();it != bmsc->get_instances().end(); it++ )
+ {
+ set_attributes_traverser.traverse(it->get());
+ (*it)->set_attribute("limit", 0);
+ }
+
+ InstancePtrList untreated;
+ untreated.push_back(e->get_instance());
+ //set limit on this instance
+ e->get_instance()->set_attribute("limit",(int)(e->get_position().get_y()+0.5));
+
+
+ std::set<InstancePtr> treated;
+
+ while(!untreated.empty())
+ {
+ // inicialize
+ InstancePtrList::const_iterator instance;
+ instance = untreated.begin();
+ treated.insert(*instance);
+
+ DFSInstanceEventsTraverser inst_traverser;
+ InstanceEvents inst_listener;
+ inst_traverser.add_white_event_found_listener(&inst_listener);
+ inst_traverser.traverse(instance->get());
+
+ // all which is bigger of equel to limit has to be shift
+ int limit;
+ limit = (*instance)->get_attribute("limit", limit);
+
+ SortEventByY compare_y;
+ EventPtrList events = inst_listener.get_instance_events();
+ events.sort(compare_y);
+
+ for(EventPtrList::const_iterator ev=events.begin(); ev!=events.end(); ev++)
+ {
+ // ev is bigger or equal to limit
+ if((int)((*ev)->get_position().get_y()+0.5) >= limit)
+ {
+ (*ev)->set_attribute("id", true);
+
+ // put instance of matching event into untreated
+ // note: event must be matched, message must be straight, instance of matching
+ // event must not have been treated yet and must not to be in untreated yet
+ if((*ev)->is_matched())
+ if((int)((*ev)->get_matching_event()->get_position().get_y()+0.5) == (int)((*ev)->get_position().get_y()+0.5))
+ if(treated.find((*ev)->get_matching_event()->get_instance()) == treated.end())
+ {
+ int attribute;
+ if((*ev)->get_matching_event()->get_instance()->get_attribute("limit",attribute) == 0)
+ {
+ // set limit for instance of matching event
+ (*ev)->get_matching_event()->get_instance()->set_attribute("limit",
+ (int)((*ev)->get_matching_event()->get_position().get_y()+0.5));
+ untreated.push_back((*ev)->get_matching_event()->get_instance());
+ }
+ }
+ }
+ }
+ untreated.pop_front();
+ }
+
+ MoveListener movement;
+ DFSInstanceEventsTraverser move_traverser;
+
+ //move all events with attribute true and remove attributes
+ move_traverser.add_white_event_found_listener(&movement);
+ movement.distance = optimizer.m_successor_distance;
+ for(InstancePtrList::const_iterator it_inst=bmsc->get_instances().begin(); it_inst!=bmsc->get_instances().end(); it_inst++)
+ {
+ move_traverser.traverse(it_inst->get());
+ (*it_inst)->remove_attribute<int>("limit");
+ }
+
+
+ return 0;
+}
+}
+
+EventPtrList get_events_with_equal_y(EventPtrList e_list, int y)
+{
+ EventPtrList list;
+ for(EventPtrList::const_iterator it = e_list.begin(); it != e_list.end(); it++)
+ {
+ if((int)(*it)->get_position().get_y() == y)
+ list.push_back(*it);
+ }
+ return list;
+}
+
+bool UnoverlayingMessages::solve_coregions_edges(BMscPtr bmsc, EventPtr e, std::set<CoregionArea*> &coregions)
+{
+ bool conflict = false;
+ std::set<CoregionArea*>coregions2 = coregions;
+ int level = (int)(e->get_position().get_y()+0.5);
+ int x1, x2, xcoreg;
+ for(std::set<CoregionArea*>::const_iterator coregion=coregions.begin(); coregion!=coregions.end(); coregion++)
+ {
+ if(level > int((*coregion)->get_end_height()+0.5))
+ coregions2.erase(*coregion);
+ x1 = (int)(e->get_instance()->get_line_begin().get_x()+0.5);
+ xcoreg = (int)((*coregion)->get_instance()->get_line_begin().get_x()+0.5);
+ if(e->is_matched())
+ x2 = (int)(e->get_matching_event()->get_instance()->get_line_begin().get_x()+0.5);
+ else
+ x2 = (int)(e->get_incomplete_message()->get_dot_position().get_x() + x1 + 0.5);
+ if((level == int((*coregion)->get_end_height()+0.5)) ||
+ level == int((*coregion)->get_begin_height()+0.5))
+ {
+ if((x1<xcoreg && xcoreg<x2) ||
+ (x2<xcoreg && xcoreg<x1))
+ {
+ shift(bmsc, e);
+ conflict = true;
+ break;
+ }
+ }
+ }
+
+ coregions = coregions2;
+ return conflict;
+}
+
+int UnoverlayingMessages::process(BMscPtr bmsc)
+{
+ DFSInstanceEventsTraverser traverser;
+ GetEventsList event_listener;
+ SortEventByY e_compare_y;
+ SortEventByX e_compare_x;
+ int level;
+ m_events.clear();
+
+ traverser.add_white_event_found_listener(&event_listener);
+ for(InstancePtrList::const_iterator it = bmsc->get_instances().begin(); it != bmsc->get_instances().end(); it++)
+ {
+ traverser.traverse(it->get());
+ }
+
+ EventPtrList evt_level;
+ EventPtrList::const_iterator it_e2, it_e3;
+ m_events = event_listener.get_absolute_events();//get_events_list();
+ bool move = false, new_level;
+ std::set<CoregionArea*> coregions;
+ coregions = event_listener.get_coregions();
+
+ while(!m_events.empty())
+ {
+ m_events.sort(e_compare_y);
+ new_level = true;
+ //set level to minimal y coordinate
+ //note: it will check if there is some overlaying on this level
+ level = (int)(*m_events.begin())->get_position().get_y();
+ evt_level = get_events_with_equal_y(m_events, level);
+ evt_level.sort(e_compare_x);
+
+ for(it_e2 = evt_level.begin(); it_e2 != evt_level.end(); it_e2++)
+ {
+ //if move is true, this event has been treated yet and so move to next event
+ if(move)
+ {
+ move = false;
+ continue;
+ }
+ //incomplete message
+ if(!(*it_e2)->is_matched())
+ continue;
+ //oblique message
+ if((int)(*it_e2)->get_matching_event()->get_position().get_y() != (int)(*it_e2)->get_position().get_y())
+ continue;
+ //solve overlaying coregion edges and message
+ if(solve_coregions_edges(bmsc, (*it_e2), coregions))
+ {
+ new_level = false;
+ break;
+ }
+ it_e3 = it_e2;
+ it_e3++;
+ if(it_e3 != evt_level.end() && (*it_e2)->get_matching_event() == (*it_e3).get())
+ {
+ move = true;
+ continue;
+ }
+ else if(it_e3 != evt_level.end())
+ {
+ shift(bmsc, (*it_e3));
+ //stay on the same level of y
+ new_level = false;
+ break;
+ }
+ }
+
+ if(new_level)
+ {
+ //remove all events with y coordinate which has been counted yet
+ evt_level.clear();
+ for(it_e2 = m_events.begin(); it_e2 != m_events.end(); it_e2++)
+ {
+ if((int)(*it_e2)->get_position().get_y() != level)
+ {
+ evt_level.push_back(*it_e2);
+ }
+ }
+ m_events = evt_level;
+ }
+ }
+
+ m_events = event_listener.get_events_list();
+ CoregionArea* coregion;
+ for(EventPtrList::const_iterator it_e=m_events.begin(); it_e!=m_events.end(); it_e++)
+ {
+ coregion = dynamic_cast<CoregionArea*>((*it_e)->get_general_area());
+ if(coregion)
+ {
+ (*it_e)->set_position(MscPoint((*it_e)->get_position().get_x(),(*it_e)->get_position().get_y()-coregion->get_begin_height()));
+ }
+ }
+
+ return 0;
+}
+
+// $Id$
+
Property changes on: trunk/src/data/beautify/unoverlaying_messages.cpp
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Modified: trunk/src/data/beautify/unoverlaying_messages.h
===================================================================
--- trunk/src/data/beautify/unoverlaying_messages.h 2010-05-08 12:09:38 UTC (rev 745)
+++ trunk/src/data/beautify/unoverlaying_messages.h 2010-05-08 12:14:32 UTC (rev 746)
@@ -1,140 +1,141 @@
-/*
- * scstudio - Sequence Chart Studio
- * http://scstudio.sourceforge.net
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * Copyright (c) 2009 Zuzana Pekarcikova <20...@ma...>
- *
- * $Id: unoverlaying_messages.cpp 660 2010-03-05 12:21:53Z xpekarc $
- */
-
-#include "data/msc.h"
-#include <set>
-#include "data/configurator.h"
-#include "data/dfs_instance_events_traverser.h"
-
-class UnoverlayingMessages : public ConfigReader
-{
-private:
- EventPtrList m_events;
- int shift(BMscPtr bmsc, EventPtr e);
- bool solve_coregions_edges(BMscPtr bmsc, EventPtr e, std::set<CoregionArea*> &coregions);
-public:
- int process(BMscPtr bmsc);
-};
-
-class SortEventByY
-{
-public:
- bool operator() (EventPtr e, EventPtr f)
- {
- return (e->get_position().get_y() < f->get_position().get_y());
- }
-};
-
-class SortEventByX
-{
-public:
- bool operator() (EventPtr e, EventPtr f)
- {
- return ((e->get_instance()->get_line_begin().get_x() + e->get_position().get_x()) <
- (f->get_instance()->get_line_begin().get_x() + f->get_position().get_x()));
- }
-};
-
-class GetEventsList : public WhiteEventFoundListener
-{
-private:
- std::set<CoregionArea*> coregions;
- EventPtrList events_list, absolute_events;
-public:
- void on_white_event_found(Event *e)
- {
- CoregionArea* coregion;
- coregion = dynamic_cast<CoregionArea*>(e->get_general_area());
- if(coregion)
- {
- e->set_position(MscPoint(e->get_position().get_x(),(int)(e->get_position().get_y()+coregion->get_begin_height()+0.5)));
- coregions.insert(coregion);
- }
- else
- {
- e->set_position(MscPoint(e->get_position().get_x(), (int)(e->get_position().get_y()+0.5)));
- }
- absolute_events.push_back(e);
- events_list.push_back(e);
- }
-
- std::set<CoregionArea*> get_coregions(void)
- {
- return coregions;
- }
- EventPtrList get_events_list(void)
- {
- return events_list;
- }
-
- EventPtrList get_absolute_events(void)
- {
- return absolute_events;
- }
-};
-
-class InstanceEvents : public WhiteEventFoundListener
-{
-private:
- EventPtrList instance_events;
-public:
- void on_white_event_found(Event *e)
- {
- instance_events.push_back(e);
- }
- EventPtrList get_instance_events(void)
- {
- return instance_events;
- }
-};
-
-class SetAttribute : public WhiteEventFoundListener
-{
-public:
- void on_white_event_found(Event *e)
- {
- e->set_attribute("id", false);
- }
-};
-
-class MoveListener : public WhiteEventFoundListener
-{
-private:
- CoregionArea* coregion;
- bool attribute;
-public:
- float distance;
- void on_white_event_found(Event *e)
- {
- if(e->get_attribute("id", attribute))
- {
- e->set_position(MscPoint(e->get_position().get_x(), e->get_position().get_y()+distance));
- }
- coregion = dynamic_cast<CoregionArea*>(e->get_general_area());
- if(coregion)
- {
- if(coregion->get_end_height() <= (e->get_position().get_y()+distance/2))
- {
- coregion->set_end_height(e->get_position().get_y() + distance/2);
- }
- }
- e->remove_attribute<bool>("id");
- }
-};
-
-// $Id: $
\ No newline at end of file
+/*
+ * scstudio - Sequence Chart Studio
+ * http://scstudio.sourceforge.net
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * Copyright (c) 2009 Zuzana Pekarcikova <20...@ma...>
+ *
+ * $Id$
+ */
+
+#include "data/msc.h"
+#include <set>
+#include "data/configurator.h"
+#include "data/dfs_instance_events_traverser.h"
+
+class UnoverlayingMessages : public ConfigReader
+{
+private:
+ EventPtrList m_events;
+ int shift(BMscPtr bmsc, EventPtr e);
+ bool solve_coregions_edges(BMscPtr bmsc, EventPtr e, std::set<CoregionArea*> &coregions);
+public:
+ int process(BMscPtr bmsc);
+};
+
+class SortEventByY
+{
+public:
+ bool operator() (EventPtr e, EventPtr f)
+ {
+ return (e->get_position().get_y() < f->get_position().get_y());
+ }
+};
+
+class SortEventByX
+{
+public:
+ bool operator() (EventPtr e, EventPtr f)
+ {
+ return ((e->get_instance()->get_line_begin().get_x() + e->get_position().get_x()) <
+ (f->get_instance()->get_line_begin().get_x() + f->get_position().get_x()));
+ }
+};
+
+class GetEventsList : public WhiteEventFoundListener
+{
+private:
+ std::set<CoregionArea*> coregions;
+ EventPtrList events_list, absolute_events;
+public:
+ void on_white_event_found(Event *e)
+ {
+ CoregionArea* coregion;
+ coregion = dynamic_cast<CoregionArea*>(e->get_general_area());
+ if(coregion)
+ {
+ e->set_position(MscPoint(e->get_position().get_x(),(int)(e->get_position().get_y()+coregion->get_begin_height()+0.5)));
+ coregions.insert(coregion);
+ }
+ else
+ {
+ e->set_position(MscPoint(e->get_position().get_x(), (int)(e->get_position().get_y()+0.5)));
+ }
+ absolute_events.push_back(e);
+ events_list.push_back(e);
+ }
+
+ std::set<CoregionArea*> get_coregions(void)
+ {
+ return coregions;
+ }
+ EventPtrList get_events_list(void)
+ {
+ return events_list;
+ }
+
+ EventPtrList get_absolute_events(void)
+ {
+ return absolute_events;
+ }
+};
+
+class InstanceEvents : public WhiteEventFoundListener
+{
+private:
+ EventPtrList instance_events;
+public:
+ void on_white_event_found(Event *e)
+ {
+ instance_events.push_back(e);
+ }
+ EventPtrList get_instance_events(void)
+ {
+ return instance_events;
+ }
+};
+
+class SetAttribute : public WhiteEventFoundListener
+{
+public:
+ void on_white_event_found(Event *e)
+ {
+ e->set_attribute("id", false);
+ }
+};
+
+class MoveListener : public WhiteEventFoundListener
+{
+private:
+ CoregionArea* coregion;
+ bool attribute;
+public:
+ float distance;
+ void on_white_event_found(Event *e)
+ {
+ if(e->get_attribute("id", attribute))
+ {
+ e->set_position(MscPoint(e->get_position().get_x(), e->get_position().get_y()+distance));
+ }
+ coregion = dynamic_cast<CoregionArea*>(e->get_general_area());
+ if(coregion)
+ {
+ if(coregion->get_end_height() <= (e->get_position().get_y()+distance/2))
+ {
+ coregion->set_end_height(e->get_position().get_y() + distance/2);
+ }
+ }
+ e->remove_attribute<bool>("id");
+ }
+};
+
+// $Id$
+
Property changes on: trunk/src/data/beautify/unoverlaying_messages.h
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Modified: trunk/src/data/elementary_cycles_traverser.cpp
===================================================================
--- trunk/src/data/elementary_cycles_traverser.cpp 2010-05-08 12:09:38 UTC (rev 745)
+++ trunk/src/data/elementary_cycles_traverser.cpp 2010-05-08 12:14:32 UTC (rev 746)
@@ -1,155 +1,155 @@
-/*
- * scstudio - Sequence Chart Studio
- * http://scstudio.sourceforge.net
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * Copyright (c) 2010 Vaclav Vacek <va...@ic...>
- *
- * $Id: dfs_inner_hmsc_traverser.cpp 455 2009-11-13 17:17:17Z kocianon $
- */
-
-#include "data/elementary_cycles_traverser.h"
-
-void ElementaryCyclesTraverser::cycle_found(const MscElementPList &cycle)
-{
- ElementaryCycleListenerPList::iterator l;
- for(l=m_cycle_listeners.begin();l!=m_cycle_listeners.end();l++)
- (*l)->on_elementary_cycle_found(cycle);
-}
-
-MscElementPListList TarjanCycles::circuit_enumeration(HMscNode *n)
-{
- m_point_stack.clear();
- m_marked_stack.clear();
- m_mark.clear();
- m_result.clear();
- m_current_path.clear();
- m_s = n->get_attribute("Cycles_number", 0);
- m_mark.resize(m_vertex_count, false);
-
- backtrack(n);
- return m_result;
-}
-
-bool TarjanCycles::backtrack(HMscNode *n)
-{
- bool f = false, g = false;
- //The default value 0 is never to be used - the attribute is set for sure.
- unsigned v = n->get_attribute("Cycles_number", 0);
- unsigned j, w;
-
- m_point_stack.push_back(v);
- m_current_path.push_back(n); //!!
- m_mark[v] = true;
- m_marked_stack.push_back(v);
- PredecessorNode* predecessor = dynamic_cast<PredecessorNode*>(n);
- NodeRelationPtrVector::const_iterator relation;
-
- //for all successors
- if(predecessor)
- {
- for(relation=predecessor->get_successors().begin();
- relation!=predecessor->get_successors().end();relation++)
- {
- const NodeRelationPtr& rel = *relation;
-
- f = false;
- w = dynamic_cast<HMscNode*>(rel->get_successor())->get_attribute("Cycles_number", 0);
-
- if(w < m_s)
- continue;
- if(m_restriction != "")
- if(!(dynamic_cast<HMscNode*>(rel->get_successor())->is_attribute_set(m_restriction)))
- continue;
-
- if(w == m_s)
- {
- m_current_path.push_back(rel.get());
- m_current_path.push_back(dynamic_cast<HMscNode*>(rel.get()->get_successor()));
- m_result.push_back(m_current_path);
- m_current_path.pop_back();
- m_current_path.pop_back();
- f = true;
- }
- else if(!m_mark[w])
- {
- m_current_path.push_back(rel.get());
- g = backtrack(dynamic_cast<HMscNode*>(rel->get_successor()));
- m_current_path.pop_back();
- f = f || g;
- }
- }
- }
- if(f == true)
- {
- j = m_marked_stack.size() - 1;
- while(m_marked_stack[j] != v && j >=0)
- {
- m_mark[m_marked_stack[j]] = false;
- m_marked_stack.pop_back();
- j--;
- }
- if(j >= 0)
- {
- m_marked_stack.pop_back();
- m_mark[v] = false;
- }
- }
- if(!m_marked_stack.empty())
- {
- if(m_marked_stack.back()==v)
- {
- m_mark[v] = false;
- m_marked_stack.pop_back();
- }
- }
-
- m_point_stack.pop_back();
- m_current_path.pop_back();
- return f;
-}
-
-void ElementaryCyclesTraverser::traverse(HMscPtr hmsc)
-{
- AssignListener assign_li;
- CleanupListener clean_li;
- m_traverser.add_white_node_found_listener(&assign_li);
- m_traverser.traverse(hmsc);
- m_traverser.remove_all_listeners();
-
- CycleListener cycle_li(assign_li.get_vertex_count(), m_cycle_listeners, m_restriction_name);
- m_traverser.add_white_node_found_listener(&cycle_li);
- m_traverser.traverse(hmsc);
- m_traverser.remove_all_listeners();
-
- m_traverser.add_white_node_found_listener(&clean_li);
- m_traverser.traverse(hmsc);
- m_traverser.remove_all_listeners();
-}
-
-void CycleListener::on_white_node_found(HMscNode *n)
-{
- if(m_restriction != "")
- if(!n->is_attribute_set(m_restriction))
- return;
- TarjanCycles cycle_finder(m_vertex_count, m_restriction);
- MscElementPListList cycle_list;
- cycle_list = cycle_finder.circuit_enumeration(n);
- MscElementPListList::const_iterator cycles;
- ElementaryCycleListenerPList::const_iterator listeners;
-
- for(cycles = cycle_list.begin(); cycles != cycle_list.end(); cycles++)
- for(listeners = m_listeners.begin(); listeners != m_listeners.end(); listeners++)
- (*listeners)->on_elementary_cycle_found(*cycles);
-
-}
-
-// $Id: dfs_inner_hmsc_traverser.cpp 455 2009-11-13 17:17:17Z kocianon $
+/*
+ * scstudio - Sequence Chart Studio
+ * http://scstudio.sourceforge.net
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * Copyright (c) 2010 Vaclav Vacek <va...@ic...>
+ *
+ * $Id$
+ */
+
+#include "data/elementary_cycles_traverser.h"
+
+void ElementaryCyclesTraverser::cycle_found(const MscElementPList &cycle)
+{
+ ElementaryCycleListenerPList::iterator l;
+ for(l=m_cycle_listeners.begin();l!=m_cycle_listeners.end();l++)
+ (*l)->on_elementary_cycle_found(cycle);
+}
+
+MscElementPListList TarjanCycles::circuit_enumeration(HMscNode *n)
+{
+ m_point_stack.clear();
+ m_marked_stack.clear();
+ m_mark.clear();
+ m_result.clear();
+ m_current_path.clear();
+ m_s = n->get_attribute("Cycles_number", 0);
+ m_mark.resize(m_vertex_count, false);
+
+ backtrack(n);
+ return m_result;
+}
+
+bool TarjanCycles::backtrack(HMscNode *n)
+{
+ bool f = false, g = false;
+ //The default value 0 is never to be used - the attribute is set for sure.
+ unsigned v = n->get_attribute("Cycles_number", 0);
+ unsigned j, w;
+
+ m_point_stack.push_back(v);
+ m_current_path.push_back(n); //!!
+ m_mark[v] = true;
+ m_marked_stack.push_back(v);
+ PredecessorNode* predecessor = dynamic_cast<PredecessorNode*>(n);
+ NodeRelationPtrVector::const_iterator relation;
+
+ //for all successors
+ if(predecessor)
+ {
+ for(relation=predecessor->get_successors().begin();
+ relation!=predecessor->get_successors().end();relation++)
+ {
+ const NodeRelationPtr& rel = *relation;
+
+ f = false;
+ w = dynamic_cast<HMscNode*>(rel->get_successor())->get_attribute("Cycles_number", 0);
+
+ if(w < m_s)
+ continue;
+ if(m_restriction != "")
+ if(!(dynamic_cast<HMscNode*>(rel->get_successor())->is_attribute_set(m_restriction)))
+ continue;
+
+ if(w == m_s)
+ {
+ m_current_path.push_back(rel.get());
+ m_current_path.push_back(dynamic_cast<HMscNode*>(rel.get()->get_successor()));
+ m_result.push_back(m_current_path);
+ m_current_path.pop_back();
+ m_current_path.pop_back();
+ f = true;
+ }
+ else if(!m_mark[w])
+ {
+ m_current_path.push_back(rel.get());
+ g = backtrack(dynamic_cast<HMscNode*>(rel->get_successor()));
+ m_current_path.pop_back();
+ f = f || g;
+ }
+ }
+ }
+ if(f == true)
+ {
+ j = m_marked_stack.size() - 1;
+ while(m_marked_stack[j] != v && j >=0)
+ {
+ m_mark[m_marked_stack[j]] = false;
+ m_marked_stack.pop_back();
+ j--;
+ }
+ if(j >= 0)
+ {
+ m_marked_stack.pop_back();
+ m_mark[v] = false;
+ }
+ }
+ if(!m_marked_stack.empty())
+ {
+ if(m_marked_stack.back()==v)
+ {
+ m_mark[v] = false;
+ m_marked_stack.pop_back();
+ }
+ }
+
+ m_point_stack.pop_back();
+ m_current_path.pop_back();
+ return f;
+}
+
+void ElementaryCyclesTraverser::traverse(HMscPtr hmsc)
+{
+ AssignListener assign_li;
+ CleanupListener clean_li;
+ m_traverser.add_white_node_found_listener(&assign_li);
+ m_traverser.traverse(hmsc);
+ m_traverser.remove_all_listeners();
+
+ CycleListener cycle_li(assign_li.get_vertex_count(), m_cycle_listeners, m_restriction_name);
+ m_traverser.add_white_node_found_listener(&cycle_li);
+ m_traverser.traverse(hmsc);
+ m_traverser.remove_all_listeners();
+
+ m_traverser.add_white_node_found_listener(&clean_li);
+ m_traverser.traverse(hmsc);
+ m_traverser.remove_all_listeners();
+}
+
+void CycleListener::on_white_node_found(HMscNode *n)
+{
+ if(m_restriction != "")
+ if(!n->is_attribute_set(m_restriction))
+ return;
+ TarjanCycles cycle_finder(m_vertex_count, m_restriction);
+ MscElementPListList cycle_list;
+ cycle_list = cycle_finder.circuit_enumeration(n);
+ MscElementPListList::const_iterator cycles;
+ ElementaryCycleListenerPList::const_iterator listeners;
+
+ for(cycles = cycle_list.begin(); cycles != cycle_list.end(); cycles++)
+ for(listeners = m_listeners.begin(); listeners != m_listeners.end(); listeners++)
+ (*listeners)->on_elementary_cycle_found(*cycles);
+
+}
+
+// $Id$
Property changes on: trunk/src/data/elementary_cycles_traverser.cpp
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Modified: trunk/src/data/elementary_cycles_traverser.h
===================================================================
--- trunk/src/data/elementary_cycles_traverser.h 2010-05-08 12:09:38 UTC (rev 745)
+++ trunk/src/data/elementary_cycles_traverser.h 2010-05-08 12:14:32 UTC (rev 746)
@@ -1,146 +1,150 @@
-/*
- * scstudio - Sequence Chart Studio
- * http://scstudio.sourceforge.net
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * Copyright (c) 2010 Vaclav Vacek <va...@ic...>
- *
- * $Id: dfs_inner_hmsc_traverser.h 357 2009-09-23 17:22:40Z kocianon $
- */
-
-#ifndef _ELEMENTARY_CYCLES_TRAVERSER_H
-#define _ELEMENTARY_CYCLES_TRAVERSER_H
-
-#include "data/dfs_hmsc_traverser.h"
-
-class AssignListener: public WhiteNodeFoundListener
-{
-public:
- AssignListener(void)
- :m_node_number(0)
- {}
- void on_white_node_found(HMscNode *n)
- {
- n->set_attribute("Cycles_number", m_node_number++);
- }
- unsigned get_vertex_count(void)
- {
- return m_node_number;
- }
-private:
- unsigned m_node_number;
-};
-
-class CleanupListener: public WhiteNodeFoundListener
-{
-public:
- void on_white_node_found(HMscNode *n)
- {
- n->remove_attribute<unsigned>("Cycles_number");
- }
-};
-
-class TarjanCycles
-{
-public:
- MscElementPListList circuit_enumeration(HMscNode *n);
- TarjanCycles(unsigned vertex_count, std::string restriction)
- :m_restriction(restriction), m_vertex_count(vertex_count)
- {}
-private:
- std::string m_restriction;
- unsigned m_s; //the value of the root of the backtracking tree
- MscElementPListList m_result; //n...
[truncated message content] |