summaryrefslogtreecommitdiffstats
path: root/src/LYJustify.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/LYJustify.h')
-rw-r--r--src/LYJustify.h83
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 */