[85] | 1 | ;+ |
---|
| 2 | ; NAME: |
---|
| 3 | ; PSCONFIG |
---|
| 4 | ; |
---|
| 5 | ; PURPOSE: |
---|
| 6 | ; |
---|
| 7 | ; This program is simply a function wrapper for the FSC_PSCONFIG |
---|
| 8 | ; object program (fsc_psconfig__define.pro). It was written so |
---|
| 9 | ; that it could serve as a drop-in replacement for the PS_FORM |
---|
| 10 | ; program it replaces. It calls the object program's graphical |
---|
| 11 | ; user interface as a modal widget and returns the DEVICE keywords |
---|
| 12 | ; collected from the form in a form that is appropriate for |
---|
| 13 | ; configuring the PostScript device. |
---|
| 14 | ; |
---|
| 15 | ; It is now possible to call the program without a graphical user |
---|
| 16 | ; interface, thus getting the default keywords directly. This is |
---|
| 17 | ; appropriate for many applications. Use the NOGUI keyword when |
---|
| 18 | ; you call the program. For example, like this: |
---|
| 19 | ; |
---|
| 20 | ; Set_Plot, 'PS' |
---|
| 21 | ; Device, _Extra=PSConfig(/NoGUI, Filename='myfilename.eps') |
---|
| 22 | ; |
---|
| 23 | ; AUTHOR: |
---|
| 24 | ; |
---|
| 25 | ; FANNING SOFTWARE CONSULTING |
---|
| 26 | ; David Fanning, Ph.D. |
---|
| 27 | ; 1645 Sheely Drive |
---|
| 28 | ; Fort Collins, CO 80526 USA |
---|
| 29 | ; Phone: 970-221-0438 |
---|
| 30 | ; E-mail: davidf@dfanning.com |
---|
| 31 | ; Coyote's Guide to IDL Programming: http://www.dfanning.com/ |
---|
| 32 | ; |
---|
| 33 | ; CALLING SEQUENCE: |
---|
| 34 | ; |
---|
| 35 | ; psKeywords = PSConfig() |
---|
| 36 | ; |
---|
| 37 | ; CATEGORY: |
---|
| 38 | ; |
---|
| 39 | ; Configuring PostScript output. |
---|
| 40 | ; |
---|
| 41 | ; DOCUMENTATION: |
---|
| 42 | ; |
---|
| 43 | ; Complete documentation for the FSC_PSCONFIG object, including |
---|
| 44 | ; keyword and method descriptions, and example programs using the object |
---|
| 45 | ; can be found on the Coyote's Guide to IDL Programming web page: |
---|
| 46 | ; |
---|
| 47 | ; http://www.dfanning.com/programs/docs/fsc_psconfig.html |
---|
| 48 | ; |
---|
| 49 | ; INPUT: |
---|
| 50 | ; |
---|
| 51 | ; psConfigObject -- An optional FSC_PSCONFIG object reference can be |
---|
| 52 | ; passed as an argument to the function. The object is not destroyed |
---|
| 53 | ; if passed in as an argument. |
---|
| 54 | ; |
---|
| 55 | ; psConfigObject = Obj_New("FSC_PSCONFIG") |
---|
| 56 | ; keywords = PSConfig(psConfigObject) |
---|
| 57 | ; |
---|
| 58 | ; Having the object means that you have an on-going and current record |
---|
| 59 | ; of exactly how your PostScript device is configured. Be sure to destroy |
---|
| 60 | ; the object when you are finished with it. |
---|
| 61 | ; |
---|
| 62 | ; KEYWORDS: |
---|
| 63 | ; |
---|
| 64 | ; NOGUI: Setting this keyword returns the default keyword settings directly, |
---|
| 65 | ; without allowing user interaction. |
---|
| 66 | ; |
---|
| 67 | ; Any keyword accepted by the FSC_PSCONFIG object can be used with |
---|
| 68 | ; this program. Here are a few of the most popular keywords. |
---|
| 69 | ; |
---|
| 70 | ; Bits_per_Pixel - The number of image bits saved for each image pixel: 2, 4, or 8. The default is 8. |
---|
| 71 | ; Color - Set this keyword to select Color PostScript output. Turned on by default. |
---|
| 72 | ; DefaultSetup - Set this keyword to the "name" of a default style. Current styles (you can easily |
---|
| 73 | ; create and add your own to the source code) are the following: |
---|
| 74 | ; |
---|
| 75 | ; "System (Portrait)" - The normal "default" system set-up. Also, "System". |
---|
| 76 | ; "System (Landcape)" - The normal "default" landscape system set-up. |
---|
| 77 | ; "Centered (Portrait)" - The window centered on the page. Also, "Center" or "Centered". |
---|
| 78 | ; "Centered (Landscape)" - The window centered on the landscape page. Also, "Landscape". |
---|
| 79 | ; "Square (Portrait)" - A square plot, centered on the page. |
---|
| 80 | ; "Square (Landscape)" - A square plot, centered on the landscape page. |
---|
| 81 | ; "Figure (Small)" - A small encapsulated figure size, centered on page. Also, "Encapsulated" or "Encapsulate". |
---|
| 82 | ; "Figure (Large)" - A larger encapsulated figure size, centered on page. Also, "Figure". |
---|
| 83 | ; "Color (Portrait)" - A "centered" plot, with color turned on. Also, "Color". |
---|
| 84 | ; "Color (Landscape)" - A "centered" landscape plot, with color turned on. |
---|
| 85 | ; |
---|
| 86 | ; Directory - Set this keyword to the name of the starting directory. The current directory is used by default. |
---|
| 87 | ; Encapsulate - Set this keyword to select Encapsulated PostScript output. Turned off by default. |
---|
| 88 | ; European - Set this keyword to indicate "european" mode (i.e., A4 page and centimeter units). Turned off by default. |
---|
| 89 | ; Filename - Set thie keyword to the name of the PostScript file. The default is "idl.ps". |
---|
| 90 | ; Inches - Set this keyword to indicate sizes and offsets are in inches as opposed to centimeters. Set by European keyword by default. |
---|
| 91 | ; Landscape - Set this keyword to select Landscape page output. Portrait page output is the default. |
---|
| 92 | ; PageType - Set this keyword to the "type" of page. Possible values are: |
---|
| 93 | ; "Letter" - 8.5 by 11 inches. (Default, unless the European keyword is set.) |
---|
| 94 | ; "Legal" - 8.5 by 14 inches. |
---|
| 95 | ; "Ledger" - 11 by 17 inches. |
---|
| 96 | ; "A4" - 21.0 by 29.7 centimeters. (Default, if the European keyword is set.) |
---|
| 97 | ; XOffset - Set this keyword to the X Offset. Uses "System (Portrait)" defaults. (Note: offset calculated from lower-left corner of page.) |
---|
| 98 | ; XSize - Set this keyword to the X size of the PostScript "window". Uses "System (Portrait)" defaults. |
---|
| 99 | ; YOffset - Set this keyword to the Y Offset. Uses "System (Portrait)" defaults. (Note: offset calculated from lower-left corner of page.) |
---|
| 100 | ; YSize - Set this keyword to the Y size of the PostScript "window". Uses "System (Portrait)" defaults. |
---|
| 101 | ; |
---|
| 102 | ; In addition, the following keywords can be used: |
---|
| 103 | ; |
---|
| 104 | ; CANCEL -- An output keyword that will be set to 1 if the user |
---|
| 105 | ; chooses the Cancel button on the form. It will be 0 otherwise. |
---|
| 106 | ; |
---|
| 107 | ; FONTINFO -- Set this keyword is you wish to have font information |
---|
| 108 | ; appear on the form. The default is to not include font information. |
---|
| 109 | ; |
---|
| 110 | ; FONTTYPE -- Set this keyword to a named variable that will indicate |
---|
| 111 | ; the user's preference for font type. Values will be -1 (Hershey fonts), |
---|
| 112 | ; 0 (hardware fonts), and 1 (true-type fonts). This keyword will always |
---|
| 113 | ; return -1 unless the FONTINFO keyword has also been set. |
---|
| 114 | ; |
---|
| 115 | ; GROUP_LEADER -- Set this keyword to a widget identifier of the widget |
---|
| 116 | ; you wish to be a group leader for this program. |
---|
| 117 | ; |
---|
| 118 | ; EXAMPLE: |
---|
| 119 | ; |
---|
| 120 | ; To have the user specify PostScript configuration parameters, use |
---|
| 121 | ; the program like this: |
---|
| 122 | ; |
---|
| 123 | ; keywords = PSConfig(Cancel=cancelled) |
---|
| 124 | ; IF cancelled THEN RETURN |
---|
| 125 | ; thisDevice = !D.Name |
---|
| 126 | ; Set_Plot, 'PS' |
---|
| 127 | ; Device, _Extra=keywords |
---|
| 128 | ; Plot, findgen(11) ; Or whatever graphics commands you use. |
---|
| 129 | ; Device, /Close_File |
---|
| 130 | ; Set_Plot, thisDevice |
---|
| 131 | ; |
---|
| 132 | ; OTHER PROGRAMS NEEDED: |
---|
| 133 | ; |
---|
| 134 | ; The following programs are required to run this one: |
---|
| 135 | ; |
---|
| 136 | ; fsc_droplist.pro |
---|
| 137 | ; fsc_fileselect.pro |
---|
| 138 | ; fsc_inputfield.pro |
---|
| 139 | ; fsc_plotwindow |
---|
| 140 | ; fsc_psconfig__define.pro |
---|
| 141 | ; |
---|
| 142 | ; MODIFICATIONS: |
---|
| 143 | ; |
---|
| 144 | ; Written by David W. Fanning, 31 January 2000. |
---|
| 145 | ; Added NOGUI keyword to allow default keywords to be obtained without |
---|
| 146 | ; user interaction. 11 Oct 2004. DWF. |
---|
| 147 | ; Added CMYK option 24 August 2007. Requires LANGUAGE_LEVEL=2 printer. L. Anderson |
---|
| 148 | ;- |
---|
| 149 | ;########################################################################### |
---|
| 150 | ; |
---|
| 151 | ; LICENSE |
---|
| 152 | ; |
---|
| 153 | ; This software is OSI Certified Open Source Software. |
---|
| 154 | ; OSI Certified is a certification mark of the Open Source Initiative. |
---|
| 155 | ; |
---|
| 156 | ; Copyright (c) 2000-2007 Fanning Software Consulting |
---|
| 157 | ; |
---|
| 158 | ; This software is provided "as-is", without any express or |
---|
| 159 | ; implied warranty. In no event will the authors be held liable |
---|
| 160 | ; for any damages arising from the use of this software. |
---|
| 161 | ; |
---|
| 162 | ; Permission is granted to anyone to use this software for any |
---|
| 163 | ; purpose, including commercial applications, and to alter it and |
---|
| 164 | ; redistribute it freely, subject to the following restrictions: |
---|
| 165 | ; |
---|
| 166 | ; 1. The origin of this software must not be misrepresented; you must |
---|
| 167 | ; not claim you wrote the original software. If you use this software |
---|
| 168 | ; in a product, an acknowledgment in the product documentation |
---|
| 169 | ; would be appreciated, but is not required. |
---|
| 170 | ; |
---|
| 171 | ; 2. Altered source versions must be plainly marked as such, and must |
---|
| 172 | ; not be misrepresented as being the original software. |
---|
| 173 | ; |
---|
| 174 | ; 3. This notice may not be removed or altered from any source distribution. |
---|
| 175 | ; |
---|
| 176 | ; For more information on Open Source Software, visit the Open Source |
---|
| 177 | ; web site: http://www.opensource.org. |
---|
| 178 | ; |
---|
| 179 | ;########################################################################### |
---|
| 180 | |
---|
| 181 | |
---|
| 182 | FUNCTION PSConfig, $ |
---|
| 183 | psObject, $ ; A FSC_PSCONFIG object. If psObject is present, all input keywords |
---|
| 184 | ; except Group_Leader and FontInfo are ignored. |
---|
| 185 | AvantGarde=avantgarde, $ ; Set this keyword to select the AvantGarde font. |
---|
| 186 | Bits_per_Pixel=bits_per_pixel, $ ; The number of image bits saved for each image pixel: 2, 4, or 8. |
---|
| 187 | Bold=bold, $ ; Set this keyword to select the Bold font style. |
---|
| 188 | BookStyle=book, $ ; Set this keyword to select the Book font style. |
---|
| 189 | Bkman=bookman, $ ; Set this keyword to select the Bookman font. |
---|
| 190 | Cancel=cancelled, $ ; This output keyword will be set to 1 if the user CANCELs. Set to 0 otherwise. |
---|
| 191 | Color=color, $ ; Set this keyword to select Color PostScript output. |
---|
| 192 | Courier=courier, $ ; Set this keyword to select the Courier font. |
---|
| 193 | CMYK=cmyk, $ ; Set this keyword to use CMYK colors instead of RGB. (Requires LANGUAGE_LEVEL=2 printer.) |
---|
| 194 | Debug=debug, $ ; Set this keyword to get traceback information when errors are encountered. |
---|
| 195 | DefaultSetup=defaultsetup, $ ; Set this keyword to the "name" of a default style. |
---|
| 196 | Demi=demi, $ ; Set this keyword to select the Demi font style. |
---|
| 197 | Directory=directory, $ ; Set thie keyword to the name of the starting directory. Current directory by default. |
---|
| 198 | Encapsulate=encapsulate, $ ; Set this keyword to select Encapsulated PostScript output. |
---|
| 199 | European=european, $ ; Set this keyword to indicate "european" mode (i.e., A4 page and centimeter units). |
---|
| 200 | Filename=filename, $ ; Set this keyword to the name of the file. Default: 'idl.ps' |
---|
| 201 | FontInfo=fontinfo, $ ; Set this keyword if you want font information in the FSC_PSCONFIG GUI. |
---|
| 202 | FontSize=fontsize, $ ; Set this keyword to the font size. Between 6 and 36. Default is 12. |
---|
| 203 | FontType=fonttype, $ ; An input/output keyword that will have the FontType. Will be !P.Font unless FontInfo is selected. |
---|
| 204 | Group_Leader=group_leader, $ ; The group leader of the PSConfig modal widget. |
---|
| 205 | Helvetica=helvetica, $ ; Set this keyword to select the Helvetica font. |
---|
| 206 | Inches=inches, $ ; Set this keyword to indicate sizes and offsets are in inches as opposed to centimeters. |
---|
| 207 | Italic=italic, $ ; Set this keyword to select the Italic font style. |
---|
| 208 | Isolatin=isolatin, $ ; Set this keyword to select ISOlatin1 encoding. |
---|
| 209 | Landscape=landscape, $ ; Set this keyword to select Landscape output. |
---|
| 210 | Light=light, $ ; Set this keyword to select the Light font style. |
---|
| 211 | Medium=medium, $ ; Set this keyword to select the Medium font style. |
---|
| 212 | Name=name, $ ; The "name" of the object. |
---|
| 213 | Narrow=narrow, $ ; Set this keyword to select the Narrow font style. |
---|
| 214 | NOGUI=nogui, $ $ ; Return the default keywords directly, without user interaction. |
---|
| 215 | Oblique=oblique, $ $ ; Set this keyword to select the Oblique font style. |
---|
| 216 | PageType=pagetype, $ ; Set this keyword to the "type" of page: 'Letter', 'Legal', 'Ledger', or 'A4'. |
---|
| 217 | Palatino=palatino, $ ; Set this keyword to select the Palatino font. |
---|
| 218 | Preview=preview, $ ; Set this keyword to select Preview mode: 0, 1, or 2. |
---|
| 219 | Schoolbook=schoolbook, $ ; Set this keyword to select the Schoolbook font. |
---|
| 220 | Set_Font=set_font, $ ; Set this keyword to the name of a font passed to PostScript with Set_Plot keyword. |
---|
| 221 | Symbol=symbol, $ ; Set this keyword to select the Symbol font. |
---|
| 222 | Times=times, $ ; Set this keyword to select the Times font. |
---|
| 223 | TrueType=truetype, $ ; Set this keyword to select True-Type fonts. |
---|
| 224 | XOffset=xoffset, $ ; Set this keyword to the XOffset. (Note: offset calculated from lower-left corner of page.) |
---|
| 225 | XSize=xsize, $ ; Set this keyword to the X size of the PostScript "window". |
---|
| 226 | YOffset=yoffset, $ ; Set this keyword to the YOffset. (Note: offset calculated from lower-left corner of page.) |
---|
| 227 | YSize=ysize, $ ; Set this keyword to the Y size of the PostScript "window". |
---|
| 228 | ZapfChancery=zapfchancery, $ ; Set this keyword to select the ZapfChancery font. |
---|
| 229 | ZapfDingbats=zapfdingbats ; Set this keyword to select the ZapfDingbats font. |
---|
| 230 | |
---|
| 231 | On_Error, 2 |
---|
| 232 | |
---|
| 233 | IF N_Elements(psObject) EQ 0 THEN BEGIN |
---|
| 234 | psObject = Obj_New('FSC_PSCONFIG', $ |
---|
| 235 | AvantGarde=avantgarde, $ |
---|
| 236 | Bits_per_Pixel=bits_per_pixel, $ |
---|
| 237 | Bold=bold, $ |
---|
| 238 | BookStyle=book, $ |
---|
| 239 | Bkman=bookman, $ |
---|
| 240 | CMYK=cmyk, $ |
---|
| 241 | Color=color, $ |
---|
| 242 | Courier=courier, $ |
---|
| 243 | Debug=debug, $ |
---|
| 244 | DefaultSetup=defaultsetup, $ |
---|
| 245 | Demi=demi, $ |
---|
| 246 | Directory=directory, $ |
---|
| 247 | Encapsulate=encapsulate, $ |
---|
| 248 | European=european, $ |
---|
| 249 | Filename=filename, $ |
---|
| 250 | FontSize=fontsize, $ |
---|
| 251 | FontType=fonttype, $ |
---|
| 252 | Helvetica=helvetica, $ |
---|
| 253 | Inches=inches, $ |
---|
| 254 | Italic=italic, $ |
---|
| 255 | Isolatin=isolatin, $ |
---|
| 256 | Landscape=landscape, $ |
---|
| 257 | Light=light, $ |
---|
| 258 | Medium=medium, $ |
---|
| 259 | Name=name, $ |
---|
| 260 | Narrow=narrow, $ |
---|
| 261 | Oblique=oblique, $ |
---|
| 262 | PageType=pagetype, $ |
---|
| 263 | Palatino=palatino, $ |
---|
| 264 | Preview=preview, $ |
---|
| 265 | Schoolbook=schoolbook, $ |
---|
| 266 | Set_Font=set_font, $ |
---|
| 267 | Symbol=symbol, $ |
---|
| 268 | Times=times, $ |
---|
| 269 | TrueType=truetype, $ |
---|
| 270 | XOffset=xoffset, $ |
---|
| 271 | XSize=xsize, $ |
---|
| 272 | YOffset=yoffset, $ |
---|
| 273 | YSize=ysize, $ |
---|
| 274 | ZapfChancery=zapfchancery, $ |
---|
| 275 | ZapfDingbats=zapfdingbats ) |
---|
| 276 | create = 1 |
---|
| 277 | ENDIF ELSE BEGIN |
---|
| 278 | type = Size(psObject, /Type) |
---|
| 279 | IF type NE 11 THEN BEGIN |
---|
| 280 | Message, 'Object Reference required as an argument' |
---|
| 281 | ENDIF |
---|
| 282 | create = 0 |
---|
| 283 | ENDELSE |
---|
| 284 | |
---|
| 285 | ; Call the GUI of the FSC_PSCONFIG object. |
---|
| 286 | |
---|
| 287 | IF Keyword_Set(nogui) EQ 0 THEN $ |
---|
| 288 | psObject->GUI, Group_Leader=group_leader, Cancel=cancelled, FontInfo=Keyword_Set(fontinfo) |
---|
| 289 | |
---|
| 290 | ; Get the PostScript device keywords, along with the font type information. |
---|
| 291 | |
---|
| 292 | keywords = psObject->GetKeywords(FontType=fonttype) |
---|
| 293 | |
---|
| 294 | ; If this program created the psObject, destroy it. Otherwise leave it. |
---|
| 295 | |
---|
| 296 | IF create THEN Obj_Destroy, psObject |
---|
| 297 | |
---|
| 298 | ; Return the PostScript device keywords. |
---|
| 299 | |
---|
| 300 | RETURN, keywords |
---|
| 301 | END ;---------------------------------------------------------------------- |
---|
| 302 | |
---|
| 303 | |
---|