Is this page helpful?

In this page

LVectorObject::ExplodeObject

Summary

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

Syntax

#include "ltwrappr.h"

L_INT LVectorObject::ExplodeObject(dwFlags)

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
    Copied to clipboard
    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 23.0.2024.2.29
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2025 Apryse Sofware Corp. All Rights Reserved.

LEADTOOLS Vector C++ Class Library Help
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2025 Apryse Sofware Corp. All Rights Reserved.