示例#1
0
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;
}
示例#2
0
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;
}
示例#3
0
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;
}