AsciiSink.c File Reference

#include <stdio.h>
#include <X11/Xatom.h>
#include <X11/IntrinsicP.h>
#include <X11/StringDefs.h>
#include <X11/Xaw3d/XawInit.h>
#include <X11/Xaw3d/AsciiSinkP.h>
#include <X11/Xaw3d/AsciiSrcP.h>
#include <X11/Xaw3d/TextP.h>

Include dependency graph for AsciiSink.c:

Go to the source code of this file.

Defines

#define GETLASTPOS   XawTextSourceScan(source, (XawTextPosition) 0, XawstAll, XawsdRight, 1, TRUE)
#define offset(field)   XtOffsetOf(AsciiSinkRec, ascii_sink.field)
#define SuperClass   (&textSinkClassRec)
#define insertCursor_width   6
#define insertCursor_height   3

Functions

static void Initialize ()
static void Destroy ()
static Boolean SetValues ()
static int MaxLines ()
static int MaxHeight ()
static void SetTabs ()
static void DisplayText ()
static void InsertCursor ()
static void FindPosition ()
static void FindDistance ()
static void Resolve ()
static void GetCursorBounds ()
static int CharWidth (Widget w, int x, unsigned char c)
static Dimension PaintText (Widget w, GC gc, Position x, Position y, unsigned char *buf, int len)
static void DisplayText (Widget w, Position x, Position y, XawTextPosition pos1, XawTextPosition pos2, Boolean highlight)
static Pixmap CreateInsertCursor (Screen *s)
static void GetCursorBounds (Widget w, XRectangle *rect)
static void InsertCursor (Widget w, Position x, Position y, XawTextInsertState state)
static void FindDistance (Widget w, XawTextPosition fromPos, int fromx, XawTextPosition toPos, int *resWidth, XawTextPosition *resPos, int *resHeight)
static void FindPosition (Widget w, XawTextPosition fromPos, int fromx, int width, int stopAtWordBreak, XawTextPosition *resPos, int *resWidth, int *resHeight)
static void Resolve (Widget w, XawTextPosition pos, int fromx, int width, XawTextPosition *leftPos, XawTextPosition *rightPos)
static void GetGC (AsciiSinkObject sink)
static void Initialize (Widget request, Widget new, ArgList args, Cardinal *num_args)
static void Destroy (Widget w)
static Boolean SetValues (Widget current, Widget request, Widget new, ArgList args, Cardinal *num_args)
static int MaxLines (Widget w, Dimension height)
static int MaxHeight (Widget w, int lines)
static void SetTabs (Widget w, int tab_count, short *tabs)

Variables

static XtResource resources []
AsciiSinkClassRec asciiSinkClassRec
WidgetClass asciiSinkObjectClass = (WidgetClass)&asciiSinkClassRec
static char insertCursor_bits [] = {0x0c, 0x1e, 0x33}


Define Documentation

#define GETLASTPOS   XawTextSourceScan(source, (XawTextPosition) 0, XawstAll, XawsdRight, 1, TRUE)

Definition at line 65 of file AsciiSink.c.

Referenced by _XawTextReplace(), FindDistance(), FindPosition(), Initialize(), Resolve(), UpdateTextInLine(), XawTextEnableRedisplay(), XawTextInvalidate(), and XawTextSetSource().

#define insertCursor_height   3

Definition at line 314 of file AsciiSink.c.

Referenced by CreateInsertCursor(), and GetCursorBounds().

#define insertCursor_width   6

Definition at line 313 of file AsciiSink.c.

Referenced by CreateInsertCursor(), and GetCursorBounds().

#define offset ( field   )     XtOffsetOf(AsciiSinkRec, ascii_sink.field)

Definition at line 75 of file AsciiSink.c.

Referenced by C2F(), CaseLogflagN2L(), changetoref(), correctBounds(), CreateOperationTList(), createreference(), do_init_data(), doequiv(), DoMark(), gdCharWidth(), gdImageChar(), gdImageCharUp(), gdImageSymb(), labels2D_draw(), LineRead(), List_item(), md5_append(), OLE_get_block(), OLE_get_miniblock(), OLE_load_chain(), ON_WND_TEXT_WM_PAINT(), out_addr(), PaintCommandWidget(), readc(), setdata(), and UnrefStruct().

