1151497Sru/* 2151497Sru * $XConsortium: DviP.h,v 1.5 89/07/22 19:44:08 keith Exp $ 3151497Sru */ 4151497Sru 5151497Sru/* 6151497Sru * DviP.h - Private definitions for Dvi widget 7151497Sru */ 8151497Sru 9151497Sru#ifndef _XtDviP_h 10151497Sru#define _XtDviP_h 11151497Sru 12151497Sru#include "Dvi.h" 13151497Sru#include "DviChar.h" 14151497Sru#include "device.h" 15151497Sru 16151497Sru/*********************************************************************** 17151497Sru * 18151497Sru * Dvi Widget Private Data 19151497Sru * 20151497Sru ***********************************************************************/ 21151497Sru 22151497Sru/************************************ 23151497Sru * 24151497Sru * Class structure 25151497Sru * 26151497Sru ***********************************/ 27151497Sru 28151497Sru/* Type for save method. */ 29151497Sru 30151497Srutypedef void (*DviSaveProc)(Widget, FILE *); 31151497Sru 32151497Sru/* 33151497Sru * New fields for the Dvi widget class record 34151497Sru */ 35151497Sru 36151497Sru 37151497Srutypedef struct _DviClass { 38151497Sru DviSaveProc save; 39151497Sru} DviClassPart; 40151497Sru 41151497Sru/* 42151497Sru * Full class record declaration 43151497Sru */ 44151497Sru 45151497Srutypedef struct _DviClassRec { 46151497Sru CoreClassPart core_class; 47151497Sru DviClassPart command_class; 48151497Sru} DviClassRec; 49151497Sru 50151497Sruextern DviClassRec dviClassRec; 51151497Sru 52151497Sru/*************************************** 53151497Sru * 54151497Sru * Instance (widget) structure 55151497Sru * 56151497Sru **************************************/ 57151497Sru 58151497Sru/* 59151497Sru * a list of fonts we've used for this widget 60151497Sru */ 61151497Sru 62151497Srutypedef struct _dviFontSizeList { 63151497Sru struct _dviFontSizeList *next; 64151497Sru int size; 65151497Sru char *x_name; 66151497Sru XFontStruct *font; 67151497Sru int doesnt_exist; 68151497Sru} DviFontSizeList; 69151497Sru 70151497Srutypedef struct _dviFontList { 71151497Sru struct _dviFontList *next; 72151497Sru char *dvi_name; 73151497Sru char *x_name; 74151497Sru int dvi_number; 75151497Sru Boolean initialized; 76151497Sru Boolean scalable; 77151497Sru DviFontSizeList *sizes; 78151497Sru DviCharNameMap *char_map; 79151497Sru DeviceFont *device_font; 80151497Sru} DviFontList; 81151497Sru 82151497Srutypedef struct _dviFontMap { 83151497Sru struct _dviFontMap *next; 84151497Sru char *dvi_name; 85151497Sru char *x_name; 86151497Sru} DviFontMap; 87151497Sru 88151497Sru#define DVI_TEXT_CACHE_SIZE 256 89151497Sru#define DVI_CHAR_CACHE_SIZE 1024 90151497Sru 91151497Srutypedef struct _dviCharCache { 92151497Sru XTextItem cache[DVI_TEXT_CACHE_SIZE]; 93151497Sru char adjustable[DVI_TEXT_CACHE_SIZE]; 94151497Sru char char_cache[DVI_CHAR_CACHE_SIZE]; 95151497Sru int index; 96151497Sru int max; 97151497Sru int char_index; 98151497Sru int font_size; 99151497Sru int font_number; 100151497Sru XFontStruct *font; 101151497Sru int start_x, start_y; 102151497Sru int x, y; 103151497Sru} DviCharCache; 104151497Sru 105151497Srutypedef struct _dviState { 106151497Sru struct _dviState *next; 107151497Sru int font_size; 108151497Sru int font_number; 109151497Sru int x; 110151497Sru int y; 111151497Sru} DviState; 112151497Sru 113151497Srutypedef struct _dviFileMap { 114151497Sru struct _dviFileMap *next; 115151497Sru long position; 116151497Sru int page_number; 117151497Sru} DviFileMap; 118151497Sru 119151497Sru/* 120151497Sru * New fields for the Dvi widget record 121151497Sru */ 122151497Sru 123151497Srutypedef struct { 124151497Sru /* 125151497Sru * resource specifiable items 126151497Sru */ 127151497Sru char *font_map_string; 128151497Sru unsigned long foreground; 129151497Sru unsigned long background; 130151497Sru int requested_page; 131151497Sru int last_page; 132151497Sru XFontStruct *default_font; 133151497Sru FILE *file; 134151497Sru Boolean noPolyText; 135151497Sru Boolean seek; /* file is "seekable" */ 136151497Sru int default_resolution; 137151497Sru /* 138151497Sru * private state 139151497Sru */ 140151497Sru FILE *tmpFile; /* used when reading stdin */ 141151497Sru char readingTmp; /* reading now from tmp */ 142151497Sru char ungot; /* have ungetc'd a char */ 143151497Sru GC normal_GC; 144151497Sru GC fill_GC; 145151497Sru DviFileMap *file_map; 146151497Sru DviFontList *fonts; 147151497Sru DviFontMap *font_map; 148151497Sru int current_page; 149151497Sru int font_size; 150151497Sru int font_number; 151151497Sru DeviceFont *device_font; 152151497Sru int device_font_number; 153151497Sru Device *device; 154151497Sru int native; 155151497Sru int device_resolution; 156151497Sru int display_resolution; 157151497Sru int paperlength; 158151497Sru int paperwidth; 159151497Sru double scale_factor; /* display res / device res */ 160151497Sru int sizescale; 161151497Sru int line_thickness; 162151497Sru int line_width; 163151497Sru 164151497Sru#define DVI_FILL_MAX 1000 165151497Sru 166151497Sru int fill; 167151497Sru#define DVI_FILL_WHITE 0 168151497Sru#define DVI_FILL_GRAY 1 169151497Sru#define DVI_FILL_BLACK 2 170151497Sru int fill_type; 171151497Sru Pixmap gray[8]; 172151497Sru int backing_store; 173151497Sru XFontStruct *font; 174151497Sru int display_enable; 175151497Sru struct ExposedExtents { 176151497Sru int x1, y1, x2, y2; 177151497Sru } extents; 178151497Sru DviState *state; 179151497Sru DviCharCache cache; 180151497Sru int text_x_width; 181151497Sru int text_device_width; 182151497Sru int word_flag; 183151497Sru} DviPart; 184151497Sru 185151497Sruint DviGetAndPut(DviWidget, int *); 186151497Sru#define DviGetIn(dw,cp)\ 187151497Sru (dw->dvi.tmpFile ? (\ 188151497Sru DviGetAndPut (dw, cp) \ 189151497Sru ) :\ 190151497Sru (*cp = getc (dw->dvi.file))\ 191151497Sru) 192151497Sru 193151497Sru#define DviGetC(dw, cp)\ 194151497Sru (dw->dvi.readingTmp ? (\ 195151497Sru ((*cp = getc (dw->dvi.tmpFile)) == EOF) ? (\ 196151497Sru fseek (dw->dvi.tmpFile, 0l, 2),\ 197151497Sru (dw->dvi.readingTmp = 0),\ 198151497Sru DviGetIn (dw,cp)\ 199151497Sru ) : (\ 200151497Sru *cp\ 201151497Sru )\ 202151497Sru ) : (\ 203151497Sru DviGetIn(dw,cp)\ 204151497Sru )\ 205151497Sru) 206151497Sru 207151497Sru#define DviUngetC(dw, c)\ 208151497Sru (dw->dvi.readingTmp ? (\ 209151497Sru ungetc (c, dw->dvi.tmpFile)\ 210151497Sru ) : ( \ 211151497Sru (dw->dvi.ungot = 1),\ 212151497Sru ungetc (c, dw->dvi.file))) 213151497Sru 214151497Sru/* 215151497Sru * Full widget declaration 216151497Sru */ 217151497Sru 218151497Srutypedef struct _DviRec { 219151497Sru CorePart core; 220151497Sru DviPart dvi; 221151497Sru} DviRec; 222151497Sru 223151497Sru#define InheritSaveToFile ((DviSaveProc)_XtInherit) 224151497Sru 225151497SruXFontStruct *QueryFont (DviWidget, int, int); 226151497Sru 227151497SruDviCharNameMap *QueryFontMap (DviWidget, int); 228151497Sru 229151497SruDeviceFont *QueryDeviceFont (DviWidget, int); 230151497Sru 231151497Sruchar *GetWord(DviWidget, char *, int); 232151497Sruchar *GetLine(DviWidget, char *, int); 233151497Sru#endif /* _XtDviP_h */ 234