This is VideoTextView.h in view mode; [Download] [Up]
/* (c) 1992 Dirk Schwarzhans, Matthias Braun Use under the terms of the GNU General Public License */ #import <appkit/View.h> #import <appkit/NXImage.h> #import <appkit/Pasteboard.h> #import <dpsclient/wraps.h> #import <dpsclient/psops.h> #import <dpsclient/dpsNeXT.h> #import <objc/Storage.h> #define ROWS 24 // Anzahl der Textzeilen und -spalten #define COLUMNS 40 #define INFO_OFFSET 1000 // Beginn der Status-Informationen // Video-Text Steuerzeichen typedef enum {ALPHABLACK = 0, ALPHARED = 1, ALPHAGREEN = 2, ALPHAYELLOW = 3, ALPHABLUE = 4, ALPHAMAGENTA = 5, ALPHACYAN = 6, ALPHAWHITE = 7, FLASH = 8, STEADY = 9, ENDBOX = 10, STARTBOX = 11, NORMAL = 12, DOUBLE = 13, SO = 14, SI = 15, GRAPHBLACK = 16, GRAPHRED = 17, GRAPHGREEN = 18, GRAPHYELLOW = 19, GRAPHBLUE = 20, GRAPHMAGENTA = 21, GRAPHCYAN = 22, GRAPHWHITE = 23, HIDE = 24, CONGRAPH = 25, SEPGRAPH = 26, ESC = 27, BLACKBGND = 28, NEWBGND = 29, HOLDGRAPH = 30, RELEASEGRAPH = 31} VTCtrl; #define ISCTRL(c) ((c) < 32) // pröft auf Steuerzeichen #define CTRL2COLOR(a) ((a) & 7) // berechnet die Farbe aus einen Steuerzeichen #define VALIDBITS(a) ((a) & 0x7F) // relevante Bits för Video-Text-Daten #define ISGRAPHICCHAR(a) ((a) & 0x20) // Zeichen ist Grafikzeichen // Video-Text Farben typedef enum {VT_BLACK = 0, VT_RED = 1, VT_GREEN = 2, VT_YELLOW = 3, VT_BLUE = 4, VT_MAGENTA = 5, VT_CYAN = 6, VT_WHITE = 7} VTColor; #define VT_COLORS 8 // mögliche ZeichensÙtze: Text, zusammenhÙngende Grafik, separierte Grafik typedef enum {TEXTFONT = 0, CONGRAPHFONT = 1, SEPGRAPHFONT = 2} VTFont; // mögliche Schriftgröûen typedef enum {NORMALSIZE, DOUBLESIZE} VTFontSize; // Video-Text ZeichensÙtze typedef enum {ENGLISH = 0, GERMAN = 4, SWEDISH = 2, ITALIAN = 5, FRENCH = 1, SPANISH = 3}VTCharSet; #define VT_CHARSETS 6 // View-interne Darstellung eines Zeichens einer Video-Text-Seite // nach Auswertung aller Steuerzeichen typedef struct { VTColor bgndColor; // Hintergrundfarbe VTColor charColor; // (*) Zeichenfarbe VTFont font; // (*) Zeichentyp VTFontSize fontSize; // (*) Zeichenhöhe BOOL flashing; // blinkend BOOL hidden; // versteckt BOOL textBreak; // einer der (*)-Parameter hat gewechselt unsigned char charCode; // Zeichenkode }VTChar; typedef struct { short row, column; }Position; // för Zeichenpositionen typedef struct { BOOL empty; BOOL appendCR; Position start; // Startposition Position end; // Endposition }CharSeq; // Sequenz von Zeichen z.B. aktuelle Selektion typedef enum {FLASH_HIDE, FLASH_SHOW} FlashAction; @interface VideoTextView:View { id delegate; float line0_y; // y-Koordinate von Zeile 0 float lineHeight; // Höhe einer Zeile float charWidth; // Breite eines Zeichens NXImage *background; // Bitmap mit den Hintergrundfarben NXImage *foreground; // Bitmap mit dem Text Storage *hiddenList; // Liste aller versteckten Bereiche Storage *flashingList; // Liste aller blinkenden Bereiche BOOL showHiddenText; // versteckte Texte zeigen oder nicht BOOL allowFlashing; // blinkende Texte blinken lassen double flashDelay; // Zeit [s] zwischen Zustandwechseln FlashAction nextAction; // nÙchster auszuföhrender Wechsel DPSTimedEntry flashTimedEntry; // Identifikationsnummer BOOL dataValid; // Flag:Speicher enthÙlt göltige Seite VTChar decodedPage[ROWS][COLUMNS]; // Daten aller Zeichen char doubleTab[ROWS]; // Verzeichnis doppelt hoher Zeilen VTCharSet language; // Zeichensatz der aktuellen Seite float fontSize; // Schriftgröûe der PostScript-Fonts unsigned char convtab[128]; // Zeichenkonvertierung VT -> NeXT NXColor colorTab[VT_COLORS]; // Liste zur Farbumsetzung CharSeq selection; // selektierter Bereich (z.B. för COPY) BOOL searchOn2Click; // Verhalten bei Doppel-Klick Position draggPos; // för Koordinaten wÙhrend des Draggens Position draggStart; // Start-Koordinaten des Draggens unsigned char clickCount; // wichtig förs Draggen BOOL pageRequested; // Seitenanforderung ausgelöst } - initFrame:(const NXRect *)frameRect; - free; - drawSelf:(const NXRect *)rects :(int)rectCount; - setPageData:(const unsigned char *)data; - setFontSize:(float)points; - (float)fontSize; - setDelegate:object; - delegate; - setColorTab:(NXColor *)newColors; - (const NXColor *)colorTab; - resetColorTab; - showHiddenText:(BOOL)mode; - (BOOL)textHidden; - allowFlashing:(BOOL)mode; - (BOOL)isFlashing; - setSearchOn2Click:(BOOL)mode; - (BOOL)searchOn2Click; - (BOOL)hasSelection; - clearSelection; - selectAll:sender; - (BOOL)acceptsFirstResponder; - copy:sender; - cut:sender; - paste:sender; - validRequestorForSendType:(NXAtom)sendType andReturnType:(NXAtom)returnType; - (BOOL)writeSelectionToPasteboard:pboard types:(NXAtom *)types; // Delegate-Methoden - requestPage:(int)page subpage:(int)subpage forWindow:(Window *)window; - dontDisturb:(BOOL)mode; // private Methoden: nicht benutzen - mouseDown:(NXEvent *)event; - mouseDragged:(NXEvent *)event; - mouseUp:(NXEvent *)event; - makeTextVisible:(BOOL)mode useList:(Storage *)list; - flashText; - startFlashing; - stopFlashing; - generateImages:foregroundFocus :backgroundFocus hasAlpha:(BOOL)alphaMode; - drawSelection:(CharSeq *)sequence mode:(BOOL)show; - (float)bottomOfLine:(int)row; - (float)topOfLine:(int)row; - (float)heightOfLine:(int)row; - (int)rowCol2Offset:(Position *)pos; @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.