Lines 481-487
Link Here
|
481 |
g_return_val_if_fail (brush != NULL, InvalidParameter); |
481 |
g_return_val_if_fail (brush != NULL, InvalidParameter); |
482 |
g_return_val_if_fail (matrix != NULL, InvalidParameter); |
482 |
g_return_val_if_fail (matrix != NULL, InvalidParameter); |
483 |
|
483 |
|
484 |
*matrix = *(brush->transform); |
484 |
cairo_matrix_copy(matrix, brush->transform); |
485 |
return Ok; |
485 |
return Ok; |
486 |
} |
486 |
} |
487 |
|
487 |
|
Lines 491-497
Link Here
|
491 |
g_return_val_if_fail (brush != NULL, InvalidParameter); |
491 |
g_return_val_if_fail (brush != NULL, InvalidParameter); |
492 |
g_return_val_if_fail (matrix != NULL, InvalidParameter); |
492 |
g_return_val_if_fail (matrix != NULL, InvalidParameter); |
493 |
|
493 |
|
494 |
*(brush->transform) = *matrix; |
494 |
brush->transform = matrix; |
495 |
return Ok; |
495 |
return Ok; |
496 |
} |
496 |
} |
497 |
|
497 |
|
Lines 506-524
Link Here
|
506 |
GpStatus |
506 |
GpStatus |
507 |
GdipMultiplyPathGradientTransform (GpPathGradient *brush, GDIPCONST GpMatrix *matrix, GpMatrixOrder order) |
507 |
GdipMultiplyPathGradientTransform (GpPathGradient *brush, GDIPCONST GpMatrix *matrix, GpMatrixOrder order) |
508 |
{ |
508 |
{ |
509 |
cairo_matrix_t mat; |
509 |
cairo_matrix_t *mat; |
510 |
g_return_val_if_fail (brush != NULL, InvalidParameter); |
510 |
g_return_val_if_fail (brush != NULL, InvalidParameter); |
511 |
g_return_val_if_fail (matrix != NULL, InvalidParameter); |
511 |
g_return_val_if_fail (matrix != NULL, InvalidParameter); |
512 |
|
512 |
|
|
|
513 |
mat = cairo_matrix_create(); |
514 |
|
513 |
if (order == MatrixOrderPrepend) |
515 |
if (order == MatrixOrderPrepend) |
514 |
cairo_matrix_multiply (&mat, matrix, brush->transform); |
516 |
cairo_matrix_multiply (mat, matrix, brush->transform); |
515 |
else if (order == MatrixOrderAppend) |
517 |
else if (order == MatrixOrderAppend) |
516 |
cairo_matrix_multiply (&mat, brush->transform, matrix); |
518 |
cairo_matrix_multiply (mat, brush->transform, matrix); |
517 |
else |
519 |
else { |
|
|
520 |
cairo_matrix_destroy(mat); |
518 |
return InvalidParameter; |
521 |
return InvalidParameter; |
|
|
522 |
} |
519 |
|
523 |
|
520 |
*(brush->transform) = mat; |
524 |
brush->transform = mat; |
521 |
|
|
|
522 |
return Ok; |
525 |
return Ok; |
523 |
} |
526 |
} |
524 |
|
527 |
|
Lines 530-540
Link Here
|
530 |
if (order == MatrixOrderAppend) { |
533 |
if (order == MatrixOrderAppend) { |
531 |
cairo_matrix_translate (brush->transform, dx, dy); |
534 |
cairo_matrix_translate (brush->transform, dx, dy); |
532 |
} else if (order == MatrixOrderPrepend) { |
535 |
} else if (order == MatrixOrderPrepend) { |
533 |
cairo_matrix_t mat, matres; |
536 |
cairo_matrix_t *mat, *matres; |
534 |
cairo_matrix_set_identity (&mat); |
537 |
|
535 |
cairo_matrix_translate (&mat, dx, dy); |
538 |
mat = cairo_matrix_create(); |
536 |
cairo_matrix_multiply (&matres, &mat, brush->transform); |
539 |
matres = cairo_matrix_create(); |
537 |
*(brush->transform) = matres; |
540 |
|
|
|
541 |
cairo_matrix_set_identity (mat); |
542 |
cairo_matrix_translate (mat, dx, dy); |
543 |
cairo_matrix_multiply (matres, mat, brush->transform); |
544 |
brush->transform = matres; |
545 |
|
546 |
cairo_matrix_destroy(mat); |
538 |
} else { |
547 |
} else { |
539 |
return InvalidParameter; |
548 |
return InvalidParameter; |
540 |
} |
549 |
} |
Lines 550-560
Link Here
|
550 |
if (order == MatrixOrderAppend) { |
559 |
if (order == MatrixOrderAppend) { |
551 |
cairo_matrix_scale (brush->transform, sx, sy); |
560 |
cairo_matrix_scale (brush->transform, sx, sy); |
552 |
} else if (order == MatrixOrderPrepend) { |
561 |
} else if (order == MatrixOrderPrepend) { |
553 |
cairo_matrix_t mat, matres; |
562 |
cairo_matrix_t *mat, *matres; |
554 |
cairo_matrix_set_identity (&mat); |
563 |
|
555 |
cairo_matrix_scale (&mat, sx, sy); |
564 |
mat = cairo_matrix_create(); |
556 |
cairo_matrix_multiply (&matres, &mat, brush->transform); |
565 |
matres = cairo_matrix_create(); |
557 |
*(brush->transform) = matres; |
566 |
cairo_matrix_set_identity (mat); |
|
|
567 |
cairo_matrix_scale (mat, sx, sy); |
568 |
cairo_matrix_multiply (matres, mat, brush->transform); |
569 |
brush->transform = matres; |
570 |
|
571 |
cairo_matrix_destroy(mat); |
558 |
} else { |
572 |
} else { |
559 |
return InvalidParameter; |
573 |
return InvalidParameter; |
560 |
} |
574 |
} |
Lines 570-580
Link Here
|
570 |
if (order == MatrixOrderAppend) { |
584 |
if (order == MatrixOrderAppend) { |
571 |
cairo_matrix_rotate (brush->transform, angle * DEGTORAD); |
585 |
cairo_matrix_rotate (brush->transform, angle * DEGTORAD); |
572 |
} else if (order == MatrixOrderPrepend) { |
586 |
} else if (order == MatrixOrderPrepend) { |
573 |
cairo_matrix_t mat, matres; |
587 |
cairo_matrix_t *mat, *matres; |
574 |
cairo_matrix_set_identity (&mat); |
588 |
|
575 |
cairo_matrix_rotate (&mat, angle * DEGTORAD); |
589 |
mat = cairo_matrix_create(); |
576 |
cairo_matrix_multiply (&matres, &mat, brush->transform); |
590 |
matres = cairo_matrix_create(); |
577 |
*(brush->transform) = matres; |
591 |
|
|
|
592 |
cairo_matrix_set_identity (mat); |
593 |
cairo_matrix_rotate (mat, angle * DEGTORAD); |
594 |
cairo_matrix_multiply (matres, mat, brush->transform); |
595 |
brush->transform = matres; |
596 |
|
597 |
cairo_matrix_destroy(mat); |
578 |
} else { |
598 |
} else { |
579 |
return InvalidParameter; |
599 |
return InvalidParameter; |
580 |
} |
600 |
} |