diff options
Diffstat (limited to 'src/LYJustify.h')
-rw-r--r-- | src/LYJustify.h | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/src/LYJustify.h b/src/LYJustify.h new file mode 100644 index 0000000..997cd05 --- /dev/null +++ b/src/LYJustify.h @@ -0,0 +1,83 @@ +/* + * $LynxId: LYJustify.h,v 1.8 2009/11/21 15:24:48 tom Exp $ + * + * Justification for lynx - implemented by Vlad Harchev <hvv@hippo.ru> + * 11 July 1999 + */ + +#ifndef LYJUSTIFY_H +#define LYJUSTIFY_H + +#include <HTUtils.h> + +#ifdef __cplusplus +extern "C" { +#endif +#ifdef USE_JUSTIFY_ELTS + extern BOOL can_justify_here; + extern BOOL can_justify_here_saved; + + extern BOOL can_justify_this_line; + extern int wait_for_this_stacked_elt; + extern BOOL form_in_htext; + +/* this is the element with SGML_EMPTY content, so it won't get on the stack, + * so we can't trap it with wait_for_this_stacked_elt + */ + extern BOOL in_DT; + +/*disabled by default*/ +/*#define DEBUG_JUSTIFY*/ +#ifdef DEBUG_JUSTIFY + extern BOOL can_justify_stack_depth; /* can be 0 or 1 if all code is correct */ + +# define CAN_JUSTIFY_STACK_INC ++can_justify_stack_depth;\ + assert(can_justify_stack_depth < 2 && can_justify_stack_depth >=0 ); +# define CAN_JUSTIFY_STACK_DEC --can_justify_stack_depth;\ + assert(can_justify_stack_depth < 2 && can_justify_stack_depth >=0 ); +#else +# define CAN_JUSTIFY_STACK_INC /* nothing */ +# define CAN_JUSTIFY_STACK_DEC /* nothing */ +#endif + +#define CAN_JUSTIFY_PUSH(x) can_justify_here_saved=can_justify_here;\ + can_justify_here=(x); CAN_JUSTIFY_STACK_INC +#define CAN_JUSTIFY_POP can_justify_here=can_justify_here_saved;\ + CAN_JUSTIFY_STACK_INC +#define CAN_JUSTIFY_SET(x) can_justify_here=(x); + +/* + * This is used to indicate that starting from the current offset in current + * line justification can take place (in order the gap between some prefix and + * the word not to be enlarged. + * For example, when forming OL, + * 1.21 foo + * ^justification can start here so that gap between 1.21 and "foo" + * will not be enlarged. + * This is a macro (that uses 'me'). + */ +#define CAN_JUSTIFY_START mark_justify_start_position(me->text); +#define CANT_JUSTIFY_THIS_LINE can_justify_this_line = FALSE +#define EMIT_IFDEF_USE_JUSTIFY_ELTS(x) x + /*defined in order not to wrap single line of code into #ifdef/#endif */ + + extern void ht_justify_cleanup(void); + extern void mark_justify_start_position(void *text); + +#else /* ! USE_JUSTIFY_ELTS */ +/* + * define empty macros so that they can be used without wrapping them in + * #ifdef USE_JUSTIFY_ELTS/#endif + */ +#define CAN_JUSTIFY_PUSH(x) +#define CAN_JUSTIFY_POP +#define CAN_JUSTIFY_SET(x) +#define CAN_JUSTIFY_START +#define CANT_JUSTIFY_THIS_LINE +#define EMIT_IFDEF_USE_JUSTIFY_ELTS(x) +#endif /* USE_JUSTIFY_ELTS */ +#define CAN_JUSTIFY_PUSH_F CAN_JUSTIFY_PUSH(FALSE) +#ifdef __cplusplus +} +#endif +#endif /* LYJUSTIFY_H */ |