Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
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;
}
Exemplo n.º 4
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;
}