home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gold Fish 1
/
GoldFishApril1994_CD2.img
/
d4xx
/
d487
/
pprint
/
source
/
pprint.c
< prev
next >
Wrap
C/C++ Source or Header
|
1991-05-10
|
32KB
|
1,145 lines
/************************************************************************
* *
* PPrint *
* *
*-----------------------------------------------------------------------*
* *
* Endlich ein vernünftiges Utility, für den User, der einfach nur *
* seine Texte vernünftig ausdrucken will. *
* *
*-----------------------------------------------------------------------*
* *
* V 1.10 ©1991 by Marc Jackisch *
* *
************************************************************************/
#include <exec/types.h>
#include <exec/memory.h>
#include <intuition/intuition.h>
#include <libraries/dos.h>
#include <libraries/dosextens.h>
#include <libraries/reqbase.h>
#include <devices/printer.h>
#include <private/help.h>
#include <private/deva.h>
#include <proto/exec.h>
#include <proto/dos.h>
#include <proto/intuition.h>
#include <proto/graphics.h>
#include <proto/reqproto.h>
#include "settings.h"
#include "PPrintX.h"
/***************************************
Definitions
***************************************/
#define RP ( FirstWindow->RPort )
#define PRTLEN sizeof( struct IODRPReq )
/***************************************
Globals
***************************************/
LONG __far _stack = 4000;
char __far *_procname = "PPrint-procedure";
LONG __far _priority = 0;
LONG __far _BackGroundIO = 0;
struct IntuitionBase *IntuitionBase;
struct GfxBase *GfxBase;
struct ReqBase *ReqBase;
struct IODRPReq *GPrtReq;
struct IOStdReq *PrtReq;
struct IOPrtCmdReq *CmdReq;
struct Window *FirstWindow;
struct Screen *FirstScreen;
struct Process *MyProcess;
APTR window_save = NULL;
BOOL gRun;
LONG Memsize = 0L;
UBYTE *ActFile = NULL;
struct Settings Sets[ 10 ];
SHORT ActSet = 1;
SHORT CurLay = 1; /* Current Layout */
USHORT OTSize;
SHORT Topline = 0;
UBYTE LineBuf[ 128 ];
SHORT LAYOUT_TOP,
NUM_LINES,
NUMTOP,
SECTOP,
STRINGTOP,
ACTIONTOP,
PT1TOP,
PT2TOP,
SWITCHTOP;
UBYTE *HashTab[ 5120 ];
SHORT NumLines;
/***************************************
Constants
***************************************/
UBYTE ScTitle[] =
"PPrint V1.10 File: < none > ";
struct NewScreen FirstNewScreen =
{
0, 0,
640, STDSCREENHEIGHT,
3, 0, 1,
HIRES,
CUSTOMSCREEN,
NULL,
ScTitle,
NULL,
NULL
};
struct NewWindow FirstNewWindow =
{
0, 0,
640, 0,
0, 1,
RAWKEY | GADGETUP | MENUPICK | MOUSEBUTTONS,
SMART_REFRESH | ACTIVATE | BORDERLESS | BACKDROP,
NULL,
NULL,
NULL,
NULL,
NULL,
0,0,0,0,
CUSTOMSCREEN
};
UBYTE LoadString[] = "Open a file";
struct FileInfoBlock *FIB;
UBYTE Dir[ DSIZE + 1 ],
File[ FCHARS + 1 ],
Path[ DSIZE + FCHARS + 2 ];
struct FileRequester FReq =
{
0,
LoadString,
Dir,
File,
Path,
NULL,
0,
24,
30,
13,
FRQCACHINGM | FRQCACHEPURGEM,
2,1,2,0,0,0,0,1,1,3,3,3,3
};
/***************************************
Declarations
***************************************/
VOID RawkeyA( USHORT, USHORT );
VOID MenuA( USHORT );
VOID GadgetA( struct Gadget * );
BOOL Open_All( VOID );
VOID Close_All( VOID );
VOID NewSet( SHORT );
VOID NewStyle( SHORT );
VOID NewCond( BOOL );
VOID NewLetter( BOOL );
VOID NewLsp( BOOL );
VOID NewNuming( SHORT );
VOID Layout1( VOID );
VOID Layout2( VOID );
VOID RefreshTSize( VOID );
VOID RefreshRMarg( VOID );
VOID RefreshLMarg( VOID );
VOID RefreshPLength( VOID );
VOID RefreshPWidth( VOID );
VOID DoRefresh( VOID );
VOID DoInits( SHORT );
IMPORT VOID About( VOID );
IMPORT VOID Load( VOID );
IMPORT VOID AskTSize( VOID );
IMPORT VOID AskRMarg( VOID );
IMPORT VOID AskLMarg( VOID );
IMPORT VOID AskPLength( VOID );
IMPORT VOID AskPWidth( VOID );
IMPORT VOID LoadDefSets( VOID );
IMPORT VOID SaveSettings( VOID );
IMPORT VOID LoadSettings( VOID );
IMPORT VOID PreInit( VOID );
IMPORT VOID PrintPageWise( VOID );
IMPORT VOID PrintAll( VOID );
IMPORT VOID ShowText( SHORT );
/************************************************************************
* *
* main *
* *
*-----------------------------------------------------------------------*
* *
* No CLI - parameters this time, so we set ourselves to VOID *
* *
*-----------------------------------------------------------------------*
* *
* Parameters : *
* none *
* *
* Returns : *
* none *
* *
************************************************************************/
VOID main( VOID )
{
struct BackMsg *BM;
/***/
gRun = Open_All();
while( gRun )
{
BM = FetchMsg( FirstWindow );
switch( BM->Class )
{
case RAWKEY : RawkeyA( BM->Code, BM->Qual );
break;
case MENUPICK : MenuA( BM->Code );
break;
case GADGETUP : GadgetA(( struct Gadget * )BM->Adr );
break;
default : break;
}
}
if( ActFile )
free( ActFile );
PurgeFiles( &FReq );
Close_All();
}
/************************************************************************
* *
* RawkeyA *
* *
*-----------------------------------------------------------------------*
* *
* Deals with Rawkey - messges. *
* *
*-----------------------------------------------------------------------*
* *
* Parameters : *
* cd : RAWKEY - code *
* qu : Qualifier *
* *
************************************************************************/
VOID RawkeyA( USHORT cd, USHORT qu )
{
qu &= ~( IEQUALIFIER_RELATIVEMOUSE | IEQUALIFIER_REPEAT );
/***************************************
Copy of the menus
***************************************/
if( qu == IEQUALIFIER_LCOMMAND )
{
switch( cd )
{
case 0x20 : About(); /* About */
break;
case 0x18 : Load(); /* Load */
break;
case 0x19 : PrintPageWise(); /* Print */
break;
case 0x10 : if( TwoGadRequest( "Do you really\nwant to quit ?" ))
gRun = FALSE; /* Quit */
break;
case 0x28 : LoadSettings(); /* Load Sets */
break;
case 0x21 : SaveSettings(); /* Save Sets */
break;
case 0x13 : AskRMarg(); /* Right Margin */
break;
case 0x37 : AskLMarg(); /* Left Margin */
break;
case 0x14 : AskTSize(); /* Tab size */
break;
case 0x11 : AskPWidth(); /* PWidth */
break;
case 0x25 : AskPLength(); /* PLen */
break;
default : break;
}
return;
}
/***************************************
Other Commands
***************************************/
if( qu == IEQUALIFIER_NUMERICPAD )
{
switch( cd )
{
case 0x1e : ShowText(( SHORT )( Topline + 1 ));
break;
case 0x3e : ShowText(( SHORT )( Topline - 1 ));
break;
case 0x1f : ShowText(( SHORT )( Topline + 12 ));
break;
case 0x3f : ShowText(( SHORT )( Topline - 12 ));
break;
case 0x1d : ShowText( NumLines );
break;
case 0x3d : ShowText( 0 );
break;
default : break;
}
}
if( qu == 0 )
{
switch( cd )
{
case 0x01 :
case 0x02 :
case 0x03 :
case 0x04 :
case 0x05 :
case 0x06 :
case 0x07 :
case 0x08 :
case 0x09 :
case 0x0a : cd %= 10;
if( CurLay == 2 )
Layout1();
NewSet(( SHORT )cd );
break;
case 0x44 : if( CurLay == 1 )
Layout2();
else
Layout1();
break;
case 0x4c : ShowText(( SHORT )( Topline - 1 ));
break;
case 0x4d : ShowText(( SHORT )( Topline + 1 ));
break;
case 0x5d : PrintAll();
break;
case 0x40 : NewStyle(( SHORT )(( Sets[ ActSet ].Style + 1 ) % 3 ));
break;
case 0x33 : NewCond(( BOOL )( Sets[ ActSet ].Cond ^ TRUE ));
break;
case 0x28 : NewLetter(( BOOL )( Sets[ ActSet ].LetterQ ^ TRUE ));
break;
case 0x20 : NewLsp(( BOOL )( Sets[ ActSet ].LSpace6 ^ TRUE ));
break;
case 0x36 : NewNuming(( SHORT )(( Sets[ ActSet ].Numb + 1 ) % 4 ));
break;
default : break;
}
return;
}
}
/************************************************************************
* *
* MenuA *
* *
* Na klar, die Menüauswertung ... *
* *
* Parameter : *
* cd : Code in der empfangenen Message *
* *
* Rückgabe : *
* keine *
* *
************************************************************************/
VOID MenuA( USHORT cd )
{
USHORT Menu, Item;
struct MenuItem *NxMen;
/***/
Menu = MENUNUM( cd );
Item = ITEMNUM( cd );
NxMen = ItemAddress( FirstWindow->MenuStrip, cd );
switch( Menu )
{
case 0:
switch( Item )
{
case 0: if( TwoGadRequest( "Do you really\nwant to quit ?" ))
gRun = FALSE; /* Quit */
break;
case 1: PrintPageWise(); /* Print */
break;
case 2: Load(); /* Load */
break;
case 3: About(); /* About */
break;
default: break;
}
break;
case 1:
switch( Item )
{
case 0: SaveSettings(); /* Save Sets */
break;
case 1: LoadSettings(); /* Load Sets */
break;
case 2: AskRMarg(); /* Right Margin */
break;
case 3: AskLMarg(); /* Left Margin */
break;
case 4: AskTSize(); /* Tab size */
break;
case 5: AskPWidth(); /* PWidth */
break;
case 6: AskPLength(); /* PLen */
break;
default: break;
}
break;
default:
break;
}
if( NxMen ) MenuA( NxMen->NextSelect );
}
/************************************************************************
* *
* GadgetA *
* *
*-----------------------------------------------------------------------*
* *
* Deals with Gadgets ... *
* *
*-----------------------------------------------------------------------*
* *
* Parameters : *
* gad : Pointer to the gadget triggering the message *
* *
* Returns : *
* none *
* *
************************************************************************/
VOID GadgetA( struct Gadget *gad )
{
switch( gad->GadgetID )
{
case 0 :
case 1 :
case 2 :
case 3 :
case 4 :
case 5 :
case 6 :
case 7 :
case 8 :
case 9 : NewSet( gad->GadgetID );
break;
case 10 : NewStyle(( SHORT )(( Sets[ ActSet ].Style + 1 ) % 3 ));
break;
case 11 : NewCond(( BOOL )( Sets[ ActSet ].Cond ^ TRUE ));
break;
case 12 : NewLetter(( BOOL )( Sets[ ActSet ].LetterQ ^ TRUE ));
break;
case 13 : NewLsp(( BOOL )( Sets[ ActSet ].LSpace6 ^ TRUE ));
break;
case 14 : if(( RMarg_info.LongInt >= 0 )&&( RMarg_info.LongInt > Sets[ ActSet ].LMarg ))
Sets[ ActSet ].RMarg = RMarg_info.LongInt;
else
RefreshRMarg();
break;
case 15 : if(( LMarg_info.LongInt >= 0 )&&( LMarg_info.LongInt < Sets[ ActSet ].RMarg ))
Sets[ ActSet ].LMarg = LMarg_info.LongInt;
else
RefreshLMarg();
break;
case 16 : if(( TSize_info.LongInt >= 0 )&&( TSize_info.LongInt <= 12 ))
{
Sets[ ActSet ].Tabsize = TSize_info.LongInt;
if( OTSize != Sets[ ActSet ].Tabsize )
{
ShowText( Topline );
OTSize = Sets[ ActSet ].Tabsize;
}
}
else
RefreshTSize();
break;
case 100: NewNuming(( SHORT )(( Sets[ ActSet ].Numb + 1 ) % 4 ));
break;
case 101: if( PLength_info.LongInt > 0 )
Sets[ ActSet ].PageLen = PLength_info.LongInt;
else
RefreshPLength();
break;
case 102: if( PWidth_info.LongInt > 0 )
Sets[ ActSet ].PageWidth = PWidth_info.LongInt;
else
RefreshPWidth();
break;
case 1000: Layout2();
break;
case 1001: Layout1();
break;
case 2000: PreInit();
break;
case 2001: PrintPageWise();
break;
case 2002: PrintAll();
break;
default : break;
}
}
/************************************************************************
* *
* Open_All *
* *
*-----------------------------------------------------------------------*
* *
* This time we open : intuition.library *
* graphics.library *
* req.library *
* FirstScreen *
* FirstWindow *
* *
*-----------------------------------------------------------------------*
* *
* Parameters : *
* none *
* *
* Returns : *
* Boolean value : TRUE, if everything is OK; FALSE, if an error *
* occured. *
* *
************************************************************************/
BOOL Open_All( VOID )
{
if(!( FIB = ( struct FileInfoBlock * )AllocMem( sizeof( struct FileInfoBlock ), MEMF_CHIP )))
return FALSE;
if(!( IntuitionBase = ( struct IntuitionBase * )OpenLibrary( "intuition.library", 0L )))
return FALSE;
if(!( GfxBase = ( struct GfxBase * )OpenLibrary( "graphics.library", 0L )))
return FALSE;
if(!( ReqBase = ( struct ReqBase * )OpenLibrary( "req.library", 0L )))
return FALSE;
if( Open_Device( "printer.device", 0L, ( CPTR * )&GPrtReq, 0, PRTLEN ) == FALSE )
return FALSE;
else
{
PrtReq = ( struct IOStdReq * )GPrtReq;
CmdReq = ( struct IOPrtCmdReq * )GPrtReq;
}
if(!( FirstScreen = ( struct Screen * )OpenScreen( &FirstNewScreen )))
return FALSE;
DoInits( FirstScreen->Height );
SetRGB4( &FirstScreen->ViewPort, 4, 0x00, 0x00, 0x00 );
SetRGB4( &FirstScreen->ViewPort, 5, 0x00, 0x00, 0x00 );
SetRGB4( &FirstScreen->ViewPort, 6, 0x00, 0x00, 0x00 );
SetRGB4( &FirstScreen->ViewPort, 7, 0x00, 0x00, 0x00 );
FirstNewWindow.Screen = FirstScreen;
FirstNewWindow.FirstGadget = &Switch1;
if(!( FirstWindow = ( struct Window * )OpenWindow( &FirstNewWindow )))
return FALSE;
SetMenuStrip( FirstWindow, &Project );
MyProcess = ( struct Process * )FindTask( NULL );
window_save = MyProcess->pr_WindowPtr;
MyProcess->pr_WindowPtr = ( APTR )FirstWindow;
SetAPen( RP, 1 );
LoadDefSets();
DrawImage( RP, &Layout_image, 0, LAYOUT_TOP );
NewSet( 0 );
getcd( 0, Dir ); /* Current directory path to "Dir" */
SetRGB4( &FirstScreen->ViewPort, 4, 0x0f, 0x0f, 0x0f );
SetRGB4( &FirstScreen->ViewPort, 5, 0x0c, 0x0c, 0x0d );
SetRGB4( &FirstScreen->ViewPort, 6, 0x08, 0x08, 0x09 );
SetRGB4( &FirstScreen->ViewPort, 7, 0x05, 0x05, 0x06 );
return TRUE;
}
/************************************************************************
* *
* Close_All *
* *
*-----------------------------------------------------------------------*
* *
* As ususal : closed everything, that Open_All opened. *
* *
*-----------------------------------------------------------------------*
* *
* Parameters : *
* none *
* *
* Returns : *
* none *
* *
************************************************************************/
VOID Close_All( VOID )
{
if( window_save ) MyProcess->pr_WindowPtr = window_save;
if( FirstWindow )
{
ClearMenuStrip( FirstWindow );
CloseWindow( FirstWindow );
}
if( FirstScreen ) CloseScreen( FirstScreen );
if( GPrtReq ) Close_Device( GPrtReq );
if( ReqBase ) CloseLibrary( ReqBase );
if( GfxBase ) CloseLibrary( GfxBase );
if( IntuitionBase ) CloseLibrary( IntuitionBase );
if( FIB ) FreeMem( FIB, sizeof( struct FileInfoBlock ));
}
/************************************************************************
* *
* NewSet *
* *
*-----------------------------------------------------------------------*
* *
* Displays a new setting *
* *
*-----------------------------------------------------------------------*
* *
* Parameters : *
* new : New setting number *
* *
* Returns : *
* none *
* *
************************************************************************/
VOID NewSet( SHORT new )
{
static struct Image *Del[] =
{
&D0_1_image, &D1_1_image, &D2_1_image, &D3_1_image, &D4_1_image,
&D5_1_image, &D6_1_image, &D7_1_image, &D8_1_image, &D9_1_image
};
static struct Image *Put[] =
{
&D0_2_image, &D1_2_image, &D2_2_image, &D3_2_image, &D4_2_image,
&D5_2_image, &D6_2_image, &D7_2_image, &D8_2_image, &D9_2_image
};
/***/
if( CurLay == 1 )
{
DrawImage( RP, Del[ ActSet ], ( 10 + ( SHORT )( 21 * ActSet )), NUMTOP );
DrawImage( RP, Put[ new ], ( SHORT )( 10 + ( 21 * new )), NUMTOP );
ActSet = new;
NewStyle( Sets[ ActSet ].Style );
NewCond( Sets[ ActSet ].Cond );
NewLsp( Sets[ ActSet ].LSpace6 );
NewLetter( Sets[ ActSet ].LetterQ );
RefreshTSize();
RefreshLMarg();
RefreshRMarg();
}
ActSet = new;
if( OTSize != Sets[ ActSet ].Tabsize )
{
ShowText( Topline );
OTSize = Sets[ ActSet ].Tabsize;
}
}
/************************************************************************
* *
* NewStyle *
* *
*-----------------------------------------------------------------------*
* *
* Set a new style *
* *
*-----------------------------------------------------------------------*
* *
* Parameters : *
* st : Number of the new style *
* *
* Returns : *
* none *
* *
************************************************************************/
VOID NewStyle( SHORT st )
{
static struct Image *Put[] =
{
&Elite_image,
&Pica_image,
&Prop_image
};
/***/
if( CurLay == 1 )
if(( st >= 0 )&&( st < 3 ))
DrawImage( RP, Put[ st ], 231, NUMTOP );
Sets[ ActSet ].Style = st;
}
/************************************************************************
* *
* NewCond *
* *
*-----------------------------------------------------------------------*
* *
* Set the Cond-Flag to a new boolen value *
* *
*-----------------------------------------------------------------------*
* *
* Parameters : *
* on : New value *
* *
* Returns : *
* none *
* *
************************************************************************/
VOID NewCond( BOOL on )
{
static struct Image *Put[] =
{
&CondOff_image,
&CondOn_image
};
/***/
Sets[ ActSet ].Cond = on;
if( CurLay == 1 )
DrawImage( RP, Put[ on ], 332, NUMTOP );
}
/************************************************************************
* *
* NewLetter *
* *
*-----------------------------------------------------------------------*
* *
* Set LQ to on or off *
* *
*-----------------------------------------------------------------------*
* *
* Parameters : *
* on : New boolean value *
* *
* Returns : *
* none *
* *
************************************************************************/
VOID NewLetter( BOOL on )
{
static struct Image *Put[] =
{
&Draft_image,
&LQ_image
};
/***/
Sets[ ActSet ].LetterQ = on;
if( CurLay == 1 )
DrawImage( RP, Put[ on ], 439, NUMTOP );
}
/************************************************************************
* *
* NewLsp *
* *
*-----------------------------------------------------------------------*
* *
* Sets line - space to new boolean value i.e. TRUE means 1/6", *
* FALSE means 1/8". *
* *
*-----------------------------------------------------------------------*
* *
* Parameters : *
* six : New boolean value *
* *
* Returns : *
* none *
* *
************************************************************************/
VOID NewLsp( BOOL six )
{
static struct Image *Put[] =
{
&LS8_image,
&LS6_image
};
/***/
Sets[ ActSet ].LSpace6 = six;
if( CurLay == 1 )
DrawImage( RP, Put[ six ], 11, SECTOP );
}
/************************************************************************
* *
* NewNuming *
* *
*-----------------------------------------------------------------------*
* *
* Sets a new Numing - type. *
* *
*-----------------------------------------------------------------------*
* *
* Parameters : *
* ty : New type *
* *
************************************************************************/
VOID NewNuming( SHORT ty )
{
static struct Image *Put[] =
{
&Num_No_image,
&Num_Top_image,
&Num_Bot_image,
&Num_Line_image
};
/***/
Sets[ ActSet ].Numb = ty;
if( CurLay == 2 )
DrawImage( RP, Put[ty], 151, NUMTOP );
}
/************************************************************************
* *
* Layout1 *
* *
*-----------------------------------------------------------------------*
* *
* Draws the first layout - image, and sets the appropriate gadgets *
* *
*-----------------------------------------------------------------------*
* *
* Parameters : *
* none *
* *
* Returns : *
* none *
* *
************************************************************************/
VOID Layout1( VOID )
{
RemoveGList( FirstWindow, &Switch2, -1 );
DrawImage( RP, &Layout_image, 0, LAYOUT_TOP );
AddGList( FirstWindow, &Switch1, 0, -1, NULL );
CurLay = 1;
DoRefresh();
}
/************************************************************************
* *
* Layout2 *
* *
*-----------------------------------------------------------------------*
* *
* Draws the second layout - image, and sets the appropriate gadgets *
* *
*-----------------------------------------------------------------------*
* *
* Parameters : *
* none *
* *
* Returns : *
* none *
* *
************************************************************************/
VOID Layout2( VOID )
{
RemoveGList( FirstWindow, &Switch1, -1 );
DrawImage( RP, &Layout2_image, 0, LAYOUT_TOP );
AddGList( FirstWindow, &Switch2, 0, -1, NULL );
CurLay = 2;
DoRefresh();
}
/************************************************************************
* *
* RefreshTSize *
* *
*-----------------------------------------------------------------------*
* *
* Puts the current number into the container of the TSize - gadget. *
* *
*-----------------------------------------------------------------------*
* *
* Parameters : *
* none *
* *
* Returns : *
* none *
* *
************************************************************************/
VOID RefreshTSize( VOID )
{
if( CurLay == 1 )
{
strcpy( TSize_info.Buffer, ltoa( Sets[ ActSet ].Tabsize ));
TSize_info.LongInt = Sets[ ActSet ].Tabsize;
RefreshGList( &TSize, FirstWindow, NULL, 1 );
}
}
/************************************************************************
* *
* RefreshRMarg *
* *
*-----------------------------------------------------------------------*
* *
* Refreshes the RMarg - container. *
* *
*-----------------------------------------------------------------------*
* *
* Parameters : *
* none *
* *
* Returns : *
* none *
* *
************************************************************************/
VOID RefreshRMarg( VOID )
{
if( CurLay == 1 )
{
strcpy( RMarg_info.Buffer, ltoa( Sets[ ActSet ].RMarg ));
RMarg_info.LongInt = Sets[ ActSet ].RMarg;
RefreshGList( &RMarg, FirstWindow, NULL, 1 );
}
}
/************************************************************************
* *
* RefreshLMarg *
* *
*-----------------------------------------------------------------------*
* *
* Refreshes the LMarg - container. *
* *
*-----------------------------------------------------------------------*
* *
* Parameters : *
* none *
* *
* Returns : *
* none *
* *
************************************************************************/
VOID RefreshLMarg( VOID )
{
if( CurLay == 1 )
{
strcpy( LMarg_info.Buffer, ltoa( Sets[ ActSet ].LMarg ));
LMarg_info.LongInt = Sets[ ActSet ].LMarg;
RefreshGList( &LMarg, FirstWindow, NULL, 1 );
}
}
/************************************************************************
* *
* RefreshPLength *
* *
*-----------------------------------------------------------------------*
* *
* Refreshes the PLength - container. *
* *
*-----------------------------------------------------------------------*
* *
* Parameters : *
* none *
* *
* Returns : *
* none *
* *
************************************************************************/
VOID RefreshPLength( VOID )
{
if( CurLay == 2 )
{
strcpy( PLength_info.Buffer, ltoa( Sets[ ActSet ].PageLen ));
PLength_info.LongInt = Sets[ ActSet ].PageLen;
RefreshGList( &PLength, FirstWindow, NULL, 1 );
}
}
/************************************************************************
* *
* RefreshPWidth *
* *
*-----------------------------------------------------------------------*
* *
* Refreshes the PWidth - container. *
* *
*-----------------------------------------------------------------------*
* *
* Parameters : *
* none *
* *
* Returns : *
* none *
* *
************************************************************************/
VOID RefreshPWidth( VOID )
{
if( CurLay == 2 )
{
strcpy( PWidth_info.Buffer, ltoa( Sets[ ActSet ].PageWidth ));
PWidth_info.LongInt = Sets[ ActSet ].PageWidth;
RefreshGList( &PWidth, FirstWindow, NULL, 1 );
}
}
/************************************************************************
* *
* DoRefresh *
* *
*-----------------------------------------------------------------------*
* *
* Does a complete refresh *
* *
*-----------------------------------------------------------------------*
* *
* Parameters : *
* none *
* *
* Returns : *
* none *
* *
************************************************************************/
VOID DoRefresh( VOID )
{
if( CurLay == 1 )
NewSet( ActSet );
else
{
NewNuming( Sets[ ActSet ].Numb );
RefreshPLength();
RefreshPWidth();
}
}
/************************************************************************
* *
* DoInits *
* *
*-----------------------------------------------------------------------*
* *
* Initializes all predefined structures for PAL or NTSC *
* *
*-----------------------------------------------------------------------*
* *
* Parameters : *
* SH : Screen height *
* *
* Returns : *
* none *
* *
************************************************************************/
VOID DoInits( SHORT SH )
{
LAYOUT_TOP = SH - 56;
NUM_LINES = ( LAYOUT_TOP / 8 ) - 2;
NUMTOP = LAYOUT_TOP + 5;
SECTOP = NUMTOP + 15;
STRINGTOP = SECTOP + 3;
ACTIONTOP = SECTOP + 16;
PT1TOP = NUMTOP + 3;
PT2TOP = PT1TOP + 11;
SWITCHTOP = NUMTOP + 35;
Num9.TopEdge = NUMTOP;
Num8.TopEdge = NUMTOP;
Num7.TopEdge = NUMTOP;
Num6.TopEdge = NUMTOP;
Num5.TopEdge = NUMTOP;
Num4.TopEdge = NUMTOP;
Num3.TopEdge = NUMTOP;
Num2.TopEdge = NUMTOP;
Num1.TopEdge = NUMTOP;
Num0.TopEdge = NUMTOP;
TSize.TopEdge = STRINGTOP;
LMarg.TopEdge = STRINGTOP;
RMarg.TopEdge = STRINGTOP;
LineSP.TopEdge = SECTOP;
Letter.TopEdge = NUMTOP;
Cond.TopEdge = NUMTOP;
Style.TopEdge = NUMTOP;
PrAll.TopEdge = ACTIONTOP;
PPW.TopEdge = ACTIONTOP;
Pre.TopEdge = ACTIONTOP;
Switch1.TopEdge = SWITCHTOP;
PWidth.TopEdge = PT1TOP;
PLength.TopEdge = PT2TOP;
Numing.TopEdge = NUMTOP;
Switch2.TopEdge = SWITCHTOP;
FirstNewWindow.Height = SH;
}