|
|
g_return_val_if_fail (brush != NULL, InvalidParameter); | g_return_val_if_fail (brush != NULL, InvalidParameter); |
g_return_val_if_fail (matrix != NULL, InvalidParameter); | g_return_val_if_fail (matrix != NULL, InvalidParameter); |
| |
*matrix = *(brush->transform); |
cairo_matrix_copy(matrix, brush->transform); |
return Ok; | return Ok; |
} | } |
| |
|
|
g_return_val_if_fail (brush != NULL, InvalidParameter); | g_return_val_if_fail (brush != NULL, InvalidParameter); |
g_return_val_if_fail (matrix != NULL, InvalidParameter); | g_return_val_if_fail (matrix != NULL, InvalidParameter); |
| |
*(brush->transform) = *matrix; |
brush->transform = matrix; |
return Ok; | return Ok; |
} | } |
| |
|
|
GpStatus | GpStatus |
GdipMultiplyPathGradientTransform (GpPathGradient *brush, GDIPCONST GpMatrix *matrix, GpMatrixOrder order) | GdipMultiplyPathGradientTransform (GpPathGradient *brush, GDIPCONST GpMatrix *matrix, GpMatrixOrder order) |
{ | { |
cairo_matrix_t mat; |
cairo_matrix_t *mat; |
g_return_val_if_fail (brush != NULL, InvalidParameter); | g_return_val_if_fail (brush != NULL, InvalidParameter); |
g_return_val_if_fail (matrix != NULL, InvalidParameter); | g_return_val_if_fail (matrix != NULL, InvalidParameter); |
| |
|
mat = cairo_matrix_create(); |
|
|
if (order == MatrixOrderPrepend) | if (order == MatrixOrderPrepend) |
cairo_matrix_multiply (&mat, matrix, brush->transform); |
cairo_matrix_multiply (mat, matrix, brush->transform); |
else if (order == MatrixOrderAppend) | else if (order == MatrixOrderAppend) |
cairo_matrix_multiply (&mat, brush->transform, matrix); |
cairo_matrix_multiply (mat, brush->transform, matrix); |
else |
else { |
|
cairo_matrix_destroy(mat); |
return InvalidParameter; | return InvalidParameter; |
|
} |
| |
*(brush->transform) = mat; |
brush->transform = mat; |
|
|
return Ok; | return Ok; |
} | } |
| |
|
|
if (order == MatrixOrderAppend) { | if (order == MatrixOrderAppend) { |
cairo_matrix_translate (brush->transform, dx, dy); | cairo_matrix_translate (brush->transform, dx, dy); |
} else if (order == MatrixOrderPrepend) { | } else if (order == MatrixOrderPrepend) { |
cairo_matrix_t mat, matres; |
cairo_matrix_t *mat, *matres; |
cairo_matrix_set_identity (&mat); |
|
cairo_matrix_translate (&mat, dx, dy); |
mat = cairo_matrix_create(); |
cairo_matrix_multiply (&matres, &mat, brush->transform); |
matres = cairo_matrix_create(); |
*(brush->transform) = matres; |
|
|
cairo_matrix_set_identity (mat); |
|
cairo_matrix_translate (mat, dx, dy); |
|
cairo_matrix_multiply (matres, mat, brush->transform); |
|
brush->transform = matres; |
|
|
|
cairo_matrix_destroy(mat); |
} else { | } else { |
return InvalidParameter; | return InvalidParameter; |
} | } |
|
|
if (order == MatrixOrderAppend) { | if (order == MatrixOrderAppend) { |
cairo_matrix_scale (brush->transform, sx, sy); | cairo_matrix_scale (brush->transform, sx, sy); |
} else if (order == MatrixOrderPrepend) { | } else if (order == MatrixOrderPrepend) { |
cairo_matrix_t mat, matres; |
cairo_matrix_t *mat, *matres; |
cairo_matrix_set_identity (&mat); |
|
cairo_matrix_scale (&mat, sx, sy); |
mat = cairo_matrix_create(); |
cairo_matrix_multiply (&matres, &mat, brush->transform); |
matres = cairo_matrix_create(); |
*(brush->transform) = matres; |
cairo_matrix_set_identity (mat); |
|
cairo_matrix_scale (mat, sx, sy); |
|
cairo_matrix_multiply (matres, mat, brush->transform); |
|
brush->transform = matres; |
|
|
|
cairo_matrix_destroy(mat); |
} else { | } else { |
return InvalidParameter; | return InvalidParameter; |
} | } |
|
|
if (order == MatrixOrderAppend) { | if (order == MatrixOrderAppend) { |
cairo_matrix_rotate (brush->transform, angle * DEGTORAD); | cairo_matrix_rotate (brush->transform, angle * DEGTORAD); |
} else if (order == MatrixOrderPrepend) { | } else if (order == MatrixOrderPrepend) { |
cairo_matrix_t mat, matres; |
cairo_matrix_t *mat, *matres; |
cairo_matrix_set_identity (&mat); |
|
cairo_matrix_rotate (&mat, angle * DEGTORAD); |
mat = cairo_matrix_create(); |
cairo_matrix_multiply (&matres, &mat, brush->transform); |
matres = cairo_matrix_create(); |
*(brush->transform) = matres; |
|
|
cairo_matrix_set_identity (mat); |
|
cairo_matrix_rotate (mat, angle * DEGTORAD); |
|
cairo_matrix_multiply (matres, mat, brush->transform); |
|
brush->transform = matres; |
|
|
|
cairo_matrix_destroy(mat); |
} else { | } else { |
return InvalidParameter; | return InvalidParameter; |
} | } |