diff options
author | dos-reis <gdr@axiomatics.org> | 2008-03-07 15:19:01 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2008-03-07 15:19:01 +0000 |
commit | 8531f4c74274b8aa99168d220738227557a9c418 (patch) | |
tree | c50b77870e432317be8f99c248e1339f74b51661 /src/hyper/show-types.pamphlet | |
parent | 33949ff2e6e5b5abe8d22c5604f42a6c9371079a (diff) | |
download | open-axiom-8531f4c74274b8aa99168d220738227557a9c418.tar.gz |
* hyper/: De-pamphletize.
Diffstat (limited to 'src/hyper/show-types.pamphlet')
-rw-r--r-- | src/hyper/show-types.pamphlet | 639 |
1 files changed, 0 insertions, 639 deletions
diff --git a/src/hyper/show-types.pamphlet b/src/hyper/show-types.pamphlet deleted file mode 100644 index 4bb68ae9..00000000 --- a/src/hyper/show-types.pamphlet +++ /dev/null @@ -1,639 +0,0 @@ -\documentclass{article} -\usepackage{axiom} -\begin{document} -\title{\$SPAD/src/show-types} -\author{The Axiom Team} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\section{show-types.h} -<<show-types.h>>= -<<license>> -#ifndef _SHOW_TYPES_H_ -#define _SHOW_TYPES_H_ 1 - -#include "hyper.h" - -#endif -@ -\section{show-types.c} -<<show-types.c>>= -/****************************************************************************** - * - * show_types.c: Show the various types of things that can show up in text - * - * Copyright The Numerical Algorithms Group Limited 1991, 1992, 1993. - * - ****************************************************************************/ -#define _SHOW_TYPES_C -#include "axiom-c-macros.h" -#include "useproto.h" -#include "debug.h" - - -#include "show-types.h" -#include "dialog.h" -#include "display.h" -#include "extent.h" -#include "group.h" -#include "mem.h" - -#include "all_hyper_proto.H1" - - - -/* - * Display the page whose extent has been computed, using the actual size of - * the window, and y_off to determine clipped areas - */ - -void -show_text(TextNode *node, int Ender) -{ - /*int twidth, len;*/ - /*int otext_x, otext_y, t;*/ - /*XFontStruct *old_font;*/ - /*int old_color;*/ - - for (; node != NULL; node = node->next) { - switch (node->type) { - case 0: - case Beginitems: - case Begintitems: - case Bound: - case Center: - case Free: - case HSpace: - case Indent: - case Indentrel: - case Item: - case Macro: - case Mbox: - case Newline: - case Noop: - case Par: - case Pound: - case Rbrace: - case Space: - case Tab: - case Table: - case Titem: - case VSpace: - break; - - case Dash: - case Fi: - case Ifcond: - if (visible(node->y, node->height)) { - if (strlen(node->data.text) > 1) { - XDrawLine(gXDisplay, gWindow->fDisplayedWindow, gWindow->fStandardGC, node->x, - node->y + gRegionOffset + y_off - - gTopOfGroupStack->cur_font->descent - - word_off_height, - node->x + node->width, - node->y + gRegionOffset + y_off - word_off_height - - gTopOfGroupStack->cur_font->descent); - } - else { - XDrawString(gXDisplay, gWindow->fDisplayedWindow, gWindow->fStandardGC, node->x, node->y + - gRegionOffset - gTopOfGroupStack->cur_font->descent + y_off, - node->data.text, 1); - } - } - else { - if (above(node->y)) - need_scroll_up_button = 1; - else if (below(node->y)) - need_scroll_down_button = 1; - } - break; - - case Lsquarebrace: - case Math: - case Punctuation: - case Rsquarebrace: - case Spadsrctxt: - case WindowId: - case Word: - if (visible(node->y, node->height)) - XDrawString(gXDisplay, gWindow->fDisplayedWindow, gWindow->fStandardGC, node->x, node->y + - gRegionOffset - gTopOfGroupStack->cur_font->descent + y_off, - node->data.text, node->width); - else { - if (above(node->y)) - need_scroll_up_button = 1; - else if (below(node->y)) - need_scroll_down_button = 1; - } - break; - - case Verbatim: - push_group_stack(); - tt_top_group(); - if (visible(node->y, node->height)) - XDrawString(gXDisplay, gWindow->fDisplayedWindow, gWindow->fStandardGC, node->x, node->y + - gRegionOffset - gTopOfGroupStack->cur_font->descent + y_off, - node->data.text, node->width); - else { - if (above(node->y)) - need_scroll_up_button = 1; - else if (below(node->y)) - need_scroll_down_button = 1; - } - pop_group_stack(); - break; - - case Horizontalline: - if (visible(node->y, node->height)) { - line_top_group(); - XDrawLine(gXDisplay, gWindow->fDisplayedWindow, gWindow->fStandardGC, 0, - node->y + gRegionOffset + y_off, - gWindow->width, - node->y + gRegionOffset + y_off); - pop_group_stack(); - } - else { - if (above(node->y)) - need_scroll_up_button = 1; - else if (below(node->y)) - need_scroll_down_button = 1; - } - break; - - case Box: - if (visible(node->y, node->height)) - XDrawRectangle(gXDisplay, gWindow->fDisplayedWindow, gWindow->fStandardGC, - node->x, - node->y + gRegionOffset + y_off - node->height, - node->width, - node->height); - else { - if (above(node->y)) - need_scroll_up_button = 1; - else if (below(node->y)) - need_scroll_down_button = 1; - } - break; - - - case Downlink: - case Link: - case LispDownLink: - case LispMemoLink: - case Lispcommand: - case Lispcommandquit: - case Lisplink: - case Lispwindowlink: - case Memolink: - case Qspadcall: - case Qspadcallquit: - case Returnbutton: - case Spadcall: - case Spadcallquit: - case Spaddownlink: - case Spadlink: - case Spadmemolink: - case Unixcommand: - case Unixlink: - case Upbutton: - case Windowlink: - if (pix_visible(node->y, node->height)) - show_link(node); - break; - - case Spadcommand: - case Spadgraph: - case Spadsrc: - show_spadcommand(node); - break; - - case Pastebutton: - if (visible(node->y, node->height)) - show_pastebutton(node); - break; - - case Paste: - show_paste(node); - break; - - case Group: - case Tableitem: - push_group_stack(); - break; - - case Controlbitmap: - show_image(node, gWindow->fControlGC); - break; - - case Inputbitmap: - show_image(node, gWindow->fStandardGC); - break; - - case Inputpixmap: - show_image(node, gWindow->fStandardGC); - break; - - case BoldFace: - bf_top_group(); - break; - - case Emphasize: - if (gTopOfGroupStack->cur_font == gRmFont) - em_top_group(); - else - rm_top_group(); - break; - - case It: - em_top_group(); - break; - - case Sl: - case Rm: - rm_top_group(); - break; - - case Tt: - tt_top_group(); - break; - - case Inputstring: - show_input(node); - break; - - case Radiobox: - case SimpleBox: - show_simple_box(node); - break; - - case Beep: - LoudBeepAtTheUser(); - break; - - case Description: - bf_top_group(); - break; - - case Endspadsrc: - case Endspadcommand: - gInAxiomCommand = 1; - case Endtableitem: - case Enddescription: - case Endpastebutton: - case Endlink: - case Endbutton: - case Endgroup: - pop_group_stack(); - case Endverbatim: - case Endmath: - case Endbox: - case Endtable: - case Endmbox: - case Endparameter: - case Endpaste: - case Endinputbox: - case Endcenter: - case Endmacro: - case Endif: - case Endtitems: - case Enditems: - - /* - * Now since I can show specific regions of the text, then at - * this point I should check to see if I am the end - */ - if (node->type == Ender) - return; - break; - case Endfooter: - case Endscrolling: - case Endheader: - case Endtitle: - - /* - * regardless of what ender I have, I always terminate showing - * with one of these - */ - return; - default: - fprintf(stderr, "Show_text: Unknown Node Type %d\n", node->type); - break; - } - } -} - -static void -show_link(TextNode *node) -{ - /* XFontStruct *old_font;*/ - XWindowChanges wc; - /*int twidth, boxwidth, old_color;*/ - int active; - - switch (node->type) { - case Upbutton: - if (!need_up_button) { - XClearArea(gXDisplay, gWindow->fDisplayedWindow, node->x, - node->y - node->height + gRegionOffset, - node->width, node->height, 0); - active = 0; - } - else - active = 1; - break; - case Returnbutton: - if (!need_return_button) { - XClearArea(gXDisplay, gWindow->fDisplayedWindow, node->x, - node->y - node->height + gRegionOffset, - node->width, node->height, 0); - active = 0; - } - else - active = 1; - break; - case Helpbutton: - if (!need_help_button) { - XClearArea(gXDisplay, gWindow->fDisplayedWindow, node->x, - node->y - node->height + gRegionOffset, - node->width, node->height, 0); - active = 0; - } - else - active = 1; - break; - default: - active = 1; - break; - } - - if (active) { - ButtonList *bl = alloc_button_list(); - - push_active_group(); - wc.x = node->x; - wc.y = node->y - node->height + y_off + gRegionOffset; - wc.height = node->height; - wc.width = node->width - trailing_space(node->next); - bl->x0 = wc.x; - bl->y0 = wc.y; - bl->x1 = bl->x0 + wc.width; - bl->y1 = bl->y0 + wc.height; - bl->link = node->link; - if (!not_in_scroll) { - bl->y0 += gWindow->page->top_scroll_margin + scroll_top_margin; - bl->y1 += gWindow->page->top_scroll_margin + scroll_top_margin; - bl->next = gWindow->page->s_button_list; - gWindow->page->s_button_list = bl; - } - else { - bl->next = gWindow->page->button_list; - gWindow->page->button_list = bl; - } - } - else - rm_top_group(); -} - -static void -show_paste(TextNode *node) -{ - PasteNode *paste; - - if (!(paste = (PasteNode *) hash_find(gWindow->fPasteHashTable, - node->data.text))) - return; - - /* - * Once I have got this far, then I had better save the current group - * stack and the item stack - */ - if (paste->group) - free_group_stack(paste->group); - paste->group = (GroupItem *) copy_group_stack(); - if (paste->item_stack) - free_item_stack(paste->item_stack); - paste->item_stack = (ItemStack *) copy_item_stack(); -} - -static void -show_pastebutton(TextNode *node) -{ - /*XFontStruct *old_font;*/ - XWindowChanges wc; - /*int twidth, boxwidth, old_color;*/ - /*int active;*/ - - push_active_group(); - wc.x = node->x; - wc.y = node->y - node->height + y_off + gRegionOffset; - wc.height = node->height; - wc.width = node->width - trailing_space(node->next); -#ifdef DEBUG - fprintf(stderr, "Configure in show_link %d %d %d %d\n", - wc.x, wc.y, wc.width, wc.height); -#endif - XConfigureWindow(gXDisplay, node->link->win, - CWX | CWY | CWHeight | CWWidth, &wc); - XMapWindow(gXDisplay, node->link->win); -} - -/* display an input string window */ - -static void -show_input(TextNode *node) -{ - /*XFontStruct *old_font;*/ - XWindowChanges wc; - /*int twidth, boxwidth, old_color;*/ - /*Window root, child;*/ - /*int root_x, root_y, win_x, win_y, buttons;*/ - InputItem *item; - char *inpbuffer; - - item = node->link->reference.string; - inpbuffer = item->curr_line->buffer; - - wc.border_width = 0; - wc.x = node->x; - wc.y = node->y + gRegionOffset + y_off - node->height + 2; - wc.height = node->height - 2; - wc.width = node->width; - if (pix_visible(node->y, node->height)) { - XConfigureWindow(gXDisplay, node->link->win, - CWX | CWY | CWHeight | CWWidth | CWBorderWidth, - &wc); - XMapWindow(gXDisplay, node->link->win); - } - XFlush(gXDisplay); - draw_inputsymbol(item); -} - -static void -show_simple_box(TextNode *node) -{ - XWindowChanges wc; - InputBox *box; - - /* first configure the box size properly */ - box = node->link->reference.box; - wc.x = node->x; - wc.y = node->y + gRegionOffset + y_off - node->height; - wc.height = ((box->picked) ? - (box->selected->height) : (box->unselected->height)); - wc.width = node->width; - if (visible(node->y + gTopOfGroupStack->cur_font->ascent, node->height)) { - XConfigureWindow(gXDisplay, node->link->win, CWX | CWY | CWHeight | CWWidth, - &wc); - XMapWindow(gXDisplay, node->link->win); - if (box->picked) - pick_box(box); - else - unpick_box(box); - } -} - -/* display a spad command node */ - -static void -show_spadcommand(TextNode *node) -{ - XWindowChanges wc; - - gInAxiomCommand = 1; - - push_spad_group(); - wc.x = node->x; - if (node->type == Spadsrc) - wc.y = node->y + gRegionOffset + y_off - 2 * node->height; - else - wc.y = node->y + gRegionOffset + y_off - node->height; - wc.height = node->height; - wc.width = node->width; -#ifdef DEBUG - fprintf(stderr, "Spadcommand configured %d x %d -- (%d, %d)\n", - wc.width, wc.height, wc.x, wc.y); -#endif - XConfigureWindow(gXDisplay, node->link->win, - CWX | CWY | CWHeight | CWWidth, &wc); - XMapWindow(gXDisplay, node->link->win); -} - - -/* display a pixmap */ - -static void -show_image(TextNode *node, GC gc) -{ - int src_x, src_y, src_width, src_height, dest_x, dest_y, ret_val; - - if (!pix_visible(node->y, node->height)) - return; - if (node->image.xi == NULL) - return; - - dest_x = node->x; - src_x = 0; - src_y = 0; - dest_y = node->y + gRegionOffset - node->height + y_off; - need_scroll_up_button = 1; - if (node->width > (right_margin - node->x)) - src_width = right_margin - node->x; - else - src_width = node->width; - - if (gDisplayRegion != Scrolling) { - src_y = 0; - src_height = node->image.xi->height; - } - else { - /* I may have only a partial image */ - if (dest_y < 0) { /* the top is cut off */ - src_y = -dest_y; - dest_y = 0; - src_height = node->image.xi->height - src_y; - } - else if (dest_y + node->image.xi->height > gWindow->scrollheight) { - /* the bottom is cut off */ - src_y = 0; - src_height = gWindow->scrollheight - dest_y; - } - else { /* the whole thing is visible */ - src_y = 0; - src_height = node->image.xi->height; - } - } - - ret_val = XPutImage(gXDisplay, gWindow->fDisplayedWindow, gc, - node->image.xi, src_x, src_y, dest_x, dest_y, - src_width, src_height); - - switch (ret_val) { - case BadDrawable: - fprintf(stderr, "(HyperDoc: show_image) bad drawable\n"); - break; - case BadGC: - fprintf(stderr, "(HyperDoc: show_image) bad GC"); - break; - case BadMatch: - fprintf(stderr, "(HyperDoc: show_image) bad match"); - break; - case BadValue: -#ifndef HP9platform - fprintf(stderr, "(HyperDoc: show_image) bad value"); -#endif /* HP complains about this*/ - break; - } -} -@ -\section{License} -<<license>>= -/* -Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - - Neither the name of The Numerical ALgorithms Group Ltd. nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED -TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER -OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -@ -<<*>>= -<<license>> -<<show-types.c>> -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} - - - - |