#define SuperClass   (&textSinkClassRec)

Definition at line 87 of file AsciiSink.c.

Referenced by ChangeManaged(), DeleteChild(), externaldef(), InsertChild(), PaintCommandWidget(), and Realize().


Function Documentation

static int CharWidth ( Widget  w,
int  x,
unsigned char  c 
) [static]

Definition at line 148 of file AsciiSink.c.

References _AsciiSinkRec::ascii_sink, AsciiSinkPart::display_nonprinting, AsciiSinkPart::font, font, i, TextSinkPart::tabs, _AsciiSinkRec::text_sink, width, XawLF, XawSP, and XawTAB.

Referenced by DisplayText(), FindDistance(), and FindPosition().

00152 {
00153     int    i, width, nonPrinting;
00154     AsciiSinkObject sink = (AsciiSinkObject) w;
00155     XFontStruct *font = sink->ascii_sink.font;
00156     Position *tab;
00157 
00158     if ( c == XawLF ) return(0);
00159 
00160     if (c == XawTAB) {
00161         /* Adjust for Left Margin. */
00162         x -= ((TextWidget) XtParent(w))->text.margin.left;
00163 
00164         if (x >= (int)XtParent(w)->core.width) return 0;
00165         for (i = 0, tab = sink->text_sink.tabs ; 
00166              i < sink->text_sink.tab_count ; i++, tab++) {
00167             if (x < *tab) {
00168                 if (*tab < (int)XtParent(w)->core.width)
00169                     return *tab - x;
00170                 else
00171                     return 0;
00172             }
00173         }
00174         return 0;
00175     }
00176 
00177     if ( (nonPrinting = (c < (unsigned char) XawSP)) )
00178         if (sink->ascii_sink.display_nonprinting)
00179             c += '@';
00180         else {
00181             c = XawSP;
00182             nonPrinting = False;
00183         }
00184 
00185     if (font->per_char &&
00186             (c >= font->min_char_or_byte2 && c <= font->max_char_or_byte2))
00187         width = font->per_char[c - font->min_char_or_byte2].width;
00188     else
00189         width = font->min_bounds.width;
00190 
00191     if (nonPrinting)
00192         width += CharWidth(w, x, (unsigned char) '^');
00193 
00194     return width;
00195 }

Here is the caller graph for this function:

static Pixmap CreateInsertCursor ( Screen *  s  )  [static]

Definition at line 318 of file AsciiSink.c.

References insertCursor_height, and insertCursor_width.

Referenced by Initialize().

00320 {
00321     return (XCreateBitmapFromData (DisplayOfScreen(s), RootWindowOfScreen(s),
00322                   insertCursor_bits, insertCursor_width, insertCursor_height));
00323 }

Here is the caller graph for this function:

static void Destroy ( Widget  w  )  [static]

Definition at line 549 of file AsciiSink.c.

References _AsciiSinkRec::ascii_sink, AsciiSinkPart::insertCursorOn, AsciiSinkPart::invgc, AsciiSinkPart::normgc, and AsciiSinkPart::xorgc.

00551 {
00552    AsciiSinkObject sink = (AsciiSinkObject) w;
00553 
00554    XtReleaseGC(w, sink->ascii_sink.normgc);
00555    XtReleaseGC(w, sink->ascii_sink.invgc);
00556    XtReleaseGC(w, sink->ascii_sink.xorgc);
00557    XFreePixmap(XtDisplayOfObject(w), sink->ascii_sink.insertCursorOn);
00558 }

static void Destroy (  ) 

Referenced by _XawImDestroy().

Here is the caller graph for this function:

static void DisplayText ( Widget  w,
Position  x,
Position  y,
XawTextPosition  pos1,
XawTextPosition  pos2,
Boolean  highlight 
) [static]

Definition at line 250 of file AsciiSink.c.

References _AsciiSinkRec::ascii_sink, buf, CharWidth(), AsciiSinkPart::display_nonprinting, AsciiSinkPart::echo, AsciiSinkPart::font, gc, AsciiSinkPart::invgc, j, XawTextBlock::length, AsciiSinkPart::normgc, PaintText(), XawTextBlock::ptr, void(), width, XawLF, XawTextGetSource(), and XawTextSourceRead().

