outdated code removed
authorVictor Kirhenshtein <victor@netxms.org>
Thu, 25 Oct 2012 17:23:33 +0000 (17:23 +0000)
committerVictor Kirhenshtein <victor@netxms.org>
Thu, 25 Oct 2012 17:23:33 +0000 (17:23 +0000)
src/libnxmap/Makefile.am
src/libnxmap/graph.cpp [deleted file]
src/libnxmap/libnxmap.h
src/libnxmap/libnxmap.vcproj
src/libnxmap/map.cpp [deleted file]
src/libnxmap/radial.cpp [deleted file]
src/libnxmap/rt.cpp [deleted file]
src/libnxmap/submap.cpp [deleted file]
src/libnxmap/vertex.cpp [deleted file]

index 3da2da4..e520a91 100644 (file)
@@ -1,7 +1,6 @@
 INCLUDES=-I@top_srcdir@/include
 
-SOURCES = element.cpp graph.cpp link.cpp main.cpp map.cpp objlist.cpp \
-          radial.cpp rt.cpp submap.cpp vertex.cpp
+SOURCES = element.cpp link.cpp main.cpp objlist.cpp
 
 lib_LTLIBRARIES = libnxmap.la
 
diff --git a/src/libnxmap/graph.cpp b/src/libnxmap/graph.cpp
deleted file mode 100644 (file)
index fde9ca9..0000000
+++ /dev/null
@@ -1,218 +0,0 @@
-/* 
-** NetXMS - Network Management System
-** Network Maps Library
-** Copyright (C) 2003-2010 Victor Kirhenshtein
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 3 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 Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-**
-** File: graph.cpp
-**
-**/
-
-#include "libnxmap.h"
-
-
-//
-// Default constructor
-//
-
-nxmap_Graph::nxmap_Graph()
-{
-   m_dwVertexCount = 0;
-   m_ppVertexList = NULL;
-   m_dwVertexCount = 0;
-   m_ppVertexList = NULL;
-   m_pRoot = NULL;
-}
-
-
-//
-// Create graph from list of objects and links
-//
-
-nxmap_Graph::nxmap_Graph(DWORD dwNumObjects, DWORD *pdwObjectList,
-                 DWORD dwNumLinks, OBJLINK *pLinkList)
-{
-   DWORD i;
-   nxmap_Vertex *pVtx1, *pVtx2;
-
-   m_dwVertexCount = dwNumObjects;
-   m_ppVertexList = (nxmap_Vertex **)malloc(sizeof(nxmap_Vertex *) * dwNumObjects);
-   for(i = 0; i < dwNumObjects; i++)
-   {
-      m_ppVertexList[i] = new nxmap_Vertex(pdwObjectList[i]);
-   }
-
-   // Create links between vertexes
-   for(i = 0; i < dwNumLinks; i++)
-   {
-      pVtx1 = FindVertex(pLinkList[i].dwId1);
-      pVtx2 = FindVertex(pLinkList[i].dwId2);
-      if ((pVtx1 != NULL) && (pVtx2 != NULL))
-         pVtx1->LinkChild(pVtx2);
-   }
-
-   m_pRoot = NULL;   // No selected root by default
-}
-
-
-//
-// Destructor
-//
-
-nxmap_Graph::~nxmap_Graph()
-{
-   DWORD i;
-
-   for(i = 0; i < m_dwVertexCount; i++)
-      delete m_ppVertexList[i];
-   safe_free(m_ppVertexList);
-}
-
-
-//
-// Set all vertexes as unprocessed
-//
-
-void nxmap_Graph::SetAsUnprocessed(void)
-{
-   DWORD i;
-
-   for(i = 0; i < m_dwVertexCount; i++)
-      m_ppVertexList[i]->SetAsUnprocessed();
-}
-
-
-//
-// Find vertex by ID
-//
-
-nxmap_Vertex *nxmap_Graph::FindVertex(DWORD dwId)
-{
-   DWORD i;
-
-   for(i = 0; i < m_dwVertexCount; i++)
-      if (m_ppVertexList[i]->GetId() == dwId)
-         return m_ppVertexList[i];
-   return NULL;
-}
-
-
-//
-// Get internal index of given vertex
-//
-
-DWORD nxmap_Graph::GetVertexIndex(nxmap_Vertex *pVertex)
-{
-   DWORD i;
-
-   for(i = 0; i < m_dwVertexCount; i++)
-      if (m_ppVertexList[i]->GetId() == pVertex->GetId())
-         return i;
-   return INVALID_INDEX;
-}
-
-
-//
-// Normalize vertex positions
-//
-
-void nxmap_Graph::NormalizeVertexPositions(void)
-{
-   DWORD i;
-   int x, y, dx, dy;
-
-   // Calculate required offset
-   for(i = 0, dx = 0, dy = 0; i < m_dwVertexCount; i++)
-   {
-      x = m_ppVertexList[i]->GetPosX();
-      if (x < MAP_LEFT_MARGIN)
-         if (dx < MAP_LEFT_MARGIN - x)
-            dx = MAP_LEFT_MARGIN - x;
-      y = m_ppVertexList[i]->GetPosY();
-      if (y < MAP_TOP_MARGIN)
-         if (dy < MAP_TOP_MARGIN - y)
-            dy = MAP_TOP_MARGIN - y;
-   }
-
-   // Change coordinates
-   if ((dx != 0) || (dy != 0))
-   {
-      for(i = 0; i < m_dwVertexCount; i++)
-         m_ppVertexList[i]->SetPosition(m_ppVertexList[i]->GetPosX() + dx,
-                                        m_ppVertexList[i]->GetPosY() + dy);
-   }
-}
-
-
-//
-// Set root vertex
-//
-
-void nxmap_Graph::SetRootVertex(DWORD dwId)
-{
-   DWORD i;
-
-   for(i = 0; i < m_dwVertexCount; i++)
-      if (m_ppVertexList[i]->GetId() == dwId)
-      {
-         m_pRoot = m_ppVertexList[i];
-         return;
-      }
-   m_pRoot = NULL;
-}
-
-
-//
-// Normalize links for given vertex
-//
-
-void nxmap_Graph::NormalizeVertexLinks(nxmap_Vertex *pRoot)
-{
-   DWORD i;
-
-   for(i = 0; i < m_dwVertexCount; i++)
-   {
-      if (!m_ppVertexList[i]->IsProcessed() && m_ppVertexList[i]->IsParentOf(pRoot))
-      {
-         m_ppVertexList[i]->UnlinkChild(pRoot);
-         pRoot->LinkChild(m_ppVertexList[i]);
-      }
-   }
-
-   for(i = 0; i < pRoot->GetNumChilds(); i++)
-       {
-               if (!pRoot->GetChild(i)->IsProcessed())
-               {
-                       pRoot->GetChild(i)->SetAsProcessed();
-                       NormalizeVertexLinks(pRoot->GetChild(i));
-               }
-       }
-}
-
-
-//
-// Normalize links - make all links to go from root when possible
-//
-
-void nxmap_Graph::NormalizeLinks(void)
-{
-   if (m_pRoot != NULL)
-   {
-      SetAsUnprocessed();
-      m_pRoot->SetAsProcessed();
-      NormalizeVertexLinks(m_pRoot);
-   }
-}
index c2f5275..09cd91c 100644 (file)
 #include <nxcpapi.h>
 #include <netxms_maps.h>
 
