NITFPRIV(cgm_Element*) cloneCircle(NITF_DATA* data, nitf_Error* error) { cgm_CircleElement *source = NULL, *dest = NULL; cgm_Element* element = NULL; assert(data); source = (cgm_CircleElement*)data; element = cgm_CircleElement_construct(error); if (!element) return NULL; dest = (cgm_CircleElement*)element->data; dest->centerX = source->centerX; dest->centerY = source->centerY; dest->radius = source->radius; if (source->attributes) { dest->attributes = cgm_FillAttributes_clone(source->attributes, error); if (!dest->attributes) { cgm_Element_destruct(&element); return NULL; } } return element; }
NITFPRIV(cgm_Element*) rectangleClone(NITF_DATA* data, nitf_Error* error) { cgm_RectangleElement *source = NULL, *dest = NULL; cgm_Element* element = NULL; assert(data); source = (cgm_RectangleElement*)data; element = cgm_RectangleElement_construct(error); if (!element) return NULL; dest = (cgm_RectangleElement*)element->data; if (source->attributes) { dest->attributes = cgm_FillAttributes_clone(source->attributes, error); if (!dest->attributes) { cgm_Element_destruct(&element); return NULL; } } if (source->rectangle) { dest->rectangle = cgm_Rectangle_clone(source->rectangle, error); if (!dest->rectangle) { cgm_Element_destruct(&element); return NULL; } } return element; }