This page was created by the IDL library routine
mk_html_help2
.
Last modified: Fri Apr 1 11:58:51 2022.
spd_ui_draw_object method: addAxisLabels This routine performs some of the tricky logic necessary to figure out how to place the axis labels model: the output model labels: IDL_Container storing labels margin: margin between axis & labels placeLabel: whether to place label on top/bottom left/right (changed from placeAnnotation to allow axis numbering on different side to labels) dir: x/y axis flag (x=0,y=1) orientation: horizontal/vertical text flag (h=0,v=1) stackLabels: stacklabels or rowlabels flag lazyLabels: convert underscores to carriage returns and override stacking pt1: multiplicand to change pt into view normalized coords(perp axis) pt2: multiplicand to change pt into view normalized coords(par axis) labelpos: returns the position of the most distant label from the axis blacklabels: indicates that default settings should be over-ridden to make all labels black $LastChangedBy: egrimes $ $LastChangedDate: 2014-06-02 14:46:56 -0700 (Mon, 02 Jun 2014) $ $LastChangedRevision: 15286 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__addaxislabels.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__addaxislabels.pro)
spd_ui_draw_object method: addAxisTitle This routine works out where to add the axis title (x and y axes) model: the output model titleobj: the spd_ui_text object containing title info subtitleobj: subtitle obj titlemargin: margin between axis & title placeTitle: whether to place title on top/bottom left/right dir: x/y axis flag (x=0,y=1) titleorientation: horizontal/vertical text flag (h=0,v=1) pt1: multiplicand to change pt into view normalized coords(perp axis) pt2: multiplicand to change pt into view normalized coords(par axis) lazytitles: like lazy labels, determines if underscores should be treated as carriage returns. $LastChangedBy: aaflores $ $LastChangedDate: 2014-05-16 17:51:22 -0700 (Fri, 16 May 2014) $ $LastChangedRevision: 15160 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__addaxistitle.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__addaxistitle.pro)
spd_ui_draw_object method: addBackground Adds the main page background to the target view view(object reference): IDLgrView to which the background is being added color(3 element byte array): The color of the background. $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__addbackground.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__addbackground.pro)
spd_ui_draw_object method: addDateString adds the dateString annotation to the axis Inputs: view(object reference): The IDLgrView to which the string will be added. axisSettings(object reference): the spd_ui_axis_settings where the associated settings are stored range(2-element double): The start and stop range for the panel scaling(long): Indicates the scaling used 0(linear),1(log10),2(logN) xplotsize: The length of the x-axis of the panel in normalized coordinates yplotsize: The length of the y-axis of the panel in normalized coordinates labelMargin: The distance between the variable labels and the y-axis. This parameter is also used to position the dateString, in lieu of a more specific parameter $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__adddatestring.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__adddatestring.pro)
spd_ui_draw_object method: addLegend This routine adds a legend to a particular view/panel. Inputs: view(IDLgrView): The view to which the legend static components are added annotation(IDLgrView): The view to which the legend dynamic components are added panelInfo(struct): This is the struct that stores all the information about the panel traceInfoArray(array of structs): This is an array of structs that store all the info for all the traces in this panel NOTE this routine is currently automatically generating labels IT SHOULDN'T BE DOING THIS. When default labels are being correctly set, it should just use the label text object from the appropriate axis. $LastChangedBy: egrimes $ $LastChangedDate: 2014-06-16 08:02:17 -0700 (Mon, 16 Jun 2014) $ $LastChangedRevision: 15376 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__addlegend.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__addlegend.pro)
spd_ui_draw_object method: getMarker This routine adds a permanent marker to a view This is contrasted with a temporary marker, which is only drawn as an animation during a cursor event. Inputs: view(IDLgrView): the view to which the marker should be added marker(spd_ui_marker): the spd_ui_marker that is being added xrange(2-element double): the xrange of that view, needed to position the marker zstack(single double): the height at which the marker should be placed. Marker stacking is controlled by calling loop, to ensure that they layer correctly. Outputs: fail(boolean): This will be set to 1 if a handled error occurs 0 otherwise. markerFrames(2-element object array), 2-IDLgrPolyline objects that constitute the border of the marker markerPos(2-element double array), Stores the marker start and end location normalized proportional to the panel markerColor(3-element byte array), The color of the marker frame, prior to any hue rotation markerSelected(boolean): Whether this marker is currently selected NOTES: Permanent marker is contrasted with a temporary marker, which is only drawn as an animation during a cursor event. $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__addmarker.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__addmarker.pro)
spd_ui_draw_object method: addVariables adds spd_ui_variables to requested display $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__addvariables.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__addvariables.pro)
spd_ui_draw_object method: aggregateSpecplots A special kluge function to get around an IDL bug, that causes improper layering in eps Generates a composite image from a series of spectral plots to preserve layering when exporting to eps Inputs: spec_list(Object Ref): an IDL_Container with each spec_plot model panel_sz_pt(2 element numerical): The number of points to be used for the x and y dimensions of the output, respectively bg_color(3 element byte array): The background color for the panel, used to properly simulate transparency Outputs: aggregated model $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__aggregatespecplots.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__aggregatespecplots.pro)
spd_ui_draw_object method: collateData gets data from loadedData, collects into arrays and performs basic preprocessing. INPUT: traces(array of objects): spd_ui_line_settings or spd_ui_spectra_settings, with names of data to be requested loadedData(spd_ui_loaded_data): The loaded data object from which data will be taken. yscale(long): 0(linear),1(log10),or 2(logN) to indicate the scaling mode used for the y-axis. This is needed if a dummy y-axis needs to be generated for a spectral plot with no y-data specified. OUTPUTS outXPtrs(array of pointers): An array of pointers containing the extracted X traces outYPtrs(array of pointers): An array of pointers containing the extracted Y traces outZPtrs(array of pointers): An array of pointers containing the extracted Z traces(or null pointers if corresponding trace is line) mirror(array of pointers): An array of pointers containing pointers to mirror data(or null pointers if traces is not mirroring) fail(boolean) : 1 if the operation fails, 0 otherwise dataNames(array of strings): Name of the dependent variable for each trace dataidx(array of indexes): The indices of traces that are valid after processing, -1 if non are. $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__collatedata.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__collatedata.pro)
spd_ui_draw_object method: convertColor this routine converts between True color and indexed color depending upon which color mode is set by the window if keyword: backwards is set, the routine will return a 1x3 array, Which may be useful in some applications. $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__convertcolor.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__convertcolor.pro)
spd_ui_draw_object method: createInstance This routine creates an instance of the static components of any display, it also leaves only the dynamic components unhidden after it is complete, so the draw object is ready for instance based drawing See IDL Help documentation on instances. The short explanantion is that instances are used in object graphics to make draws, much much faster. $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__createinstance.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__createinstance.pro)
spd_ui_draw_object method: draw This routine actually draws the display, it should be called after any update to this function via another call. It should also be called any time that there is damage to the window from opening a panel or after an expose_event $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__draw.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__draw.pro)
spd_ui_draw_object method: drawMarker draws marker and updates the range in the marker object. Applies to marker is progress. markerRange (2-element double array): The start and stop position of the marker in panel-normalized coordinates, (note that start may be larger than stop, if marker was drawn right->left) panel (struct): Struct used by draw object to store panel information marker(object): Reference to the marker being drawn remove(boolean keyword): Set this keyword to remove the marker $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__drawmarker.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__drawmarker.pro)
spd_ui_draw_object method: GetClick returns a struct that identifies that panel and the part of the panel under the cursor Uses self.cursorLoc to determine current cursor location. Output: Struct of the form: {panelidx:0L,component:0,marker:-1} PanelIdx(long): An index into the list of panels on the currently drawn display, not the panel ID field Components(short): 0=plot,1=xaxis,2=yaxis,3=zaxis,4=variables,5=legend Marker: the index of any marker under the cursor, is -1 if none, index is an index into the list of markers currently stored in the IDL_Container on the copy Returns 0L if click is nothing(ie page) NOTES: Resolution of position is only approximate at this point. In particular, this could be better and distinguishing z-axis from x/yaxis and variable from x axis Things that need to be done to improve approximation, account for text height, take layout issues into account. Resolve variable/z-axis on the same size. $LastChangedBy: egrimes $ $LastChangedDate: 2014-07-31 09:46:47 -0700 (Thu, 31 Jul 2014) $ $LastChangedRevision: 15631 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__getclick.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__getclick.pro)
spd_ui_draw_object method: getDim gets dimensions in pixels, abstracts some unit fuss $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__getdim.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__getdim.pro)
spd_ui_draw_object method: getLineFill This method generates a shaded area between 2 lines and returns an IDLgrModel containing the associated ILDgrPolygon objects. It is called during a panel update if the panel has valid spd_ui_linefill_settings objects in its lineFillSettings container. At this time it only returns a non-empty IDLgrModel if the requested lines match in number of data points and location of data gaps. This is only tested to function properly when both data are functional (as in a time series) and do not cross (for example: data+error and data-error for a measurment.) Once this is extended to generalize between any traces within a panel it could be elevated to the panel options widget. Inputs: traces(2-element array of object reference): The spd_ui_line_settings of the 2 traces bounding the area xrange(2-element double array): The xrange of the panel being draw on yrange(2-element double array): The yrange of the panel being draw on dataX(2-element array of ptrs): The x axis data of the boundary lines for area being shaded dataY(ptr to array): The y axis data of the boundary lines for area being shaded color(3 element bytarr): The shading color alpha(float): Opacity of shaded area. Between 0(fully transparent) and 1(opaque) Returns: IDLgrModel containing IDLgrPolygon(s). May have multiple polygon objects in the case of data with gaps. CREATED BY: Ayris Narock (ADNET/GSFC) 2017 $LastChangedBy: nikos $ $LastChangedDate: 2017-11-20 12:50:10 -0800 (Mon, 20 Nov 2017) $ $LastChangedRevision: 24322 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__getlinefill.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__getlinefill.pro)
spd_ui_draw_object method: getLinePlot This function generates the line plot for an update There is actually a lot of room to increase draw speed by optimizing this function. In specific we need to find a way to downsample a line plot, but the technique must work on series that are not functional(ex: circle), must not sort the inputs, must be imperceptible, must be fast, and must not expect the inputs to be spaced uniformly. Some possibilities: 1: uniform decimation 2: pseudo-random decimation 3: using pythagorean distance to rewrite non-functional series as functional series then interpolate 4: DFT with frequency cutoff, iDFT, uniform sample? Another problem involves determining the correct number of points to which the target should be decimated. There is a tradeoff where at one end you start to introduce aliasing errors and at the other end you get a speed slowdown. Currently the system uses the some constant factor times the number of pixels across the plot as the target decimation and it only decimates inputs that have time as the x-axis(which can be assumed to be functional). These can be reliably decimated using normal interpolation. Inputs: trace(object reference): the spd_ui_line_settings of the trace being generated xrange(2 element double): The xrange of the panel being draw on yrange(2 element double): The yrange of the panel being draw on plotdim1(2 element double): The normalized position of the panel(start,stop), relative to window for x-axis plotdim2(2 element double): The normalized position of the panel(start,stop), relative to window for y-axis xscaling(long) : the scaling mode for x-axis 0(linear),1(log10),2(logN) yscaling(long) : the scaling mode for y-axis 0(linear),1(log10),2(logN) xAxisMajors(double array, variable length): The positions of the x-axis ticks, normalized relative to panel(need for drawing symbols) dx(ptr to array) : the x axis data being plotted dy(ptr to array) : the y axis data being plotted xistime(boolean): 1 if the x-axis is a time type, 0 other wise mirrorptr(ptr to array,optional) the ptr to the mirror data(will deallocate mirrorptr data) Outputs: linecolor(3 element bytarr): The color of the line that was drawn refVar(ptr to array): the ptr to reference for use in legend abcissa_out(ptr to array): ptr to abcissa values associated with reference, this feature is not currently in use, as refVar is gridded to pixel resolution, and pixel indexes are used Returns: model with completed line plot $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__getlineplot.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__getlineplot.pro)
spd_ui_draw_object method: GetMarkers Returns the marker or list of markers that were created by the most recent markeron/markeroff call if no markers available, returns 0 Output: an array of structs of the form {idx:0,marker:obj_new('spd_ui_marker')} idx is index of the panel the marker is on, this is the index into the list of panels in the IDL_Container on the window, not the ID field of the panel the object is the marker, with correct default settings and range $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__getmarkers.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__getmarkers.pro)
spd_ui_draw_object method: GetPanelInfo Return a bunch of information about a panel with a particular index returns 0 on fail $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__getpanelinfo.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__getpanelinfo.pro)
spd_ui_draw_object method: getPanelLayouts This routine aggregates the layout structures from the panel objects into one array. This makes certain layout operations simpler INPUTS: panels: An array of spd_ui_panels OUTPUTS: an array of layout structures returned by the spd_ui_panel->getLayoutStructure() method $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__getpanellayouts.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__getpanellayouts.pro)
spd_ui_draw_object method: GetPanelNumber Returns the number of panels currently displayed If there is any confusion about the output panel indices, This indicates the maximum value. 0 indicates no panels $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__getpanelnumber.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__getpanelnumber.pro)
spd_ui_draw_object method: GetPanelSize Returns an array that shows panel size. Inputs: xdims(2 element double array): The start and stop position of the panel x-axis, coordinates normalized to the draw area ydims(2 element double array): The start and stop position of the panel y-axis, coordinates normalized to the draw area Outputs: array format = [xpos,ypos,width,height] $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__getpanelsize.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__getpanelsize.pro)
Method: getPanelTitleSize Purpose: Retreives the vertical size (in points) of the largest panel title from an array of panel objects. Input: panels: Array of panel object references Output: return value: Largest vertical size (pts) Notes: see also: __getVariableSize __getRowTextSizes $LastChangedBy: aaflores $ $LastChangedDate: 2014-06-11 15:56:35 -0700 (Wed, 11 Jun 2014) $ $LastChangedRevision: 15353 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__getpaneltitlesize.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__getpaneltitlesize.pro)
spd_ui_draw_object method: getPlotSize calculates the panel size for the purpose of spectral plot generation Inputs: plotdim1(2-element double): The position of the panel/plot in x-direction [xstart,xstop] plotdim2(2-element double): The position of the panel/plot in the y-direction [ystart,ystop] Returns: 2-element double xpanel_sz in points(multiple of pixels scaled to dims *not* desktop publishing points) ypanel_sz in points(multiple of pixels scaled to dims *not* desktop publishing points) $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__getplotsize.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__getplotsize.pro)
spd_ui_draw_object method: getProperty Query various draw object settings $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__getproperty.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__getproperty.pro)
spd_ui_draw_object method: getRange Calculates the range of a sequence. Based upon axis settings and the set of traces in the panel. This calculation is symmetric across the x/y axes. Inputs: dataPtrs(array of ptrs to arrays): List of pointer to data quantities for which range is calculated axisSettings(object reference): The spd_ui_axis_settings object for this panel. mirror(array of ptrs to arrays, optional): List of pointers to mirror data quantities. Should have same number of elements as dataPtrs, and really only makes sense when used with the y-axis isspec: needed to catch a particular special case for spectrograms Outputs: range(2 element double): The determined range scaling(long): The scaling mode: 0(linear),1(log10),2logn istime(boolean): Returns the isTime flag from the axis being queried fail(boolean): 1 on fail, 0 on success errmsg: a struct describing an error that has occurred. Note that this only exists for some particular errors where it is necessary to pass the error information up to the calling routine. fail=1 does not guarantee the existance of errmsg and vice versa. $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__getrange.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__getrange.pro)
spd_ui_draw_object method: getVariablesRowSizes Purpose: generates an array that indicates the space variables will occupy for each row in the layout, sizes are in pts INPUTS: an array of spd_ui_panels OUTPUTS: an array of sizes in pts $LastChangedBy: aaflores $ $LastChangedDate: 2014-06-11 15:56:35 -0700 (Wed, 11 Jun 2014) $ $LastChangedRevision: 15353 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__getrowtextsizes.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__getrowtextsizes.pro)
spd_ui_draw_object method: GetRubberBandPos Returns an array of structs that indicate the panels overlapped by the rubber band Input: xonly: If set, constrain along the x-axis only. Output: structs have the form {idx:0,xrange:[0,1],yrange[0,1],vars:ptr_new()} idx is the panel index in the current display, this is an index into the list of panels displayed, not the ID field from the spd_ui_panel object xrange is the xrange of the panel in non-logarithmic(normal) space yrange is the yrange of the panel in non-logarithmic(normal) space vars is either a null pointer or an array of structs of the form: {range:[0,1]} which stores the range of each variable on the panel returns 0 on fail Notes: No inputs, uses the information in self.panelInfo, self.rubberStart, self.cursorLoc(considered rubber band stop position $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__getrubberbandpos.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__getrubberbandpos.pro)
spd_ui_draw_object method: getSpecModel Purpose: This procedure finishes the creation of a spectral image. It uses the newly calculated range and the information in plotdata Inputs: plotData(struct): The plotData struct that was returned from getSpecRef, contains plotting information, like scaling, data position and clipping zrange(2 element double): The z range of the panel, after recalculating for closer autorange fit, if necessary. palette(long): The number of the palette that will be used to draw this spectral plot Outputs: model(IDLgrModel): The model that the result is stored in. $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__getspecmodel.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__getspecmodel.pro)
spd_ui_draw_object method: getSpecRef Generates a gridded and fully clipped spectragram during the update function. The output from this is used to generate the model for display and used directly as a reference for the legend Inputs: xrange(2 element double): The range([min,max]) of the panel on the x-axis. yrange(2 element double): The range([min,max]) of the panel on the y-axis. xpanel_sz_pt(long): The size of the panel in the x-direction. Units are a multiple/fraction of screen pixels. ypanel_sz_pt(long): The size of the panel in the y-direction. Units are a multiple/fraction of screen pixels. xscale(long): x axis scaling mode. 0(linear),1(log10),2(logN) yscale(long): y axis scaling mode. 0(linear),1(log10),2(logN) zscale(long): z axis scaling mode. 0(linear),1(log10),2(logN) dx(ptr to array): x data for this spectral plot dy(ptr to array): y data for this spectral plot dz(ptr to array): z data for this spectral plot Outputs: refVar(double array): Array containing final clipped, gridded data plotData(struct) : structure containing information about range,position,scaling, and clipping of resulting quantity, for use with getSpecModel NOTES: 1. xrange,yrange may be different from the range of the data because not all spectragrams span the entire panel, and some span more than the entire panel. 2. xpanel_sz_pt,ypanel_sz_pt will be increased due to aliasing correction factor, but decreased because panel spans only a portion of the screen 3. May-2013: makeSpec now produces a spectrogram corresponding to the panel itself instead of the input data; this code has been modified to accomodate that change. $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__getspecref.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__getspecref.pro)
spd_ui_draw_object method: getTextModel returns a text model by digesting the settings on a spd_ui_text object. This is basically just a wrapper for getTextObject text: a spd_ui_text object loc: the normalized location of the text, relative to the view [xpos,ypos,zpos] offsetDirFlag: 0=centered,1=abovelocation,-1=belowlocation justify, -1 = left, 1=right, 0 = middle Output: an IDLgrModel containing an IDLgrText object $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__gettextmodel.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__gettextmodel.pro)
spd_ui_draw_object method: getTextObject returns a text object by digesting the settings on a spd_ui_text object text: a spd_ui_text object loc: the normalized location of the text, relative to the view [xpos,ypos,zpos] offsetDirFlag: 0=centered,1=abovelocation,-1=belowlocation justify, -1 = left, 1=right, 0 = middle $LastChangedBy: nikos $ $LastChangedDate: 2014-07-24 11:24:17 -0700 (Thu, 24 Jul 2014) $ $LastChangedRevision: 15597 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__gettextobject.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__gettextobject.pro)
spd_ui_draw_object method: getVariablesSize Calculates the maximum space that will be occupied, by any panel's x-axes Name is because it used to only account for variables Inputs: panels(array of objects): List of spd_ui_panels NOTES: consider returning an array of panel sizes and performing the max after the fact $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__getvariablesize.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__getvariablesize.pro)
spd_ui_draw_object method: getZoom This routine returns the current zoom of the destination object Used primarily for determining scaling values to be applied to text when drawn. IDL doesn't properly correct for zoom, unless an object is already rendered. If you initially draw while at non 1. zoom text will be mis-sized unless scaled by zoom factor. Doesn't really apply to non-IDLgrWindow, because they don't have associated zoom factors. $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__getzoom.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__getzoom.pro)
spd_ui_draw_object method: getZRange Calculates the zrange of a spectral plot based upon the set of spectral traces in the panel and the z-axis settings Inputs: dataPtrs(array of ptrs to arrays): Array of ptrs to the z-axis data for this panel. zaxisSettings: spd_ui_zaxis_settings object for this panel. Output: range(2 element double): The determined range scaling(long): The scaling mode: 0(linear),1(log10),2logn fail(boolean): 1 on fail, 0 on success fixed(boolean): 1 if fixed range is used, 0 if autorange is used Keywords: forceauto: Forces an auto calculation to identify the full range of the data $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__getzrange.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__getzrange.pro)
spd_ui_draw_object method: goodTicks This routine actually does the bulk of the work to select good ticks. NOTE: Now that we've switched over to a set of user input parameters that maps pretty nearly to the set of options that IDL provides, we might want to do tick placement by lookup with IDL plotting routines and /nodraw. We just need to be VERY careful about interaction/interference with command line utilities $LastChangedBy: pcruce $ $LastChangedDate: 2014-06-25 17:47:00 -0700 (Wed, 25 Jun 2014) $ $LastChangedRevision: 15444 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__goodticks.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__goodticks.pro)
spd_ui_draw_object method: hBarOff stop drawing the horizontal bar $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__hbaroff.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__hbaroff.pro)
spd_ui_draw_object method: hBarOn start drawing the horizontal bar all(boolean keyword): Set to turn on for all panels. Default is for single panel mode $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__hbaron.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__hbaron.pro)
spd_ui_draw_object method: hueRotation This rotates the hue of of the input color by 120 degrees The output is the rotated color $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__huerotation.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__huerotation.pro)
spd_ui_draw_object method: inBounds returns true if the current cursor location is within the bounds of the panel past as an argument panelInfo(struct): struct that stores information for the draw object about the panel in question location(keyword, 2-element double): Overrides the default location stored in self.cursorLoc with the value in the keyword Default behavior uses self.cursorloc $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__inbounds.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__inbounds.pro)
spd_ui_draw_object method: indexMagic This function returns indices of all the data values greater(or less) than the index limit + 1(or -1). It is vectorized, so that it will work quickly even if there is a lot of data. Inputs: Data(2-dimensional array of data points any numeric type): The values that will be modified dims = MxN Idx(array of indices): an M element array of indices that specify the limit. All indices greater(or less) than this index + 1 in a particular column will be returned Less(boolean keyword): If set, indicates that indices less than index - 1 should be returned Outputs: All the indices that fit the limit critereon, -1 if no values found. NOTES: 1. This is used in y-clipping spectrograms. We want there to be a small amount of margin on spectrograms to prevent any blank from showing up at the edge of plots, but we don't want to render the whole data set because performance would suffer a precipitous drop. 2. Each element of data[i,*] should be sorted in descending order. 3. This is quite tricky to do without looping, hence the magic. $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__indexmagic.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__indexmagic.pro)
spd_ui_draw_object method: legendOff Stop drawing the legend $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__legendoff.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__legendoff.pro)
spd_ui_draw_object method: legendOn Start drawing a legend on one or more panels all(boolean keyword): Set to turn on for all panels. Default is for single panel mode $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__legendon.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__legendon.pro)
spd_ui_draw_object method: lockBottom This routine sets the locked settings for a bottom panel in a column of a layout. Inputs: panel(object): Reference to a spd_ui_panel that will be modified. This will generally be a copy to prevent mutation of central gui copy. $LastChangedBy: aaflores $ $LastChangedDate: 2014-06-11 15:56:35 -0700 (Wed, 11 Jun 2014) $ $LastChangedRevision: 15353 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__lockbottom.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__lockbottom.pro)
spd_ui_draw_object method: lockMiddle This routine sets the locked settings for a middle panel in a column of a layout. Inputs: panel(object): Reference to a spd_ui_panel that will be modified. This will generally be a copy to prevent mutation of central gui copy. $LastChangedBy: aaflores $ $LastChangedDate: 2014-06-11 15:56:35 -0700 (Wed, 11 Jun 2014) $ $LastChangedRevision: 15353 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__lockmiddle.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__lockmiddle.pro)
spd_ui_draw_object method: lockTop This routine sets the locked settings for a top panel in a column of a layout. Inputs: panel(object): Reference to a spd_ui_panel that will be modified. This will generally be a copy to prevent mutation of central gui copy. $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__locktop.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__locktop.pro)
spd_ui_draw_object method: logFixTicks It is sometimes the case that logarithmic axes end up with 1 or 0 ticks when more were requested. This routine attempts to fix this problem It does this by using a little trick of the change of base formula. Essentially, if ticks are evenly spaced in base-2 log, then they will be evenly spaced in another base. So if the goodTick algorithm couldn't find ticks at 1x10^1,1x10^2,... This algorithm may find ticks at, 5,10,20,40 $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__logfixticks.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__logfixticks.pro)
spd_ui_draw_object method: makeLineReference this routine constructs a reference for legend lookup that has no more than the number of points on the screen times some number to account for pixel-level aliasing. Operation vectorized with value-locate x = clipped abcissa values, normalized to fractions of the total y = clipped data values, with the same number of elements as x n = the number of points requested in the output ref = data returned in named variable tolerance = the distance that a cursor can be from a real data point, before NaNs get filled in. This is a number proportional to the x range.(ex: .01 = 1% tolerance) $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__makelinereference.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__makelinereference.pro)
spd_ui_draw_object method: makeMinorTicks This routine takes generates the minor ticks for the z-axis and the xy axes. It does most of the work to guarantee proper spacing of minor ticks on logarithmic axes Inputs: Range: The range of the data values.(log applied, not real) Scaling: The scaling factor used on this axis. (O: Linear, 1: Log10, 2:LogN) MinorNum: The requested number of minor ticks per major tick MajorValues: An array of major tick positions, normalized relative to their respective axis. Minimum 2 major ticks. MajorSpacing: The spacing between major ticks, in normalized units. MinorAuto: Whether automatic minor ticks are being used or not. Outputs: MinorValues: An array of minor tick positions. Not for a single major tick, but for the entire axis. Fail: 0 indicates no fail, 1 indicates fail. If no ticks can fit on axis, failure is indicated. NOTES: Minor ticks will appear to be more evenly spaced the smaller the interval is between ticks on a logarithmic axis. On a non-log axis, they will always be evenly spaced. $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__makeminorticks.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__makeminorticks.pro)
spd_ui_draw_object method: makeSpec Purpose: helper routine for draw object. It helps construct the image for spectrograms very quickly. Inputs: x: the 1-d x scaling values for the z components(x-axis) y: the 1-d y scaling values for the z components z: the 2-d z array of values for the image pixx: the desired resolution of the output on the x-axis pixy: the desired resolution of the output on the y-axis xrange: x range of the desired output in data space yrange: y range of the desired output in data space Output: refz: The gridded z-axis array refx: The x-values associated with the z-values refy: The y-values associated with the z-values Notes: 1. This uses an alpha channel to make all NaNs transparent. 2. PixX and PixY are not totally necessary because object graphics can stretch an image quite well, but selecting the resolution of the screen with them prevents any inadvertent errors from showing up during interpolation. It might actually be better to render the image at twice the screen resolution to prevent aliasing errors. 3. May-2013: Code modified to create a spectrogram over the panel's range (xrange/yrange) rather than over the data's range. The pixx/pixy variables should now contain the number of pixels across the panel instead of those required to represent the entire dataset. $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__makespec.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__makespec.pro)
spd_ui_draw_object method: makeView creates the views for a panel, incorporates all the layout information that can effect this. Inputs: dims(2 element long) : The number of rows and columns in the overall layout margins(6 element double): [leftMargin,rightMargin,topMargin,bottomMargin,horizontalMargin,verticalMargin] in draw-area normalized coordinates pos(4 element long): [row,col,rowSpan,colSpan] of the panel being drawn. pcoord(4 element double): User defined explicit panel position, in draw-area normalized coords: [xpos,ypos,xsize,ysize], if unused, will be -1 markernum(long): The number of markers in the panel. Each marker is in a different view, so a number of markerviews equal to markernum will be returned bottomsizes(double array): Array of verical text sizes to be allocated at the bottom of each panel topsizes(double array): Array of verical text sizes to be allocated at the top of each panel Outputs: view(object reference): The static panel IDLgrView annotation(object reference): The panel IDLgrView for dynamic display elements(ie annotations etc.. that are being updated) markers(array of object references): Array of IDLgrViews for each marker. Each marker ends up needing to be put in separate views, to guarantee proper layering. xplotpos(2 element double): The determined x-position of panel in draw-area normalized coordinates [xstart,xstop] yplotpos(2 element double): The determined y-position of panel in draw-area normalized coordinates [ystart,ystop] fail(boolean): Will be 1 if operation fails, 0 otherwise outmargins(5 element double) : Indicates the size of the various panel regions in draw-normalized coordinates, so that cursor clicks can be properly resolved. [left,right,top,bottom,var] errmsg(anonymous struct): Returns information about an error that has occured. This is not implemented uniformly, but used in particular cases where it is helpful to return error information up to the calling routine so, for example, popup messages can be issued to user. It is intended that developers make use of it to return other errors (or informational messages) when they find it necessary. Note: if no such error occurs errmsg is simply not set. errmsg being set does not guarantee fail=1 and likewise fail=1 is not an indication that errmsg is set. See also notes in spd_ui_draw_object__update $LastChangedBy: aaflores $ $LastChangedDate: 2014-06-11 15:56:35 -0700 (Wed, 11 Jun 2014) $ $LastChangedRevision: 15353 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__makeview.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__makeview.pro)
spd_ui_draw_object method: makeXYAxisModel Constructs an X or Y axis model from a spd_ui_axis_settings object Inputs: dir = direction of the axis(0=x,1=y) xrange,yrange: data range of the panel scaling: scaling mode of the panel 0(linear),1(log10),2(logN) axisSettings: axis settings object plotDim1: normalized length of the plot on the dimension perpendicual to the axis plotDim2: normalized length of the plot on the dimension parallel to the axis color: The color of the plot frame in RGB thick: The thickness of the plot frame/ticks useIsTime: use this keyword to override the current isTime value Outputs gridmodel: the model containing any axis grids model: the axis model is returned in this keyword majorTickValues:the major tickvalues are returned in this keyword numMinorTicks: the number of minor ticks is returned in this keyword isTimeAxis: flag indicating whether the axis is time annotated or not returned in this keyword labelPos: this keyword returns the most distant label position from the axis fail: 1 indicates failure, 0 success $LastChangedBy: pcruce $ $LastChangedDate: 2014-06-25 17:47:00 -0700 (Wed, 25 Jun 2014) $ $LastChangedRevision: 15444 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__makexyaxismodel.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__makexyaxismodel.pro)
spd_ui_draw_object method: makeZAxisModel constructs a zaxis model for display, from a spd_ui_zaxis_settings object Inputs: zrange(2 element double): The min & max range of the axis in logged space. zAxis(object reference): The spd_ui_zaxis_settings object from which settings will be drawn. xPlotPos(2 element double): The x-start & stop position of the panel in draw area normal coordinates yPlotPos(2 element double): The y-start & stop position of the panel in draw area normal coordinates frameColor(3 element bytarr): The rgb color of the panel frame. frameThick(double): the thickness of the panel frame, in idl standard line thickness units Outputs: model(object reference): The completed IDLgrModel palette(object reference): The palette object used for this axis. majorNum(long): The number of major ticks on this axis. minorNum(long): The number of minor ticks per major tick on this axis $LastChangedBy: aaflores $ $LastChangedDate: 2014-06-27 11:32:10 -0700 (Fri, 27 Jun 2014) $ $LastChangedRevision: 15454 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__makezaxismodel.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__makezaxismodel.pro)
spd_ui_draw_object method: markerOff stops drawing the marker $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__markeroff.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__markeroff.pro)
spd_ui_draw_object method: markerOn starts drawing a new marker at the current location 'default' is a marker object from which the marker defaults will be copied 'all' indicates that markers should be drawn on all panels note that markerOn can fail if the current location isn't within the boundaries of a panel. The 'fail' keyword indicates this $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__markeron.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__markeron.pro)
spd_ui_draw_object method: niceNum Function adapted from Graphics Gems: Heckbert, Paul S., Nice Numbers for Graph Labels, Graphics Gems, p. 61-63, code: p. 657-659 It identifies the closest "nice" number Nice being a number j * 10 ^ n where j = 1,2,5,10 and n = any integer Inputs: n(double): The number for which the nearest nicenum is being found floor(optional,boolean keyword): The routine picks the nearest nicenum below n ceil(optional,boolean keyword): The routine picks the nearest nicenum above n factors(optional, array of numeric types): rather than using 1,2,5,10, pass an array of alternate values. Common inputs are [1,2,3,4,5,6,7,8,9,10], or [1,2,3,6,10] bias(optional,long): Some sets of factors may entail looking at the first 2 or D digits of the nearest nicenum, rather than just the first. If this is the case, this argument should be set to instruct this algorithm to look at 2 digits. For example, if factors = dindgen(101), bias should be 1, if factors = dindgen(1001) bias should be 2. The default is 0 Outputs: factor_index(long): this returns an index into the factor_array indicating which factor actually got selected. For example: If nicenum = 2, then factor_index = 1 Returns: The nicenum that was found NOTES: Default behavior is to find the nearest nicenum above or below N, but the algorithm from graphics gems could only approximate this somewhat roughly. So instead, two calls one with /floor and one with /ceil is made by the calling routine and the called decides which result is closest. factor_index: The index of the factor that will be used for the result.(ie different j's) $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__nicenum.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__nicenum.pro)
spd_ui_draw_object method: niceNumTime Function adapted from Graphics Gems: Heckbert, Paul S., Nice Numbers for Graph Labels, Graphics Gems, p. 61-63, code: p. 657-659 It identifies the closest "nice" number Nice being a number j * 10 ^ n where j = 1,2,5 and n = any integer This routine performs nicenum on a time in seconds, it will account for whether the input is closer to an hour or a minute or a day. Good factors to use with this routine are [1,2,3,6,10] Its Input/Output/Return parameter are identifcal to niceNum $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__nicenumtime.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__nicenumtime.pro)
spd_ui_draw_object method: norm2pt converts back from the normalized value into points, While the normalized value is dependent on screen dimensions zoom, & resolution. The value in points should be an absolute quantity Inputs: Value(numeric or array of numerics): A value in screen normal coords xy(boolean) 0 : convert from x-axis, 1:convert from y-axis(because screen dims differ, axis must be specified) $LastChangedBy: pcruce $ $LastChangedDate: 2014-05-14 11:58:59 -0700 (Wed, 14 May 2014) $ $LastChangedRevision: 15133 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__norm2pt.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__norm2pt.pro)
spd_ui_draw_object method: nukeDraw This routine should blank the current contents of the object Generally used in the event of an error $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__nukedraw.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__nukedraw.pro)
spd_ui_draw_object method: placeMajorTicks Determines where to place the tick marks for an axis, and deals with the various input validation issues and positioning options. If they are placed automatically, They should be at human readable values, if possible. In this case human readable means that if the axis is non time, the ticks will be at values of 1*10^n or 2*10^n or 5*10^n where n is some number appropriate to the scale of the axis If the axis is a time axis the ticks will be at 1,2,5 * 10^n or 60*1,2,5*10^n or 60*60*1,2,5*10^n or 24*60*60*1,2,5*10^n With selection/n dependent on scale $LastChangedBy: pcruce $ $LastChangedDate: 2014-06-25 17:47:00 -0700 (Wed, 25 Jun 2014) $ $LastChangedRevision: 15444 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__placemajorticks.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__placemajorticks.pro)
spd_ui_draw_object method: pt2norm Convert pts into draw area normal coordinates. Inputs: Value(numeric type, or array of numeric types): the point value(s) to be converted xy(boolean): 0: convert for x-axis, 1 convert for y-axis.(because screen dims differ, axis must be specified) Returns, the value in normalized coordinates $LastChangedBy: pcruce $ $LastChangedDate: 2014-05-14 11:58:59 -0700 (Wed, 14 May 2014) $ $LastChangedRevision: 15133 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__pt2norm.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__pt2norm.pro)
spd_ui_draw_object method: removeInstance this method will remove the instance hide settings from static components This is generally meant to be used by image export routines when the the legend is off, if the legend is on, this method may leave the dynamic components of the legend hidden $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__removeinstance.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__removeinstance.pro)
spd_ui_draw_object method: rubberBand for making a rubber band. This thing actually manipulates the draw tree to move the rubber band around according to the current cursor position location is the location in draw-area normalized coordinates [x,y] dimensions is the dimensions in draw-area normalized coordinates [xsize,ysize] $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__rubberband.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__rubberband.pro)
spd_ui_draw_object method: rubberBandOff Stops drawing the rubber band $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__rubberbandoff.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__rubberbandoff.pro)
spd_ui_draw_object method: rubberBandOn Starts drawing the rubber band at the current location $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__rubberbandon.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__rubberbandon.pro)
spd_ui_draw_object method: SetClick This routine performs the draw work necessary to display a marker click basically this means mutating the selected flag on markerinfo. Then when drawn the marker will show up with the appropriate highlighting Inputs: InfoStruct(struct) : This is the struct returned by spd_ui_draw_object::getClick NOTES: This is separated from getclick() to preserve separation between routines that give information on the display, and ones that mutate display. This way, the calling routine doesn't need to expect a mutation to query the layout $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__setclick.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__setclick.pro)
spd_ui_draw_object method: setCursor Makes a vertical bar, updates legends, draws rubber band, draws markers(during draw animation), highlights markers during mouseover. This routine should be called pretty much any time the cursor moves in the draw area. Location(2-element double): The cursor location in coordinates normalized to the draw area size. $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__setcursor.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__setcursor.pro)
spd_ui_draw_object method: setLegendHide Because the static components of the legend are still somewhat dynamic(Because they can be manipulated between updates), This routine is needed to manipulate them separately From the lists in self.staticViews & self.dynamicViews Inputs: dynamic(boolean keyword):, set to hide dynamic component of the legend hide:(boolean): set to the hide value you want to use $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__setlegendhide.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__setlegendhide.pro)
spd_ui_draw_object method: setModelHide This routine sets the hide values for all the models inside the views that it receives as an argument It just exists to remove some duplication that occurs when generating an instanced display This is a recursive function Inputs: hidevalue(boolean): The value that the hide flag will be set to. $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__setmodelhide.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__setmodelhide.pro)
spd_ui_draw_object method: setProperty Set a couple of properties related to drawing Mainly used to perform output to other devices Destination: The target to which draws will be made. Some parameters used in updated are also drawn from the destination. This should be some sort of IDLgr* destination object. LineRes: The resolution at which lines will be drawn. Ideally, this is a scalar multiple of the current screen resolution. (ie plot with 500 pixel width, and lineRes 2 will send 1000 points to the output destination) Line resolution modification is currently limited by aliasing issues. So it is ignored in the current version and all line plots send every point to the output destination. SpecRes: The resolution at which spectral plots will be drawn. SpecRes is a multiple of screen resolution. If specRes is 2 and a plot has a screen resolution of 400x300 pixels, a spectral plot of 800x600 will be output to the destination. HistoryWin: The history object that the draw object sends its history output to. statusBar: The status bar object that the draw object sends status messages to. fancompressionfactor: The percentage error to be applied to the fancompression algorithm during postscript plotting. 0 = No compression $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__setproperty.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__setproperty.pro)
spd_ui_draw_object method: setVarHide This routine sets the hide value for variables on a panel with a particular index. It is mainly here for organization and to prevent duplication Inputs: hidevalue(boolean): The value that the hide flag will be set to. $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__setvarhide.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__setvarhide.pro)
spd_ui_draw_object method: setZoom Set the zoom factor on the current destination object Only works if the destination is an IDLgrWindow $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__setzoom.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__setzoom.pro)
spd_ui_draw_object method: Update This function updates the entire display, it will be pretty slow so it should only be called after panel applies, but not during common widget events. WindowStorage: the spd_ui_windows object that stores the windows for the scene that is being updated LoadedData: thm spd_ui_loaded_data object that stores the data used in the scene that is being drawn Postscript=postscript: set this keyword when postscripts are being drawn. Special kluges for dealing with postscript transparency and layering issues are turned on. Error=error: Pass a named variable in via this keyword when updates are being drawn. After completion It will return a 1 if there was an error and a 0 if there was no error. errmsg=errmsg: Pass a named variable in via this keyword when updates are being drawn (optional). If a draw object error occurs for which an error message has been defined, errmsg will return an anonymous struct with fields describing the error. errmsg does not exist for all cases where error=1, nor is it guaranteed than error=1 if errmsg exists. This keyword is intended to return error information to calling routines where messages may need to be issued to the user (eg. pop up messages). It is intended that developers make use of errmsg & add it to procedures/functions as they need it. Note that when handling error messages in the calling routine it is necessary to always check the relevant fields in the errmsg struct exist before using them as the routine may pick up errors that you don't anticipate defined in other areas of the code, with different fields in the struct. Note: if no error occurs for which an error message has been defined errmsg is simply not set. It is necessary to check if errmsg has been set before handling any messages in the calling routine. Note: update itself does not currently produce any errmsg, errmsg is simply passed on to other routines (currently updatePanels). NOTES: 1. Slowness depends on complexity of displayed layout.(number of panels, size of data) It can range from 1/10th of a second to 10 or more seconds 2. Memory usage can spike moderately during this function, but memory usage between calls should be minimal because lookup tables are used for cursor functions. Memory will max out at ~2x the memory of the largest panel being plotted, because data must be copied to process it without corrupting the main data store. In other words O(N*M), where N is the time resolution of the data on your largest panel, and M is the number of dimensions on this panel. $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__update.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__update.pro)
spd_ui_draw_object method: updateHBar This routine updates the location of the horizontal bar in each panel. Behavior is a function of the various tracking options and the location of the cursor location(2-element double): The position of the cursor in coordinates normalized to the draw area panelInfo(pointer to array of structs): Each struct stores the metadata for each panel in a format for internal use by the draw object $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__updatehbar.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__updatehbar.pro)
spd_ui_draw_object method: updateLegend this code performs an update on the legend text values for the provided panel it fills them in with the normalized data values provided as arguments panelLocation(2-element double): The position of the cursor in coordinates normalized to the panel panel(struct): The draw object struct representing the panel blank(boolean keyword): Set this keyword to make the legend blank noyvalue(boolean keyword): If this keyword is set, the yvalue will be set to an empty string and other values will be updated as normal $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__updatelegend.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__updatelegend.pro)
spd_ui_draw_object method: makeView updates the draw object to reflect the page settings Inputs: pageSettings(object reference): the spd_ui_page_settings associated with the window being drawn Outputs: returns: 1 on success, 0 on failure. Mutates: self.pageview, self.scene,self.currentPageSize,self.staticviews $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__updatepage.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__updatepage.pro)
spd_ui_draw_object method: updatePanels draws the panels for this window. This routine is the workhorse of the draw object, Inputs: Layout Dims(2-elements long): The number of rows and columns in the layout(from the spd_ui_window) Margins(6-elements double): The size of the margins for the panel in points. Elements are as follows [left,right,top,bottom,horizontal_internal,vertical_internal] PanelObjs(array of objects): Array of references to the spd_ui_panel objects being drawn LoadedData(object): Reference to the spd_ui_loaded_data object in which the data to be plotted is stored Backgroundcolor(3-element Byte array): The color of the background, needed to emulate some transparency effects. Locked(long index): The locked value from the window object. -1 is unlocked, otherwise it is the index of the panel to which others are locked. Index in terms of the list of panelObjs Window(object): The active window from which the drawn panels originate. Needed to query layout information. Outputs: returns 1 on success, 0 on failure errmsg: a struct describing an error that has occurred, to be passed up to calling routine. The existance of errmsg does not guarantee updatePanels returns 0 and vice versa. Currently updatepanels itself does not set errmsg, it is simply passed on through here to other routines (presently only getRange and makeView). See spd_ui_draw_object_update for more details. Mutates: self.panelViews,self.staticViews,self.dynamicViews,self.panelInfo NOTE: The order in which various elements of the panel are added to the display is IMPORTANT If you change the ordering be sure to check that this change hasn't oscured some important feature. $LastChangedBy: nikos $ $LastChangedDate: 2017-11-20 10:43:28 -0800 (Mon, 20 Nov 2017) $ $LastChangedRevision: 24317 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__updatepanels.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__updatepanels.pro)
spd_ui_draw_object method: updateVBar This routine updates the location of the vertical bar in each panel. Behavior is a function of the various tracking options and the location of the cursor location(2-element double): The position of the cursor in coordinates normalized to the draw area panelInfo(pointer to array of structs): Each struct stores the metadata for each panel in a format for internal use by the draw object $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__updatevbar.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__updatevbar.pro)
spd_ui_draw_object method: vBarOff stop drawing a vertical bar $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__vbaroff.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__vbaroff.pro)
spd_ui_draw_object method: vBarOn start drawing a vertical bar on one or all panels Inputs: all(boolean keyword): Set to turn on for all panels. Default is for single panel mode $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__vbaron.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__vbaron.pro)
spd_ui_draw_object method: xclip This routine, performs prepocessing with respect to the x-axis 1. translates data from linear to log space, if necessary 2. Removes invalid values because: a. non-finite b. out of range c. le 0 on log axis 3. Performs analogous removals on y/z/mirror data Inputs: xPtr(array of pointers to arrays): A list of the data quantities for all x-values used in the panel. The number of pointers should match the number of pointers in y and z. If an x/y has no z(ie line plot), the corresponding element should be a null pointer yPtr(array of pointers to arrays) : A list of the data quantities for all y-values used in the panel. The number of pointers should match the number of pointers in x and z. If an x/y has no z(ie line plot), the corresponding element should be a null pointer zPtr(array of pointers to arrays) : A list of the data quantities for all z-values used in the panel. The number of pointers should match the number of pointers in x and y. If an x/y has no z(ie line plot), the corresponding element should be a null pointer range(2-element double) : The min and max x-range that the data should be clipped to. scale(long) : The scaling method to be used on this axis(0: linear,1:log10,2:logN) mirrorPtr(array of pointers to arrays) : A list of the data quantities for all mirror-values used in the panel. The number of pointers should match the number of pointers in x,y, z If an x/y has no mirror the corresponding element should be a null pointer Outputs: xPtr(array of pointers to arrays): Input data replaced with clipped data. Format is the same yPtr(array of pointers to arrays): Input data replaced with clipped data. Format is the same zPtr(array of pointers to arrays): Input data replaced with clipped data. Format is the same fail(named variable keyword): Will store 1 if routine fails, 0 otherwise NOTES: This routine is a partial replacement for spd_ui_xyclip, which became unwieldy to maintain as the reponsibilities of the routine diverged. $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__xclip.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__xclip.pro)
spd_ui_draw_object method: yclip This routine, performs prepocessing with respect to the y-axis 1. translates data from linear to log space, if necessary 2. Removes invalid values or marks with NaNs depending on whether trace in spectrographic and spec geometry. Reasons for marking/removing a. non-finite. b. out of range c. le 0 on log axis 3. Performs analogous removals on z/mirror data Inputs: xPtr(array of pointers to arrays): A list of the data quantities for all x-values used in the panel. The number of pointers should match the number of pointers in y and z. If an x/y has no z(ie line plot), the corresponding element should be a null pointer yPtr(array of pointers to arrays) : A list of the data quantities for all y-values used in the panel. The number of pointers should match the number of pointers in x and z. If an x/y has no z(ie line plot), the corresponding element should be a null pointer zPtr(array of pointers to arrays) : A list of the data quantities for all z-values used in the panel. The number of pointers should match the number of pointers in x and y. If an x/y has no z(ie line plot), the corresponding element should be a null pointer range(2-element double) : The min and max y-range that the data should be clipped to. scale(long) : The scaling method to be used on this axis(0: linear,1:log10,2:logN) mirrorPtr(array of pointers to arrays) : A list of the data quantities for all mirror-values used in the panel. The number of pointers should match the number of pointers in x,y, z If an x/y has no mirror the corresponding element should be a null pointer Outputs: xPtr(array of pointers to arrays): Input data replaced with clipped data. Format is the same yPtr(array of pointers to arrays): Input data replaced with clipped data. Format is the same zPtr(array of pointers to arrays): Input data replaced with clipped data. Format is the same fail(named variable keyword): Will store 1 if routine fails, 0 otherwise NOTES: This routine is a partial replacement for spd_ui_xyclip, which became unwieldy to maintain as the reponsibilities of the routine diverged. $LastChangedBy: jimm $ $LastChangedDate: 2014-02-11 10:54:32 -0800 (Tue, 11 Feb 2014) $ $LastChangedRevision: 14326 $ $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_5_0/spedas_gui/display/draw_object/spd_ui_draw_object__yclip.pro $
(See spedas_gui/display/draw_object/spd_ui_draw_object__yclip.pro)