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;
@endThese are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.