void VGContext_dtor(VGContext *c)
{
    int i;

    SH_DEINITOBJ(SHRectArray, c->scissor);
    SH_DEINITOBJ(SHFloatArray, c->strokeDashPattern);

    /* Destroy resources */
    for (i=0; i<c->paths.size; ++i)
        SH_DELETEOBJ(SHPath, c->paths.items[i]);

    for (i=0; i<c->paints.size; ++i)
        SH_DELETEOBJ(SHPaint, c->paints.items[i]);

    for (i=0; i<c->images.size; ++i)
        SH_DELETEOBJ(SHImage, c->images.items[i]);
}
VG_API_CALL void vgDestroyContextSH()
{
    /* return if already released */
    if (!g_context) return;

    /* delete context object */
    SH_DELETEOBJ(VGContext, g_context);
    g_context = NULL;
}
Пример #3
0
VG_API_CALL void vgDestroyPaint(VGPaint paint)
{
  SHint index;
  VG_GETCONTEXT(VG_NO_RETVAL);
  
  /* Check if handle valid */
  index = shPaintArrayFind(&context->paints, (SHPaint*)paint);
  VG_RETURN_ERR_IF(index == -1, VG_BAD_HANDLE_ERROR, VG_NO_RETVAL);
  
  /* Delete object and remove resource */
  SH_DELETEOBJ(SHPaint, (SHPaint*)paint);
  shPaintArrayRemoveAt(&context->paints, index);
  
  VG_RETURN(VG_NO_RETVAL);
}