home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1998 October A / Pcwk10a98.iso / Corel / Ventura8 / Ventura / Scripts / EPSInformation.csc < prev    next >
Text File  |  1998-07-08  |  15KB  |  442 lines

  1. REM Parses an EPS File for font and colour information[CorelSCRIPT 8]
  2. REM EPSInformation.csc  March 13, 1998
  3. REM ⌐ 1998 Corel Corporation. All rights reserved.
  4.  
  5. REM This script parses an EPS file for the plate names and font names.
  6. REM For the Colours:
  7. REM        %%DocumentProcessColors: Cyan Black
  8. REM        %%DocumentCustomColors: (PANTONE 226 CV)
  9. REM For the fonts assumed to be resident on the device:
  10. REM        %%DocumentNeededResources: font Times-Roman
  11. REM For the fonts that have had the font info included:
  12. REM        %%DocumentSuppliedResources: procset wCorel6Dict
  13. REM        %%+ font AmericanaXBdCnBT
  14. REM        %%+ font Times-Roman
  15.  
  16.  
  17. #addfol "..\..\Scripts"
  18. #include "ScpConst.csi"
  19. #include "VPConst.csi"
  20.  
  21. #ADDRESBMP IntroBMP "Bitmaps\IntroBMP.bmp"
  22. #ADDRESBMP Step2BMP "Bitmaps\Step2BMP.bmp"
  23. #ADDRESBMP LastBMP "Bitmaps\LastBMP.bmp"
  24.  
  25. 'Constants for Dialog Return Values
  26. GLOBAL CONST DIALOG_RETURN_CANCEL% = 2
  27. GLOBAL CONST DIALOG_RETURN_NEXT% = 3
  28. GLOBAL CONST DIALOG_RETURN_BACK% = 4
  29. GLOBAL CONST DIALOG_RETURN_BROWSE% = 5
  30.  
  31. GLOBAL CONST LIST_SIZE% = 100
  32.  
  33. '/////FUNCTION & SUBROUTINE DECLARATIONS/////////////////////////////////////////////////
  34. DECLARE SUB RegQuery()
  35. DECLARE FUNCTION ShowIntro%()
  36. DECLARE FUNCTION GetEPSFile%()
  37. DECLARE FUNCTION GetEPSInfo%()
  38. DECLARE FUNCTION ShowFinish%()
  39. DECLARE FUNCTION SaveToFile(SaveFile$) AS BOOLEAN
  40.  
  41.  
  42. '/////GLOBAL VARIABLES & CONSTANTS////////////////////////////////////////////////////////
  43. GLOBAL VenturaRoot$                'Ventura root installation directory from registry
  44. GLOBAL EPSFile$
  45. GLOBAL EPSList$(LIST_SIZE)
  46. GLOBAL EPSIndex&
  47. EPSIndex=0
  48.  
  49.  
  50. '/////LOCAL DECLARATIONS//////////////////////////////////////////////////////////////////
  51. DIM DialogReturn%                                        
  52. DIM NextStep%
  53. MAXSTEP% = 4
  54.  
  55.  
  56. ' **************************************************************************************
  57. ' MAIN
  58. ' **************************************************************************************
  59. ON ERROR GOTO ErrorHandler
  60.  
  61. RegQuery    'get root directory where Ventura is installed
  62.  
  63. SETCURRFOLDER VenturaRoot$
  64. EPSFile$ = "*.eps"
  65.  
  66. NextStep = 1
  67. DO
  68.     SELECT CASE NextStep
  69.         CASE 1: DialogReturn = ShowIntro()            'Show Intro dialog
  70.         CASE 2: DialogReturn = GetEPSFile()        '
  71.         CASE 3: DialogReturn = GETEPSInfo()        '
  72.         CASE 4: DialogReturn = ShowFinish()        'Show finish dialog with result of search
  73.     END SELECT
  74.     NextStep = NextStep + DialogReturn
  75. LOOP UNTIL NextStep = MAXSTEP + 1
  76.  
  77. ExitScript:
  78. STOP
  79.  
  80. ErrorHandler:
  81. SELECT CASE ErrNum
  82.     CASE 800
  83.         MESSAGE "FATAL ERROR" & CHR(13) & "Script will now exit."
  84.         RESUME AT ExitScript
  85.     CASE ELSE
  86.         MESSAGE "ERROR: " & STR(ErrNum) & CHR(13) & "Script will now exit."
  87.         RESUME AT ExitScript
  88.     END SELECT
  89.  
  90.  
  91. ' **************************************************************************************
  92. ' RegQuery
  93. ' This subroutine queries the Registry to determine the root directory where Ventura is installed
  94. ' **************************************************************************************
  95. SUB RegQuery
  96. ON ERROR GOTO ErrorHandler
  97.     VentDir$ = REGISTRYQUERY(HKEY_LOCAL_MACHINE,VENTURA_REGQUERY_CONST,"ConfigDir")     'Root directory where Ventura is installed
  98.     
  99.     first% = 1
  100.     pos% = 1
  101.     DO WHILE first <> 0
  102.         first = INSTR(VentDir$, "\", first )
  103.         IF first <> 0 THEN
  104.             pos = first
  105.             first = first + 1
  106.         END IF
  107.     LOOP
  108.     VenturaRoot$ = LEFT(VentDir$, pos - 1) 'Root directory where Visual CADD is installed
  109.  
  110. EXIT SUB
  111. ErrorHandler:
  112.     MESSAGE "Error reading registry."
  113.     ErrNum = 800
  114. END SUB
  115.  
  116.  
  117.  
  118. ' **************************************************************************************
  119. ' ShowIntro
  120. ' This function displays the introduction dialog.
  121. ' PARAMS: None
  122. '
  123. ' RETURNS: ShowIntro AS INTEGER - Integer indicating dialog return value(user selection)
  124. ' **************************************************************************************
  125. FUNCTION ShowIntro%
  126. BEGIN DIALOG OBJECT IntroDialog 290, 180, "EPS Information Wizard", SUB IntroDialogEventHandler
  127.     PUSHBUTTON  181, 160, 46, 14, .NextButton, "&Next >"
  128.     CANCELBUTTON  234, 160, 46, 14, .CancelButton
  129.     PUSHBUTTON  135, 160, 46, 14, .BackButton, "< &Back"
  130.     TEXT  95, 10, 185, 20, .Text2, "This wizard extracts fonts and colors used in Encapsulated Postscript (EPS) files."
  131.     IMAGE  10, 10, 75, 130, .IntroImage
  132.     GROUPBOX  10, 150, 270, 5, .LineGroupBox
  133.     TEXT  95, 40, 185, 20, .Text5, "To begin, click Next."
  134. END DIALOG
  135.  
  136.     IntroDialog.IntroImage.SetImage "#IntroBMP"
  137.     IntroDialog.IntroImage.SetStyle STYLE_IMAGE_CENTERED
  138.     IntroRet%=DIALOG(IntroDialog)
  139.     IF IntroRet% = DIALOG_RETURN_CANCEL THEN STOP            
  140.     IF IntroRet% = DIALOG_RETURN_NEXT THEN ShowIntro = 1        
  141. END FUNCTION
  142.  
  143. ' **************************************************************************************
  144. ' IntroDialogEventHandler
  145. ' This subroutine handles events for the Intro dialog.
  146. ' PARAMS: BYVAL ControlID% - Integer indicating the dialog control that is generating a dialog event.
  147. '        BYVAL Event% - Integer indicating the dialog event that has occurred in the dialog box
  148. ' **************************************************************************************
  149. SUB IntroDialogEventHandler(BYVAL ControlID%, BYVAL Event%)
  150.     IF Event% = EVENT_INITIALIZATION THEN         
  151.         IntroDialog.BackButton.Enable FALSE 
  152.     ENDIF
  153.     IF Event% = EVENT_MOUSE_CLICK THEN     
  154.         SELECT CASE ControlID%
  155.             CASE IntroDialog.NextButton.GetID()
  156.                 IntroDialog.CloseDialog DIALOG_RETURN_NEXT
  157.             CASE IntroDialog.CancelButton.GetID()
  158.                 IntroDialog.CloseDialog DIALOG_RETURN_CANCEL
  159.         END SELECT
  160.     ENDIF
  161. END FUNCTION
  162.  
  163.  
  164. ' **************************************************************************************
  165. ' GetEPSFile
  166. ' This function prompts the user to select an eps file.
  167. '
  168. ' RETURNS: GetEPSFile AS INTEGER - Integer indicating dialog return value(user selection)
  169. ' **************************************************************************************
  170. FUNCTION GetEPSFile%
  171. BEGIN DIALOG OBJECT EPSFileDialog 290, 180, "EPS Information Wizard", SUB EPSFileDialogEventHandler
  172.     TEXTBOX  95, 29, 185, 13, .EPSFileTextBox
  173.     PUSHBUTTON  234, 49, 46, 14, .BrowseButton, "&Browse..."
  174.     PUSHBUTTON  135, 160, 46, 14, .BackButton, "< &Back"
  175.     PUSHBUTTON  181, 160, 46, 14, .NextButton, "&Process"
  176.     CANCELBUTTON  234, 160, 46, 14, .CancelButton
  177.     TEXT  95, 15, 175, 12, .Text2, "Which EPS file would you like to use?"
  178.     IMAGE  10, 10, 75, 130, .EPSFileImage
  179.     GROUPBOX  10, 150, 270, 5, .LineGroupBox
  180.     TEXT  95, 111, 185, 30, .Text3, "Once you have selected an EPS file, click Process to extract the font and color information. This may take several minutes."
  181. END DIALOG
  182.  
  183.     EPSFileDialog.SetStyle STYLE_INVISIBLE
  184.     EPSFileDialog.EPSFileImage.SetImage "#Step2BMP"
  185.     EPSFileDialog.EPSFileImage.SetStyle STYLE_IMAGE_CENTERED
  186.  
  187.     EPSFileDialogRet% = Dialog(EPSFileDialog)
  188.     SELECT CASE EPSFileDialogRet%
  189.         CASE DIALOG_RETURN_CANCEL    
  190.             STOP
  191.         CASE DIALOG_RETURN_NEXT        
  192.             GetEPSFile = 1
  193.         CASE DIALOG_RETURN_BACK         
  194.             GetEPSFile = -1
  195.     END SELECT
  196. END FUNCTION
  197.  
  198.  
  199. ' **************************************************************************************
  200. ' EPSFileDialogEventHandler
  201. ' This subroutine handles events for the library name dialog.
  202. ' PARAMS: BYVAL ControlID% - Integer indicating the dialog control that is generating a dialog event.
  203. '        BYVAL Event% - Integer indicating the dialog event that has occurred in the dialog box
  204. ' **************************************************************************************
  205. SUB EPSFileDialogEventHandler(BYVAL ControlID%, BYVAL Event%)
  206. ON ERROR RESUME NEXT
  207.     IF Event% = EVENT_INITIALIZATION THEN         
  208.         EPSFileDialog.EPSFileTextBox.SetText EPSFile$
  209.         pos% = INSTR(EPSFile$, ".")
  210.         IF pos% = 0 THEN 
  211.             EPSFileDialog.NextButton.Enable FALSE
  212.         ELSE
  213.             EPSFileDialog.NextButton.Enable TRUE
  214.         ENDIF    
  215.         EPSFileDialog.SetStyle STYLE_VISIBLE
  216.     ENDIF
  217.  
  218.     IF Event% = EVENT_CHANGE_IN_CONTENT THEN         
  219.         SELECT CASE ControlID%
  220.             CASE EPSFileDialog.EPSFileTextBox.GetID()        
  221.                 EPSFile$ = EPSFileDialog.EPSFileTextBox.GetText()        '
  222.                 pos% = INSTR(EPSFile$, ".")
  223.                 IF pos% = 0 THEN 
  224.                     EPSFileDialog.NextButton.Enable FALSE
  225.                 ELSE
  226.                     EPSFileDialog.NextButton.Enable TRUE
  227.                 ENDIF    
  228.         END SELECT
  229.     ENDIF
  230.  
  231.     IF Event% = EVENT_MOUSE_CLICK THEN         
  232.         SELECT CASE ControlID%
  233.             CASE EPSFileDialog.NextButton.GetID()        
  234.                 OPEN EPSFile$ FOR APPEND AS 1
  235.                 IF LOF(1) > 0 THEN FileExists = TRUE
  236.                 CLOSE
  237.                 IF FileExists = TRUE THEN 
  238.                     EPSFileDialog.closedialog DIALOG_RETURN_NEXT
  239.                 ELSE
  240.                     KILL EPSFile$ 
  241.                     MESSAGE "Cannot locate file:" & CHR(13) & EPSFile$ 
  242.                 ENDIF        
  243.             CASE EPSFileDialog.BackButton.GetID()        
  244.                 EPSFileDialog.closedialog DIALOG_RETURN_BACK
  245.             CASE EPSFileDialog.CancelButton.GetID()        
  246.                 EPSFileDialog.closedialog DIALOG_RETURN_CANCEL    
  247.             CASE EPSFileDialog.BrowseButton.GetID()        
  248.                 EPSFile$ = GETFILEBOX("Encapsulated Postscript File (*.eps)|*.eps", "Open File", 0, EPSFile$)
  249.                 IF EPSFile$ <> "" THEN
  250.                     EPSFileDialog.EPSFileTextBox.SetText EPSFile$
  251.                     EPSFileDialog.NextButton.Enable TRUE
  252.                 ELSE
  253.                     EPSFileDialog.EPSFileTextBox.SetText VenturaRoot$
  254.                     EPSFileDialog.NextButton.Enable FALSE
  255.                 ENDIF
  256.         END SELECT
  257.     ENDIF
  258. END SUB
  259.  
  260.  
  261. ' **************************************************************************************
  262. ' GetEPSInfo
  263. ' This function parases the specified eps file for font and color information.
  264. '
  265. ' PARAMS:
  266. '
  267. ' RETURNS: GetEPSInfo AS INTEGER - Integer indicating dialog return value(user selection)
  268. ' **************************************************************************************
  269. FUNCTION GetEPSInfo%
  270. BEGINWAITCURSOR
  271. ON ERROR GOTO ErrorHandler
  272. DIM EndFile AS BOOLEAN    
  273. NewSize& = LIST_SIZE
  274.  
  275.     FOR x%=1 TO EPSIndex&
  276.         SETEMPTY EPSList$(x%) 
  277.     NEXT x%
  278.     EPSIndex& = 0
  279.     
  280.     OPEN EPSFile$ FOR INPUT AS 1    
  281.  
  282.     seek 1, 33        'ignore first 32 bytes of binary data
  283.     Count%=0
  284.     EndFile=FALSE
  285.     DO UNTIL EndFile=TRUE
  286.         'Get first fields of each line
  287.         INPUT #1, Section$
  288.  
  289.         IF INSTR(Section$, "%%") <> 0 THEN 'Does string start with %%
  290.             'IF section field is valid (ie. one we are looking for), add it to list
  291.             ValidPColor% = INSTR(Section$, "%%DocumentProcessColors:") 'Does string contain %%DocumentProcessColors:
  292.             ValidCColor% = INSTR(Section$, "%%DocumentCustomColors:") 'Does string contain %%DocumentCustomColors:
  293.             ValidNRes% = INSTR(Section$, "%%DocumentNeededResources:") 'Does string contain %%DocumentNeededResources:
  294.             ValidSRes% = INSTR(Section$, "%%DocumentSuppliedResources:") 'Does string contain %%DocumentSuppliedResources:
  295.             ValidFont% = INSTR(Section$, "%%+ font:", 0) 'Does string contain %%+ font:
  296.             IF ValidPColor% <> 0 OR ValidCColor% <> 0 OR ValidNRes% <> 0 OR ValidSRes% <> 0 OR ValidFont% <> 0 THEN        'String is valid
  297.                 EPSIndex = EPSIndex& + 1
  298.                 IF EPSIndex& MOD 100 = 0 THEN 
  299.                     NewSize& = NewSize& + LIST_SIZE
  300.                     REDIM PRESERVE EPSList$(NewSize&)
  301.                 ENDIF
  302.                 EPSList$(EPSIndex&) = RIGHT(Section$, LEN(Section$)-2)
  303.             ENDIF
  304.             Count = Count+1
  305.         ENDIF
  306.         FileEnd% = INSTR(Section, "*", 0) OR INSTR(Section, "EOF")    'Does string contain *
  307.         IF FileEnd <>0 THEN        'File End found 
  308.             EndFile=TRUE
  309.         ENDIF
  310.     
  311.     LOOP
  312.     CLOSE(1)
  313.     GetEPSInfo=1
  314.  
  315. ENDWAITCURSOR
  316. EXIT FUNCTION
  317. ErrorHandler:
  318. SELECT CASE ErrNum
  319.     CASE 200 TO 205
  320.         MESSAGE "ERROR. Unable to open file: " & CHR(13) & EPSFile$
  321.         RESUME AT FunctionEnd
  322.     CASE ELSE
  323.         MESSAGE STR(ErrNum)
  324.         RESUME NEXT
  325.     END SELECT
  326.  
  327. FunctionEnd:
  328.  GetEPSInfo=-1    'go back to previous dialog
  329. END FUNCTION
  330.  
  331.  
  332.  
  333. ' **************************************************************************************
  334. ' ShowFinish
  335. ' This function displays the font and color information for the specified eps file.
  336. ' The user is given the option of saving the information to a text file.
  337. '
  338. ' PARAMS: None
  339. '
  340. ' RETURNS: ShowFinish AS INTEGER - Integer indicating dialog return value(user selection)
  341. ' **************************************************************************************
  342. FUNCTION ShowFinish%
  343. EPSSize%=LEN(EPSFile$)
  344. TXTSize% = LEN("EPS")
  345. TXTFile$ = LEFT(EPSFile$, EPSSize-TXTSize) & "TXT"
  346.  
  347. BEGIN DIALOG OBJECT ShowFinishDialog 290, 180, "EPS Information Wizard", SUB ShowFinishDialogEventHandler
  348.     PUSHBUTTON  135, 160, 46, 14, .BackButton, "< &Back"
  349.     PUSHBUTTON  181, 160, 46, 14, .FinishButton, "&Finish"
  350.     CANCELBUTTON  234, 160, 46, 14, .CancelButton
  351.     IMAGE  10, 10, 75, 130, .ShowFinishImage
  352.     GROUPBOX  10, 150, 270, 5, .LineGroupBox
  353.     TEXT  95, 10, 185, 12, .Text2, "Here is the information extracted from the file:"
  354.     PUSHBUTTON  234, 130, 46, 14, .SaveButton, "&Save"
  355.     LISTBOX  95, 39, 185, 80, .InfoListBox
  356.     TEXT  95, 125, 129, 19, .Text4, "To save the information to a text file, click Save."
  357.     TEXT  95, 23, 185, 12, .Text3, EPSFile$
  358. END DIALOG
  359.  
  360.     ShowFinishDialog.SetStyle STYLE_INVISIBLE
  361.     ShowFinishDialog.ShowFinishImage.SetImage "#LastBMP"
  362.     ShowFinishDialog.ShowFinishImage.SetStyle STYLE_IMAGE_CENTERED
  363.  
  364.     ShowFinishRet% = Dialog(ShowFinishDialog)
  365.     SELECT CASE ShowFinishRet%
  366.         CASE DIALOG_RETURN_CANCEL     
  367.             STOP
  368.         CASE DIALOG_RETURN_NEXT      
  369.             ShowFinishDialog.SetVisible FALSE
  370.             ShowFinish = 1
  371.         CASE DIALOG_RETURN_BACK     
  372.             ShowFinish = -2
  373.     END SELECT
  374. END FUNCTION
  375.  
  376. ' **************************************************************************************
  377. ' ShowFinishDialogEventHandler
  378. ' This subroutine handles events for the finish dialog.
  379. ' PARAMS: BYVAL ControlID% - Integer indicating the dialog control that is generating a dialog event.
  380. '        BYVAL Event% - Integer indicating the dialog event that has occurred in the dialog box
  381. ' **************************************************************************************
  382. SUB ShowFinishDialogEventHandler(BYVAL ControlID%, BYVAL Event%)
  383.     IF Event% = EVENT_INITIALIZATION THEN         
  384.         ShowFinishDialog.SetStyle STYLE_VISIBLE
  385.         ShowFinishDialog.InfoListBox.SetArray EPSList$
  386.         ShowFinishDialog.CancelButton.Enable FALSE
  387.     ENDIF
  388.  
  389.     IF Event% = EVENT_MOUSE_CLICK THEN     
  390.         SELECT CASE ControlID%
  391.             CASE ShowFinishDialog.FinishButton.GetID()
  392.                 ShowFinishDialog.CloseDialog DIALOG_RETURN_NEXT
  393.             CASE ShowFinishDialog.BackButton.GetID()
  394.                 ShowFinishDialog.CloseDialog DIALOG_RETURN_BACK
  395.             CASE ShowFinishDialog.CancelButton.GetID()
  396.                 ShowFinishDialog.CloseDialog DIALOG_RETURN_CANCEL
  397.  
  398.             CASE ShowFinishDialog.SaveButton.GetID()        
  399.                 SaveFile$ = GETFILEBOX("Text files (*.txt)|*.txt", "Save As", 1, "EPSInfo.txt", "txt", VenturaRoot$)
  400.                 IF SaveFile <> "" THEN
  401.                     SaveStatus = SaveToFile(SaveFile$)
  402.                     IF SaveStatus = TRUE THEN
  403.                         MESSAGE "Save successful"
  404.                     ELSE
  405.                         MESSAGE "Unable to save to " & CHR(13) & SaveFile$
  406.                     ENDIF
  407.                 ENDIF
  408.  
  409.         END SELECT
  410.     ENDIF
  411. END SUB
  412.  
  413.  
  414. ' **************************************************************************************
  415. ' SaveToFile
  416. ' This function saves the extracted eps information to a text file.
  417. ' RETURNS: SaveToFile AS INTEGER - Integer indicating dialog return value(user selection)
  418. ' **************************************************************************************
  419. FUNCTION SaveToFile(SaveFile$) AS BOOLEAN
  420. ON ERROR GOTO ErrorHandler
  421.  
  422.     CLOSE
  423.     OPEN SaveFile$ FOR OUTPUT AS 1
  424.     PRINT #1, EPSFile$
  425.  
  426.     FOR i%=1 TO EPSIndex&
  427.         PRINT #1, EPSList(i%)
  428.     NEXT i%
  429.  
  430.     CLOSE(1)
  431.     SaveToFile = TRUE
  432.  
  433. EXIT FUNCTION
  434. ErrorHandler:
  435.     CLOSE
  436.     SaveToFile = FALSE
  437. END FUNCTION
  438.  
  439.  
  440.