-
-//
-// Generic layout engine
-//
-
-class nxleGeneric
-{
-protected:
-   nxmap_Graph *m_graph;
-
-public:
-   nxleGeneric(nxmap_Graph *pGraph) { m_graph = pGraph; }
-   virtual ~nxleGeneric() { }
-
-   virtual void Execute(void) { }
-};
-
-
-//
-// Radial layout engine
-//
-
-class nxleRadial : public nxleGeneric
-{
-protected:
-   double *m_width;
-   double *m_fullWidth;
-   double *m_angle;
-   double *m_distance;
-   double m_delta;
-   double m_increase;
-   BOOL m_bConvexity;
-
-   double SetWidth(nxmap_Vertex *root);
-   void SetPlacement(nxmap_Vertex *root, double ro,
-                     double alpha1, double alpha2,     int layer);
-
-public:
-   nxleRadial(nxmap_Graph *pGraph);
-   virtual ~nxleRadial();
-
-   virtual void Execute(void);
-};
-
-
-//
-// Reingold Tilford layout engine
-//
-
-class nxleReingoldTilford : public nxleGeneric
-{
-protected:
-   double *m_xPreliminary;
-   double *m_xModifier;
-   double *m_xParentModifier;
-   int *m_passCount;
-   nxmap_Vertex **m_leftBrother;
-   DWORD *m_layer;
-   nxmap_Vertex **m_contour;
-   double m_spacing;
-
-   void Initialize(nxmap_Vertex *root, DWORD layer);
-   double TrueX(nxmap_Vertex *root);
-   void FirstPass(nxmap_Vertex *root);
-   void SecondPass(nxmap_Vertex *root, double modifier);
-
-public:
-   nxleReingoldTilford(nxmap_Graph *pGraph);
-   virtual ~nxleReingoldTilford();
-
-   virtual void Execute(void);
-};
-
 #endif   /* _libnxmap_h_ */
index 1bd2a65..3443ede 100644 (file)
                                RelativePath=".\element.cpp"\r
                                >\r
                        </File>\r
-                       <File\r
-                               RelativePath=".\graph.cpp"\r
-                               >\r
-                       </File>\r
                        <File\r
                                RelativePath=".\link.cpp"\r
                                >\r
                                RelativePath=".\main.cpp"\r
                                >\r
                        </File>\r
-                       <File\r
-                               RelativePath=".\map.cpp"\r
-                               >\r
-                       </File>\r
                        <File\r
                                RelativePath=".\objlist.cpp"\r
                                >\r
                        </File>\r
-                       <File\r
-                               RelativePath=".\radial.cpp"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\rt.cpp"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\submap.cpp"\r
-                               >\r
-                       </File>\r
-                       <File\r
-                               RelativePath=".\vertex.cpp"\r
-                               >\r
-                       </File>\r
                </Filter>\r
                <Filter\r
                        Name="Header Files"\r
