From: <xm...@us...> - 2012-02-26 14:16:52
|
Revision: 1322 http://scstudio.svn.sourceforge.net/scstudio/?rev=1322&view=rev Author: xmalota Date: 2012-02-26 14:16:45 +0000 (Sun, 26 Feb 2012) Log Message: ----------- Fixed problem with after_import_process in instance_sequencer.cpp ( placement of leftmost instance, spacing ) Modified Paths: -------------- trunk/src/data/beautify/instance_sequencer.cpp Modified: trunk/src/data/beautify/instance_sequencer.cpp =================================================================== --- trunk/src/data/beautify/instance_sequencer.cpp 2012-02-20 07:45:19 UTC (rev 1321) +++ trunk/src/data/beautify/instance_sequencer.cpp 2012-02-26 14:16:45 UTC (rev 1322) @@ -492,13 +492,68 @@ int InstanceSequencer::after_import_process(BMscPtr bmsc) { - m_headers.clear(); m_headers_final.clear(); // load parameters from registry load_registry_import(); + float m_x_start = 0; + float m_y_start = 0; + float shift = (float)m_head_width_value; + + if(m_total_width_value < m_head_width_value) + { + if((bmsc->get_instances().size() != 0)) + { + m_head_width_value = (float)(m_total_width_value / (bmsc->get_instances().size())); + beautifyIns->print_report(RS_WARNING, stringize() << "Width of instances head/foot can be different."); + } + } + + //set optimal spaces between instances and left upper corner of the chart + if(m_use_first_inst_placements || m_use_left_upper_corner) + { + m_x_start = (float)(m_head_width_value / 2 + 5.0); + m_y_start = 5.0; + if(m_use_total_width) + { + if(bmsc->get_instances().size() > 1) + shift = (m_total_width_value - m_head_width_value) / (bmsc->get_instances().size() - 1); + } + else + { + shift = m_space_width_value; + } + } + else + { + m_x_start = (float)(m_x_coordinate_place_value + m_grid_origin_x + 10.0); + m_y_start = (float)(m_page_height - m_grid_origin_y - m_y_coordinate_place_value + 5.0); + if(m_use_total_width) + { + if(bmsc->get_instances().size() > 1) + shift = (m_total_width_value - m_head_width_value) / (bmsc->get_instances().size() - 1); + } + else + { + shift = m_space_width_value; + } + } + + // resize the space if overlapping the instances heads + if(shift < m_cor_width_value) + { + m_cor_width_value = float(shift - 1.0); + beautifyIns->print_report(RS_WARNING, stringize() << "Width of coregions can be different."); + } + if(shift < m_head_width_value) + { + m_head_width_value = float(shift - 1.0); + beautifyIns->print_report(RS_WARNING, stringize() << "Width of instances head/foot can be different."); + } + + // set the width of all coregions and instances for(InstancePtrList::const_iterator it=bmsc->get_instances().begin(); it!= bmsc->get_instances().end(); it++) { @@ -531,19 +586,14 @@ } } - // resize the space if overlapping the instances heads - if(m_space_width_value < m_cor_width_value) - m_cor_width_value = m_space_width_value; - if(m_space_width_value < m_cor_width_value) - m_space_width_value = m_cor_width_value; + //TODO:add condition if the left most instance contains coregions - // point of start sequention for(std::vector<int>::const_iterator it_vect = m_headers_final.begin(); it_vect != m_headers_final.end(); it_vect++) { - m_index_order[*it_vect]->set_line_begin(MscPoint(m_x_coordinate_place_value, m_y_coordinate_place_value)); - m_index_order[*it_vect]->set_line_end(MscPoint(m_x_coordinate_place_value, m_y_coordinate_place_value + 1)); - m_x_coordinate_place_value += m_space_width_value; + m_index_order[*it_vect]->set_line_begin(MscPoint(m_x_start, m_y_start)); + m_index_order[*it_vect]->set_line_end(MscPoint(m_x_start, m_y_start)); + m_x_start += shift; } return 0; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |