|
From: <got...@us...> - 2009-01-13 23:11:34
|
Revision: 168
http://scstudio.svn.sourceforge.net/scstudio/?rev=168&view=rev
Author: gotthardp
Date: 2009-01-13 23:11:26 +0000 (Tue, 13 Jan 2009)
Log Message:
-----------
Fixed a compiler warning (struct vs. class Font).
Implemented visualization of counter examples. Currently only instances and complete messages are supported. No coregions. No HMSC.
Modified Paths:
--------------
trunk/src/data/msc_visual.h
trunk/src/view/visio/addon/addon.h
trunk/src/view/visio/addon/document.cpp
trunk/src/view/visio/addon/document.h
trunk/src/view/visio/addon/extract.cpp
trunk/src/view/visio/addon/extract.h
trunk/src/view/visio/addon/reportview.cpp
trunk/src/view/visio/addon/reportview.h
trunk/src/view/visio/addon/stdafx.h
trunk/src/view/visio/addon/visualize.cpp
trunk/src/view/visio/addon/visualize.h
Modified: trunk/src/data/msc_visual.h
===================================================================
--- trunk/src/data/msc_visual.h 2009-01-12 08:43:40 UTC (rev 167)
+++ trunk/src/data/msc_visual.h 2009-01-13 23:11:26 UTC (rev 168)
@@ -21,8 +21,8 @@
#include <list>
-typedef float Coordinate;
-typedef float Size;
+typedef double Coordinate;
+typedef double Size;
/**
* Denotes form of instance's axis as described by ITU-T
Modified: trunk/src/view/visio/addon/addon.h
===================================================================
--- trunk/src/view/visio/addon/addon.h 2009-01-12 08:43:40 UTC (rev 167)
+++ trunk/src/view/visio/addon/addon.h 2009-01-13 23:11:26 UTC (rev 168)
@@ -18,9 +18,6 @@
#pragma once
-#include <Vaddon.h>
-#include <Visiwrap.h>
-
#include <map>
class CReportView;
Modified: trunk/src/view/visio/addon/document.cpp
===================================================================
--- trunk/src/view/visio/addon/document.cpp 2009-01-12 08:43:40 UTC (rev 167)
+++ trunk/src/view/visio/addon/document.cpp 2009-01-13 23:11:26 UTC (rev 168)
@@ -290,7 +290,7 @@
if(result != NULL)
{
m_reportView->Print(RS_ERROR, stringize()
- << (*cpos)->get_description() << " violated.");
+ << (*cpos)->get_description() << " violated. [details]", result);
violated_count++;
}
else
@@ -317,6 +317,8 @@
satisfied_count++;
}
}
+
+ (*cpos)->cleanup_attributes();
}
if(satisfied_count == 0 && violated_count == 0)
@@ -617,6 +619,16 @@
}
}
+int CDocumentMonitor::DisplayDocument(const MscPtr& msc)
+{
+ Visio::IVDocumentPtr vsoDocument = m_vsoApp->GetDocuments()->Add(VST_FILE_NAME);
+
+ CDrawingVisualizer visualizer(vsoDocument->Pages->Item[1]);
+ visualizer.visualize_msc(msc);
+
+ return 0;
+}
+
Visio::IVShapePtr CDocumentMonitor::FindShape(const _bstr_t& id)
{
for(int i = 1; i <= m_vsoDocument->Pages->Count; i++)
Modified: trunk/src/view/visio/addon/document.h
===================================================================
--- trunk/src/view/visio/addon/document.h 2009-01-12 08:43:40 UTC (rev 167)
+++ trunk/src/view/visio/addon/document.h 2009-01-13 23:11:26 UTC (rev 168)
@@ -21,8 +21,6 @@
#include "data/formatter.h"
#include "data/checker.h"
-#include <Vaddon.h>
-
//! template used to create new documents
static const _bstr_t VST_FILE_NAME = _T("MSC.vtx");
static const _bstr_t BMSC_STENCIL_NAME = _T("Basic MSC.vsx");
@@ -52,6 +50,7 @@
void ImportDocument(const ImportFormatterPtr& formatter, std::istream& stream);
void ExportActiveDocument(const ExportFormatterPtr& formatter, std::ostream& stream);
+ int DisplayDocument(const MscPtr& msc);
Visio::IVShapePtr FindShape(const _bstr_t& id);
int SelectShapes(const std::vector<_bstr_t>& ids);
Modified: trunk/src/view/visio/addon/extract.cpp
===================================================================
--- trunk/src/view/visio/addon/extract.cpp 2009-01-12 08:43:40 UTC (rev 167)
+++ trunk/src/view/visio/addon/extract.cpp 2009-01-13 23:11:26 UTC (rev 168)
@@ -153,7 +153,7 @@
Visio::IVCellPtr posx = shape->CellsSRC[visSectionConnectionPts][cellrow][visX];
Visio::IVCellPtr posy = shape->CellsSRC[visSectionConnectionPts][cellrow][visY];
- return SPoint(posx->Result[visDrawingUnits], posy->Result[visDrawingUnits]);
+ return SPoint(posx->Result[visMillimeters], posy->Result[visMillimeters]);
}
void CDrawingExtractor::assert_no_nested_FromConnects(Visio::IVShapePtr shape)
@@ -364,6 +364,27 @@
return area;
}
+inline double align5(double mm)
+{
+ return floor(mm/5)*5;
+}
+
+InstancePtr new_instance_ptr(Visio::IVShapePtr shape)
+{
+ double page_height = align5(shape->ContainingPage->PageSheet->CellsSRC[visSectionObject][visRowPage][visPageHeight]->Result[visMillimeters]);
+
+ InstancePtr result = new Instance((const char*)shape->Text);
+
+ result->set_line_begin(Point(
+ shape->CellsSRC[visSectionObject][visRowXForm1D][vis1DBeginX]->Result[visMillimeters],
+ page_height - shape->CellsSRC[visSectionObject][visRowXForm1D][vis1DBeginY]->Result[visMillimeters]));
+ result->set_line_end(Point(
+ shape->CellsSRC[visSectionObject][visRowXForm1D][vis1DEndX]->Result[visMillimeters],
+ page_height - shape->CellsSRC[visSectionObject][visRowXForm1D][vis1DEndY]->Result[visMillimeters]));
+
+ return result;
+}
+
BMscPtr CDrawingExtractor::extract_bmsc(Visio::IVPagePtr vsoPage)
{
// keep previous error indicator; this function may be called recursively
@@ -387,7 +408,7 @@
switch(type)
{
case ST_BMSC_INSTANCE:
- instances[shape->ID] = new Instance((const char*)shape->Text);
+ instances[shape->ID] = new_instance_ptr(shape);
break;
case ST_BMSC_MESSAGE:
@@ -569,6 +590,7 @@
continue;
StrictEventPtr event = strict_area->add_event(new StrictEvent());
+ event->set_y(epos->event_time/instance->CellsSRC[visSectionObject][visRowXFormOut][visXFormWidth]->Result[visMillimeters]);
if(epos->event_type == SStrictOrder::ET_OUTGOING)
message->glue_send_event(event);
else if(epos->event_type == SStrictOrder::ET_INCOMING)
Modified: trunk/src/view/visio/addon/extract.h
===================================================================
--- trunk/src/view/visio/addon/extract.h 2009-01-12 08:43:40 UTC (rev 167)
+++ trunk/src/view/visio/addon/extract.h 2009-01-13 23:11:26 UTC (rev 168)
@@ -20,7 +20,6 @@
#include "reportview.h"
#include "fcmp.h"
-#include <Vaddon.h>
#include "data/msc.h"
struct nocase_comparator: public std::binary_function<std::string, std::string, bool>
Modified: trunk/src/view/visio/addon/reportview.cpp
===================================================================
--- trunk/src/view/visio/addon/reportview.cpp 2009-01-12 08:43:40 UTC (rev 167)
+++ trunk/src/view/visio/addon/reportview.cpp 2009-01-13 23:11:26 UTC (rev 168)
@@ -55,7 +55,7 @@
return 0;
}
-int CReportView::Print(TSeverity severity, const std::string& message, const std::vector<_bstr_t>& references)
+int CReportView::__Print(TSeverity severity, const std::string& message)
{
static const char *rtfPrefix =
"{\\rtf1\\ansi"
@@ -98,13 +98,33 @@
StreamIn(SF_RTF | SFF_SELECTION, es);
LineScroll(1);
+ return 0;
+}
+int CReportView::Print(TSeverity severity, const std::string& message, const std::vector<_bstr_t>& shapelist)
+{
+ __Print(severity, message);
+
+ Reference reference;
+ reference.shapes = shapelist;
// append new line to the list of references
- m_references.push_back(references);
+ m_references.push_back(reference);
return 0;
}
+int CReportView::Print(TSeverity severity, const std::string& message, const MscPtr& msc)
+{
+ __Print(severity, message);
+
+ Reference reference;
+ reference.drawing = msc;
+ // append new line to the list of references
+ m_references.push_back(reference);
+
+ return 0;
+}
+
LRESULT CReportView::OnLButtonDblClk(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
POINT pos = { LOWORD(lParam), HIWORD(lParam) };
@@ -114,8 +134,12 @@
TRACE("CReportView::OnLButtonDblClk() called at line " << line);
- if (m_references[line].size() > 0)
- m_documentMonitor->SelectShapes(m_references[line]);
+ if (m_references[line].shapes.size() > 0)
+ m_documentMonitor->SelectShapes(m_references[line].shapes);
+
+ if (m_references[line].drawing != 0)
+ m_documentMonitor->DisplayDocument(m_references[line].drawing);
+
return 1;
}
Modified: trunk/src/view/visio/addon/reportview.h
===================================================================
--- trunk/src/view/visio/addon/reportview.h 2009-01-12 08:43:40 UTC (rev 167)
+++ trunk/src/view/visio/addon/reportview.h 2009-01-13 23:11:26 UTC (rev 168)
@@ -18,7 +18,6 @@
#pragma once
#include "resource.h"
-#include <Visiwrap.h>
// Include libraries from the Windows Template Library (WTL).
// http://wtl.sourceforge.net
@@ -27,6 +26,8 @@
#include <sstream>
#include <vector>
+#include "data/msc.h"
+
class CDocumentMonitor;
//! Helper class to construct a message for CReportView::Print()
@@ -88,7 +89,8 @@
void Reset();
int Print(TSeverity severity, const std::string& message,
- const std::vector<_bstr_t>& references = std::vector<_bstr_t>());
+ const std::vector<_bstr_t>& shapelist = std::vector<_bstr_t>());
+ int Print(TSeverity severity, const std::string& message, const MscPtr& msc);
protected:
BEGIN_MSG_MAP(CReportView)
@@ -108,7 +110,15 @@
int m_statistics[__RS_LAST];
- typedef std::vector<std::vector<_bstr_t> > ReferenceList;
+ int __Print(TSeverity severity, const std::string& message);
+
+ struct Reference
+ {
+ std::vector<_bstr_t> shapes; // shapes to select
+ MscPtr drawing; // drawing to display
+ };
+
+ typedef std::vector<Reference> ReferenceList;
// UniqueID's of shapes referenced by lines in this report
ReferenceList m_references;
};
Modified: trunk/src/view/visio/addon/stdafx.h
===================================================================
--- trunk/src/view/visio/addon/stdafx.h 2009-01-12 08:43:40 UTC (rev 167)
+++ trunk/src/view/visio/addon/stdafx.h 2009-01-13 23:11:26 UTC (rev 168)
@@ -34,6 +34,9 @@
#include "resource.h"
+#include <Vaddon.h>
+#include <Visiwrap.h>
+
#include <atlbase.h>
#include <atlapp.h>
Modified: trunk/src/view/visio/addon/visualize.cpp
===================================================================
--- trunk/src/view/visio/addon/visualize.cpp 2009-01-12 08:43:40 UTC (rev 167)
+++ trunk/src/view/visio/addon/visualize.cpp 2009-01-13 23:11:26 UTC (rev 168)
@@ -43,10 +43,11 @@
BMscPtr bmsc = boost::dynamic_pointer_cast<BMsc>(drawing);
if(bmsc != NULL)
visualize_bmsc(bmsc);
+
+ // the last dropped shape would be selected
+ m_page->Application->ActiveWindow->DeselectAll();
}
-static const INCH2MM = 25.4;
-
void CDrawingVisualizer::visualize_instance(const InstancePtr& instance)
{
}
@@ -59,6 +60,8 @@
ipos != bmsc->get_instances().end(); ipos++)
{
Visio::IVShapePtr inst = m_page->Drop(m_instance_master, 0, m_page_height-0);
+ if((*ipos)->get_marked())
+ inst->CellsSRC[visSectionObject][visRowLine][visLineColor]->Result[visNoCast] = 2;
inst->Text = (*ipos)->get_label().c_str();
inst->CellsSRC[visSectionObject][visRowXForm1D][vis1DBeginX]->Result[visMillimeters] = (*ipos)->get_line_begin().get_x();
@@ -93,6 +96,8 @@
if(msg == NULL)
{
msg = m_page->Drop(m_message_master, 0, m_page_height-0);
+ if(message->get_marked() || event->get_marked())
+ msg->CellsSRC[visSectionObject][visRowLine][visLineColor]->Result[visNoCast] = 2;
msg->Text = message->get_label().c_str();
messages[message] = msg;
}
Modified: trunk/src/view/visio/addon/visualize.h
===================================================================
--- trunk/src/view/visio/addon/visualize.h 2009-01-12 08:43:40 UTC (rev 167)
+++ trunk/src/view/visio/addon/visualize.h 2009-01-13 23:11:26 UTC (rev 168)
@@ -18,7 +18,6 @@
#pragma once
-#include <Vaddon.h>
#include "data/msc.h"
class CDrawingVisualizer
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|