diff --git a/src/libnxmap/map.cpp b/src/libnxmap/map.cpp
deleted file mode 100644 (file)
index eb58281..0000000
+++ /dev/null
@@ -1,286 +0,0 @@
-/* 
-** NetXMS - Network Management System
-** Network Maps Library
-** Copyright (C) 2003-2010 Victor Kirhenshtein
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 3 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 Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-**
-** File: map.cpp
-**
-**/
-
-#include "libnxmap.h"
-
-
-//
-// Default submap creation function
-//
-
-static nxSubmap *CreateSubmap(DWORD dwObjectId, nxMap *pMap)
-{
-   return new nxSubmap(dwObjectId);
-}
-
-
-//
-// Default map object constructor
-//
-
-nxMap::nxMap()
-{
-   CommonInit();
-}
-
-
-//
-// Constructor for new map object
-//
-
-nxMap::nxMap(DWORD dwMapId, DWORD dwObjectId, const TCHAR *pszName, const TCHAR *pszDescription)
-{
-   CommonInit();
-   m_dwMapId = dwMapId;
-   m_dwObjectId = dwObjectId;
-   m_pszName = _tcsdup(pszName);
-   m_pszDescription = _tcsdup(pszDescription);
-}
-
-
-//
-// Create map object from NXCP message
-//
-
-nxMap::nxMap(CSCPMessage *pMsg)
-{
-   CommonInit();
-   ModifyFromMessage(pMsg);
-}
-
-
-//
-// Common initialization code
-//
-
-void nxMap::CommonInit(void)
-{
-   m_dwMapId = 0;
-   m_pszName = NULL;
-   m_pszDescription = NULL;
-   m_dwObjectId = 0;
-   m_dwNumSubmaps = 0;
-   m_ppSubmaps = NULL;
-   m_dwACLSize = 0;
-   m_pACL = NULL;
-   m_mutex = MutexCreate();
-   m_pfCreateSubmap = CreateSubmap;
-}
-
-
-//
-// Destructor
-//
-
-nxMap::~nxMap()
-{
-   DWORD i;
-
-   safe_free(m_pszName);
-   safe_free(m_pszDescription);
-   for(i = 0; i < m_dwNumSubmaps; i++)
-      delete m_ppSubmaps[i];
-   safe_free(m_ppSubmaps);
-   safe_free(m_pACL);
-   MutexDestroy(m_mutex);
-}
-
-
-//
-// Get submap by object ID or create if one doesn't exist
-//
-
-nxSubmap *nxMap::GetSubmap(DWORD dwObjectId)
-{
-   DWORD i;
-   nxSubmap *pSubmap;
-
-   Lock();
-
-   for(i = 0; i < m_dwNumSubmaps; i++)
-   {
-      if (m_ppSubmaps[i]->Id() == dwObjectId)
-      {
-         pSubmap = m_ppSubmaps[i];
-         break;
-      }
-   }
-
-   if (i == m_dwNumSubmaps)
-   {
-      // Create new submap
-      pSubmap = m_pfCreateSubmap(dwObjectId, this);
-      m_dwNumSubmaps++;
-      m_ppSubmaps = (nxSubmap **)realloc(m_ppSubmaps, sizeof(nxSubmap *) * m_dwNumSubmaps);
-      m_ppSubmaps[i] = pSubmap;
-   }
-
-   Unlock();
-   return pSubmap;
-}
-
-
-//
-// Add new or replace existing submap
-//
-
-void nxMap::AddSubmap(nxSubmap *pSubmap)
-{
-   DWORD i;
-
-   Lock();
-
-   // Check if submap with given ID exist
-   for(i = 0; i < m_dwNumSubmaps; i++)
-   {
-      if (m_ppSubmaps[i]->Id() == pSubmap->Id())
-      {
-         break;
-      }
-   }
-
-   if (i == m_dwNumSubmaps)
-   {
-      // Add new submap
-      m_dwNumSubmaps++;
-      m_ppSubmaps = (nxSubmap **)realloc(m_ppSubmaps, sizeof(nxSubmap *) * m_dwNumSubmaps);
-      m_ppSubmaps[i] = pSubmap;
-   }
-   else
-   {
-      // Replace existing submap
-      delete m_ppSubmaps[i];
-      m_ppSubmaps[i] = pSubmap;
-   }
-
-   Unlock();
-}
-
-
-//
-// Check if submap for given object exists
-//
-
-BOOL nxMap::IsSubmapExist(DWORD dwObjectId, BOOL bLock)
-{
-   BOOL bRet = FALSE;
-   DWORD i;
-
-   if (bLock)
-      Lock();
-
-   for(i = 0; i < m_dwNumSubmaps; i++)
-   {
-      if (m_ppSubmaps[i]->Id() == dwObjectId)
-      {
-         bRet = TRUE;
-         break;
-      }
-   }
-
-   if (bLock)
-      Unlock();
-   return bRet;
-}
-
-
-//
-// Fill NXCP message with map data
-//
-
-void nxMap::CreateMessage(CSCPMessage *pMsg)
-{
-   DWORD i, j, *pdwACL, *pdwSubmapList;
-
-   pdwACL = (DWORD *)malloc(sizeof(DWORD) * m_dwACLSize * 2);
-   for(i = 0, j = 0; i < m_dwACLSize; i++)
-   {
-      pdwACL[j++] = m_pACL[i].dwUserId;
-      pdwACL[j++] = m_pACL[i].dwAccess;
-   }
-
-   pdwSubmapList = (DWORD *)malloc(sizeof(DWORD) * m_dwNumSubmaps);
-   for(i = 0; i < m_dwNumSubmaps; i++)
-      pdwSubmapList[i] = m_ppSubmaps[i]->Id();
-   
-   pMsg->SetVariable(VID_MAP_ID, m_dwMapId);
-   pMsg->SetVariable(VID_NAME, m_pszName);
-   pMsg->SetVariable(VID_DESCRIPTION, m_pszDescription);
-   pMsg->SetVariable(VID_OBJECT_ID, m_dwObjectId);
-   pMsg->SetVariable(VID_NUM_SUBMAPS, m_dwNumSubmaps);
-   pMsg->SetVariableToInt32Array(VID_SUBMAP_LIST, m_dwNumSubmaps, pdwSubmapList);
-   pMsg->SetVariable(VID_ACL_SIZE, m_dwACLSize);
-   pMsg->SetVariableToInt32Array(VID_ACL, m_dwACLSize * 2, pdwACL);
-
-   safe_free(pdwACL);
-   safe_free(pdwSubmapList);
-}
-
-
-//
-// Modify map object from NXCP message
-//
-
-void nxMap::ModifyFromMessage(CSCPMessage *pMsg)
-{
-   DWORD i, j, dwNumSubmaps, *pdwTemp;
-
-   // Update simple attributes
-   m_dwMapId = pMsg->GetVariableLong(VID_MAP_ID);
-   m_dwObjectId = pMsg->GetVariableLong(VID_OBJECT_ID);
-   safe_free(m_pszName);
-   m_pszName = pMsg->GetVariableStr(VID_NAME);
-   safe_free(m_pszDescription);
-   m_pszDescription = pMsg->GetVariableStr(VID_DESCRIPTION);
-
-   // Delete submaps which are no longer exist
-   dwNumSubmaps = pMsg->GetVariableLong(VID_NUM_SUBMAPS);
-   pdwTemp = (DWORD *)malloc(sizeof(DWORD) * dwNumSubmaps);
-   pMsg->GetVariableInt32Array(VID_SUBMAP_LIST, dwNumSubmaps, pdwTemp);
-   for(i = 0; i < m_dwNumSubmaps; i++)
-   {
-      for(j = 0; j < dwNumSubmaps; j++)
-         if (pdwTemp[j] == m_ppSubmaps[i]->Id())
-            break;
-      if (j == dwNumSubmaps)
-      {
-         delete m_ppSubmaps[i];
-         m_dwNumSubmaps--;
-         memmove(&m_ppSubmaps[i], &m_ppSubmaps[i + 1], sizeof(nxSubmap *) * (m_dwNumSubmaps - i));
-         i--;
-      }
-   }
-   safe_free(pdwTemp);
-
-   // Update ACL
-   m_dwACLSize = pMsg->GetVariableLong(VID_ACL_SIZE);
-   pdwTemp = (DWORD *)malloc(sizeof(DWORD) * m_dwACLSize * 2);
-   pMsg->GetVariableInt32Array(VID_ACL, m_dwACLSize * 2, pdwTemp);
-   safe_free(m_pACL);
-   m_pACL = (MAP_ACL_ENTRY *)malloc(sizeof(MAP_ACL_ENTRY) * m_dwACLSize);
-   for(i = 0, j = 0; i < m_dwACLSize; i++)
-   {
-      m_pACL[i].dwUserId = pdwTemp[j++];
-      m_pACL[i].dwAccess = pdwTemp[j++];
-   }
-}
diff --git a/src/libnxmap/radial.cpp b/src/libnxmap/radial.cpp
deleted file mode 100644 (file)
index 7069fee..0000000
+++ /dev/null
@@ -1,190 +0,0 @@
-/* 
-** NetXMS - Network Management System
-** Network Maps Library
-** Copyright (C) 2006 Victor Kirhenshtein
-**
-** This code is derived from Graph visualization library for VTK
-**     (c) 2003 D.J. Duke. Original license follows.
-**
-** Graph visualization library for VTK
-** (c) 2003 D.J. Duke
-**
-** You are warned that this is an alpha release of the library.  The
-** software has not been extensively tested or used, beyond the 
-** personal research work of the developer.
-** 
-** This copyright notice is based on the copyright distributed with the
-** VTK toolkit (see www.vtk.org), which this library extends.  The terms
-** for using the material in this directory are similar to those of the
-** full tool: 
-** 
-** Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are met:
-** 
-**  * Redistributions of source code must retain the above copyright notice,
-**    this list of conditions and the following disclaimer.
-** 
-**  * Redistributions in binary form must reproduce the above copyright notice,
-**    this list of conditions and the following disclaimer in the documentation
-**    and/or other materials provided with the distribution.
-** 
-**  * With respect to this library, neither the name of the developer 
-**    (David Duke) or the name(s) of any contributor(s) to this library
-**    may be used to endorse or promote products derived from this 
-**    software without specific prior written permission.
-** 
-**  * Modified source versions must be plainly marked as such, and must not be
-**    misrepresented as being the original software.
-** 
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
-** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-** ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
-** ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-**
-** --- end of original license ---
-**
-** File: radial.cpp
-**
-**/
-
-#include "libnxmap.h"
-#include <math.h>
-
-#define PI     3.14159
-
-
-//
-// Constructor
-//
-
-nxleRadial::nxleRadial(nxmap_Graph *pGraph)
-           :nxleGeneric(pGraph)
-{
-   m_bConvexity = FALSE;
-   m_delta = MAP_OBJECT_SIZE_X + MAP_OBJECT_INTERVAL_X;
-   m_increase = 50.0 * m_delta / 100.0;
-   m_width = (double *)malloc(pGraph->GetVertexCount() * sizeof(double));
-   m_fullWidth = (double *)malloc(pGraph->GetVertexCount() * sizeof(double));
-   m_angle = (double *)malloc(pGraph->GetVertexCount() * sizeof(double));
-   m_distance = (double *)malloc(pGraph->GetVertexCount() * sizeof(double));
-}
-
-
-//
-// Destructor
-//
-
-nxleRadial::~nxleRadial()
-{
-   safe_free(m_width);
-   safe_free(m_fullWidth);
-   safe_free(m_angle);
-   safe_free(m_distance);
-}
-
-
-//
-// Position the tree rooted at "root".
-// The allocated posiition is not final; each sub-tree is positioned
-// on the assumption that its parent is located at the origin, and all
-// nodes are positioned in the plane z=0.  This will be corrected in a
-// second pass over the tree.
-//
-// The return value is the radius of the circle containing the layout
-// of this (sub)-tree.
-//
-
-double nxleRadial::SetWidth(nxmap_Vertex *root)
-{
-       double width;
-   DWORD i;
-
-   if (root->GetNumChilds() == 0)
-   {
-      width = MAP_OBJECT_SIZE_X;
-   }
-   else
-   {
-      width = 0.0;
-      for(i = 0; i < root->GetNumChilds(); i++)
-      {
-         width += SetWidth(root->GetChild(i)) + MAP_OBJECT_INTERVAL_X;
-      }
-   }
-       m_width[m_graph->GetVertexIndex(root)] = width;
-       m_fullWidth[m_graph->GetVertexIndex(root)] = width;
-       return width;
-}
-
-
-//
-// Calculate the final layout for a node, given its level in 
-// the tree, and the (final) position of its parent.
-//
-
-void nxleRadial::SetPlacement(nxmap_Vertex *root, double ro,
-                              double alpha1, double alpha2,    int layer)
-{
-   double s, tau, alpha, rootFullWidth, childWidth;
-   double myDelta = m_delta + m_increase;
-   double fi = (alpha1 + alpha2)/2.0;
-   DWORD i, index;
-   nxmap_Vertex *child;
-
-       root->SetPosition((int)(ro * sin(fi)), (int)(ro * cos(fi)));
-
-   index = m_graph->GetVertexIndex(root);
-       m_angle[index] = fi;
-       m_distance[index] = ro;
-       
-   if (root->GetNumChilds() > 0)
-   {
-      tau = m_bConvexity ? 2.0 * acos(ro / (ro + myDelta)) : 0.0;
-               rootFullWidth = m_fullWidth[index];
-               if (m_bConvexity && (ro != 0.0) && (tau < (alpha2 - alpha1)))
-      {
-         s = tau / rootFullWidth;
-         alpha = (alpha1 + alpha2 - tau) / 2.0;
-      }
-               else 
-      {
-         s = (alpha2 - alpha1) / rootFullWidth;
-         alpha = alpha1;
-      }
-
-      for(i = 0; i < root->GetNumChilds(); i++)
-      {
-         child = root->GetChild(i);
-                       childWidth = m_width[m_graph->GetVertexIndex(child)];
-                       SetPlacement(child, ro + myDelta, alpha,
-                      alpha + s * childWidth, layer + 1);
-                       alpha += s * childWidth;
-      }
-   }
-}
-
-
-//
-// Execute
-//
-
-void nxleRadial::Execute(void)
-{
-   if (m_graph->GetVertexCount() == 0)
-      return;
-
-   // Layout is performed in two passes.  First, find a provisional location
-   // for each node, via a bottom-up traversal.  Then calculate a final 
-   // position for each node, by performing a top-down traversal, placing
-   // the root at the origin, and then positioning each child using the
-   // provisional location of the child and final location of the parent.
-
-   SetWidth(m_graph->GetRootVertex());
-   SetPlacement(m_graph->GetRootVertex(), 0.0, 0.0, 2.0 * PI, 0);
-}
diff --git a/src/libnxmap/rt.cpp b/src/libnxmap/rt.cpp
deleted file mode 100644 (file)
index 315bfb6..0000000
+++ /dev/null
@@ -1,249 +0,0 @@
-/* 
-** NetXMS - Network Management System
-** Network Maps Library
-** Copyright (C) 2006 Victor Kirhenshtein
-**
-** This code is derived from Graph visualization library for VTK
-**     (c) 2003 D.J. Duke. Original license follows.
-**
-** Graph visualization library for VTK
-** (c) 2003 D.J. Duke
-**
-** You are warned that this is an alpha release of the library.  The
-** software has not been extensively tested or used, beyond the 
-** personal research work of the developer.
-** 
-** This copyright notice is based on the copyright distributed with the
-** VTK toolkit (see www.vtk.org), which this library extends.  The terms
-** for using the material in this directory are similar to those of the
-** full tool: 
-** 
-** Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are met:
-** 
-**  * Redistributions of source code must retain the above copyright notice,
-**    this list of conditions and the following disclaimer.
-** 
-**  * Redistributions in binary form must reproduce the above copyright notice,
-**    this list of conditions and the following disclaimer in the documentation
-**    and/or other materials provided with the distribution.
-** 
-**  * With respect to this library, neither the name of the developer 
-**    (David Duke) or the name(s) of any contributor(s) to this library
-**    may be used to endorse or promote products derived from this 
-**    software without specific prior written permission.
-** 
-**  * Modified source versions must be plainly marked as such, and must not be
-**    misrepresented as being the original software.
-** 
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
-** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-** ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
-** ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-**
-** --- end of original license ---
-**
-** File: rt.cpp
-**
-**/
-
-#include "libnxmap.h"
-
-
-//
-// Constructor
-//
-
-nxleReingoldTilford::nxleReingoldTilford(nxmap_Graph *pGraph)
-                    :nxleGeneric(pGraph)
-{
-   m_xPreliminary = (double *)malloc(pGraph->GetVertexCount() * sizeof(double));
-   m_xModifier = (double *)malloc(pGraph->GetVertexCount() * sizeof(double));
-   m_xParentModifier = (double *)malloc(pGraph->GetVertexCount() * sizeof(double));
-   m_passCount = (int *)malloc(pGraph->GetVertexCount() * sizeof(int));
-   m_leftBrother = (nxmap_Vertex **)malloc(pGraph->GetVertexCount() * sizeof(nxmap_Vertex *));
-   m_layer = (DWORD *)malloc(pGraph->GetVertexCount() * sizeof(DWORD));
-   m_contour = (nxmap_Vertex **)malloc(pGraph->GetVertexCount() * sizeof(nxmap_Vertex *));
-   m_spacing = MAP_OBJECT_SIZE_Y + MAP_TEXT_BOX_HEIGHT + MAP_OBJECT_INTERVAL_Y;
-}
-
-
-//
-// Destructor
-//
-
-nxleReingoldTilford::~nxleReingoldTilford()
-{
-   safe_free(m_xPreliminary);
-   safe_free(m_xModifier);
-   safe_free(m_xParentModifier);
-   safe_free(m_passCount);
-   safe_free(m_leftBrother);
-   safe_free(m_layer);
-   safe_free(m_contour);
-}
-
-
-//
-// Initialise a node for RT-layout.  This involves finding,
-// for each node, the left-hand brother of the node, i.e. the
-// node at the same depth in the tree that would be to the 
-// immediate left of this node.  This is achieved by doing a
-// traversal of the tree.
-// 
-// The parameter "layer" represents the nodes at the level
-// of the tree currently being considered.
-//
-
-void nxleReingoldTilford::Initialize(nxmap_Vertex *root, DWORD layer)
-{
-   DWORD i, index;
-
-   index = m_graph->GetVertexIndex(root);
-
-   if ((m_layer[index] < layer) || (m_layer[index] == 0))
-   {
-       m_leftBrother[index] = m_contour[layer];
-       m_contour[layer] = root;
-          m_layer[index] = layer;
-
-      for(i = 0; i < root->GetNumChilds(); i++)
-      {
-         Initialize(root->GetChild(i), layer + 1);
-      }
-   }
-}
-
-
-//
-// Return actual x coordinate of a node, taking into account
-// the position modifiers of its ancestors up to the root. 
-//
-
-double nxleReingoldTilford::TrueX(nxmap_Vertex *root)
-{
-   double x;
-   DWORD index;
-   nxmap_Vertex *node;
-       
-   index = m_graph->GetVertexIndex(root);
-       node = root;
-   x = m_xPreliminary[index];
-  
-       while(node->GetNumParents() > 0)
-   {
-      x += m_xModifier[index];
-      node = node->GetParent(node->GetNumParents() / 2);
-      index = m_graph->GetVertexIndex(node);
-   }
-   return x;
-}
-
-
-//
-// First pass
-//
-
-void nxleReingoldTilford::FirstPass(nxmap_Vertex *root) 
-{
-   double modifier, xRoot, xBrother;
-   DWORD i, index, leftIndex, rightIndex;
-   nxmap_Vertex *brother;
-
-   index = m_graph->GetVertexIndex(root);
-
-   // Case 1. Node is a leaf
-   if (root->GetNumChilds() == 0) 
-   {
-      brother = m_leftBrother[index];
-      if (brother == NULL)
-      {           
-         xRoot = 0.0;  // no left brother
-      }
-      else 
-      {
-         // Find coordinate relative to brother.  Include the
-         // size of the node and an internode interval
-         xRoot = TrueX(brother) + MAP_OBJECT_SIZE_X + MAP_OBJECT_INTERVAL_X;
-      }
-               modifier = 0.0;
-   }
-   else 
-   {
-      // Apply FirstPass to each child
-      for(i = 0; i < root->GetNumChilds(); i++)
-      {
-         FirstPass(root->GetChild(i));
-      }
-
-               // Position the node.
-      leftIndex = m_graph->GetVertexIndex(root->GetChild(0));
-      rightIndex = m_graph->GetVertexIndex(root->GetChild(root->GetNumChilds() - 1));
-      xRoot = (m_xPreliminary[leftIndex] + m_xModifier[leftIndex] + m_xPreliminary[rightIndex] + m_xModifier[rightIndex]) / 2.0;
-               modifier = 0.0;
-               brother = m_leftBrother[index];
-
-      if (brother != NULL) 
-      {
-         xBrother = TrueX(brother);
-         modifier = MAP_OBJECT_SIZE_X + MAP_OBJECT_INTERVAL_X - (xRoot - xBrother);
-                       if (modifier < 0) 
-                               modifier = 0;
-      }
-   }
-
-   m_xPreliminary[index] = xRoot;
-   m_xModifier[index] = modifier;
-}
-
-
-//
-// Second pass
-//
-
-void nxleReingoldTilford::SecondPass(nxmap_Vertex *root, double modifier)
-{
-   double childModif;
-   DWORD i, index;
-
-   index = m_graph->GetVertexIndex(root);
-   m_passCount[index]++;
-   m_xParentModifier[index] += modifier;
-   root->SetPosition((int)(m_xPreliminary[index] + m_xModifier[index] + m_xParentModifier[index] / m_passCount[index]),
-                     (int)(m_layer[index] * m_spacing));
-
-   childModif = modifier + m_xModifier[index];
-   for(i = 0; i < root->GetNumChilds(); i++)
-   {
-      SecondPass(root->GetChild(i), childModif);
-   }
-}
-
-
-//
-// Execute
-//
-
-void nxleReingoldTilford::Execute(void)
-{
-   if (m_graph->GetVertexCount() == 0)
-      return;
-
-   memset(m_xPreliminary, 0, sizeof(double) * m_graph->GetVertexCount());
-   memset(m_xModifier, 0, sizeof(double) * m_graph->GetVertexCount());
-   memset(m_xParentModifier, 0, sizeof(double) * m_graph->GetVertexCount());
-   memset(m_passCount, 0, sizeof(int) * m_graph->GetVertexCount());
-   memset(m_contour, 0, sizeof(nxmap_Vertex *) * m_graph->GetVertexCount());
-   memset(m_leftBrother, 0, sizeof(nxmap_Vertex *) * m_graph->GetVertexCount());
-   memset(m_layer, 0, sizeof(DWORD) * m_graph->GetVertexCount());
-
-   Initialize(m_graph->GetRootVertex(), 0);
-   FirstPass(m_graph->GetRootVertex());
-   SecondPass(m_graph->GetRootVertex(), 0);
-}
diff --git a/src/libnxmap/submap.cpp b/src/libnxmap/submap.cpp
deleted file mode 100644 (file)
index 6804d04..0000000
+++ /dev/null
@@ -1,503 +0,0 @@
-/* 
-** NetXMS - Network Management System
-** Network Maps Library
-** Copyright (C) 2003-2010 Victor Kirhenshtein
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 3 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 Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-**
-** File: submap.cpp
-**
-**/
-
-#include "libnxmap.h"
-
-
-//
-// Default submap object constructor
-//
-
-nxSubmap::nxSubmap()
-{
-   CommonInit();
-}
-
-
-//
-// Create default submap for given object
-//
-
-nxSubmap::nxSubmap(DWORD dwObjectId)
-{
-   CommonInit();
-   m_dwId = dwObjectId;
-}
-
-
-//
-// Create submap object from NXCP message
-//
-
-nxSubmap::nxSubmap(CSCPMessage *pMsg)
-{
-   CommonInit();
-   ModifyFromMessage(pMsg);
-}
-
-
-//
-// Common initialization code
-//
-
-void nxSubmap::CommonInit(void)
-{
-   m_dwId = 0;
-   m_dwAttr = SUBMAP_ATTR_AUTOMATIC_LAYOUT;
-   m_dwNumObjects = 0;
-   m_pObjectList = NULL;
-   m_dwNumLinks = 0;
-   m_pLinkList = NULL;
-}
-
-
-//
-// Destructor
-//
-
-nxSubmap::~nxSubmap()
-{
-   safe_free(m_pObjectList);
-   safe_free(m_pLinkList);
-}
-
-
-//
-// Fill NXCP message with submap data
-//
-
-void nxSubmap::CreateMessage(CSCPMessage *pMsg)
-{
-   DWORD i, j, dwId, *pdwList;
-
-   pMsg->SetVariable(VID_OBJECT_ID, m_dwId);
-   pMsg->SetVariable(VID_SUBMAP_ATTR, m_dwAttr);
-   pMsg->SetVariable(VID_NUM_OBJECTS, m_dwNumObjects);
-   if (m_dwNumObjects > 0)
-   {
-      pdwList = (DWORD *)malloc(sizeof(DWORD) * m_dwNumObjects * 3);
-      for(i = 0, j = 0; i < m_dwNumObjects; i++)
-      {
-         pdwList[j++] = m_pObjectList[i].dwId;
-         pdwList[j++] = m_pObjectList[i].x;
-         pdwList[j++] = m_pObjectList[i].y;
-      }
-      pMsg->SetVariableToInt32Array(VID_OBJECT_LIST, m_dwNumObjects * 3, pdwList);
-      free(pdwList);
-   }
-   
-   pMsg->SetVariable(VID_NUM_LINKS, m_dwNumLinks);
-   if (m_dwNumLinks > 0)
-   {
-      pdwList = (DWORD *)malloc(sizeof(DWORD) * m_dwNumLinks * 3);
-      for(i = 0, j = 0, dwId = VID_SUBMAP_LINK_NAMES_BASE; i < m_dwNumLinks; i++)
-      {
-         pdwList[j++] = m_pLinkList[i].dwId1;
-         pdwList[j++] = m_pLinkList[i].dwId2;
-         pdwList[j++] = m_pLinkList[i].nType;
-                       pMsg->SetVariable(dwId++, m_pLinkList[i].szPort1);
-                       pMsg->SetVariable(dwId++, m_pLinkList[i].szPort2);
-      }
-      pMsg->SetVariableToInt32Array(VID_LINK_LIST, m_dwNumLinks * 3, pdwList);
-      free(pdwList);
-   }
-}
-
-
-//
-// Modify submap object from NXCP message
-//
-
-void nxSubmap::ModifyFromMessage(CSCPMessage *pMsg)
-{
-   DWORD i, j, dwId, *pdwList;
-
-   safe_free_and_null(m_pObjectList);
-   safe_free_and_null(m_pLinkList);
-
-   m_dwId = pMsg->GetVariableLong(VID_OBJECT_ID);
-   m_dwAttr = pMsg->GetVariableLong(VID_SUBMAP_ATTR) & 0xFFFF; // Clear run-time attributes
-
-   m_dwNumObjects = pMsg->GetVariableLong(VID_NUM_OBJECTS);
-   if (m_dwNumObjects > 0)
-   {
-      m_pObjectList = (MAP_OBJECT *)realloc(m_pObjectList, sizeof(MAP_OBJECT) * m_dwNumObjects);
-      pdwList = (DWORD *)malloc(sizeof(DWORD) * m_dwNumObjects * 3);
-      pMsg->GetVariableInt32Array(VID_OBJECT_LIST, m_dwNumObjects * 3, pdwList);
-      for(i = 0, j = 0; i < m_dwNumObjects; i++)
-      {
-         m_pObjectList[i].dwId = pdwList[j++];
-         m_pObjectList[i].x = pdwList[j++];
-         m_pObjectList[i].y = pdwList[j++];
-         m_pObjectList[i].dwState = 0;
-      }
-      free(pdwList);
-   }
-   else
-   {
-      safe_free_and_null(m_pObjectList);
-   }
-
-   m_dwNumLinks = pMsg->GetVariableLong(VID_NUM_LINKS);
-   if (m_dwNumLinks > 0)
-   {
-      m_pLinkList = (OBJLINK *)realloc(m_pLinkList, sizeof(OBJLINK) * m_dwNumLinks);
-               memset(m_pLinkList, 0, sizeof(OBJLINK) * m_dwNumLinks);
-      pdwList = (DWORD *)malloc(sizeof(DWORD) * m_dwNumLinks * 3);
-      pMsg->GetVariableInt32Array(VID_LINK_LIST, m_dwNumLinks * 3, pdwList);
-      for(i = 0, j = 0, dwId = VID_SUBMAP_LINK_NAMES_BASE; i < m_dwNumLinks; i++)
-      {
-         m_pLinkList[i].dwId1 = pdwList[j++];
-         m_pLinkList[i].dwId2 = pdwList[j++];
-         m_pLinkList[i].nType = pdwList[j++];
-         if ((m_pLinkList[i].nType < LINK_TYPE_NORMAL) ||
-             (m_pLinkList[i].nType > LINK_TYPE_VPN))
-            m_pLinkList[i].nType = LINK_TYPE_NORMAL;
-                       pMsg->GetVariableStr(dwId++, m_pLinkList[i].szPort1, MAX_CONNECTOR_NAME);
-                       pMsg->GetVariableStr(dwId++, m_pLinkList[i].szPort2, MAX_CONNECTOR_NAME);
-      }
-      free(pdwList);
-   }
-   else
-   {
-      safe_free_and_null(m_pLinkList);
-   }
-}
-
-
-//
-// Set object's state
-//
-
-void nxSubmap::SetObjectState(DWORD dwObjectId, DWORD dwState)
-{
-   DWORD i;
-
-   for(i = 0; i < m_dwNumObjects; i++)
-      if (m_pObjectList[i].dwId == dwObjectId)
-      {
-         m_pObjectList[i].dwState = dwState;
-         break;
-      }
-}
-
-
-//
-// Set object's state
-//
-
-DWORD nxSubmap::GetObjectState(DWORD dwObjectId)
-{
-   DWORD i, dwState = 0;
-
-   for(i = 0; i < m_dwNumObjects; i++)
-      if (m_pObjectList[i].dwId == dwObjectId)
-      {
-         dwState = m_pObjectList[i].dwState;
-         break;
-      }
-   return dwState;
-}
-
-
-//
-// Get index of object with given ID
-//
-
-DWORD nxSubmap::GetObjectIndex(DWORD dwObjectId)
-{
-   DWORD i;
-
-   for(i = 0; i < m_dwNumObjects; i++)
-      if (m_pObjectList[i].dwId == dwObjectId)
-         return i;
-   return INVALID_INDEX;
-}
-
-
-//
-// Returns position of given object or (-1,-1) if object's position is undefined
-//
-
-POINT nxSubmap::GetObjectPosition(DWORD dwObjectId)
-{
-   DWORD i;
-   POINT pt;
-
-   pt.x = -1;
-   pt.y = -1;
-   for(i = 0; i < m_dwNumObjects; i++)
-      if (m_pObjectList[i].dwId == dwObjectId)
-      {
-         pt.x = m_pObjectList[i].x;
-         pt.y = m_pObjectList[i].y;
-         break;
-      }
-   return pt;
-}
-
-
-//
-// Returns position of given object or (-1,-1) if object's position is undefined
-//
-
-POINT nxSubmap::GetObjectPositionByIndex(DWORD dwIndex)
-{
-   POINT pt;
-
-   if (dwIndex < m_dwNumObjects)
-   {
-      pt.x = m_pObjectList[dwIndex].x;
-      pt.y = m_pObjectList[dwIndex].y;
-   }
-   else
-   {
-      pt.x = -1;
-      pt.y = -1;
-   }
-   return pt;
-}
-
-
-//
-// Set object's position
-//
-
-void nxSubmap::SetObjectPosition(DWORD dwObjectId, int x, int y)
-{
-   DWORD i;
-
-   for(i = 0; i < m_dwNumObjects; i++)
-      if (m_pObjectList[i].dwId == dwObjectId)
-      {
-         m_pObjectList[i].x = x;
-         m_pObjectList[i].y = y;
-         break;
-      }
-   if (i == m_dwNumObjects)
-   {
-      // New element
-      m_dwNumObjects++;
-      m_pObjectList = (MAP_OBJECT *)realloc(m_pObjectList, m_dwNumObjects * sizeof(MAP_OBJECT));
-      m_pObjectList[i].dwId = dwObjectId;
-      m_pObjectList[i].x = x;
-      m_pObjectList[i].y = y;
-      m_pObjectList[i].dwState = 0;
-   }
-}
-
-
-//
-// Set object's position using index
-//
-
-void nxSubmap::SetObjectPositionByIndex(DWORD dwIndex, int x, int y)
-{
-   m_pObjectList[dwIndex].x = x;
-   m_pObjectList[dwIndex].y = y;
-}
-
-
-//
-// Get minimal required size
-//
-
-POINT nxSubmap::GetMinSize(void)
-{
-   POINT pt;
-   DWORD i;
-
-   pt.x = 0;
-   pt.y = 0;
-
-   for(i = 0; i < m_dwNumObjects; i++)
-   {
-      if (m_pObjectList[i].x > pt.x)
-         pt.x = m_pObjectList[i].x;
-      if (m_pObjectList[i].y > pt.y)
-         pt.y = m_pObjectList[i].y;
-   }
-
-   pt.x += MAP_OBJECT_SIZE_X + MAP_RIGHT_MARGIN;
-   pt.y += MAP_OBJECT_SIZE_Y + MAP_TEXT_BOX_HEIGHT + MAP_BOTTOM_MARGIN;
-
-   return pt;
-}
-
-
-//
-// Layout objects on map
-//
-
-void nxSubmap::DoLayout(DWORD dwNumObjects, DWORD *pdwObjectList,
-                        DWORD dwNumLinks, OBJLINK *pLinkList,
-                        int nIdealX, int nIdealY, int nMethod,
-                                                               BOOL bNormalize)
-{
-   DWORD i;
-   int x, y;
-
-   safe_free(m_pLinkList);
-   m_dwNumLinks = dwNumLinks;
-   m_pLinkList = (pLinkList != NULL) ? (OBJLINK *)nx_memdup(pLinkList, sizeof(OBJLINK) * dwNumLinks) : NULL;
-
-   safe_free_and_null(m_pObjectList);
-   m_dwNumObjects = 0;
-
-   if (nMethod == SUBMAP_LAYOUT_DUMB)
-   {
-      for(i = 0, x = MAP_LEFT_MARGIN, y = MAP_TOP_MARGIN; i < dwNumObjects; i++)
-      {
-         SetObjectPosition(pdwObjectList[i], x, y);
-         x += MAP_OBJECT_SIZE_X + MAP_OBJECT_INTERVAL_X;
-         if (x >= nIdealX - MAP_OBJECT_SIZE_X - MAP_OBJECT_INTERVAL_X / 2)
-         {
-            x = MAP_LEFT_MARGIN;
-            y += MAP_OBJECT_SIZE_Y + MAP_TEXT_BOX_HEIGHT + MAP_OBJECT_INTERVAL_Y;
-         }
-      }
-   }
-   else
-   {
-      nxleGeneric *engine;
-      nxmap_Graph *graph;
-      nxmap_Vertex *vertex;
-
-      graph = new nxmap_Graph(dwNumObjects, pdwObjectList, dwNumLinks, pLinkList);
-      if (dwNumObjects > 0)
-      {
-         graph->SetRootVertex(pdwObjectList[0]);
-                       if (bNormalize)
-                               graph->NormalizeLinks();
-      }
-      switch(nMethod)
-      {
-         case SUBMAP_LAYOUT_RADIAL:
-            engine = new nxleRadial(graph);
-            break;
-         case SUBMAP_LAYOUT_REINGOLD_TILFORD:
-            engine = new nxleReingoldTilford(graph);
-            break;
-         default: // Unknown method, do nothing
-            engine = new nxleGeneric(graph);
-            break;
-      }
-
-      engine->Execute();
-      delete engine;
-
-      graph->NormalizeVertexPositions();
-      for(i = 0; i < dwNumObjects; i++)
-      {
-         vertex = graph->GetVertexByIndex(i);
-         SetObjectPosition(vertex->GetId(), vertex->GetPosX(), vertex->GetPosY());
-      }
-      delete graph;
-   }
-   
-   m_dwAttr |= SUBMAP_ATTR_LAYOUT_COMPLETED;
-}
-
-
-//
-// Add link between two objects
-//
-
-void nxSubmap::LinkObjects(DWORD dwObj1, const TCHAR *pszPort1, DWORD dwObj2, const TCHAR *pszPort2, int nType)
-{
-       DWORD i;
-
-       // Validate object IDs
-       if ((GetObjectIndex(dwObj1) == INVALID_INDEX) ||
-           (GetObjectIndex(dwObj2) == INVALID_INDEX))
-               return; // At least one object not exist on submap
-
-       // Find if requested link already exist
-       for(i = 0; i < m_dwNumLinks; i++)
-       {
-               if (((m_pLinkList[i].dwId1 == dwObj1) && (m_pLinkList[i].dwId2 == dwObj2)) ||
-                   ((m_pLinkList[i].dwId1 == dwObj2) && (m_pLinkList[i].dwId2 == dwObj1)))
-                       break;
-       }
-       if (i == m_dwNumLinks)
-       {
-               // Create new link
-               m_dwNumLinks++;
-               m_pLinkList = (OBJLINK *)realloc(m_pLinkList, sizeof(OBJLINK) * m_dwNumLinks);
-       }
-       m_pLinkList[i].dwId1 = dwObj1;
-       m_pLinkList[i].dwId2 = dwObj2;
-       m_pLinkList[i].nType = nType;
-       nx_strncpy(m_pLinkList[i].szPort1, pszPort1, MAX_CONNECTOR_NAME);
-       nx_strncpy(m_pLinkList[i].szPort2, pszPort2, MAX_CONNECTOR_NAME);
-}
-
-
-//
-// Remove link between two objects
-//
-
-void nxSubmap::UnlinkObjects(DWORD dwObj1, DWORD dwObj2)
-{
-       DWORD i;
-
-       for(i = 0; i < m_dwNumLinks; i++)
-       {
-               if (((m_pLinkList[i].dwId1 == dwObj1) && (m_pLinkList[i].dwId2 == dwObj2)) ||
-                   ((m_pLinkList[i].dwId1 == dwObj2) && (m_pLinkList[i].dwId2 == dwObj1)))
-               {
-                       m_dwNumLinks--;
-                       memmove(&m_pLinkList[i], &m_pLinkList[i + 1], sizeof(OBJLINK) * (m_dwNumLinks - i));
-                       i--;
-               }
-       }
-}
-
-
-//
-// Delete object from submap
-//
-
-void nxSubmap::DeleteObject(DWORD dwObject)
-{
-       DWORD i;
-
-       // Delete all links to this object
-       for(i = 0; i < m_dwNumLinks; i++)
-       {
-               if ((m_pLinkList[i].dwId1 == dwObject) || (m_pLinkList[i].dwId2 == dwObject))
-               {
-                       m_dwNumLinks--;
-                       memmove(&m_pLinkList[i], &m_pLinkList[i + 1], sizeof(OBJLINK) * (m_dwNumLinks - i));
-                       i--;
-               }
-       }
-
-       // Delete object itself
-       i = GetObjectIndex(dwObject);
-       if (i != INVALID_INDEX)
-       {
-               m_dwNumObjects--;
-               memmove(&m_pObjectList[i], &m_pObjectList[i + 1], sizeof(MAP_OBJECT) * (m_dwNumObjects - i));
-       }
-}
diff --git a/src/libnxmap/vertex.cpp b/src/libnxmap/vertex.cpp
deleted file mode 100644 (file)
index d063048..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-/* 
-** NetXMS - Network Management System
-** Network Maps Library
-** Copyright (C) 2003-2010 Victor Kirhenshtein
-**
-** This program is free software; you can redistribute it and/or modify
-** it under the terms of the GNU Lesser General Public License as published by
-** the Free Software Foundation; either version 3 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 Lesser General Public License
-** along with this program; if not, write to the Free Software
-** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-**
-** File: vertex.cpp
-**
-**/
-
-#include "libnxmap.h"
-
-
-//
-// Constructor
-//
-
-nxmap_Vertex::nxmap_Vertex(DWORD dwId)
-{
-   m_dwId = dwId;
-   m_posX = 0;
-   m_posY = 0;
-   m_dwNumChilds = 0;
-   m_ppChildList = NULL;
-   m_dwNumParents = 0;
-   m_ppParentList = NULL;
-}
-
-
-//
-// Destructor
-//
-
-nxmap_Vertex::~nxmap_Vertex()
-{
-   safe_free(m_ppChildList);
-   safe_free(m_ppParentList);
-}
-
-
-//
-// Link another vertex as child
-//
-
-void nxmap_Vertex::LinkChild(nxmap_Vertex *pVtx)
-{
-   DWORD i;
-
-   for(i = 0; i < m_dwNumChilds; i++)
-      if (m_ppChildList[i] == pVtx)
-         break;   // Already linked
-   if (i == m_dwNumChilds)
-   {
-      m_dwNumChilds++;
-      m_ppChildList = (nxmap_Vertex **)realloc(m_ppChildList, sizeof(nxmap_Vertex *) * m_dwNumChilds);
-      m_ppChildList[i] = pVtx;
-      pVtx->LinkParent(this);
-   }
-}
-
-
-//
-// Unlink child vertex
-//
-
-void nxmap_Vertex::UnlinkChild(nxmap_Vertex *pVtx)
-{
-   DWORD i;
-
-   for(i = 0; i < m_dwNumChilds; i++)
-      if (m_ppChildList[i] == pVtx)
-      {
-         m_dwNumChilds--;
-         memmove(&m_ppChildList[i], &m_ppChildList[i + 1], (m_dwNumChilds - i) * sizeof(nxmap_Vertex *));
-         pVtx->UnlinkParent(this);
-         break;
-      }
-}
-
-
-//
-// Link another vertex as parent
-//
-
-void nxmap_Vertex::LinkParent(nxmap_Vertex *pVtx)
-{
-   DWORD i;
-
-   for(i = 0; i < m_dwNumParents; i++)
-      if (m_ppParentList[i] == pVtx)
-         break;   // Already linked
-   if (i == m_dwNumParents)
-   {
-      m_dwNumParents++;
-      m_ppParentList = (nxmap_Vertex **)realloc(m_ppParentList, sizeof(nxmap_Vertex *) * m_dwNumParents);
-      m_ppParentList[i] = pVtx;
-   }
-}
-
-
-//
-// Unlink parent vertex
-//
-
-void nxmap_Vertex::UnlinkParent(nxmap_Vertex *pVtx)
-{
-   DWORD i;
-
-   for(i = 0; i < m_dwNumParents; i++)
-      if (m_ppParentList[i] == pVtx)
-      {
-         m_dwNumParents--;
-         memmove(&m_ppParentList[i], &m_ppParentList[i + 1], (m_dwNumParents - i) * sizeof(nxmap_Vertex *));
-         break;
-      }
-}
-
-
-//
-// Check if link to given vertex exist
-//
-
-BOOL nxmap_Vertex::IsParentOf(nxmap_Vertex *pVtx)
-{
-   DWORD i;
-   BOOL bRet = FALSE;
-
-   for(i = 0; i < m_dwNumChilds; i++)
-      if (m_ppChildList[i] == pVtx)
-      {
-         bRet = TRUE;
-         break;
-      }
-   return bRet;
-}