/*
* $Header: ScribePSBrowserP.h,v 1.16 88/02/26 08:56:00 swick Exp $
*/


/* 
 * ScribePSBrowserP.h - Private definitions for ScribePSBrowser widget
 * 
 */

#ifndef _XtScribePSBrowserP_h
#define _XtScribePSBrowserP_h

#include <SPBrowser.h>
#include <X11/SimpleP.h>

/***********************************************************************
 *
 * ScribePSBrowser Widget Private Data
 *
 ***********************************************************************/

/************************************
 *
 *  Class structure
 *
 ***********************************/


   /* New fields for the ScribePSBrowser widget class record */
typedef struct _ScribePSBrowserClass 
  {
    int fonts_inited;
  } ScribePSBrowserClassPart;

   /* Full class record declaration */
typedef struct _ScribePSBrowserClassRec {
    CoreClassPart	core_class;
    SimpleClassPart	simple_class;
    ScribePSBrowserClassPart    scribePSBrowser_class;
} ScribePSBrowserClassRec;

extern ScribePSBrowserClassRec scribePSBrowserClassRec;

/***************************************
 *
 *  Instance (widget) structure 
 *
 **************************************/

#define MAX_DINKS        500  /* maximum of 500 strings in dink table */
#define MAX_DINK_BUFFER 2000  /* maximum of 2000 characters on page */

#define MAXPAGE   20
#define MAX_GOTO_BUFFER 20

struct _dink_table_rec
{
  int x;
  int y;    /* really the baseline */
  int lower_y;    /* bottom of descenders */
  int upper_y;    /* top of ascenders */
  int right_x;
  int font_table_index;
  char *string_ptr;
  int length;
};

    /* New fields for the ScribePSBrowser widget record */
typedef struct {
    /* resources */
    Pixel foreground;
    XtCallbackList callbacks;
    String  filename;
    long    endpos;
    long    startpos;
    double  height_in_inches;
    double  width_in_inches;
    Boolean fullDocument;
    /* private state */
    Pixmap      gray_pixmap;
    GC          the_GC;
    long        page[MAXPAGE];
    int         curpage;
    struct _dink_table_rec dink_table[MAX_DINKS];
    char       *next_dink_buffer;
    int        next_dink_index;
    char       dink_buffer[MAX_DINK_BUFFER];
    double     pixels_per_vertical_inch;
    double     pixels_per_horz_inch;
    FILE       *fp;
    Boolean    firstFlag;
    Boolean    errorStateFlag;
    char       gotoBuffer[MAX_GOTO_BUFFER];
    int        nextGotoChar;
} ScribePSBrowserPart;

   /* Full widget declaration */
typedef struct _ScribePSBrowserRec {
    CorePart         core;
    SimplePart	     simple;
    ScribePSBrowserPart      scribePSBrowser;
} ScribePSBrowserRec;

#endif _XtCommandP_h


