LVectorBase::CopyObject

#include "ltwrappr.h"

virtual L_INT LVectorBase::CopyObject(pLayerDst, pObjectDst, pObjectSrc );

virtual L_INT LVectorBase::CopyObject(pObjectSrc);

L_FAR LVectorLayer * pLayerDst;

/* pointer to a vector layer object */

L_FAR LVectorObject * pObjectDst;

/* pointer to a vector object */

L_FAR LVectorObject * pObjectSrc;

/* pointer to a vector object */

Copies a vector object to another vector object. This function is available in the LEADTOOLS Vector Imaging Pro Toolkit.

Parameter

Description

pLayerDst

Pointer to the destination vector layer. Pass NULL to copy the source vector object to the active layer of the destination vector object.

pObjectDst

Pointer to the destination vector object. If this parameter contains a valid address of an LVectorObject object, then pObjectDst will be updated with the newly copied vector object. If this parameter is NULL, the source vector object will still be copied to the destination vector.

pObjectSrc

Pointer to the source vector object. This parameter cannot be NULL. The LVectorObject can be obtained by calling LVectorBase::HitTest, LVectorBase::EnumObjects, LVectorBase::AddObject, or by calling LVectorBase::CopyObject again.

Returns

SUCCESS

The function was successful.

< 1

An error occurred. Refer to Return Codes.

Comments

This function can be used to do the following:

image\sqrblit.gif copy a vector object within the same vector layer.

image\sqrblit.gif copy a vector object from one vector layer to another vector layer within the same LVectorBase object.

image\sqrblit.gif copy a vector object from a vector layer in one LVectorBase object to a vector layer in another LVectorBase object.

This function creates a new object that is a carbon copy of the source object, but they are not related. The source object can be deleted after the copying process without affecting the newly copied object.

Setting the pLayerDst parameter to NULL will copy the object into the current active layer in the LVectorBase object.

If the pObjectDst parameter is set to NULL, information about the newly added object will not be provided when the function returns.

Required DLLs and Libraries

LVKRN

For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application.

See Also

Functions:

LVectorBase::AddObject, LVectorObject::ExplodeObject

Topics:

Working with Vector Objects

Example

This example is for LVectorBase::CopyObject(pLayerDst, pObjectDst, pObjectSrc).

//Example93
// This example copies all objects from active layer of vector source to vector dest (active layer)
// Information is displayed about each copied object
class LMyVectorLayer4: public LVectorLayer
{
public:
   LVectorBase *m_pVectorDst;

public:
   LMyVectorLayer4() {};
   virtual ~LMyVectorLayer4(){};
   virtual L_INT EnumObjectsCallBack(pVECTORHANDLE pVector, pVECTOROBJECT pObject);
};


L_INT LMyVectorLayer4::EnumObjectsCallBack(pVECTORHANDLE pVector, pVECTOROBJECT pObject)
{
   L_TCHAR *pszType;
   LVectorBase   VectorBase(pVector);
   LVectorObject VectorObject(pObject, &VectorBase);
   LVectorObject ResultObject;
   
   m_pVectorDst->CopyObject(NULL, &ResultObject, &VectorObject);

   L_INT nType = ResultObject.GetType();
   switch (nType)
   {
   case VECTOR_VERTEX:
      pszType = TEXT("VECTOR_VERTEX");
      break;
      
   case VECTOR_LINE:       
      pszType = TEXT("VECTOR_LINE       ");
      break;
      
   case VECTOR_RECTANGLE  :
      pszType = TEXT("VECTOR_RECTANGLE  ");
      break;
      
   case VECTOR_POLYLINE   :
      pszType = TEXT("VECTOR_POLYLINE   ");
      break;
      
   case VECTOR_POLYBEZIER :
      pszType = TEXT("VECTOR_POLYBEZIER ");
      break;
      
   case VECTOR_POLYGON    :
      pszType = TEXT("VECTOR_POLYGON    ");
      break;
      
   case VECTOR_ELLIPSE    :
      pszType = TEXT("VECTOR_ELLIPSE    ");
      break;
      
   case VECTOR_CIRCLE     :
      pszType = TEXT("VECTOR_CIRCLE     ");
      break;
      
   case VECTOR_ARC        :
      pszType = TEXT("VECTOR_ARC        ");
      break;
      
   case VECTOR_TEXT       :
      pszType = TEXT("VECTOR_TEXT       ");
      break;
      
   case VECTOR_PIE        :
      pszType = TEXT("VECTOR_PIE        ");
      break;
      
   case VECTOR_CHORD      :
      pszType = TEXT("VECTOR_CHORD      ");
      break;
      
   case VECTOR_POLYDRAW   :
      pszType = TEXT("VECTOR_POLYDRAW   ");
      break;
      
   case VECTOR_RASTER     :
      pszType = TEXT("VECTOR_RASTER     ");
      break;
      
   case VECTOR_STOCK     :
      pszType = TEXT("VECTOR_STOCK     ");
      break;
   }

   MessageBox(NULL, pszType, TEXT(""), MB_OK);

   VectorBase.SetHandle(NULL, FALSE);
   return SUCCESS ;
}


L_VOID Example93(HWND hWnd, LVectorBase *pVectorDst)
{
   //Load a source vector
   LVectorBase VectorSrc;
   VectorSrc.Load (TEXT("square3.dxf"));

   //Get the active layer of source
   LMyVectorLayer4  VectorLayer;
   VectorSrc.GetActiveLayer(&VectorLayer);
   
   //Set the destination vector where objects from source will be copied
   VectorLayer.m_pVectorDst = pVectorDst;
   
   //Enumerate all objects in Active layer (and copy to dest vector)
   VectorLayer.EnumObjects();
}

This example is for LVectorBase::CopyObject(pObjectSrc).

// This example copies all objects from the active layer of the vector 
//source to the destination vector (active layer)
class LMyVectorLayer: public LVectorLayer
{
public:
   LVectorBase *m_pVectorDst;

public:
   LMyVectorLayer() {};
   virtual ~LMyVectorLayer(){};
   virtual L_INT EnumObjectsCallBack(pVECTORHANDLE pVector, pVECTOROBJECT pObject);
};


L_INT LMyVectorLayer::EnumObjectsCallBack(pVECTORHANDLE pVector, pVECTOROBJECT pObject)
{
   LVectorBase   VectorBase(pVector);
   LVectorObject VectorObject(pObject, &VectorBase);
   m_pVectorDst->CopyObject(&VectorObject);
   VectorBase.SetHandle(NULL, FALSE);
   return SUCCESS ;
}


L_VOID Example76(HWND hWnd, LVectorBase *pVectorDst)
{
   //Load a source vector
   LVectorBase VectorSrc;
   VectorSrc.Load(TEXT("square3.dxf"));

   //Get the active layer of source
   LMyVectorLayer  VectorLayer;
   VectorSrc.GetActiveLayer(&VectorLayer);
   
   //Set the destination vector where objects from source will be copied
   VectorLayer.m_pVectorDst = pVectorDst;
   
   //Enumerate all objects in Active layer (and copy to dest vector)
   VectorLayer.EnumObjects();
}