NITFPRIV(cgm_Element*) ellipticalArcClone(NITF_DATA* data, nitf_Error* error) { cgm_EllipticalArcElement *source = NULL, *dest = NULL; cgm_Element* element = NULL; assert(data); source = (cgm_EllipticalArcElement*)data; element = cgm_EllipticalArcElement_construct(error); if (!element) return NULL; dest = (cgm_EllipticalArcElement*)element->data; dest->centerX = source->centerX; dest->centerY = source->centerY; dest->end1X = source->end1X; dest->end1Y = source->end1Y; dest->end2X = source->end2X; dest->end2Y = source->end2Y; dest->startVectorX = source->startVectorX; dest->endVectorY = source->endVectorY; if (source->attributes) { dest->attributes = cgm_LineAttributes_clone(source->attributes, error); if (!dest->attributes) { cgm_Element_destruct(&element); return NULL; } } return element; }
NITFPRIV(cgm_Element*) polyClone(NITF_DATA* data, nitf_Error* error) { cgm_PolyLineElement *source = NULL, *dest = NULL; cgm_Element* element = NULL; assert(data); source = (cgm_PolyLineElement*)data; element = cgm_PolyLineElement_construct(error); if (!element) return NULL; dest = (cgm_PolyLineElement*)element->data; if (source->attributes) { dest->attributes = cgm_LineAttributes_clone(source->attributes, error); if (!dest->attributes) { cgm_Element_destruct(&element); return NULL; } } /* TODO vertices */ return element; }
NITFPRIV(cgm_Element*) circularArcClone(NITF_DATA* data, nitf_Error* error) { cgm_CircularArcElement *source = NULL, *dest = NULL; cgm_Element* element = NULL; assert(data); source = (cgm_CircularArcElement*)data; element = cgm_CircularArcElement_construct(error); if (!element) return NULL; dest = (cgm_CircularArcElement*)element->data; dest->centerX = source->centerX; dest->centerY = source->centerY; dest->startX = source->startX; dest->startY = source->startY; dest->endX = source->endX; dest->endY = source->endY; dest->radius = source->radius; if (source->attributes) { dest->attributes = cgm_LineAttributes_clone(source->attributes, error); if (!dest->attributes) { cgm_Element_destruct(&element); return NULL; } } return element; }