00255 {
00256     AsciiSinkObject sink = (AsciiSinkObject) w;
00257     Widget source = XawTextGetSource(XtParent(w));
00258     unsigned char buf[BUFSIZ];
00259 
00260     int j, k;
00261     XawTextBlock blk;
00262     GC gc = highlight ? sink->ascii_sink.invgc : sink->ascii_sink.normgc;
00263     GC invgc = highlight ? sink->ascii_sink.normgc : sink->ascii_sink.invgc;
00264 
00265     if (!sink->ascii_sink.echo) return;
00266 
00267     y += sink->ascii_sink.font->ascent;
00268     for ( j = 0 ; pos1 < pos2 ; ) {
00269         pos1 = XawTextSourceRead(source, pos1, &blk, (int) pos2 - pos1);
00270         for (k = 0; k < blk.length; k++) {
00271             if (j >= BUFSIZ) {  /* buffer full, dump the text. */
00272                 x += PaintText(w, gc, x, y, buf, j);
00273                 j = 0;
00274             }
00275             buf[j] = blk.ptr[k];
00276             if (buf[j] == XawLF)        /* line feeds ('\n') are not printed. */
00277                 continue;
00278 
00279             else if (buf[j] == '\t') {
00280                 Position temp = 0;
00281                 Dimension width;
00282 
00283                 if ((j != 0) && ((temp = PaintText(w, gc, x, y, buf, j)) == 0))
00284                   return;
00285 
00286                 x += temp;
00287                 width = CharWidth(w, x, (unsigned char) '\t');
00288                 XFillRectangle(XtDisplayOfObject(w), XtWindowOfObject(w),
00289                                invgc, (int) x,
00290                                (int) y - sink->ascii_sink.font->ascent,
00291                                (unsigned int) width,
00292                                (unsigned int) (sink->ascii_sink.font->ascent +
00293                                                sink->ascii_sink.font->descent));
00294                 x += width;
00295                 j = -1;
00296             }
00297             else if ( buf[j] < (unsigned char) ' ' ) {
00298                 if (sink->ascii_sink.display_nonprinting) {
00299                     buf[j + 1] = buf[j] + '@';
00300                     buf[j] = '^';
00301                     j++;
00302                 }
00303                 else
00304                     buf[j] = ' ';
00305             }
00306             j++;
00307         }
00308     }
00309     if (j > 0)
00310         (void) PaintText(w, gc, x, y, buf, j);
00311 }

Here is the call graph for this function:

static void DisplayText (  )  [static]

Referenced by DisplayText().

Here is the caller graph for this function:

static void FindDistance ( Widget  w,
XawTextPosition  fromPos,
int  fromx,
XawTextPosition  toPos,
int resWidth,
XawTextPosition resPos,
int resHeight 
) [static]

Definition at line 377 of file AsciiSink.c.

References _AsciiSinkRec::ascii_sink, CharWidth(), XawTextBlock::firstPos, AsciiSinkPart::font, GETLASTPOS, index, XawTextBlock::length, XawTextBlock::ptr, XawLF, XawTextGetSource(), and XawTextSourceRead().

00385 {
00386     AsciiSinkObject sink = (AsciiSinkObject) w;
00387     Widget source = XawTextGetSource(XtParent(w));
00388 
00389     XawTextPosition index, lastPos;
00390     unsigned char c;
00391     XawTextBlock blk;
00392 
00393     /* we may not need this */
00394     lastPos = GETLASTPOS;
00395     XawTextSourceRead(source, fromPos, &blk, (int) toPos - fromPos);
00396     *resWidth = 0;
00397     for (index = fromPos; index != toPos && index < lastPos; index++) {
00398         if (index - blk.firstPos >= blk.length)
00399             XawTextSourceRead(source, index, &blk, (int) toPos - fromPos);
00400         c = blk.ptr[index - blk.firstPos];
00401         *resWidth += CharWidth(w, fromx + *resWidth, c);
00402         if (c == XawLF) {
00403             index++;
00404             break;
00405         }
00406     }
00407     *resPos = index;
00408     *resHeight = sink->ascii_sink.font->ascent +sink->ascii_sink.font->descent;
00409 }

