roo_e/thirdparty/grx249/addons/print/grxprn00.h
2022-05-16 17:59:47 -05:00

221 lines
9.8 KiB
C

/*****************************************************************************/
/* */
/* grxprn00.h : Output of graphics on printer from GRX graphic library */
/* Version 0.5 (beta) 98/01/26 Andris Pavenis (pavenis@acad.latnet.lv) */
/* */
/* Version 0.66 98/05/07 H.Schirmer */
/* - made cpp # start on first column */
/* */
/* Version 0.68 98/05/13 H.Schirmer */
/* - clean source for better portability / ANSI-C conformance */
/* */
/* Version 0.7 98/05/20 A.Pavenis */
/* - removed definitions of procedures internal to grxprint.c */
/* (they are now declared static inside grxprint.c) */
/* */
/* This code is port of part of printer BGI driver */
/* (C) 1990-1995 Ullrich von Bassewitz (see copying.uz). */
/* */
/* Full version of printer BGI driver version 4.0 can be found */
/* at URL ftp://ftp.musoftware.com/pub/uz/ */
/* An alternate URL is http://www.lanet.lv/~pavenis/printerbgi+src.zip */
/* */
/*****************************************************************************/
#ifndef __GRXPRN00_H
#define __GRXPRN00_H
#include <setjmp.h>
#ifndef __GRX20_H_INCLUDED__
#include <grx20.h>
#endif
/* */
/* Datentyp BOOLEAN */
/* */
typedef unsigned char BOOLEAN;
#define TRUE 1
#define OK TRUE
#define FALSE 0
/* */
/* Diverse andere Datentypen mit festen Bit-Groessen */
/* */
/*
>>>>> These types should be mapped to the GRX internal types GR_int..u <<<<<
*/
typedef unsigned int WORD;
typedef unsigned char BYTE;
typedef unsigned long DWORD;
/****************************************************************************/
/* */
/* Macros */
/* */
/****************************************************************************/
/* NULL Macro */
#ifndef NULL
#define NULL 0
#endif
/* Die Farbtabelle wird (da nicht verwendet) als Moeglichkeit zur Einstellung*/
/* von diversen Daten von aussen benutzt. Sie heisst daher nicht ColorTable */
/* (wie im SVGA-Treiber), sondern Settings (fuer die aktuelle Tabelle) und */
/* DefaultSettings (fuer die Default-Einstellungen). */
/* Defines zum Zugriff auf die Elemente von Settings und DefaultSettings */
#define djDefQuality (DefaultSettings.Quality)
#define djDefShingling (DefaultSettings.Shingling)
#define djDefDepletion (DefaultSettings.Depletion)
#define djDefMediaType (DefaultSettings.MediaType)
#define djQuality (Settings.Quality)
#define djShingling (Settings.Shingling)
#define djDepletion (Settings.Depletion)
#define djMediaType (Settings.MediaType)
/* RGB Palette. */
struct RGBEntry {
BYTE R, G, B;
};
/****************************************************************************/
/* Konstante fuer das Flags Byte von _DST */
/****************************************************************************/
#define pfIsEpson 0x01 /* Epson-Modus */
/* Nadeldrucker-Flags */
#define pfReverse 0x02 /* Nadelnummerierung umdrehen (EPSON) */
/* Deskjet-Flags */
#define pfSeparateBlack 0x02 /* Separate Schwarz-Plane (Deskjet) */
#define pfDoCompression 0x04 /* TIFF Pacbits Kompression durchfuehren */
#define pfHasPalette 0x08 /* RGB Palette ja/nein */
/* Anzahl Druckermodi */
#define MaxModes 43
/****************************************************************************/
/* Grund-Deskriptor fuer einen Druckermodus */
/****************************************************************************/
/* Die folgende struct enthaelt die Grund-Werte bzw. Funktionen, die sich */
/* nie aendern. Jeder Treiber kann spezielle Funktionen am Ende hinzufuegen.*/
struct _DST {
WORD XDPI; /* Aufloesung in X-Richtung*/
WORD YDPI; /* Aufloesung in Y-Richtung*/
WORD XInch; /* Groesse X in Inch * 1000*/
WORD YInch; /* Groesse Y in Inch * 1000*/
WORD ColorCount; /* Anzahl Farben des Modus*/
BYTE ColorBits; /* Anzahl Bit in denen ein Pixel codiert ist */
BYTE Flags; /* Diverse bitmapped Flags */
char *Name; /* Name des Modes */
void (*Print) ( struct _DST * , int );
/*void (*Print) (); *//* Druck-Routine */
/* Member functions, die obige Flags auswerten, alle inline! */
/*BOOLEAN IsEpson () const { return Flags & pfIsEpson; } */
/*BOOLEAN Reverse () const { return Flags & pfReverse; } */
/*BOOLEAN SeparateBlack () const { return Flags & pfSeparateBlack; } */
/*BOOLEAN DoCompression () const { return Flags & pfDoCompression; } */
/*BOOLEAN HasPalette () const { return Flags & pfHasPalette; } */
};
#define IsEpson(x) (x->Flags & pfIsEpson)
#define Reverse(x) (x->Flags & pfReverse)
#define hasSeparateBlack(x) (x->Flags & pfSeparateBlack)
#define DoCompression(x) (x->Flags & pfDoCompression)
#define HasPalette(x) (x->Flags & pfHasPalette)
/* Der Zeiger auf die aktuelle DST*/
/* extern struct _DST *DSTPtr; */
/* Die Tabelle mit den Zeigern auf die Modi*/
extern struct _DST *DSTTable [MaxModes];
/* Groesse des Ausgabepuffers*/
#define PrintBufSize 1024
/*****************************************************************************/
/* Dot matrix printers related procedures */
/*****************************************************************************/
/* */
/* Die folgende Struktur enthaelt einen Device-Status-Block. Die ersten */
/* Werte muessen immer dieselben sein, da sie vom Grafik-Modul so erwartet */
/* werden. Im Anschluss kommen eigene Variablen, die von Drucker zu Drucker */
/* bzw. besser von Treiber zu Treiber verschieden sein koennen. */
/* */
/*****************************************************************************/
struct EpsonDST {
struct _DST DST; /* Orginal-DST */
BYTE ColBytes; /* Anzahl Bytes / Druckerspalte */
BYTE PassCount; /* Wie oft ueberdrucken */
char *LineFeed1; /* Normaler Linefeed */
char *LineFeed2; /* Linefeed zwischen Ueberdrucken */
char *GraphicsOn; /* Grafik einschalten (mit Init) */
char *GraphicsOff; /* Grafik ausschalten */
char *PreBytes; /* String vor Grafik-Daten */
char *PostBytes; /* String nach Grafik-Daten */
};
/****************************************************************************/
/* */
/* Universelle Ausgaberoutine fuer Nadeldrucker. */
/* */
/* Parameter: */
/* (keine) */
/* */
/* Ergebnisse: */
/* (keine) bzw. hoffentlich ein Ausdruck... */
/* */
/****************************************************************************/
void EpsonPrint ( struct _DST * DSTPtr , int PRNHandle );
/* Universelle Drucker-Routine fuer Nadeldrucker */
/****************************************************************************/
/* Laser and DeskJet printers related procedures */
/****************************************************************************/
/* */
/* Die folgende Struktur enthaelt fuer den LaserJet angepassten Device- */
/* Status Block. */
/* */
/****************************************************************************/
struct LJDST {
struct _DST DST; /* Orginal-DST */
char *GraphicsOn; /* Grafik einschalten (mit Init) */
};
void LaserPrint ( struct _DST * DSTPtr , int PRNHandle );
#endif