Editing Container Objects

The L_ContainerEditObject function displays an object and lets the user edit the dimensions of that object. This function displays an object based on initial properties set in a CONTAINEROBJECTDATA structure. As the user edits this object, all changes (state and object properties) are sent to the CONTAINERCALLBACK function for processing.

Below is an example that shows how to display and edit an object in a container. In this example the container is using two container specific data structures

CONTAINEROBJECTDATA

CONTAINERPOLYLINEDATA

The CONTAINEROBJECTDATA data structure contains the container's object data.

The CONTAINERPOLYLINEDATA structure is used to describe the polyline object to be edited.

 

/* This example shows how to edit a container object 
           this example assumes that the container limits are at least { 10, 10, 300, 200 } */

L_INT EditObjectTest ( pCONTAINERHANDLE pContainer ) 
{
   if (SUCCESS == L_ContainerIsValid( pContainer ) ) /* check the validity of container handle */
   {
      CONTAINEROBJECTDATA Data ;
      CONTAINERPOLYLINEDATA   PolyData ;
      VECTORPOINT pt [ 7 ] ;

      /* Set the Polyline points to some random numbers */
      pt[0].x = 10 ;   pt[0].y = 10 ; 
      pt[1].x = 80 ;   pt[1].y = 20 ;
      pt[2].x = 100 ; pt[2].y = 60 ; 
      pt[3].x = 10 ;   pt[3].y = 40 ; 
      pt[4].x = 100 ; pt[4].y = 200 ;
      pt[5].x = 200 ; pt[5].y = 100 ;
      pt[6].x = 300 ; pt[6].y = 200 ;

      /*Fill the object data with valid values */
      PolyData.pvptPoints  = pt ;
      PolyData.nPointCount = 7 ;

      /* Set the container's object data */
      Data.nSize             = sizeof ( CONTAINEROBJECTDATA ) ; 
      Data.nObjectType = CONTAINER_OBJECT_TYPE_POLYLINE ;
      Data.pObjectData = &PolyData; 

      /* Start editing an object */
      /* Double click the left-mouse button to end editing */
      /* Click right-mouse button to abort editing */
      if ( SUCCESS != L_ContainerEditObject( pContainer, &Data ) )
      {
          return FAILURE ;   
      }

      return SUCCESS ;
   }
   else
   {
      return FAILURE ;
   }
}