Here is the call graph for this function:

static void FindDistance (  )  [static]

static void FindPosition ( Widget  w,
XawTextPosition  fromPos,
int  fromx,
int  width,
int  stopAtWordBreak,
XawTextPosition resPos,
int resWidth,
int resHeight 
) [static]

Definition at line 413 of file AsciiSink.c.

References _AsciiSinkRec::ascii_sink, CharWidth(), FALSE, XawTextBlock::firstPos, AsciiSinkPart::font, GETLASTPOS, index, XawTextBlock::length, XawTextBlock::ptr, TRUE, XawLF, XawSP, XawTAB, XawTextGetSource(), and XawTextSourceRead().

00424 {
00425     AsciiSinkObject sink = (AsciiSinkObject) w;
00426     Widget source = XawTextGetSource(XtParent(w));
00427 
00428     XawTextPosition lastPos, index, whiteSpacePosition = 0;
00429     int     lastWidth = 0, whiteSpaceWidth = 0;
00430     Boolean whiteSpaceSeen;
00431     unsigned char c;
00432     XawTextBlock blk;
00433 
00434     lastPos = GETLASTPOS;
00435 
00436     XawTextSourceRead(source, fromPos, &blk, BUFSIZ);
00437     *resWidth = 0;
00438     whiteSpaceSeen = FALSE;
00439     c = 0;
00440     for (index = fromPos; *resWidth <= width && index < lastPos; index++) {
00441         lastWidth = *resWidth;
00442         if (index - blk.firstPos >= blk.length)
00443             XawTextSourceRead(source, index, &blk, BUFSIZ);
00444         c = blk.ptr[index - blk.firstPos];
00445         *resWidth += CharWidth(w, fromx + *resWidth, c);
00446 
00447         if ((c == XawSP || c == XawTAB) && *resWidth <= width) {
00448             whiteSpaceSeen = TRUE;
00449             whiteSpacePosition = index;
00450             whiteSpaceWidth = *resWidth;
00451         }
00452         if (c == XawLF) {
00453             index++;
00454             break;
00455         }
00456     }
00457     if (*resWidth > width && index > fromPos) {
00458         *resWidth = lastWidth;
00459         index--;
00460         if (stopAtWordBreak && whiteSpaceSeen) {
00461             index = whiteSpacePosition + 1;
00462             *resWidth = whiteSpaceWidth;
00463         }
00464     }
00465     if (index == lastPos && c != XawLF) index = lastPos + 1;
00466     *resPos = index;
00467     *resHeight = sink->ascii_sink.font->ascent +sink->ascii_sink.font->descent;
00468 }

Here is the call graph for this function:

static void FindPosition (  ) 

Referenced by Resolve().

Here is the caller graph for this function:

static void GetCursorBounds ( Widget  w,
XRectangle *  rect 
) [static]

Definition at line 333 of file AsciiSink.c.

References _AsciiSinkRec::ascii_sink, AsciiSinkPart::cursor_x, AsciiSinkPart::cursor_y, insertCursor_height, and insertCursor_width.

00336 {
00337     AsciiSinkObject sink = (AsciiSinkObject) w;
00338 
00339     rect->width = (unsigned short) insertCursor_width;
00340     rect->height = (unsigned short) insertCursor_height;
00341     rect->x = sink->ascii_sink.cursor_x - (short) (rect->width / 2);
00342     rect->y = sink->ascii_sink.cursor_y - (short) rect->height;
00343 }

static void GetCursorBounds (  ) 

Referenced by InsertCursor().

Here is the caller graph for this function:

static void GetGC ( AsciiSinkObject  sink  )  [static]

Definition at line 487 of file AsciiSink.c.

References FALSE, GXxor, L, and long.

Referenced by Initialize(), and SetValues().

