diff options
Diffstat (limited to 'gs/base/gsrop.c')
-rw-r--r-- | gs/base/gsrop.c | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/gs/base/gsrop.c b/gs/base/gsrop.c new file mode 100644 index 000000000..2c5461527 --- /dev/null +++ b/gs/base/gsrop.c @@ -0,0 +1,87 @@ +/* Copyright (C) 2001-2006 Artifex Software, Inc. + All Rights Reserved. + + This software is provided AS-IS with no warranty, either express or + implied. + + This software is distributed under license and may not be copied, modified + or distributed except as expressly authorized under the terms of that + license. Refer to licensing information at http://www.artifex.com/ + or contact Artifex Software, Inc., 7 Mt. Lassen Drive - Suite A-134, + San Rafael, CA 94903, U.S.A., +1(415)492-9861, for further information. +*/ + +/* $Id$ */ +/* RasterOp / transparency accessing for library */ +#include "gx.h" +#include "gserrors.h" +#include "gzstate.h" +#include "gsrop.h" + +/* setrasterop */ +int +gs_setrasterop(gs_state * pgs, gs_rop3_t rop) +{ + if (pgs->in_cachedevice) + return_error(gs_error_undefined); + pgs->log_op = (rop & rop3_1) | (pgs->log_op & ~rop3_1); + return 0; +} + +/* currentrasterop */ +gs_rop3_t +gs_currentrasterop(const gs_state * pgs) +{ + return lop_rop(pgs->log_op); +} + +/* setsourcetransparent */ +int +gs_setsourcetransparent(gs_state * pgs, bool transparent) +{ + if (pgs->in_cachedevice) + return_error(gs_error_undefined); + pgs->log_op = + (transparent ? pgs->log_op | lop_S_transparent : + pgs->log_op & ~lop_S_transparent); + return 0; +} + +/* currentsourcetransparent */ +bool +gs_currentsourcetransparent(const gs_state * pgs) +{ + return (pgs->log_op & lop_S_transparent) != 0; +} + +/* settexturetransparent */ +int +gs_settexturetransparent(gs_state * pgs, bool transparent) +{ + if (pgs->in_cachedevice) + return_error(gs_error_undefined); + pgs->log_op = + (transparent ? pgs->log_op | lop_T_transparent : + pgs->log_op & ~lop_T_transparent); + return 0; +} + +/* currenttexturetransparent */ +bool +gs_currenttexturetransparent(const gs_state * pgs) +{ + return (pgs->log_op & lop_T_transparent) != 0; +} + +/* Save/restore logical operation. (For internal use only.) */ +int +gs_set_logical_op(gs_state * pgs, gs_logical_operation_t lop) +{ + pgs->log_op = lop; + return 0; +} +gs_logical_operation_t +gs_current_logical_op(const gs_state * pgs) +{ + return pgs->log_op; +} |