diff options
Diffstat (limited to 'tree/transform.c')
-rw-r--r-- | tree/transform.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/tree/transform.c b/tree/transform.c new file mode 100644 index 00000000..18910d6b --- /dev/null +++ b/tree/transform.c @@ -0,0 +1,35 @@ +#include <fitz.h> + +fz_error * +fz_newtransform(fz_node **nodep, fz_matrix m) +{ + fz_transform *node; + + node = fz_malloc(sizeof (fz_transform)); + if (!node) + return fz_outofmem; + *nodep = (fz_node*)node; + + fz_initnode((fz_node*)node, FZ_NTRANSFORM); + node->child = nil; + node->m = m; + + return nil; +} + +void +fz_freetransform(fz_transform *node) +{ + if (node->child) + fz_freenode(node->child); + fz_free(node); +} + +fz_rect +fz_boundtransform(fz_transform *node, fz_matrix ctm) +{ + if (!node->child) + return FZ_INFRECT; + return fz_boundnode(node->child, fz_concat(node->m, ctm)); +} + |