00489 {
00490     XtGCMask valuemask = (GCFont | 
00491                           GCGraphicsExposures | GCForeground | GCBackground );
00492     XGCValues values;
00493 
00494     values.font = sink->ascii_sink.font->fid;
00495     values.graphics_exposures = (Bool) FALSE;
00496     
00497     values.foreground = sink->text_sink.foreground;
00498     values.background = sink->text_sink.background;
00499     sink->ascii_sink.normgc = XtGetGC((Widget)sink, valuemask, &values);
00500     
00501     values.foreground = sink->text_sink.background;
00502     values.background = sink->text_sink.foreground;
00503     sink->ascii_sink.invgc = XtGetGC((Widget)sink, valuemask, &values);
00504     
00505     values.function = GXxor;
00506     values.background = (unsigned long) 0L;     /* (pix ^ 0) = pix */
00507     values.foreground = (sink->text_sink.background ^ 
00508                          sink->text_sink.foreground);
00509     valuemask = GCGraphicsExposures | GCFunction | GCForeground | GCBackground;
00510     
00511     sink->ascii_sink.xorgc = XtGetGC((Widget)sink, valuemask, &values);
00512 }

Here is the caller graph for this function:

static void Initialize ( Widget  request,
Widget  new,
ArgList  args,
Cardinal *  num_args 
) [static]

Definition at line 527 of file AsciiSink.c.

References CreateInsertCursor(), GetGC(), and XawisOff.

00531 {
00532     AsciiSinkObject sink = (AsciiSinkObject) new;
00533 
00534     GetGC(sink);
00535     
00536     sink->ascii_sink.insertCursorOn= CreateInsertCursor(XtScreenOfObject(new));
00537     sink->ascii_sink.laststate = XawisOff;
00538     sink->ascii_sink.cursor_x = sink->ascii_sink.cursor_y = 0;
00539 }

Here is the call graph for this function:

static void Initialize ( void   )  [static]

Referenced by _XawImInitialize(), Java_javasci_SciBooleanArray_Initialize(), Java_javasci_SciComplexArray_Initialize(), Java_javasci_SciDoubleArray_Initialize(), Java_javasci_Scilab_initialize(), Java_javasci_Scilab_Initialize(), and Java_javasci_SciStringArray_Initialize().

Here is the caller graph for this function:

static void InsertCursor ( Widget  w,
Position  x,
Position  y,
XawTextInsertState  state 
) [static]

Definition at line 350 of file AsciiSink.c.

References _AsciiSinkRec::ascii_sink, AsciiSinkPart::cursor_x, AsciiSinkPart::cursor_y, GetCursorBounds(), AsciiSinkPart::insertCursorOn, AsciiSinkPart::laststate, and AsciiSinkPart::xorgc.

00354 {
00355     AsciiSinkObject sink = (AsciiSinkObject) w;
00356     Widget text_widget = XtParent(w);
00357     XRectangle rect;
00358 
00359     sink->ascii_sink.cursor_x = x;
00360     sink->ascii_sink.cursor_y = y;
00361 
00362     GetCursorBounds(w, &rect);
00363     if (state != sink->ascii_sink.laststate && XtIsRealized(text_widget)) 
00364         XCopyPlane(XtDisplay(text_widget),
00365                    sink->ascii_sink.insertCursorOn,
00366                    XtWindow(text_widget), sink->ascii_sink.xorgc,
00367                    0, 0, (unsigned int) rect.width, (unsigned int) rect.height,
00368                    (int) rect.x, (int) rect.y, 1);
00369     sink->ascii_sink.laststate = state;
00370 }

Here is the call graph for this function:

static void InsertCursor (  ) 

Referenced by _XawTextExecuteUpdate(), and _XawTextPrepareToUpdate().

Here is the caller graph for this function:

static int MaxHeight ( Widget  w,
int  lines 
) [static]

Definition at line 627 of file AsciiSink.c.

References _AsciiSinkRec::ascii_sink, and AsciiSinkPart::font.

00630 {
00631   AsciiSinkObject sink = (AsciiSinkObject) w;
00632 
00633   return(lines * (sink->ascii_sink.font->ascent + 
00634                   sink->ascii_sink.font->descent));
00635 }

static int MaxHeight (  ) 

static int MaxLines ( Widget  w,
Dimension  height 
) [static]

Definition at line 606 of file AsciiSink.c.

References _AsciiSinkRec::ascii_sink, and AsciiSinkPart::font.

