; docformat = 'rst' ;+ ; Batch file containing all the code intended to be typed at the command line ; from the "Object graphics" chapter. ;- ; Introduction ;pref_set, 'IDL_GR_WIN_RENDERER', 1, /commit ;pref_set, 'IDL_GR_X_RENDERER', 1, /commit ; Images peopleFilename = filepath('people.jpg', subdir=['examples', 'data']) ali = read_image(peopleFilename) help, ali view = obj_new('IDLgrView', viewplane_rect=[0, 0, 256, 256]) model = obj_new('IDLgrModel') view->add, model image = obj_new('IDLgrImage', ali) model->add, image window = obj_new('IDLgrWindow', dimensions=[256, 256]) window->draw, view image->getProperty, interleave=interleave print, interleave image->setProperty, channel='ff0000'x window->draw, view obj_destroy, [view, window] ; The theory ; A 3-dimensional example mg_show_polygon filename = filepath('cow10.sav', subdir=['examples', 'data']) restore, filename=filename, /verbose polygon = obj_new('IDLgrPolygon', x, y, z, polygons=polylist, $ color=[100, 80, 25], shading=1) xobjview, polygon obj_destroy, polygon ; Transformation matrix section model = obj_new('IDLgrModel') model->getProperty, transform=transform print, transform model->translate, 2, 3, 4 model->getProperty, transform=transform print, transform model->scale, 5, 6, 7 model->getProperty, transform=transform print, transform model->rotate, [1, 0, 0], 90 model->getProperty, transform=transform print, transform obj_destroy, model mg_transform_demo mg_show_axes mg_show_axes, /no_switch ; Properties ; Sample visualizations section endoFilename = filepath('endocell.jpg', subdir=['examples', 'data']) endo = read_image(endoFilename) mg_ogimage_example, endo openr, lun, filepath('damp_sn.dat', subdir=['examples', 'data']), /get_lun dsin = bytarr(512) readu, lun, dsin free_lun, lun mg_ogplot_example, findgen(512), dsin restore, filename=filepath('marbells.dat', subdir=['examples', 'data']), /verbose mg_ogsurface_example, elev, color=[200, 200, 200], style=2 convecFilename = filepath('convec.dat', subdir=['examples', 'data']) convec = read_binary(convecFilename, data_type=1, data_dims=[248, 248]) mg_ogcontour_example, convec, n_levels=30 blackHoleFilename = filepath('cduskcD1400.sav', subdir=['examples', 'data']) restore, filename=blackHoleFilename mg_ogvolume_example, density, clip_planes=[-0.1, -0.1, 0.3, -1.0] restore, filename=filepath('storm25.sav', subdir=['examples', 'demo', 'demodata']), /verbose mg_ogisosurface_example, p, 9, /shading mg_ogmap_example, 'stereographic', color=[200, 100, 100] restore, filename=filepath('marbells.dat', subdir=['examples', 'data']), /verbose mg_ogscene_example, elev, findgen(350) * 10, findgen(450) * 10, /isotropic ; Texture mapping and transparency mg_surfacetexture_demo mg_render_order mg_render_order, /swap mg_texturemap_demo ; Inheriting from an IDLgr class: MGgrCube .run mggrcube__define cube = obj_new('MGgrCube', center=[0, 0], side=1.0) xobjview, cube cube->setProperty, color=[255, 200, 0] obj_destroy, cube ; Composite graphics classes .run mggrlightmodel__define ; Sending output to other destinations ; Creating a new destination: MGgrWindow3D .run mggrwindow3d__define ; Widgets and objects graphics: interaction ; Widgets and object graphics: tiled imagery ; Function graphics nsets = 20 npts = 100 seed = 0L d = randomu(seed, nsets, npts) for c = 0L, nsets - 1L do d[c, *] += (randomu(seed, 1))[0] bpd = createboxplotdata(d) box = boxplot(bpd, xrange=[-1, nsets], $ title='Random data sets', xtitle='Data set', ytitle='Values', $ fill_color='light_blue', thick=2.0, dimensions=[800, 300]) waves = (read_ascii(file_which('sine_waves.txt'))).field1 p1 = plot(waves[0, *]) help, p1 p2 = plot(waves[1, *], /overplot, color='red') p1.linestyle = 'dashed' print, p1 p = plot(/test) c = contour(/test) print, getwindows() p = plot(sin(findgen(360) * !dtor), /buffer) p->save, 'sinewave.png', width=600 im = p.window.image_data help, im window, xsize=640, ysize=512 tv, im, true=1 obj_destroy, p w = window() t = text(0.5, 0.5, 'The formula is: $e^{i\pi} + 1 = 0$', font_size=24, alignment=0.5, /normal) print, tex2idl('The formula is: $e^{i\pi} + 1 = 0$') xyouts, 0.5, 0.5, tex2idl('The formula is: $e^{i\pi} + 1 = 0$'), /normal, alignment=0.5