14 #include "msdevstudio/MSconfig.h"
43 #ifdef ITERATOR_MEMBER_DEFECT
52 using namespace hippodraw;
63 m_fits_transform ( 0 ),
64 m_datarep_index ( -1 ),
65 m_has_autoscaled ( false ),
66 m_show_grid ( false ),
81 : m_x_label( plotter.m_x_label ),
82 m_y_label( plotter.m_y_label ),
83 m_z_label( plotter.m_z_label ),
84 m_datarep_index ( plotter.m_datarep_index ),
85 m_has_autoscaled ( plotter.m_has_autoscaled ),
86 m_show_grid ( plotter.m_show_grid ),
87 m_box_edge ( plotter.m_box_edge),
88 m_has_z ( plotter.m_has_z ),
89 m_reverse ( plotter.m_reverse )
108 const vector < DataRep * > & datareps = plotter.
m_datareps;
109 vector< DataRep * >::const_iterator first = datareps.begin ();
111 for ( ; first != datareps.end (); ++first ) {
127 vector < DataRep * > :: iterator first =
m_datareps.begin();
150 if ( rep == 0 )
return false;
159 for (
unsigned int i = 0; i <
m_datareps.size () ; i++ )
174 vector< DataRep * >::iterator it =
m_datareps.begin();
177 bool yes = index == -1;
179 (*it)->setSelected ( yes );
186 for (
int i = 0; it !=
m_datareps.end(); ++it, ++i ) {
191 projector -> checkScaling ();
210 vector < DataRep * > :: iterator first
266 int i =
static_cast< int >(
m_datareps.size() );
274 if ( index < 0 )
return 0;
324 vector < DataRep * >::iterator it
340 vector < DataRep * >::iterator first =
m_datareps.begin ();
341 for ( ; first !=
m_datareps.end (); ++first ) {
357 bool all_empty =
true;
358 vector< DataRep * >::iterator it =
m_datareps.begin();
367 if ( all_empty ==
true )
return;
430 vector< DataRep * >::iterator it =
m_datareps.begin();
445 double pos = cur_range.
pos();
446 range.setPos ( pos );
447 m_z_axis -> setIntersectRange ( cur_range, range );
459 double step=pow(cur_range.
high()/cur_range.
pos(), 0.05);
460 double low = cur_range.
pos()/step;
468 vector < DataRep * >:: const_iterator first =
m_datareps.begin();
469 for ( ; first !=
m_datareps.end(); ++ first ) {
470 yes |= (*first)->isDirty();
482 for (
unsigned int i = 0; i <
size; i++ ) {
484 if ( rep -> hasCut () ) {
491 for (
unsigned int i = 0; i <
size; i++ ) {
493 if ( rep -> hasCut () ==
false ) {
509 vector< DataRep * >::iterator it =
m_datareps.begin();
512 if ( *it != active_datarep ) {
518 active_datarep->drawProjectedValues (
m_transform, view );
525 bool scaled,
bool adjust_width )
528 vector< DataRep * >::iterator it =
m_datareps.begin();
529 bool yes = adjust_width ==
false;
531 (*it)->setRange ( axis, yes );
539 double min_pos = DBL_MAX;
540 vector< DataRep * >::const_iterator it =
m_datareps.begin();
543 if ( rep ->
hasAxis ( axis ) ) {
545 if ( pos > 0.0 ) min_pos = std::min ( min_pos, pos );
556 vector < DataRep * >:: iterator it =
m_datareps.begin();
567 vector < DataRep * >:: iterator it =
m_datareps.begin();
579 vector < DataRep * >:: iterator it =
m_datareps.begin();
582 projector->
reset ( );
598 vector < DataRep * >:: iterator it =
m_datareps.begin();
651 return rep -> getValueTransform ();
661 rep -> setValueTransform ( btc );
671 if ( ! ( index < 0 ) ) {
685 if ( !( index < 0 ) ) {
690 vector< DataRep * >::const_iterator it =
m_datareps.begin();
695 }
else if ( axis ==
Axes::Y ) {
721 if ( std::abs ( first - next ) > DBL_EPSILON ) {
735 if ( !( index < 0 ) ) {
740 vector< DataRep * >::const_iterator it =
m_datareps.begin();
745 }
else if ( axis ==
Axes::Y ) {
765 double next = projector->
getOffset ( axis );
766 if ( first != next )
return -1.0;
806 vector< DataRep * >:: iterator first =
m_datareps.begin ();
807 for ( ; first !=
m_datareps.end (); ++first ) {
808 (*first)->setAxisModel ( axis, model );
849 std::string what(
"CompositePlotter::setTransform: ");
850 what +=
"Require a BinaryTransform in this context.";
860 double & ux,
double & uy )
const
864 assert ( transform );
866 transform -> inverseTransform ( x, y );
876 unsigned int size = 3;
877 vector < string > labels;
878 labels.reserve ( 5 );
880 labels.push_back (
"Item number" );
889 labels.push_back (
"Density" );
895 labels.push_back (
"Density" );
917 double retval = proj->
getZValue ( x, y );
930 bool yes = tf -> inverseTransform ( x, y );
942 bool yes = tf_fits -> inverseTransform ( x, y );
961 double xoffset = tp->
xOffset();
962 double yoffset = tp->
yOffset();
968 picked.push_back ( 0.0 );
969 picked.push_back ( ux );
970 picked.push_back ( uy );
973 picked.push_back (
getZValue ( ux, uy,
true ) );
974 picked.push_back (
getZValue ( ux, uy,
false ) );
978 picked.push_back (
getZValue ( ux, uy,
false ) );
1012 double scaledRetval = retval * sf;
1015 retval = retval * sf;
1022 if ( axis==
Axes::Z && scaledRetval == 0.0 )
return 0.0;
1024 if ( scaledRetval > r.
high() ) {
1029 return r.
high() / sf;
1033 if ( scaledRetval < r.
low() ) {
1038 return r.
low() / sf;
1075 vector < DataRep * > :: iterator first =
m_datareps.begin ();
1094 const std::vector < AxisTick > & ticks )
1108 if ( number == 1 ) {
1114 for ( std::size_t i = 0; i < number; i++ ) {
1117 datarep -> isSelected () ) {
1121 if ( targets == 1 ) yes =
true;
1134 for ( std::size_t i = 0; i <
size; i++ ) {
1136 if ( dr -> isSelected () ) {
1151 for ( std::size_t i = 0; i <
size; i++ ) {
1210 if ( flag ==
false )
return;
1226 }
else if ( axis ==
Axes::Y ) {
1270 int parm,
bool dragging )
1282 setRange ( type, new_range,
false,
false );
1288 int parm,
bool dragging )
1300 setRange ( type, new_range,
false,
false );
1310 string what (
"PlotterBase::getRange: " );
1311 what +=
"This plotter does not have such axis";
1341 double factor = 1.0;
1458 if ( number < 2 )
return;
1460 bool wants_scaling =
false;
1461 for (
int i = 0; i < number; i++ ) {
1466 if ( wants_scaling ==
true ) {
1470 if ( width <= 0.0 ) {
1501 bool yes = ( has_scaled == false ) || is_dirty ==
true;
1517 transform->
validate ( x_range, y_range );
1522 if (
m_x_axis -> isAutoTicks () ) {
1523 const vector < AxisTick > & x_ticks
1528 if (
m_y_axis -> isAutoTicks () ) {
1529 const vector < AxisTick > & y_ticks
1536 if (
m_z_axis -> isAutoTicks () ) {
1537 const vector < AxisTick > & z_ticks
1541 z_lo = z_range.
low ();
1542 z_hi = z_range.
high ();
1561 Rect rect = transform -> calcRectangle ( x_range, y_range );
1564 double z_lo = range.
low ();
1565 double z_hi = range.
high ();
1566 transform -> transformZ ( z_lo );
1567 transform -> transformZ ( z_hi );
1582 double x_lo = x_range.
low();
1583 double x_hi = x_range.
high();
1585 double y_lo = y_range.
low();
1586 double y_hi = y_range.
high();
1588 Rect rect =
Rect (x_lo, y_lo, x_hi-x_lo, y_hi-y_lo);
1597 bool do_y,
bool do_z )
1662 DataRepList_t::const_iterator first =
m_datareps.begin();
1664 const DataRep * rep = *first++;
1665 bool yes = rep -> hasCut ();
1667 const vector < TupleCut > & tcuts = rep ->
getCuts ();
1668 unsigned int size = tcuts.size ();
1669 for (
unsigned int i = 0; i <
size; i++ ) {
1670 cuts.push_back ( &tcuts[i] );
1732 vector < DataRep * >:: iterator it =
m_datareps.begin();