00609 {
00610   AsciiSinkObject sink = (AsciiSinkObject) w;
00611   int font_height;
00612 
00613   font_height = sink->ascii_sink.font->ascent + sink->ascii_sink.font->descent;
00614   return( ((int) height) / font_height );
00615 }

static int MaxLines (  )  [static]

static Dimension PaintText ( Widget  w,
GC  gc,
Position  x,
Position  y,
unsigned char *  buf,
int  len 
) [static]

Definition at line 210 of file AsciiSink.c.

References _AsciiSinkRec::ascii_sink, _TextRec::core, AsciiSinkPart::font, _TextPart::margin, AsciiSinkPart::normgc, _XawTextMargin::right, _TextRec::text, and width.

Referenced by DisplayText().

00216 {
00217     AsciiSinkObject sink = (AsciiSinkObject) w;
00218     TextWidget ctx = (TextWidget) XtParent(w);
00219 
00220     Position max_x;
00221     Dimension width = XTextWidth(sink->ascii_sink.font, (char *) buf, len); 
00222     max_x = (Position) ctx->core.width;
00223 
00224     if ( ((int) width) <= -x)              /* Don't draw if we can't see it. */
00225       return(width);
00226 
00227     XDrawImageString(XtDisplay(ctx), XtWindow(ctx), gc, 
00228                      (int) x, (int) y, (char *) buf, len);
00229     if ( (((Position) width + x) > max_x) && (ctx->text.margin.right != 0) ) {
00230         x = ctx->core.width - ctx->text.margin.right;
00231         width = ctx->text.margin.right;
00232         XFillRectangle(XtDisplay((Widget) ctx), XtWindow( (Widget) ctx),
00233                        sink->ascii_sink.normgc, (int) x,
00234                        (int) y - sink->ascii_sink.font->ascent, 
00235                        (unsigned int) width,
00236                        (unsigned int) (sink->ascii_sink.font->ascent +
00237                                        sink->ascii_sink.font->descent));
00238         return(0);
00239     }
00240     return(width);
00241 }

Here is the caller graph for this function:

static void Resolve ( Widget  w,
XawTextPosition  pos,
int  fromx,
int  width,
XawTextPosition leftPos,
XawTextPosition rightPos 
) [static]

Definition at line 471 of file AsciiSink.c.

References FALSE, FindPosition(), GETLASTPOS, and XawTextGetSource().

00476 {
00477     int resWidth, resHeight;
00478     Widget source = XawTextGetSource(XtParent(w));
00479 
00480     FindPosition(w, pos, fromx, width, FALSE, leftPos, &resWidth, &resHeight);
00481     if (*leftPos > GETLASTPOS)
00482       *leftPos = GETLASTPOS;
00483     *rightPos = *leftPos;
00484 }

Here is the call graph for this function:

static void Resolve (  ) 

static void SetTabs ( Widget  w,
int  tab_count,
short *  tabs 
) [static]

Definition at line 646 of file AsciiSink.c.

References _XawTextBuildLineTable(), _AsciiSinkRec::ascii_sink, TextSinkPart::char_tabs, FALSE, AsciiSinkPart::font, font, i, _TextPart::lt, _TextPart::redisplay_needed, TextSinkPart::tab_count, TextSinkPart::tabs, _TextRec::text, _AsciiSinkRec::text_sink, XawTextLineTable::top, and TRUE.

