#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 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().
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 | ( | ) |
| 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] |
| 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 | ( | ) |
| 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 | ( | ) |
| 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:

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] |
| 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] |
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().
1.5.1