LVectorObject::ExplodeObject
#include "ltwrappr.h"
L_INT LVectorObject::ExplodeObject(dwFlags)
L_UINT32 dwFlags; |
/* flag that indicates how to explode the object */ |
Explodes a vector object or objects to smaller parts. This function is available in the LEADTOOLS Vector Imaging Pro Toolkit.
Parameter |
Description |
|
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
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
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: |
|
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)
{
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_VOID Example81(HWND hWnd, LVectorBase *pVector)
{
LMyVectorLayer2 VectorLayer;
VECTORLAYERDESC LayerDesc;
//Create and add a new layer
VectorLayer.GetLayerDesc(&LayerDesc);
lstrcpy(LayerDesc.szName, TEXT("Layer One"));
VectorLayer.SetLayerDesc(&LayerDesc);
pVector->AddLayer(&VectorLayer);
//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
VectorLayer.AddObject(&VectorPolyLine);
//Enumerate objects--should get one polyline
VectorLayer.EnumObjects();
//Enumerate objects--should get three lines
VectorLayer.EnumObjects();
}