00650 {
00651   AsciiSinkObject sink = (AsciiSinkObject) w;
00652   int i;
00653   Atom XA_FIGURE_WIDTH;
00654   unsigned long figure_width = 0;
00655   XFontStruct *font = sink->ascii_sink.font;
00656 
00657 /*
00658  * Find the figure width of the current font.
00659  */
00660 
00661   XA_FIGURE_WIDTH = XInternAtom(XtDisplayOfObject(w), "FIGURE_WIDTH", FALSE);
00662   if ( (XA_FIGURE_WIDTH != None) && 
00663        ( (!XGetFontProperty(font, XA_FIGURE_WIDTH, &figure_width)) ||
00664          (figure_width == 0)) ) 
00665     if (font->per_char && font->min_char_or_byte2 <= '$' &&
00666         font->max_char_or_byte2 >= '$')
00667       figure_width = font->per_char['$' - font->min_char_or_byte2].width;
00668     else
00669       figure_width = font->max_bounds.width;
00670 
00671   if (tab_count > sink->text_sink.tab_count) {
00672     sink->text_sink.tabs = (Position *)
00673         XtRealloc((char *) sink->text_sink.tabs,
00674                   (Cardinal) (tab_count * sizeof(Position)));
00675     sink->text_sink.char_tabs = (short *)
00676         XtRealloc((char *) sink->text_sink.char_tabs,
00677                   (Cardinal) (tab_count * sizeof(short)));
00678   }
00679 
00680   for ( i = 0 ; i < tab_count ; i++ ) {
00681     sink->text_sink.tabs[i] = tabs[i] * figure_width;
00682     sink->text_sink.char_tabs[i] = tabs[i];
00683   }
00684     
00685   sink->text_sink.tab_count = tab_count;
00686 
00687 #ifndef NO_TAB_FIX
00688   {  TextWidget ctx = (TextWidget)XtParent(w);
00689       ctx->text.redisplay_needed = True;
00690       _XawTextBuildLineTable(ctx, ctx->text.lt.top, TRUE);
00691   }
00692 #endif
00693 }

Here is the call graph for this function:

static void SetTabs (  )  [static]

Referenced by SetValues().

Here is the caller graph for this function:

static Boolean SetValues ( Widget  current,
Widget  request,
Widget  new,
ArgList  args,
Cardinal *  num_args 
) [static]

Definition at line 570 of file AsciiSink.c.

References _AsciiSinkRec::ascii_sink, TextSinkPart::background, AsciiSinkPart::display_nonprinting, AsciiSinkPart::echo, AsciiSinkPart::font, TextSinkPart::foreground, GetGC(), _AsciiSinkRec::text_sink, and w.

00574 {
00575     AsciiSinkObject w = (AsciiSinkObject) new;
00576     AsciiSinkObject old_w = (AsciiSinkObject) current;
00577 
00578     if (w->ascii_sink.font != old_w->ascii_sink.font
00579         || w->text_sink.background != old_w->text_sink.background
00580         || w->text_sink.foreground != old_w->text_sink.foreground) {
00581         XtReleaseGC((Widget)w, w->ascii_sink.normgc);
00582         XtReleaseGC((Widget)w, w->ascii_sink.invgc);
00583         XtReleaseGC((Widget)w, w->ascii_sink.xorgc);
00584         GetGC(w);
00585         ((TextWidget)XtParent(new))->text.redisplay_needed = True;
00586     } else {
00587         if ( (w->ascii_sink.echo != old_w->ascii_sink.echo) ||
00588              (w->ascii_sink.display_nonprinting != 
00589                                      old_w->ascii_sink.display_nonprinting) )
00590             ((TextWidget)XtParent(new))->text.redisplay_needed = True;
00591     }
00592     
00593     return False;
00594 }

Here is the call graph for this function:

static Boolean SetValues (  )  [static]


Variable Documentation

AsciiSinkClassRec asciiSinkClassRec

Definition at line 88 of file AsciiSink.c.

WidgetClass asciiSinkObjectClass = (WidgetClass)&asciiSinkClassRec

Definition at line 143 of file AsciiSink.c.

char insertCursor_bits[] = {0x0c, 0x1e, 0x33} [static]

Definition at line 315 of file AsciiSink.c.

XtResource resources[] [static]

Initial value:

 {
    {XtNfont, XtCFont, XtRFontStruct, sizeof (XFontStruct *),
        offset(font), XtRString, XtDefaultFont},
    {XtNecho, XtCOutput, XtRBoolean, sizeof(Boolean),
        offset(echo), XtRImmediate, (XtPointer) True},
    {XtNdisplayNonprinting, XtCOutput, XtRBoolean, sizeof(Boolean),
        offset(display_nonprinting), XtRImmediate, (XtPointer) True},
}

Definition at line 77 of file AsciiSink.c.

Referenced by externaldef(), Initialize(), and LoadResources().


Generated on Sun Mar 4 16:00:53 2007 for Scilab [trunk] by  doxygen 1.5.1