diff options
Diffstat (limited to 'Build/source/texk/web2c/luatexdir/pdf/pdfaction.h')
-rw-r--r-- | Build/source/texk/web2c/luatexdir/pdf/pdfaction.h | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/Build/source/texk/web2c/luatexdir/pdf/pdfaction.h b/Build/source/texk/web2c/luatexdir/pdf/pdfaction.h new file mode 100644 index 00000000000..77944dd3f5b --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/pdf/pdfaction.h @@ -0,0 +1,78 @@ +/* pdfaction.h + + Copyright 2009 Taco Hoekwater <taco@luatex.org> + + This file is part of LuaTeX. + + LuaTeX is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at your + option) any later version. + + LuaTeX is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + License for more details. + + You should have received a copy of the GNU General Public License along + with LuaTeX; if not, see <http://www.gnu.org/licenses/>. */ + +/* $Id: pdfaction.h 2801 2009-07-10 13:12:59Z taco $ */ + +#ifndef PDFACTION_H +# define PDFACTION_H + +/* pdf action spec */ + +# define pdf_action_size 4 + +typedef enum { + pdf_action_page = 0, + pdf_action_goto, + pdf_action_thread, + pdf_action_user +} pdf_action_type; + +typedef enum { + pdf_window_notset, + pdf_window_new, + pdf_window_nonew, +} pdf_window_type; + + +# define pdf_action_type(a) type((a) + 1) /* enum pdf_action_type */ +# define pdf_action_named_id(a) subtype((a) + 1) /* boolean */ +# define pdf_action_id(a) vlink((a) + 1) /* number or toks */ +# define pdf_action_file(a) vinfo((a) + 2) /* toks */ +# define pdf_action_new_window(a) vlink((a) + 2) /* enum pdf_window_type */ +# define pdf_action_tokens(a) vinfo((a) + 3) /* toks */ +# define pdf_action_refcount(a) vlink((a) + 3) /* number */ + +/* increase count of references to this action. this is used to speed up copy_node() */ + +# define add_action_ref(a) pdf_action_refcount((a))++ + +/* decrease count of references to this + action; free it if there is no reference to this action*/ + +# define delete_action_ref(a) { \ + if (pdf_action_refcount(a) == null) { \ + delete_action_node(a); \ + } else { \ + decr(pdf_action_refcount(a)); \ + } \ + } + + +# define set_pdf_action_type(A,B) pdf_action_type(A)=B +# define set_pdf_action_tokens(A,B) pdf_action_tokens(A)=B +# define set_pdf_action_file(A,B) pdf_action_file(A)=B +# define set_pdf_action_id(A,B) pdf_action_id(A)=B +# define set_pdf_action_named_id(A,B) pdf_action_named_id(A)=B +# define set_pdf_action_new_window(A,B) pdf_action_new_window(A)=B + +extern halfword scan_action(PDF pdf); +extern void write_action(PDF pdf, halfword p); +extern void delete_action_node(halfword a); + +#endif |