📄 tdataviewx.c
字号:
/*
========================================================================
DEVise Data Visualization Software
(c) Copyright 1992-1996
By the DEVise Development Group
Madison, Wisconsin
All Rights Reserved.
========================================================================
Under no circumstances is this software to be copied, distributed,
or altered in any way without prior permission from the DEVise
Development Group.
*/
/*
$Id: TDataViewX.c,v 1.46 1996/11/26 16:51:39 ssl Exp $
$Log: TDataViewX.c,v $
Revision 1.46 1996/11/26 16:51:39 ssl
Added support for piled viws
Revision 1.45 1996/11/20 20:35:21 wenger
Fixed bugs 062, 073, 074, and 075; added workaround for bug 063; make
some Makefile improvements so compile works first time; fixed up files
to correspond to new query catalog name.
Revision 1.44 1996/11/19 20:21:08 jussi
Overlapping record elimination now done on for BAR shapes.
Revision 1.43 1996/11/18 23:11:32 wenger
Added procedures to generated PostScript to reduce the size of the
output and speed up PostScript processing; added 'small font' capability
and trademark notice to PostScript output; improved text positioning in
PostScript output (but still a ways to go); added a little debug code;
fixed data/axis area bugs (left gaps); fixed misc. bugs in color handling.
Revision 1.42 1996/11/18 18:10:56 donjerko
New files and changes to make DTE work with Devise
Revision 1.41 1996/11/13 16:57:11 wenger
Color working in direct PostScript output (which is now enabled);
improved ColorMgr so that it doesn't allocate duplicates of colors
it already has, also keeps RGB values of the colors it has allocated;
changed Color to GlobalColor, LocalColor to make the distinction
explicit between local and global colors (_not_ interchangeable);
fixed global vs. local color conflict in View class; changed 'dali'
references in command-line arguments to 'tasvir' (internally, the
code still mostly refers to Dali).
Revision 1.40 1996/09/27 15:53:22 wenger
Fixed a number of memory leaks.
Revision 1.39 1996/08/05 18:37:40 beyer
Minor simplification of stats gathering
Revision 1.38 1996/08/04 21:59:55 beyer
Added UpdateLinks that allow one view to be told to update by another view.
Changed TData so that all TData's have a DataSource (for UpdateLinks).
Changed all of the subclasses of TData to conform.
A RecFile is now a DataSource.
Changed the stats buffers in ViewGraph to be DataSources.
Revision 1.37 1996/08/03 15:19:38 jussi
The visual filter is not applied in 3D views.
Revision 1.36 1996/07/26 16:17:42 guangshu
Assign yMax and yMin from tdata so the width of histogram is fixed for the whole data sets
Revision 1.35 1996/07/25 14:32:36 guangshu
Added linked list to keep track of the gstat records so it doesnot need to scann the range from xmin to xmax and fixed bugs for histograms
Revision 1.34 1996/07/23 18:00:53 jussi
Ifdef'd out the statistics code because large datasets cause
unlimited memory to be consumed.
Revision 1.33 1996/07/23 17:26:06 jussi
Added support for piled views.
Revision 1.32 1996/07/22 23:44:19 guangshu
Added statistics for gdata. The statistics includes count, ysum, max,
mean, min.
Revision 1.31 1996/07/20 17:06:35 guangshu
Small fixes when wirte to HistBuffer.
Revision 1.30 1996/07/19 18:00:30 guangshu
Added support for histograms.
Revision 1.29 1996/07/19 17:31:31 jussi
Fixed problem in InsertSymbol().
Revision 1.28 1996/07/19 17:26:04 jussi
Added code that prevents record overlap elimination when
records are of LineShape or LineShadeShape.
Revision 1.27 1996/07/19 02:43:07 jussi
Added point storage for missing data points.
Revision 1.26 1996/07/13 17:25:07 jussi
When view is iconified, statistics are collected but data
is not drawn.
Revision 1.25 1996/07/12 19:40:14 jussi
View statistics are now printed into a memory buffer.
Revision 1.24 1996/07/02 22:46:01 jussi
The bounding box of symbols is now correctly computed. Scatter
plots sometimes did not have all necessary data displayed in
them, as bounding box used to be incorrectly computed.
Revision 1.23 1996/06/27 15:48:02 jussi
Added some debugging statements.
Revision 1.22 1996/06/20 17:10:24 guangshu
Added support for color statistics.
Revision 1.21 1996/06/20 16:49:50 jussi
Added Y condition to filter comparison.
Revision 1.20 1996/06/13 00:16:31 jussi
Added support for views that are slaves of more than one record
link. This allows one to express disjunctive queries.
Revision 1.19 1996/05/31 15:41:25 jussi
Added support for record links.
Revision 1.18 1996/04/22 21:38:06 jussi
Fixed problem with simultaneous view refresh and record query
activities. Previously, there was a single iterator over the
mappings of a view, which caused the system to crash when a record
was queried while the data was still being displayed. Each activity
now gets its own iterator.
Revision 1.17 1996/04/16 20:50:13 jussi
Replaced assert() calls with DOASSERT macro.
Revision 1.16 1996/04/15 16:07:45 jussi
Improved the way x and y attributes are extracted from a GData
record in ReturnGData(). Also added code for extracting shape
and color which will be used for statistics collection later
on.
Revision 1.15 1996/04/15 15:07:26 jussi
Interface to ViewGraph's mapping iterator has changed. Added
call to DrawLegend().
Revision 1.14 1996/04/10 15:33:30 jussi
Cleaned up some debugging statements.
Revision 1.13 1996/04/10 02:22:32 jussi
Added support for > 1 mappings in a view.
Revision 1.12 1996/04/09 22:53:41 jussi
Added View parameter to DrawGDataArray.
Revision 1.11 1996/04/05 20:13:30 wenger
Fixed error causing pure virtual function to be called
if a session was closed during a query; fixed an error
in one of the Linux Makefiles; updated other Makefiles
to allow testWindowRep to be built on all architectures.
Revision 1.10 1995/12/29 22:41:28 jussi
Added support for line connectors.
Revision 1.9 1995/12/14 21:20:00 jussi
Replaced 0x%x with 0x%p.
Revision 1.8 1995/12/05 17:07:34 jussi
Statistics are now part of ViewGraph, the subclass of TDataViewX.
Revision 1.7 1995/11/29 17:11:21 jussi
Relaxed condition which determines which GData records are included
in statistics computation. Bar graphs may have y values beyond
filter.yHigh, and the bar still appears on the screen and so should
be included in statistics.
Revision 1.6 1995/11/28 05:23:00 ravim
Support for statistics.
Revision 1.5 1995/11/25 01:20:18 jussi
This code now uses Transform matrix operations to convert user/world
coordinates to screen pixel coordinates. This is to avoid any future
inconsistencies in how the different code locations compute the
conversion. xPerPixel and yPerPixel are now obsolete coefficients.
Revision 1.4 1995/11/24 21:24:39 jussi
Fixed inconsistencies in computing xPerPixel vs. scaling done by
View.
Revision 1.3 1995/11/24 16:10:40 jussi
Added copyright notice and cleaned up the code.
Revision 1.2 1995/09/05 22:16:04 jussi
Added CVS header.
*/
#include <assert.h>
#include <string.h>
// #define DEBUG
#include "Init.h"
#include "TDataViewX.h"
#include "TDataMap.h"
#include "ConnectorShape.h"
#include "Shape.h"
#include "Util.h"
#include "RecordLink.h"
//#define DEBUG
ImplementDList(BStatList, BasicStats *)
TDataViewX::TDataViewX(char *name, VisualFilter &initFilter, QueryProc *qp,
GlobalColor fg, GlobalColor bg, AxisLabel *xAxis,
AxisLabel *yAxis, Action *action) :
ViewGraph(name, initFilter, xAxis, yAxis, fg, bg, action)
{
_dataBin = new GDataBin();
DOASSERT(_dataBin, "Out of memory");
_map = 0;
_index = -1;
_queryProc = qp;
_totalGData = _numBatches = 0;
_batchRecs = Init::BatchRecs();
_queryFilter = initFilter;
_dispSymbols = true;
_dispConnectors = false;
_cMap = 0;
}
TDataViewX::~TDataViewX()
{
// SubClassUnmapped aborts any current query; this _must_ be done
// before this destructor exits, or members needed to do the abort
// will no longer be defined.
SubClassUnmapped();
delete _dataBin;
int index = _blist.InitIterator();
while (_blist.More(index)) {
delete _blist.Next(index);
}
_blist.DoneIterator(index);
_blist.DeleteAll();
_gstat.Clear();
_glist.DeleteAll();
}
void TDataViewX::InsertMapping(TDataMap *map)
{
ViewGraph::InsertMapping(map);
Coord xMin;
if (_queryProc->GetMinX(map, xMin))
View::SetXMin(true, xMin);
Refresh();
}
void TDataViewX::DerivedStartQuery(VisualFilter &filter, int timestamp)
{
#ifdef DEBUG
printf("start query\n");
#endif
_queryFilter = filter;
_timestamp = timestamp;
// Initialize statistics collection
_allStats.Init(this);
for(int i = 0; i < MAXCOLOR; i++)
_stats[i].Init(this);
int index = _blist.InitIterator();
while (_blist.More(index)) {
delete _blist.Next(index);
}
_blist.DoneIterator(index);
_blist.DeleteAll();
_gstat.Clear(); /* Clear the hashtable and calculate it again */
_glist.DeleteAll(); /* Clear the gdata list */
// Initialize record links whose master this view is
index = _masterLink.InitIterator();
while(_masterLink.More(index)) {
RecordLink *link = _masterLink.Next(index);
link->Initialize();
}
_masterLink.DoneIterator(index);
_index = InitMappingIterator(true); // open iterator backwards
if (MoreMapping(_index)) {
_map = NextMapping(_index)->map;
#ifdef DEBUG
printf("Submitting query 1 of %d: 0x%p\n", _mappings.Size(), _map);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -