TypesetInfo Class Reference

A class to encapsulate all the bits of typesetting we provide. The main entry in the class is a list of colour plate objects. When printing separations, the list is used to (a) determin which separations require printing and (b) to set each printable colour plate in the active print view. The main print loop will use the access functions in this class to cycle through each printable plate. This will result in a set of separated representations of a page being produced. Other information held in this class pertain to Postscript functionality. The class contains the prefered screening values for the entire document. More...

#include <printctl.h>

List of all members.

Public Member Functions

 TypesetInfo ()
virtual ~TypesetInfo ()
TypesetInfooperator= (TypesetInfo &other)
void SetSeparations (BOOL sep)
BOOL AreSeparating () const
BOOL AreScreening () const
void SetScreening (BOOL screen, BOOL SetAllPlates=TRUE)
void SetPrintResolution (INT32 res, BOOL SetAllPlates=TRUE)
void SetDefaultScreenFrequency (double Freq, BOOL SetAllPlates=TRUE)
void SetScreenFunction (ScreenType func, BOOL SetAllPlates=TRUE)
void ResetAllPlatesToDefaultScreens (void)
void EnsureAllPlatesHaveGlobalSettings (void)
INT32 GetPrintResolution () const
double GetDefaultScreenFrequency () const
ScreenType GetScreenFunction () const
BOOL GetScreenName (ScreenType type, StringBase *pName)
void SetOutputPrintersMarks (BOOL ShowThem)
BOOL OutputPrintersMarks (void) const
void SetEmulsionDown (BOOL On)
BOOL PrintEmulsionDown () const
void SetPhotoNegative (BOOL On)
BOOL PrintPhotoNegative () const
void SetOverprintBlack (BOOL Always)
BOOL AlwaysOverprintBlack () const
BOOL CreatePlateList ()
void UpdatePlateList ()
ColourPlateCreateColourPlate ()
void AddPlate (ColourPlate *pPlate)
void DestroyPlateList ()
ColourPlateGetCurrentPlate () const
void SetCurrentPlate (ColourPlate *pPlate)
DWORD GetNumPlates () const
ColourPlateGetFirstPlate () const
 A couple of fast access functions for retrieving plates from the documents plate list.
ColourPlateGetNextPlate (const ColourPlate *pPlate) const
ColourPlateGetPrevPlate (const ColourPlate *pPlate) const
void InitPlatesForPrinting ()
ColourPlateGetFirstPrintPlate ()
ColourPlateGetNextPrintPlate ()
DWORD GetNumPrintPlates () const
ColourPlateGetCurrentPrintPlate () const
INT32 NumPrintPlatesRemaining () const
void SetNextCompositePlate ()

Static Public Member Functions

static TypesetInfoFindTypesetInfoForDoc (Document *pDoc=NULL)

Private Member Functions

BOOL CheckForExistingPlate (ColourPlateType Type, IndexedColour *SpotColour=NULL)
ColourPlateGetPrintPlate (DWORD num, ColourPlate *pPlate)

Private Attributes

BOOL MakeSeparations
INT32 PrintResolution
double ScreenFrequency
ScreenType DefaultScreenType
BOOL UseScreening
BOOL ShowPrintersMarks
BOOL EmulsionDown
BOOL PhotoNegative
BOOL OverprintBlack
BOOL PrintSpotAsProcess
List PrintingPlates
DWORD NumPrintPlates
DWORD CurrPrintPlateNum
DWORD PrintPlatesToGo
ColourPlateCurrentPlate
ColourPlateCurrentPrintPlate


Detailed Description

A class to encapsulate all the bits of typesetting we provide. The main entry in the class is a list of colour plate objects. When printing separations, the list is used to (a) determin which separations require printing and (b) to set each printable colour plate in the active print view. The main print loop will use the access functions in this class to cycle through each printable plate. This will result in a set of separated representations of a page being produced. Other information held in this class pertain to Postscript functionality. The class contains the prefered screening values for the entire document.

Author:
Mike_Kenny (Xara Group Ltd) <camelotdev@xara.com>
Date:
11/6/95

Definition at line 151 of file printctl.h.


Constructor & Destructor Documentation

TypesetInfo::TypesetInfo  ) 
 

Author : Mike Created : 11/6/95 Purpose : The default constructor for the typesetting class. We use this class to define the typesetting requirements of the next print run.

Definition at line 2765 of file printctl.cpp.

02766 {
02767     MakeSeparations     = FALSE;
02768 
02769     PrintResolution     = 300;
02770 
02771     ScreenFrequency     = 60.0;
02772     DefaultScreenType   = SCRTYPE_SPOT1;
02773 
02774     UseScreening        = FALSE;
02775     ShowPrintersMarks   = FALSE;
02776 
02777     EmulsionDown        = FALSE;
02778     PhotoNegative       = FALSE;
02779     OverprintBlack      = FALSE;
02780 
02781     NumPrintPlates      = 0;
02782     CurrPrintPlateNum   = 0;
02783     CurrentPlate        = NULL;
02784     CurrentPrintPlate   = NULL;
02785 }

TypesetInfo::~TypesetInfo  )  [virtual]
 

Author : Mike Created : 11/6/95 Purpose : The destructor. We must remove all items from our PrintingPlates list and delete them, otherwise the base list class will complain profusely.

Definition at line 2800 of file printctl.cpp.

02801 {
02802     DestroyPlateList();
02803 }


Member Function Documentation

void TypesetInfo::AddPlate ColourPlate pPlate  ) 
 

Author : Mike Created : 11/6/95 Inputs : pPlate = a pointer to a colour plate Returns : - Purpose : Use this function to add a colour plate to the colour plate list. Note, the calling function no longer has ownership of this object. The object will be deleted automatically from the list whenever the plate list class is destroyed.

Definition at line 3554 of file printctl.cpp.

03555 {
03556     ERROR3IF(pPlate==NULL, "AddPlate given a NULL plate pointer!");
03557     PrintingPlates.AddTail(pPlate);
03558 }

BOOL TypesetInfo::AlwaysOverprintBlack  )  const [inline]
 

Definition at line 198 of file printctl.h.

00198 { return OverprintBlack; }

BOOL TypesetInfo::AreScreening  )  const [inline]
 

Definition at line 167 of file printctl.h.

00167 { return UseScreening; }

BOOL TypesetInfo::AreSeparating  )  const [inline]
 

Definition at line 166 of file printctl.h.

00166 { return MakeSeparations; }

BOOL TypesetInfo::CheckForExistingPlate ColourPlateType  Type,
IndexedColour SpotColour = NULL
[private]
 

Author : Jason Created : 25/6/96 Inputs : Type - The type of plate you are checking for SpotColour - If Type is COLOURPLATE_SPOT, then SpotColour should point to the IndexedColour defining the spot plate. It is ignored for all other types.

Returns : TRUE if a matching plate is already in the list FALSE if you'll need to create and add a new plate of that type

Purpose : Helper function for CreatePlateList. Determines if a plate of the given type is already available in the ColourPlate list. If Type is COLOURTYPE_SPOT, then SpotColour must also be specified.

Notes: This doesn't find an exact match for the ColourPlate, but simply another plate of the same type (e.g. Another CYAN plate, or another SPOT plate which is based on the same spot colour) - all other options (monochrome, screen settings etc) are ignored in the comparison.

Definition at line 3255 of file printctl.cpp.

03256 {
03257     ERROR3IF(Type == COLOURPLATE_SPOT && SpotColour == NULL, "Illegal NULL param");
03258 
03259     ColourPlate *Ptr = GetFirstPlate();
03260 
03261     while (Ptr != NULL)
03262     {
03263         if (Ptr->GetType() == Type)
03264         {
03265             // Just for safety we will make sure that the plate uses the same setting
03266             // for screen function as we do. (The plate holds a copy of this info for
03267             // convenience, and we don't really want plates using different screens)
03268             Ptr->SetScreenFunction(GetScreenFunction());
03269 
03270             // The basic types match, but if it's a spot plate, we have to check if
03271             // it is the same actual spot plate before we have an exact match
03272             if (Type == COLOURPLATE_SPOT)
03273             {
03274                 if (Ptr->GetSpotColour() == SpotColour)
03275                     return(TRUE);
03276                 //else 
03277                 //  Not an exact match, so drop through to continue searching
03278             }
03279             else
03280                 return(TRUE);               // The types match, so return TRUE
03281         }
03282 
03283         Ptr = GetNextPlate(Ptr);
03284     }
03285 
03286     // We didn't find it, so return FALSE
03287     return(FALSE);
03288 }

ColourPlate * TypesetInfo::CreateColourPlate  ) 
 

Author : Jason Created : 16/8/96 Inputs : - Returns : NULL (failed) or a new colour plate

Purpose : Creates a new colour plate The plate defaults to the same as for the ColourPlate() default constructor (i.e. COLOURPLATE_NONE), but things like the screen function will be set up by copying them from this TypesetInfo object.

This function is intended only for use by the native file import code, which creates colour plates if any were saved in the file. However, each plate takes many settings from its parent TypesetInfo (they're only stored in the plate for easy access/efficiency when rendering)

Notes: See Also CheckForExistingPlate() which also sets the plate screen functions to make sure they tow the party line...

Definition at line 3502 of file printctl.cpp.

03503 {
03504     ColourPlate *pNewPlate = new ColourPlate(COLOURPLATE_NONE, TRUE, FALSE);
03505 
03506     // The only special info we currently need to set is the screen function...
03507     if (pNewPlate != NULL)
03508         pNewPlate->SetScreenFunction(GetScreenFunction());
03509 
03510     return(pNewPlate);
03511 }

BOOL TypesetInfo::CreatePlateList  ) 
 

Author : Jason (shell function by Mike) Created : 25/6/96 (11/6/95 - 95? Are you sure, Mike? ;-) Inputs : - Returns : TRUE if the plate list has been constructed correctly FALSE if there's nothing in the plate list.

Purpose : This function initialises or re-initialises the document plate list. This list contains a set of ColourPlates which will be used to control the printing of the document. Each plate will produce a distinct pass in the print loop.

If the ColourPlate list has already been created, this function will update it by the following means: Ensure that the process (C,M,Y,K) plates are in the list Remove any Spot colours from the list which have since been deleted or edited to no longer be spot colours Add any new spot colours to the plate list

Any existing plate settings for plates that are still valid will thus be retained.

Definition at line 3319 of file printctl.cpp.

03320 {
03321     ColourPlate *pPlate;
03322 
03323     INT32 Res  = GetPrintResolution();
03324     INT32 Freq = (INT32) floor(GetDefaultScreenFrequency());
03325 
03326     // --- First, make sure we've got a set of process (CMYK) plates...
03327     // Create a cyan plate to print.
03328     if (!CheckForExistingPlate(COLOURPLATE_CYAN))
03329     {
03330         pPlate = new ColourPlate(COLOURPLATE_CYAN, TRUE, FALSE);
03331         if (pPlate)
03332         {
03333             pPlate->ResetScreenToDefaults(Res, Freq);
03334             pPlate->SetScreenFunction(GetScreenFunction());
03335 
03336             AddPlate(pPlate);
03337         }
03338     }
03339 
03340     // Create a magenta plate to print.
03341     if (!CheckForExistingPlate(COLOURPLATE_MAGENTA))
03342     {
03343         pPlate = new ColourPlate(COLOURPLATE_MAGENTA, TRUE, FALSE);
03344         if (pPlate)
03345         {
03346             pPlate->ResetScreenToDefaults(Res, Freq);
03347             pPlate->SetScreenFunction(GetScreenFunction());
03348 
03349             AddPlate(pPlate);
03350         }
03351     }
03352 
03353     // Create a yellow plate to print.
03354     if (!CheckForExistingPlate(COLOURPLATE_YELLOW))
03355     {
03356         pPlate = new ColourPlate(COLOURPLATE_YELLOW, TRUE, FALSE);
03357         if (pPlate)
03358         {
03359             pPlate->ResetScreenToDefaults(Res, Freq);
03360             pPlate->SetScreenFunction(GetScreenFunction());
03361 
03362             AddPlate(pPlate);
03363         }
03364     }
03365 
03366     // Create a key plate to print.
03367     if (!CheckForExistingPlate(COLOURPLATE_KEY))
03368     {
03369         pPlate = new ColourPlate(COLOURPLATE_KEY, TRUE, FALSE);
03370         if (pPlate)
03371         {
03372             pPlate->ResetScreenToDefaults(Res, Freq);
03373             pPlate->SetScreenFunction(GetScreenFunction());
03374 
03375             AddPlate(pPlate);
03376         }
03377     }
03378 
03379 
03380     // --- Second, remove any "dead" plates (spot colours which are now deleted or
03381     //     have been edited so they are no longer spot colours)
03382     pPlate = (ColourPlate *) PrintingPlates.GetHead();
03383     ColourPlate *pNext;
03384     while (pPlate != NULL)
03385     {
03386         pNext = (ColourPlate *) PrintingPlates.GetNext(pPlate);
03387 
03388         if (pPlate->GetType() == COLOURPLATE_SPOT)
03389         {
03390             IndexedColour *pSpot = pPlate->GetSpotColour();
03391             if (pSpot != NULL)
03392             {
03393                 // If it's not a spot colour, or is deleted, then it no longer generates a plate
03394                 if (pSpot->GetType() != COLOURTYPE_SPOT || pSpot->IsDeleted())
03395                 {
03396                     PrintingPlates.RemoveItem(pPlate);
03397                     delete pPlate;
03398                 }
03399             }
03400         }
03401         pPlate = pNext;
03402     }
03403 
03404 
03405     // --- Finally, add plates for any spot colour which is not already accounted for
03406     //     in the existing plate list. We use the colours from the Selected document
03407     ColourList *ColList = ColourManager::GetColourList();
03408     ERROR3IF(ColList == NULL, "Can't find selected ColourList");
03409 
03410     if (ColList != NULL)
03411     {
03412         IndexedColour *IxCol =  (IndexedColour *) ColList->GetUndeletedHead();
03413         while (IxCol != NULL)
03414         {
03415             if (IxCol->GetType() == COLOURTYPE_SPOT)
03416             {
03417                 // We've found a spot colour. Is it already represented by a ColourPlate?
03418                 if (!CheckForExistingPlate(COLOURPLATE_SPOT, IxCol))
03419                 {
03420                     // No, it's not, so we'd better create a new plate for it
03421                     pPlate = new ColourPlate(IxCol, TRUE, FALSE);
03422                     if (pPlate)
03423                     {
03424                         pPlate->ResetScreenToDefaults(Res, Freq);
03425                         pPlate->SetScreenFunction(GetScreenFunction());
03426 
03427                         AddPlate(pPlate);
03428 
03429                         // If this colour is not used in the document, turn off printing of the plate
03430                         // by default. (This isn't brilliant - it'll leave it on if the colour is used
03431                         // in the UNDO, but it's better than leaving it on all the time)
03432                         // NOTE: We pass in TRUE so that it will ignore one use of the colour (the
03433                         // reference from the ColourPlate itself!)
03434                         if (!IxCol->IsInUse(TRUE))
03435                             pPlate->SetDisabled(TRUE);
03436                     }
03437                 }
03438             }
03439 
03440             IxCol = (IndexedColour *) ColList->GetUndeletedNext(IxCol);
03441         }
03442     }
03443 
03444     // And now, just make sure everything is tidy
03445     EnsureAllPlatesHaveGlobalSettings();
03446 
03447     return TRUE;
03448 }

void TypesetInfo::DestroyPlateList  ) 
 

Author : Mike Created : 11/6/95 Inputs : - Returns : - Purpose : This function simply empties the entire plate list of its contents, deleting each record as it goes. It is a seriously non-constant function.

Definition at line 3528 of file printctl.cpp.

03529 {
03530     ColourPlate *pPlate;
03531     while ((pPlate=(ColourPlate*)PrintingPlates.RemoveTail())) // Assignment
03532         delete pPlate;
03533 
03534     // We have no plates, so it's best to vape our current pointers
03535     CurrentPlate        = NULL;
03536     CurrentPrintPlate   = NULL;
03537 }

void TypesetInfo::EnsureAllPlatesHaveGlobalSettings void   ) 
 

Author : Jason Created : 18/9/96

Purpose : For convenience and efficiency while rendering print jobs, ColourPlates have their own copies of certain "global" flags (such as whether screening is enabled).

As a consequence of this slightly untidy situation, it is possible for the colour plates to get out of step with the overall option stored in the TypesetInfo. To get around this, this function simply copies the overall option from the TypesetInfo into all its colour plates.

It should be called prior to printing etc to ensure that these 'global' settings are consistent across all plates and the parent TypesettingInfo

Notes: Currently copies the following states: Screen function Screening enabled flag

Definition at line 3167 of file printctl.cpp.

03168 {
03169     ColourPlate *pPlate = GetFirstPlate();
03170     while (pPlate != NULL)
03171     {
03172         pPlate->SetScreenFunction(GetScreenFunction());
03173         pPlate->SetActiveScreening(AreScreening());
03174 
03175         pPlate = GetNextPlate(pPlate);
03176     }   
03177 }

TypesetInfo * TypesetInfo::FindTypesetInfoForDoc Document pDoc = NULL  )  [static]
 

Author : Jason Created : 15/8/96 Inputs : pDoc = NULL (to look in selected doc) or the document to find the info for Returns : NULL, or the selected doc's TypesetInfo Purpose : Conveniently find the typeset info for the given document

Definition at line 2818 of file printctl.cpp.

02819 {
02820     if (pDoc == NULL)
02821         pDoc = Document::GetSelected();
02822 
02823     ERROR2IF(pDoc == NULL, NULL, "No document to find typeset info for!");
02824 
02825     // Find the doc's print component
02826     PrintComponent *pPrComp = (PrintComponent*)pDoc->GetDocComponent(CC_RUNTIME_CLASS(PrintComponent));
02827     ERROR2IF(pPrComp == NULL, NULL, "Can't find a document's print component");
02828 
02829     // Find a ptr to the print component's print control object
02830     PrintControl* pPrCtrl = pPrComp->GetPrintControl();
02831     ERROR2IF(pPrCtrl == NULL, NULL, "The doc's print component gave me a NULL print control object");
02832 
02833     TypesetInfo *pTInfo = pPrCtrl->GetTypesetInfo();
02834     ERROR2IF(pTInfo == NULL, NULL, "The doc's print control object gave me a NULL TypesetInfo object");
02835 
02836     return(pTInfo);
02837 }

ColourPlate * TypesetInfo::GetCurrentPlate  )  const
 

Author : Mike Created : 11/6/95 Inputs : - Returns : a pointer to the current colour plate Purpose : Use this function to retrieve a pointer to the current plate. The current plate variable simply keeps track of the selected plate in the printing UI. This plate is the one which will receive all edits.

Definition at line 3594 of file printctl.cpp.

03595 {
03596     return CurrentPlate;
03597 }

ColourPlate * TypesetInfo::GetCurrentPrintPlate  )  const
 

Author : Jason Created : 5/8/96 Inputs : - Returns : a pointer to the currently PRINTING colour plate Purpose : Use this function to retrieve a pointer to the currently printing plate.

Definition at line 3775 of file printctl.cpp.

03776 {
03777     return CurrentPrintPlate;
03778 }

double TypesetInfo::GetDefaultScreenFrequency  )  const [inline]
 

Definition at line 179 of file printctl.h.

00179 { return ScreenFrequency; }

ColourPlate * TypesetInfo::GetFirstPlate  )  const [inline]
 

A couple of fast access functions for retrieving plates from the documents plate list.

Author:
Mike_Kenny (Xara Group Ltd) <camelotdev@xara.com>
Date:
11/6/95

Definition at line 277 of file printctl.h.

00278 {
00279     return (ColourPlate*)PrintingPlates.GetHead();
00280 }

ColourPlate * TypesetInfo::GetFirstPrintPlate  ) 
 

Author : Mike Created : 11/6/95 Inputs : - Returns : A pointer to the first print plate (NULL if no more) Purpose : Return the first plate through which the document will be printed. The class variables CurrentPrintPlate and CurrPrintPlateNum will be set.

Definition at line 3666 of file printctl.cpp.

03667 {
03668     // Retrieve the first plate from the list
03669     ColourPlate *pPlate = GetFirstPlate();
03670     return GetPrintPlate(0,pPlate);
03671 }

ColourPlate * TypesetInfo::GetNextPlate const ColourPlate pPlate  )  const [inline]
 

Definition at line 282 of file printctl.h.

00283 {
00284     return (ColourPlate*)PrintingPlates.GetNext((ListItem*)pPlate);
00285 }

ColourPlate * TypesetInfo::GetNextPrintPlate  ) 
 

Author : Mike Created : 11/6/95 Inputs : - Returns : A pointer to the next print plate (NULL if no more) Purpose : Return the next plate through which the document will be printed. The class variables CurrentPrintPlate and CurrPrintPlateNum will be used to determin the next plate

Definition at line 3687 of file printctl.cpp.

03688 {
03689     ColourPlate *pPlate;
03690     if (CurrentPrintPlate==NULL)
03691     {
03692         // Retrieve the first plate from the list
03693         pPlate = GetFirstPlate();
03694         return GetPrintPlate(0,pPlate);
03695     }
03696     // otherwise retrieve the next plate
03697     pPlate = GetNextPlate(CurrentPrintPlate);
03698     return GetPrintPlate(CurrPrintPlateNum,pPlate);
03699 }

DWORD TypesetInfo::GetNumPlates  )  const
 

Author : Mike Created : 11/6/95 Inputs : - Returns : a dword, the number of plates in the list Purpose : Returns the number of plates in the print class plate list

Definition at line 3612 of file printctl.cpp.

03613 {
03614     return PrintingPlates.GetCount();
03615 }

DWORD TypesetInfo::GetNumPrintPlates  )  const
 

Author : Mike Created : 11/6/95 Inputs : - Returns : A DWORD, the number of plates this document can theoretically be separated to. This will usually be 4 (C,M,Y and K) plus any spot colour plates Purpose : Find out how many print plates are stored in the plate list.

Definition at line 3747 of file printctl.cpp.

03748 {
03749     ColourPlate* pPlate;
03750     DWORD        nPlates=0;
03751 
03752     pPlate = GetFirstPlate();
03753     while (pPlate!=NULL)
03754     {
03755         if (!pPlate->IsDisabled())
03756             nPlates++;
03757         pPlate=GetNextPlate(pPlate);
03758     }       
03759     return nPlates;
03760 }

ColourPlate * TypesetInfo::GetPrevPlate const ColourPlate pPlate  )  const [inline]
 

Definition at line 287 of file printctl.h.

00288 {
00289     return (ColourPlate*)PrintingPlates.GetPrev((ListItem*)pPlate);
00290 }

ColourPlate * TypesetInfo::GetPrintPlate DWORD  pnum,
ColourPlate pPlate
[private]
 

ColourPlate* TypesetInfo::GetPrintPlate(DWORD num, ColourPlate* pPlate)

Author : Mike Created : 11/6/95 Inputs : num = the number of the plate pPlate = a pointer to the plate Returns : A pointer to a print plate (NULL if none) Purpose : This function is an internal helper function to GetFirstPrintPlate() and GetNextPrintPlate()

Definition at line 3716 of file printctl.cpp.

03717 {
03718     while (pPlate!=NULL)
03719     {
03720         pnum++;
03721         // if this plate is not disabled then return it
03722         if (!pPlate->IsDisabled())
03723         {
03724             CurrPrintPlateNum=pnum;
03725             PrintPlatesToGo--;
03726             return (CurrentPrintPlate=pPlate);
03727         }
03728         pPlate=GetNextPlate(pPlate);
03729     }
03730     return NULL;
03731 }

INT32 TypesetInfo::GetPrintResolution  )  const [inline]
 

Definition at line 178 of file printctl.h.

00178 { return PrintResolution; }

ScreenType TypesetInfo::GetScreenFunction void   )  const [inline]
 

Definition at line 180 of file printctl.h.

00180 { return DefaultScreenType; }

BOOL TypesetInfo::GetScreenName ScreenType  type,
StringBase pString
 

Author : Mike Created : 31/08/96 Inputs : type = the type of screen to find the name for Returns : TRUE if the type is known FALSE if the type is unknown - pString will contain the default SPOT name Purpose : Conveniently convert from a screen type to a textual name

Definition at line 2910 of file printctl.cpp.

02911 {
02912     ERROR2IF(pString==NULL, FALSE, "NULL output string pointer passed to GetScreenName");
02913 
02914     String_256 Str;
02915     BOOL known=TRUE;    
02916 
02917     switch (type)
02918     {
02919         case SCRTYPE_SPOT2:
02920             Str.Load(_R(IDS_SCRTYPE_SPOT2));
02921             break;
02922         case SCRTYPE_TRIPLESPOT1:
02923             Str.Load(_R(IDS_SCRTYPE_TRIPLESPOT1));
02924             break;
02925         case SCRTYPE_TRIPLESPOT2:
02926             Str.Load(_R(IDS_SCRTYPE_TRIPLESPOT2));
02927             break;
02928         case SCRTYPE_ELLIPTICAL:
02929             Str.Load(_R(IDS_SCRTYPE_ELLIPTICAL));
02930             break;
02931         case SCRTYPE_LINE:
02932             Str.Load(_R(IDS_SCRTYPE_LINE));
02933             break;
02934         case SCRTYPE_CROSSHATCH:
02935             Str.Load(_R(IDS_SCRTYPE_CROSSHATCH));
02936             break;
02937         case SCRTYPE_MEZZOTINT:
02938             Str.Load(_R(IDS_SCRTYPE_MEZZOTINT));
02939             break;
02940         case SCRTYPE_SQUARE:
02941             Str.Load(_R(IDS_SCRTYPE_SQUARE));
02942             break;
02943         case SCRTYPE_DITHER:
02944             Str.Load(_R(IDS_SCRTYPE_DITHER));
02945             break;
02946         case SCRTYPE_SPOT1:
02947             Str.Load(_R(IDS_SCRTYPE_SPOT1));
02948             break;
02949         default:
02950             known=FALSE;
02951             Str.Load(_R(IDS_SCRTYPE_SPOT1));
02952             break;
02953     }   
02954 
02955     (*pString) = Str;
02956 
02957     return known;
02958 }

void TypesetInfo::InitPlatesForPrinting  ) 
 

Author : Mike Created : 11/6/95 Inputs : - Returns : - Purpose : Set up the plate printing service. This should be called before any attempt to access the functions GetNextPrintPlate(), NumPrintPlatesRemaining etc

Definition at line 3633 of file printctl.cpp.

03634 {
03635     // We don't need to do anything if we're not separating, but as we
03636     // do nothing but set a plate, we don't need extra check code here
03637     // Set our internal current plate
03638     CurrPrintPlateNum=1;
03639     NumPrintPlates=1;
03640     CurrentPrintPlate=NULL;
03641     PrintPlatesToGo=1;
03642 
03643     if (AreSeparating())
03644     {
03645         NumPrintPlates = GetNumPrintPlates();
03646         PrintPlatesToGo = NumPrintPlates;
03647     }
03648 }

INT32 TypesetInfo::NumPrintPlatesRemaining  )  const
 

Author : Mike Created : 11/6/95 Inputs : - Returns : The number of plate which remain to be printed Purpose : Calculate and return the number of plates remaining for this piece of paper

Definition at line 3793 of file printctl.cpp.

03794 {
03795     // Calculate the number of plates remaining print
03796     return ( PrintPlatesToGo );
03797 }

TypesetInfo & TypesetInfo::operator= TypesetInfo other  ) 
 

Author : Jason Created : 17/9/96

Inputs : other - the TypesetInfo object to copy Returns : the copy (this)

Purpose : TypesetInfo assignment operator

Definition at line 2855 of file printctl.cpp.

02856 {
02857     MakeSeparations     = other.MakeSeparations;
02858     PrintResolution     = other.PrintResolution;
02859     ScreenFrequency     = other.ScreenFrequency;
02860     DefaultScreenType   = other.DefaultScreenType;
02861 
02862     UseScreening        = other.UseScreening;
02863 
02864     ShowPrintersMarks   = other.ShowPrintersMarks;
02865 
02866     EmulsionDown        = other.EmulsionDown;
02867     PhotoNegative       = other.PhotoNegative;
02868     OverprintBlack      = other.OverprintBlack;
02869     PrintSpotAsProcess  = other.PrintSpotAsProcess;
02870 
02871     // Now copy the plate list
02872     // First, vape all pointers to default values
02873     CurrPrintPlateNum   = 0;
02874     CurrentPlate        = NULL;
02875     CurrentPrintPlate   = NULL;
02876 
02877     // Now destroy any plates we may have already
02878     DestroyPlateList();
02879 
02880     ColourPlate *pPlate = other.GetFirstPlate();
02881     while (pPlate != NULL)
02882     {
02883         ColourPlate *pNewPlate = new ColourPlate(*pPlate);
02884 
02885         if (pNewPlate == NULL)
02886             break;
02887 
02888         AddPlate(pNewPlate);
02889         pPlate = other.GetNextPlate(pPlate);
02890     }
02891 
02892     return(*this);
02893 }

BOOL TypesetInfo::OutputPrintersMarks void   )  const [inline]
 

Definition at line 185 of file printctl.h.

00185 { return(ShowPrintersMarks); }

BOOL TypesetInfo::PrintEmulsionDown  )  const [inline]
 

Definition at line 190 of file printctl.h.

00190 { return EmulsionDown; }

BOOL TypesetInfo::PrintPhotoNegative  )  const [inline]
 

Definition at line 194 of file printctl.h.

00194 { return PhotoNegative; }

void TypesetInfo::ResetAllPlatesToDefaultScreens void   ) 
 

Author : Jason Created : 19/8/96

Purpose : Resets all attached ColourPlates to the recommended defaults for: Screen Angle Screen Frequency Screen Function (dot shape)

See also:
SetPrintResolution; SetDefaultScreenFrequency; SetScreenFunction

Definition at line 3125 of file printctl.cpp.

03126 {
03127     INT32 Res  = GetPrintResolution();
03128     INT32 Freq = (INT32) floor(GetDefaultScreenFrequency());
03129 
03130     ColourPlate *pPlate = GetFirstPlate();
03131     while (pPlate != NULL)
03132     {
03133         pPlate->ResetScreenToDefaults(Res, Freq);
03134         pPlate->SetScreenFunction(GetScreenFunction());
03135 
03136         pPlate = GetNextPlate(pPlate);
03137     }
03138 }

void TypesetInfo::SetCurrentPlate ColourPlate pPlate  ) 
 

Author : Mike Created : 11/6/95 Inputs : pPlate = a pointer to a colour plate Returns : - Purpose : Use this function to set the current colour plate. This current plate object is usually shown as the highlighted plate in the printing dialogue plate display list.

Definition at line 3574 of file printctl.cpp.

03575 {
03576     ERROR3IF(pPlate==NULL, "SetCurrentPlate given a NULL plate pointer!");
03577     CurrentPlate = pPlate;
03578 }

void TypesetInfo::SetDefaultScreenFrequency double  freq,
BOOL  SetAllPlates = TRUE
 

void TypesetInfo::SetDefaultScreenFrequency(double freq, BOOL SetAllPlates = TRUE)

Author : Mike Created : 11/6/95 Inputs : freq = a double representing the screen frequency in lpi (possibly fractional) SetAllPlates = FALSE to simply record the new printer resolution, TRUE to reset all contained colour plates to this new screening frequency.

Purpose : Use this function to set the preferred screening frequency used for plates

Definition at line 3062 of file printctl.cpp.

03063 {
03064     if (freq < 2.0 || freq > 10000.0)
03065     {
03066         ERROR3("Silly screen frequency");
03067         return;
03068     }
03069 
03070     ScreenFrequency = freq;
03071 
03072     if (SetAllPlates)
03073         ResetAllPlatesToDefaultScreens();
03074 }

void TypesetInfo::SetEmulsionDown BOOL  On  )  [inline]
 

Definition at line 189 of file printctl.h.

00189 { EmulsionDown = On; }

void TypesetInfo::SetNextCompositePlate  ) 
 

Author : Mike Created : 11/6/95 Inputs : - Returns : - Purpose : Called from PrintControl::SetNextPlate(). This function simply allows composite printing to pass around the plate loop once without actually setting any plates. This function will set the internal typeset plate variables so that MorePlates() will return FALSE the next time it is called.

Definition at line 3816 of file printctl.cpp.

03817 {
03818     // Do absolutely nothing if we are in separation mode
03819     if (AreSeparating())
03820         return;
03821 
03822     // Set out internal variables so a call to MorePlates()
03823     // will terminate the print loop
03824     CurrentPrintPlate=NULL;
03825     PrintPlatesToGo=0;
03826 }

void TypesetInfo::SetOutputPrintersMarks BOOL  ShowThem  )  [inline]
 

Definition at line 184 of file printctl.h.

00184 { ShowPrintersMarks = ShowThem; }

void TypesetInfo::SetOverprintBlack BOOL  Always  ) 
 

Author : Jason Created : 7/8/96

Inputs : Always - FALSE to disbale, or TRUE to enable "Always overprint black"

Purpose : Sets whether "black" will be always be overprinted automatically.

This works as follows: Any colour which is defined as CMYK and which has more than 95% Key component is considered "black". When AlwaysOverprintBlack is enabled, such "black" colours will be overprinted automatically.

This option does not affect non-CMYK colours

Notes: The TypesetInfo constructor defaults to the FALSE (disabled) state

See also:
RenderRegion::PrepareStrokeColour; RenderRegion::PrepareFillGeometry

Definition at line 3222 of file printctl.cpp.

03223 {
03224     OverprintBlack = Always;
03225 }

void TypesetInfo::SetPhotoNegative BOOL  state  ) 
 

Author : Mike Created : 11/6/95 Inputs : state = the state of the photonegative flag Purpose : Use this function to set the photonegative local flag.

Definition at line 3192 of file printctl.cpp.

03193 {
03194     PhotoNegative = state;
03195 }

void TypesetInfo::SetPrintResolution INT32  res,
BOOL  SetAllPlates = TRUE
 

void TypesetInfo::SetPrintResolution(INT32 res, BOOL SetAllPlates = TRUE);

Author : Mike Created : 11/6/95 Inputs : res = a dpi resolution SetAllPlates = FALSE to simply record the new printer resolution, TRUE to reset all contained colour plates to recommended default values for the new resolution. This will set angle, freq, and function for all plates.

Purpose : Use this function to set the prefered postscript device resolution. The resolution determines the set of preferred screen frequencies.

Definition at line 3037 of file printctl.cpp.

03038 {
03039     PrintResolution = res;
03040 
03041     if (SetAllPlates)
03042         ResetAllPlatesToDefaultScreens();
03043 }

void TypesetInfo::SetScreenFunction ScreenType  func,
BOOL  SetAllPlates = TRUE
 

Author : Mike Created : 11/6/95 Inputs : func = the screening function to set setall = TRUE, then set this screen type in all the plates in the plate list FALSE - only remember this as the default (not recommended!)

Purpose : Use this function to set the preferred screening function used for plates

Definition at line 3092 of file printctl.cpp.

03093 {
03094     DefaultScreenType = func;
03095 
03096     if (SetAllPlates)
03097     {
03098         ColourPlate *pPlate = GetFirstPlate();
03099         while (pPlate != NULL)
03100         {
03101             pPlate->SetScreenFunction(func);    
03102             pPlate = GetNextPlate(pPlate);
03103         }
03104     }
03105 }

void TypesetInfo::SetScreening BOOL  state,
BOOL  SetAllPlates = TRUE
 

void TypesetInfo::SetScreening(BOOL state, BOOL SetAllPlates = TRUE)

Author : Mike Created : 11/6/95 Inputs : sep = a boolean which enables or disables the output of setscreen commands SetAllPlates = FALSE to simply record the new state in this info class (not recommended) TRUE to set the state in all the plates held in this class

Purpose : To turn off and on printing of screened output.

If screening is enabled, the colour plate screen ang, freq, function will be output to the printer

If disabled, no screening info willl be sent, and thus we use the printer default settings.

Definition at line 3004 of file printctl.cpp.

03005 {
03006     UseScreening = state;
03007     if (SetAllPlates)
03008     {
03009         ColourPlate *pPlate = GetFirstPlate();
03010         while (pPlate != NULL)
03011         {
03012             pPlate->SetActiveScreening(state);  
03013             pPlate = GetNextPlate(pPlate);
03014         }
03015     }
03016 }

void TypesetInfo::SetSeparations BOOL  sep  ) 
 

void TypesetInfo::SetSeparations(BOOL sep)

Author : Mike Created : 11/6/95 Inputs : sep = a boolean which enables or disables separation output Purpose : To turn off and on printing of separated output.

if enabled, we colour-separate all output

if disabled, we print normal composite output

Definition at line 2976 of file printctl.cpp.

02977 {
02978     MakeSeparations = sep;
02979 }

void TypesetInfo::UpdatePlateList  ) 
 

Author : Mike Created : 31/08/96 Inputs : - Returns : - Purpose : Makes sure all the plates in the plate list have all values up-to-date. This is called on StartPrinting(). The reason it is here is that on start up, the previous settings will be loaded in and set in TypsetInfo. However, the user could print immediately without bringing up any extra print option tabs. The list of plates is created needs to be updated with the loaded settings.

Definition at line 3469 of file printctl.cpp.

03470 {
03471     // Make sure all plate screening values are up-to-date
03472     SetScreening(UseScreening,TRUE);
03473     // Make sure screen plate / lpi / freq / angles are all correct
03474     ResetAllPlatesToDefaultScreens();
03475 }


Member Data Documentation

ColourPlate* TypesetInfo::CurrentPlate [private]
 

Definition at line 259 of file printctl.h.

ColourPlate* TypesetInfo::CurrentPrintPlate [private]
 

Definition at line 260 of file printctl.h.

DWORD TypesetInfo::CurrPrintPlateNum [private]
 

Definition at line 257 of file printctl.h.

ScreenType TypesetInfo::DefaultScreenType [private]
 

Definition at line 242 of file printctl.h.

BOOL TypesetInfo::EmulsionDown [private]
 

Definition at line 248 of file printctl.h.

BOOL TypesetInfo::MakeSeparations [private]
 

Definition at line 239 of file printctl.h.

DWORD TypesetInfo::NumPrintPlates [private]
 

Definition at line 256 of file printctl.h.

BOOL TypesetInfo::OverprintBlack [private]
 

Definition at line 250 of file printctl.h.

BOOL TypesetInfo::PhotoNegative [private]
 

Definition at line 249 of file printctl.h.

List TypesetInfo::PrintingPlates [private]
 

Definition at line 254 of file printctl.h.

DWORD TypesetInfo::PrintPlatesToGo [private]
 

Definition at line 258 of file printctl.h.

INT32 TypesetInfo::PrintResolution [private]
 

Definition at line 240 of file printctl.h.

BOOL TypesetInfo::PrintSpotAsProcess [private]
 

Definition at line 251 of file printctl.h.

double TypesetInfo::ScreenFrequency [private]
 

Definition at line 241 of file printctl.h.

BOOL TypesetInfo::ShowPrintersMarks [private]
 

Definition at line 246 of file printctl.h.

BOOL TypesetInfo::UseScreening [private]
 

Definition at line 244 of file printctl.h.


The documentation for this class was generated from the following files:
Generated on Sat Nov 10 04:02:34 2007 for Camelot by  doxygen 1.4.4