; $Id: test_lj.pro,v 1.12 2004/01/21 15:55:03 scottm Exp $ ; ; Copyright (c) 1990-2004, Research Systems, Inc. All rights reserved. ; Unauthorized reproduction prohibited. pro lj_loadct,sixteen=sixteen,eight=eight,four=four ;+ ; ; Procedure to load a group of 16, 8, or 4 (depending on keyword) ; colors for the LJ-250 . If 8 or fewer colors are to be defined, it is ; assumed that 180 dpi resolution mode will be accessed. In this case, ; selection is from a pre-defined set of 8 colors. For 16 colors, any ; combination of the 256 available LJ-250 colors may be selected. ; The group chosen here is an attempt to select a table which uses ; a variety of colors, while maintaining some gradation between color ; intensities. ; ;- COMPILE_OPT hidden if keyword_set(sixteen) then begin ; 16 color specification is controllable ; [black,med_gray,lt_gray,lt_blue,royal_blue,blue,lavendar, ; aqua,dark_green,green,lt_green,red,orange,yellow,lt_yellow,white] r=2.55*[4,15,43,38,2,5,20,2,4,12,37,53,72,89,89,90] g=2.55*[4,16,43,58,22,5,5,24,9,38,58,8,41,83,88,88] b=2.55*[8,18,45,78,64,31,29,41,11,18,49,14,13,13,54,85] endif else if keyword_set(eight) then begin ; 8 color selection is fixed ; [black,blue,yellow,magenta,cyan,red,green,white] ; Keep highest white r=[10,10,227,135,5,135,8,229] g=[10,10,212,13,56,20,66,224] b=[15,74,33,64,163,36,56,217] endif else if keyword_set(four) then begin ; Keep highest (background) white ; [black,blue,yellow,white] r=[10,10,227,229] g=[10,10,212,224] b=[15,74,33,217] endif else print,'Unable to load lj color table; keyword expected.' tvlct,r,g,b ; Just loads the first 8 or 16 values, the rest are unchanged return end pro lj_plot_test ;+ ; ; Procedure to test the basic plotting capabilities of the LJ-250 driver, ; including color selection. ; ;- COMPILE_OPT hidden olddevice=!d.name set_plot,'lj' device,depth=3,/land,xsize=8,ysize=6,/inches,file='lj_plot_test.lj' old_pmulti=!p.multi !p.multi=[4,2,2,0,0] x=cos(6*(findgen(60)+1)/!radeg) y=sin(6*(findgen(60)+1)/!radeg) lj_loadct,/eight plot,x,xtitle='!8Complex Italic',ytitle='!5Duplex Roman', $ title='!12Dashed, Diamonds, Blue fill!3',linestyle=2,xrange=[0,60],xsty=1 oplot,y,linestyle=0,psym=-4 ; diamonds connected by solid line index=[indgen(60),reverse(indgen(60))] fillpts=[x,reverse(y)] polyfill,index,fillpts,color=1 ; Should fill with blue ;polyfill,index,fillpts,spacing=0.8,orientation=135 ;Finish crosshatch ; v=dist(100) contour,v,levels=[10,20,30,40,50],c_labels=[1,1,1,1,1], $ c_annotation=['!3Ten','!5Twenty','!6Thirty','!8Forty','!12Fifty!3'], $ color=3,title='Five levels, Magenta' ; v=dist(20) surface,v,title='Simple Surface (no color)' ; x=[0,0,4,4,0] y=[0,2,2,0,0] plot,x,y,/nodata,title='Test of PLOTS, red interior channel' f=0.25 for i=1,4 do $ plots,[0+i*f,0+i*f,4-i*f,4-i*f,0+i*f],[0+i*f,2-i*f,2-i*f,0+i*f,0+i*f],linest=i xcoord=[0.1,3.9,3.9,0.1,0.1,0.2,3.8,3.8,0.2,0.2] ycoord=[0.1,0.1,1.9,1.9,0.1,0.2,0.2,1.8,1.8,0.2] polyfill,xcoord,ycoord,color=5 ; fill interior box with red xyouts,0,0,'!6Unclipped, enlarged line at 45 degrees!3',/noclip, $ size=1.6,orientation=45 ; !p.multi=old_pmulti device,/close set_plot,olddevice return end pro lj_line_test ;+ ; ; Procedure to test the monochrome linestyle capability of the IDL ; LJ-250 driver. ; ;- COMPILE_OPT hidden olddevice=!d.name set_plot,'lj' device,/land,depth=1,xsize=8,ysize=6,/inches,file='lj_line_test.lj' plot,[0,1],[1,1],xstyle=1,xrange=[-0.2,1.2],ystyle=1,yrange=[0,2],/nodata, $ xticks=14,xticklen=0.04,xtitle='14 Tick Intervals', $ title='!8Test of Linestyles (Thick Lines)',ytitle='!8Avail. Styles!3' for i=0,5 do begin oplot,[0,1],[0.1+(0.3*i),0.1+(0.3*i)],linestyle=i,thick=5.0 xyouts,0.2,(0.2+(0.3*i)), $ '!8Linestyle: '+string(i,'(i1)') endfor device,/close set_plot,olddevice return end pro lj_image_test ;+ ; ; Procedure to generate a series of TV images on a page, for an LJ-250 driver ; test. Monochrome (depth=1) is used, so that the dithering may be tested. ; ;- COMPILE_OPT hidden olddevice=!d.name set_plot,'lj' v = bytscl(dist(600)) v=255-v*(v lt 180) v[300,*]=0 ;Dark line v[*,300]=0 ;Crossing dark line device,resol=180,/land,xsize=10*180,ysize=6*180,xoffset=90,yoffset=180, $ /pixels,/floyd,file='lj_image_test.lj',depth=1 tv,v,0,180 ; Move up 1 inch to allow room for label below xyouts,200,90,/device,'!6Floyd' device,/ordered tv,v,690,180 ; Should be 1/2 inch gap between images xyouts,890,90,/device,'Ordered' ; Should continue to use !6 font xyouts,640,180,/device,orientation=90,'1/2 inch gap here, 90 deg. rotation' device,threshold=100 ; Should create small black swaths ;tv,v,1380,180 ; NOTE: this doesn't work because monochrome, & outside area tv,v[0:399,*],1380,180 ;Deliberately avoid last 200 pixels to fit plot area xyouts,(1580./1800.),(90./1080.),/normal,'!6Threshold!3' xyouts,1330,780,/device,orientation=270,'270 deg. rot., last inch truncated' device,/close set_plot,olddevice return end pro lj_resolution_test ;+ ; ; Procedure to test landscape and portrait graphics using both 90 and 180 dpi ; LJ-250 resolutions. A total of four output files will be generated. ; ;- COMPILE_OPT hidden olddevice=!d.name set_plot,'lj' ; device,depth=4,resol=90,/land,xsize=20,ysize=12.5,xoffset=2.5,yoffset=2.5, $ file='lj_90_land_cm.lj' lj_loadct,/sixteen ; Load first 16 indices in color table with known colors surface,dist(20),title='!6land, 90res, 20x12.5cm, 2.5x2.5cm off, color Red!3',$ color=11 device,/close ; device,depth=4,resol=90,/port,xsize=6,ysize=4,xoffset=1,yoffset=1,/inches, $ file='lj_90_port_inches.lj' lj_loadct,/sixteen ; Load first 16 indices in color table with known colors surface,dist(20),title='!6port, 90res, 6x4in, 1x1 off, color Lt. Gray!3', $ color=2 device,/close ; device,depth=3,resol=180,/land,xsize=6,ysize=6,xoffset=2.0,yoffset=2.0, $ /inches,file='lj_180_land_inches.lj' lj_loadct,/eight ; Load first 8 indices in color table with known colors surface,dist(20),title='!6land, 180res, 6x6in, 2x2 off, color Cyan!3', $ color=4 device,/close ; device,depth=3,resol=180,/port,xsize=1080,ysize=720,xoffset=180,yoffset=360, $ /pixels,file='lj_180_port_pixels.lj' lj_loadct,/eight ; Load first 8 indices in color table with known colors surface,dist(20),title='!6port, 180res, 1080x720, 180x360 off, color Green!3',$ color=6 device,/close ; set_plot,olddevice return end pro lj_depth_test ;+ ; ; Procedure to create two disk files illustrating different depth ; (bit plane) renditions available on the LJ-250 . ; ;- COMPILE_OPT hidden olddevice=!d.name set_plot,'lj' image=dist(360) ; device,/port,resol=180,depth=3,xsize=3,ysize=3,/inches, $ file='lj_depth123_test.lj' lj_loadct,/eight ; load THE 8 colors for use in 180 dpi mode tv,bytscl(image,top=7),0,90 xyouts,0,40,'Depth 3, 180 dpi, Portrait',/device ; device,/land,depth=2,resolution=90,xsize=5,ysize=5,/inches lj_loadct,/four ; load 4 colors for use in 180 dpi mode, 2 bit planes tv,bytscl(image,top=3),180,90 ; Should cleanly truncate last 1 inch on right xyouts,270,50,'Depth 2, 90 dpi, Land, last inch truncated',/device xyouts,100,90,orient=90,'Right inch of image & text should be clipped',/device ; device,/port,depth=1,resolution=180,xsize=3,ysize=3,/inches tv,image,90,90 xyouts,90,40,'Depth 1, 180 dpi, Portrait, Mono',/device device,/close ; device,/land,resol=90,depth=4,file='lj_depth4_test.lj' lj_loadct,/sixteen ; Load 16 colors for use at 90 dpi resolution image=bytscl(image,top=15) ; Set image range to match 16 selected colors for i=0b,15 do image[22*i,0]=bytarr(22,22)+i ; Place color bar at bottom tv,image,0,90 xyouts,90,45,'Depth 4, 90 dpi, Land, 16 color bar',/device device,/close set_plot,olddevice return end pro lj_show3_test ;+ ; ; Procedure to create an output file for use on the LJ-250, which will ; use the library procedure SHOW3. ; ;- COMPILE_OPT hidden olddevice=!d.name set_plot,'lj' device,/land,depth=3,resolution=180,filename='lj_show3_test.lj' ljlct ; Test this routine to load the default palette show3,dist(16) device,/close set_plot,olddevice return end pro test_lj ;+ ; NAME: ; test_lj ; PURPOSE: ; To exercise and demonstrate various aspects of the IDL driver for ; the Digital Equipment Corporation LJ-250 color printer. ; CATEGORY: ; Graphics Drivers. ; CALLING SEQUENCE: ; test_lj - Calls all test procedures, which may also be individually ; called: ; lj_plot_test - plot, contour, surface, plots, and vector fonts ; lj_line_test - test of linestyles ; lj_image_test - raster image output, for various dithering options ; lj_resolution_test - test the two available resolutions (90 and 180dpi) ; lj_depth_test - test different depth (bit plane) renditions ; lj_show3_test - test the output using the SHOW3 procedure ; INPUTS: ; None ; OPTIONAL INPUT PARAMETERS: ; None ; KEYWORD PARAMETERS: ; None ; OUTPUTS: ; Creates LJ-250 compatible disk files: lj_plot_test.lj, lj_line_test.lj, ; lj_image_test.lj, lj_90*.lj, lj_180*.lj, lj_depth123_test.lj, ; lj_depth4_test.lj, and lj_show3_test.lj . ; These files are not automatically submitted for printing; neither ; are they deleted automatically. ; To print the .lj files properly on a VMS system, it is recommended ; that the /PASSALL qualifier be used with the PRINT command, to ; pass all file information directly to the lj printer. ; OPTIONAL OUTPUT PARAMETERS: ; None ; COMMON BLOCKS: ; None ; SIDE EFFECTS: ; Many .lj files will be created and left in the default directory. ; RESTRICTIONS: ; Designed for IDL Version 2; not compatible with VMS IDL Version 1. ; PROCEDURE: ; The called routines try different permutations of the allowable ; keywords to the DEVICE procedure for the LJ-250. Vector plotting, ; contour, line drawing, and surface plots are generated, as well ; as a series of images which test all dithering methods. ; The two resolutions of the LJ-250 are tested, and specific color ; maps are used and tested. ; MODIFICATION HISTORY: ; Written, August 1990, TJA (derived from demo_pcl) ;- lj_plot_test print,'File lj_plot_test.lj has been completed.' lj_line_test print,'File lj_line_test.lj has been completed.' lj_image_test print,'File lj_image_test.lj has been completed.' lj_resolution_test print,'Files lj_90*.lj, and lj_180*.lj have been completed.' lj_depth_test print,'Files lj_depth123_test.lj, and lj_depth4_test.lj have been completed.' lj_show3_test print,'File lj_show3_test.lj has been completed.' print,' ' print,'*** All Finished ***' return end