LVectorObject::ExplodeObject

#include "ltwrappr.h"

L_INT LVectorObject::ExplodeObject(dwFlags)

Explodes a vector object or objects to smaller parts. This function is available in the LEADTOOLS Vector Imaging Pro Toolkit.

Parameters

L_UINT32 dwFlags

Flag that indicates which objects to explode. Possible values are:

Value Meaning
0 Explode all objects.
VECTOR_FLAGS_EXPLODE_TO_LINES Explode objects into lines.

Returns

Value Meaning
SUCCESS The function was successful.
< 1 An error occurred. Refer to Return Codes.

Comments

If the VECTOR_FLAGS_EXPLODE_TO_LINES flag is not specified, then not all objects can be exploded, for example an attempt to explode a VECTOR_LINE has no effect and returns SUCCESS.

Below is a list of object types and the objects into which they explode:

Object type After LVectorObject::ExplodeObject
VECTOR_ARC Same.
VECTOR_CHORD Same.
VECTOR_CIRCLE Same.
VECTOR_ELLIPSE Same.
VECTOR_ELLIPTICALARC Same.
VECTOR_LINE Same.
VECTOR_PIE Same.
VECTOR_POLYBEZIER Same.
VECTOR_POLYDRAW Same.
VECTOR_POLYGON Same.
VECTOR_POLYLINE nPointCount of VECTOR_LINE's.
VECTOR_RASTER Same.
VECTOR_RECTANGLE 4 VECTOR_LINE's.
VECTOR_TEXT Same.
VECTOR_VERTEX Same.

Note that exploding an object can convert the object into a different type. For example, exploding a VECTOR_RECTANGLE will result in four VECTOR_LINE objects. The original vector object no longer exists. Therefore, exploding a valid LVectorRectangle object invalidates the LVectorRectangle object.

To deteremine the validity of an object, call LVectorObject::IsValid.

Required DLLs and Libraries

See Also

Functions

Topics

Example

This example will

  1. Create new image of one polyline
  2. Explode the polyline
  3. Enumerate the new objects
    class LMyVectorLayer2: public LVectorLayer 
    { 
    public: 
       LVectorBase *m_pVectorDst; 
     
    public: 
       LMyVectorLayer2() {}; 
       virtual ~LMyVectorLayer2(){}; 
       virtual L_INT EnumObjectsCallBack(pVECTORHANDLE pVector, pVECTOROBJECT pObject); 
    }; 
     
    L_INT LMyVectorLayer2::EnumObjectsCallBack(pVECTORHANDLE pVector, pVECTOROBJECT pObject) 
    { 
       UNREFERENCED_PARAMETER(pVector); 
     
       L_TCHAR *pszMsg = TEXT(""); 
     
       switch (pObject->nType) 
       { 
       case VECTOR_LINE: 
          pszMsg = TEXT("Vector Line"); 
          break; 
     
       case VECTOR_RECTANGLE : 
          pszMsg = TEXT("Vector Rectangle"); 
          break; 
           
       case VECTOR_POLYLINE: 
          pszMsg = TEXT("Vector Polyline"); 
          break; 
       } 
       MessageBox(NULL, pszMsg, TEXT(""), MB_OK); 
       return SUCCESS ; 
    } 
     
    //LVectorObject::ExplodeObject() 
    //LVectorObject::IsValid() 
    // 
    //Example81 
    // This example will  
    // 1. Create new image of one polyline 
    // 2. Explode the polyline 
    // 3. Enumerate the new objects 
     
    L_INT LVectorObject__ExplodeObjectExample(HWND hWnd, LVectorBase *pVector) 
    { 
       UNREFERENCED_PARAMETER(hWnd); 
     
       L_INT             nRet; 
       LMyVectorLayer2   VectorLayer; 
       VECTORLAYERDESC   LayerDesc; 
     
       //Create and add a new layer 
       nRet = VectorLayer.GetLayerDesc(&LayerDesc); 
       if(nRet != SUCCESS) 
          return nRet; 
     
       lstrcpy(LayerDesc.szName, TEXT("Layer One")); 
     
       nRet = VectorLayer.SetLayerDesc(&LayerDesc); 
       if(nRet != SUCCESS) 
          return nRet; 
     
       nRet = pVector->AddLayer(&VectorLayer); 
       if(nRet != SUCCESS) 
          return nRet; 
     
       //Create a polyline object 
       VECTORPOLYLINE     PolyLine; 
       VECTORPOINT        Points[4] = { 50,  50, 0, 0, 
                                        80,  50, 0, 0, 
                                        80,  80, 0, 0, 
                                        50,  80, 0, 0 
                                     }; 
     
       PolyLine.nPointCount = 4; 
       PolyLine.Point = Points; 
     
       PolyLine.Pen.nSize = sizeof( VECTORPEN ); 
       PolyLine.Pen.bExtPen = FALSE; 
       PolyLine.Pen.NewPen.LogPen.lopnStyle = PS_SOLID; 
       PolyLine.Pen.NewPen.LogPen.lopnWidth.x = 10; 
       PolyLine.Pen.NewPen.LogPen.lopnWidth.y = 10; 
       PolyLine.Pen.NewPen.LogPen.lopnColor = RGB(0,255,0); 
     
       LVectorPolyLine VectorPolyLine(&PolyLine); 
     
       //Add polyline to layer 
       nRet = VectorLayer.AddObject(&VectorPolyLine); 
       if(nRet != SUCCESS) 
          return nRet; 
     
       //Enumerate objects--should get one polyline 
       nRet = VectorLayer.EnumObjects(); 
       if(nRet != SUCCESS) 
          return nRet; 
     
       //Enumerate objects--should get three lines 
       nRet = VectorLayer.EnumObjects(); 
       if(nRet != SUCCESS) 
          return nRet; 
     
       return SUCCESS; 
    } 
Help Version 21.0.2021.4.7
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2021 LEAD Technologies, Inc. All Rights Reserved.

LEADTOOLS Vector C++ Class Library Help