SHResourceType shGetResourceType(VGContext *c, VGHandle h) { if (shIsValidPath(c, h)) return SH_RESOURCE_PATH; else if (shIsValidPaint(c, h)) return SH_RESOURCE_PAINT; else if (shIsValidImage(c, h)) return SH_RESOURCE_IMAGE; else return SH_RESOURCE_INVALID; }
VG_API_CALL void vgPaintPattern(VGPaint paint, VGImage pattern) { VG_GETCONTEXT(VG_NO_RETVAL); /* Check if handle valid */ VG_RETURN_ERR_IF(!shIsValidPaint(context, paint), VG_BAD_HANDLE_ERROR, VG_NO_RETVAL); /* Check if pattern image valid */ VG_RETURN_ERR_IF(!shIsValidImage(context, pattern), VG_BAD_HANDLE_ERROR, VG_NO_RETVAL); /* TODO: Check if pattern image is current rendering target */ /* Set pattern image */ ((SHPaint*)paint)->pattern = pattern; VG_RETURN(VG_NO_RETVAL); }
VG_API_CALL void vgSetPaint(VGPaint paint, VGbitfield paintModes) { VG_GETCONTEXT(VG_NO_RETVAL); /* Check if handle valid */ VG_RETURN_ERR_IF(!shIsValidPaint(context, paint) && paint != VG_INVALID_HANDLE, VG_BAD_HANDLE_ERROR, VG_NO_RETVAL); /* Check for invalid mode */ VG_RETURN_ERR_IF(paintModes & ~(VG_STROKE_PATH | VG_FILL_PATH), VG_ILLEGAL_ARGUMENT_ERROR, VG_NO_RETVAL); /* Set stroke / fill */ if (paintModes & VG_STROKE_PATH) context->strokePaint = (SHPaint*)paint; if (paintModes & VG_FILL_PATH) context->fillPaint = (SHPaint*)paint; VG_RETURN(VG_NO_RETVAL); }