summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/datavis3d/barchart/main.cpp16
-rw-r--r--examples/datavis3d/rainfall/main.cpp314
-rw-r--r--src/datavis3d/engine/q3dbars.cpp116
-rw-r--r--src/datavis3d/engine/q3dbars.h7
-rw-r--r--src/datavis3d/engine/q3dbars_p.h2
-rw-r--r--src/datavis3d/engine/qdatarow.cpp18
-rw-r--r--src/datavis3d/engine/qdatarow_p.h9
-rw-r--r--src/datavis3d/engine/qdataset.cpp8
8 files changed, 293 insertions, 197 deletions
diff --git a/examples/datavis3d/barchart/main.cpp b/examples/datavis3d/barchart/main.cpp
index 0a311892..bee02340 100644
--- a/examples/datavis3d/barchart/main.cpp
+++ b/examples/datavis3d/barchart/main.cpp
@@ -216,18 +216,18 @@ void ChartDataGenerator::addDataSet()
QVector<QString> weeks;
weeks << "week 1" << "week 2" << "week 3" << "week 4" << "week 5";
- // Set up data
- float hours[5][7] = {{2, 1, 3, 0.25, 1, 5, 7}
- , {0.5, 1, 3, 1, 2, 2, 3}
- , {1, 1, 2, 1, 4, 4, 4}
- , {0, 0, 0, 0, 2, 2, 0.25}
- , {3, 3, 6, 2, 2, 1, 1}};
+ // Set up data Mon Tue Wed Thu Fri Sat Sun
+ float hours[5][7] = { {2.0, 1.0, 3.0, 0.2, 1.0, 5.0, 7.0} // week 1
+ , {0.5, 1.0, 3.0, 1.0, 2.0, 2.0, 3.0} // week 2
+ , {1.0, 1.0, 2.0, 1.0, 4.0, 4.0, 4.0} // week 3
+ , {0.0, 0.0, 0.0, 0.0, 2.0, 2.0, 0.3} // week 4
+ , {3.0, 3.0, 6.0, 2.0, 2.0, 1.0, 1.0}}; // week 5
// Create data set
QDataSet *dataSet = new QDataSet();
// Add labels
- dataSet->setLabels("Day of week", "Week of year", "Hours doing something", weeks, days);
+ dataSet->setLabels("Week of year", "Day of week", "Hours playing banjo", weeks, days);
// Create data rows
QDataRow *dataRow;
@@ -236,7 +236,7 @@ void ChartDataGenerator::addDataSet()
// Create data items
for (int day = 0; day < days.size(); day++) {
// Add data to rows
- dataRow->addItem(new QDataItem(hours[week][day], "h, " + days.at(day)));
+ dataRow->addItem(new QDataItem(hours[week][day], "h"));//, " + days.at(day)));
}
// Add row to set
dataSet->addRow(dataRow);
diff --git a/examples/datavis3d/rainfall/main.cpp b/examples/datavis3d/rainfall/main.cpp
index 55f7155d..75ac3069 100644
--- a/examples/datavis3d/rainfall/main.cpp
+++ b/examples/datavis3d/rainfall/main.cpp
@@ -80,7 +80,7 @@ ChartDataGenerator::ChartDataGenerator(Q3DBars *rainfall)
m_chart->setBarType(Q3DBars::Cylinders, false);
// Set selection mode to bar and column
- //m_chart->setSelectionMode(Q3DBars::BarAndColumn);
+// m_chart->setSelectionMode(Q3DBars::BarAndColumn);
m_chart->setSelectionMode(Q3DBars::ZoomColumn);
// Set theme
@@ -109,198 +109,198 @@ void ChartDataGenerator::addDataSet()
QVector< QVector<QDataItem*> > data;
QVector<QDataItem*> row;
// 2000
- row.append(new QDataItem(72, "mm, January 2000"));
- row.append(new QDataItem(47, "mm, February 2000"));
- row.append(new QDataItem(37, "mm, March 2000"));
- row.append(new QDataItem(79, "mm, April 2000"));
- row.append(new QDataItem(42, "mm, May 2000"));
- row.append(new QDataItem(73, "mm, June 2000"));
- row.append(new QDataItem(94, "mm, July 2000"));
- row.append(new QDataItem(37, "mm, August 2000"));
- row.append(new QDataItem(17, "mm, September 2000"));
- row.append(new QDataItem(69, "mm, October 2000"));
- row.append(new QDataItem(42, "mm, November 2000"));
- row.append(new QDataItem(42, "mm, December 2000"));
+ row.append(new QDataItem(72, "mm"));//, January 2000"));
+ row.append(new QDataItem(47, "mm"));//, February 2000"));
+ row.append(new QDataItem(37, "mm"));//, March 2000"));
+ row.append(new QDataItem(79, "mm"));//, April 2000"));
+ row.append(new QDataItem(42, "mm"));//, May 2000"));
+ row.append(new QDataItem(73, "mm"));//, June 2000"));
+ row.append(new QDataItem(94, "mm"));//, July 2000"));
+ row.append(new QDataItem(37, "mm"));//, August 2000"));
+ row.append(new QDataItem(17, "mm"));//, September 2000"));
+ row.append(new QDataItem(69, "mm"));//, October 2000"));
+ row.append(new QDataItem(42, "mm"));//, November 2000"));
+ row.append(new QDataItem(42, "mm"));//, December 2000"));
data.append(row);
row.clear();
// 2001
- row.append(new QDataItem(25, "mm, January 2001"));
- row.append(new QDataItem(47, "mm, February 2001"));
- row.append(new QDataItem(20, "mm, March 2001"));
- row.append(new QDataItem(70, "mm, April 2001"));
- row.append(new QDataItem(27, "mm, May 2001"));
- row.append(new QDataItem(40, "mm, June 2001"));
- row.append(new QDataItem(123, "mm, July 2001"));
- row.append(new QDataItem(39, "mm, August 2001"));
- row.append(new QDataItem(66, "mm, September 2001"));
- row.append(new QDataItem(55, "mm, October 2001"));
- row.append(new QDataItem(29, "mm, November 2001"));
- row.append(new QDataItem(12, "mm, December 2001"));
+ row.append(new QDataItem(25, "mm"));//, January 2001"));
+ row.append(new QDataItem(47, "mm"));//, February 2001"));
+ row.append(new QDataItem(20, "mm"));//, March 2001"));
+ row.append(new QDataItem(70, "mm"));//, April 2001"));
+ row.append(new QDataItem(27, "mm"));//, May 2001"));
+ row.append(new QDataItem(40, "mm"));//, June 2001"));
+ row.append(new QDataItem(123, "mm"));//, July 2001"));
+ row.append(new QDataItem(39, "mm"));//, August 2001"));
+ row.append(new QDataItem(66, "mm"));//, September 2001"));
+ row.append(new QDataItem(55, "mm"));//, October 2001"));
+ row.append(new QDataItem(29, "mm"));//, November 2001"));
+ row.append(new QDataItem(12, "mm"));//, December 2001"));
data.append(row);
row.clear();
// 2002
- row.append(new QDataItem(24, "mm, January 2002"));
- row.append(new QDataItem(45, "mm, February 2002"));
- row.append(new QDataItem(27, "mm, March 2002"));
- row.append(new QDataItem(30, "mm, April 2002"));
- row.append(new QDataItem(16, "mm, May 2002"));
- row.append(new QDataItem(98, "mm, June 2002"));
- row.append(new QDataItem(122, "mm, July 2002"));
- row.append(new QDataItem(20, "mm, August 2002"));
- row.append(new QDataItem(50, "mm, September 2002"));
- row.append(new QDataItem(24, "mm, October 2002"));
- row.append(new QDataItem(22, "mm, November 2002"));
- row.append(new QDataItem(12, "mm, December 2002"));
+ row.append(new QDataItem(24, "mm"));//, January 2002"));
+ row.append(new QDataItem(45, "mm"));//, February 2002"));
+ row.append(new QDataItem(27, "mm"));//, March 2002"));
+ row.append(new QDataItem(30, "mm"));//, April 2002"));
+ row.append(new QDataItem(16, "mm"));//, May 2002"));
+ row.append(new QDataItem(98, "mm"));//, June 2002"));
+ row.append(new QDataItem(122, "mm"));//, July 2002"));
+ row.append(new QDataItem(20, "mm"));//, August 2002"));
+ row.append(new QDataItem(50, "mm"));//, September 2002"));
+ row.append(new QDataItem(24, "mm"));//, October 2002"));
+ row.append(new QDataItem(22, "mm"));//, November 2002"));
+ row.append(new QDataItem(12, "mm"));//, December 2002"));
data.append(row);
row.clear();
// 2003
- row.append(new QDataItem(43, "mm, January 2003"));
- row.append(new QDataItem(17, "mm, February 2003"));
- row.append(new QDataItem(26, "mm, March 2003"));
- row.append(new QDataItem(22, "mm, April 2003"));
- row.append(new QDataItem(60, "mm, May 2003"));
- row.append(new QDataItem(14, "mm, June 2003"));
- row.append(new QDataItem(86, "mm, July 2003"));
- row.append(new QDataItem(77, "mm, August 2003"));
- row.append(new QDataItem(69, "mm, September 2003"));
- row.append(new QDataItem(49, "mm, October 2003"));
- row.append(new QDataItem(23, "mm, November 2003"));
- row.append(new QDataItem(44, "mm, December 2003"));
+ row.append(new QDataItem(43, "mm"));//, January 2003"));
+ row.append(new QDataItem(17, "mm"));//, February 2003"));
+ row.append(new QDataItem(26, "mm"));//, March 2003"));
+ row.append(new QDataItem(22, "mm"));//, April 2003"));
+ row.append(new QDataItem(60, "mm"));//, May 2003"));
+ row.append(new QDataItem(14, "mm"));//, June 2003"));
+ row.append(new QDataItem(86, "mm"));//, July 2003"));
+ row.append(new QDataItem(77, "mm"));//, August 2003"));
+ row.append(new QDataItem(69, "mm"));//, September 2003"));
+ row.append(new QDataItem(49, "mm"));//, October 2003"));
+ row.append(new QDataItem(23, "mm"));//, November 2003"));
+ row.append(new QDataItem(44, "mm"));//, December 2003"));
data.append(row);
row.clear();
// 2004
- row.append(new QDataItem(15, "mm, January 2004"));
- row.append(new QDataItem(19, "mm, February 2004"));
- row.append(new QDataItem(10, "mm, March 2004"));
- row.append(new QDataItem(11, "mm, April 2004"));
- row.append(new QDataItem(41, "mm, May 2004"));
- row.append(new QDataItem(29, "mm, June 2004"));
- row.append(new QDataItem(49, "mm, July 2004"));
- row.append(new QDataItem(72, "mm, August 2004"));
- row.append(new QDataItem(50, "mm, September 2004"));
- row.append(new QDataItem(18, "mm, October 2004"));
- row.append(new QDataItem(19, "mm, November 2004"));
- row.append(new QDataItem(40, "mm, December 2004"));
+ row.append(new QDataItem(15, "mm"));//, January 2004"));
+ row.append(new QDataItem(19, "mm"));//, February 2004"));
+ row.append(new QDataItem(10, "mm"));//, March 2004"));
+ row.append(new QDataItem(11, "mm"));//, April 2004"));
+ row.append(new QDataItem(41, "mm"));//, May 2004"));
+ row.append(new QDataItem(29, "mm"));//, June 2004"));
+ row.append(new QDataItem(49, "mm"));//, July 2004"));
+ row.append(new QDataItem(72, "mm"));//, August 2004"));
+ row.append(new QDataItem(50, "mm"));//, September 2004"));
+ row.append(new QDataItem(18, "mm"));//, October 2004"));
+ row.append(new QDataItem(19, "mm"));//, November 2004"));
+ row.append(new QDataItem(40, "mm"));//, December 2004"));
data.append(row);
row.clear();
// 2005
- row.append(new QDataItem(60, "mm, January 2005"));
- row.append(new QDataItem(24, "mm, February 2005"));
- row.append(new QDataItem(12, "mm, March 2005"));
- row.append(new QDataItem(50, "mm, April 2005"));
- row.append(new QDataItem(88, "mm, May 2005"));
- row.append(new QDataItem(32, "mm, June 2005"));
- row.append(new QDataItem(76, "mm, July 2005"));
- row.append(new QDataItem(55, "mm, August 2005"));
- row.append(new QDataItem(92, "mm, September 2005"));
- row.append(new QDataItem(35, "mm, October 2005"));
- row.append(new QDataItem(105, "mm, November 2005"));
- row.append(new QDataItem(59, "mm, December 2005"));
+ row.append(new QDataItem(60, "mm"));//, January 2005"));
+ row.append(new QDataItem(24, "mm"));//, February 2005"));
+ row.append(new QDataItem(12, "mm"));//, March 2005"));
+ row.append(new QDataItem(50, "mm"));//, April 2005"));
+ row.append(new QDataItem(88, "mm"));//, May 2005"));
+ row.append(new QDataItem(32, "mm"));//, June 2005"));
+ row.append(new QDataItem(76, "mm"));//, July 2005"));
+ row.append(new QDataItem(55, "mm"));//, August 2005"));
+ row.append(new QDataItem(92, "mm"));//, September 2005"));
+ row.append(new QDataItem(35, "mm"));//, October 2005"));
+ row.append(new QDataItem(105, "mm"));//, November 2005"));
+ row.append(new QDataItem(59, "mm"));//, December 2005"));
data.append(row);
row.clear();
// 2006
- row.append(new QDataItem(27, "mm, January 2006"));
- row.append(new QDataItem(18, "mm, February 2006"));
- row.append(new QDataItem(17, "mm, March 2006"));
- row.append(new QDataItem(26, "mm, April 2006"));
- row.append(new QDataItem(24, "mm, May 2006"));
- row.append(new QDataItem(18, "mm, June 2006"));
- row.append(new QDataItem(35, "mm, July 2006"));
- row.append(new QDataItem(28, "mm, August 2006"));
- row.append(new QDataItem(80, "mm, September 2006"));
- row.append(new QDataItem(52, "mm, October 2006"));
- row.append(new QDataItem(43, "mm, November 2006"));
- row.append(new QDataItem(44, "mm, December 2006"));
+ row.append(new QDataItem(27, "mm"));//, January 2006"));
+ row.append(new QDataItem(18, "mm"));//, February 2006"));
+ row.append(new QDataItem(17, "mm"));//, March 2006"));
+ row.append(new QDataItem(26, "mm"));//, April 2006"));
+ row.append(new QDataItem(24, "mm"));//, May 2006"));
+ row.append(new QDataItem(18, "mm"));//, June 2006"));
+ row.append(new QDataItem(35, "mm"));//, July 2006"));
+ row.append(new QDataItem(28, "mm"));//, August 2006"));
+ row.append(new QDataItem(80, "mm"));//, September 2006"));
+ row.append(new QDataItem(52, "mm"));//, October 2006"));
+ row.append(new QDataItem(43, "mm"));//, November 2006"));
+ row.append(new QDataItem(44, "mm"));//, December 2006"));
data.append(row);
row.clear();
// 2007
- row.append(new QDataItem(41, "mm, January 2007"));
- row.append(new QDataItem(21, "mm, February 2007"));
- row.append(new QDataItem(30, "mm, March 2007"));
- row.append(new QDataItem(20, "mm, April 2007"));
- row.append(new QDataItem(53, "mm, May 2007"));
- row.append(new QDataItem(29, "mm, June 2007"));
- row.append(new QDataItem(139, "mm, July 2007"));
- row.append(new QDataItem(52, "mm, August 2007"));
- row.append(new QDataItem(51, "mm, September 2007"));
- row.append(new QDataItem(24, "mm, October 2007"));
- row.append(new QDataItem(47, "mm, November 2007"));
- row.append(new QDataItem(33, "mm, December 2007"));
+ row.append(new QDataItem(41, "mm"));//, January 2007"));
+ row.append(new QDataItem(21, "mm"));//, February 2007"));
+ row.append(new QDataItem(30, "mm"));//, March 2007"));
+ row.append(new QDataItem(20, "mm"));//, April 2007"));
+ row.append(new QDataItem(53, "mm"));//, May 2007"));
+ row.append(new QDataItem(29, "mm"));//, June 2007"));
+ row.append(new QDataItem(139, "mm"));//, July 2007"));
+ row.append(new QDataItem(52, "mm"));//, August 2007"));
+ row.append(new QDataItem(51, "mm"));//, September 2007"));
+ row.append(new QDataItem(24, "mm"));//, October 2007"));
+ row.append(new QDataItem(47, "mm"));//, November 2007"));
+ row.append(new QDataItem(33, "mm"));//, December 2007"));
data.append(row);
row.clear();
// 2008
- row.append(new QDataItem(67, "mm, January 2008"));
- row.append(new QDataItem(19, "mm, February 2008"));
- row.append(new QDataItem(30, "mm, March 2008"));
- row.append(new QDataItem(31, "mm, April 2008"));
- row.append(new QDataItem(29, "mm, May 2008"));
- row.append(new QDataItem(79, "mm, June 2008"));
- row.append(new QDataItem(75, "mm, July 2008"));
- row.append(new QDataItem(99, "mm, August 2008"));
- row.append(new QDataItem(34, "mm, September 2008"));
- row.append(new QDataItem(52, "mm, October 2008"));
- row.append(new QDataItem(60, "mm, November 2008"));
- row.append(new QDataItem(20, "mm, December 2008"));
+ row.append(new QDataItem(67, "mm"));//, January 2008"));
+ row.append(new QDataItem(19, "mm"));//, February 2008"));
+ row.append(new QDataItem(30, "mm"));//, March 2008"));
+ row.append(new QDataItem(31, "mm"));//, April 2008"));
+ row.append(new QDataItem(29, "mm"));//, May 2008"));
+ row.append(new QDataItem(79, "mm"));//, June 2008"));
+ row.append(new QDataItem(75, "mm"));//, July 2008"));
+ row.append(new QDataItem(99, "mm"));//, August 2008"));
+ row.append(new QDataItem(34, "mm"));//, September 2008"));
+ row.append(new QDataItem(52, "mm"));//, October 2008"));
+ row.append(new QDataItem(60, "mm"));//, November 2008"));
+ row.append(new QDataItem(20, "mm"));//, December 2008"));
data.append(row);
row.clear();
// 2009
- row.append(new QDataItem(9, "mm, January 2009"));
- row.append(new QDataItem(22, "mm, February 2009"));
- row.append(new QDataItem(11, "mm, March 2009"));
- row.append(new QDataItem(10, "mm, April 2009"));
- row.append(new QDataItem(69, "mm, May 2009"));
- row.append(new QDataItem(30, "mm, June 2009"));
- row.append(new QDataItem(78, "mm, July 2009"));
- row.append(new QDataItem(93, "mm, August 2009"));
- row.append(new QDataItem(70, "mm, September 2009"));
- row.append(new QDataItem(32, "mm, October 2009"));
- row.append(new QDataItem(56, "mm, November 2009"));
- row.append(new QDataItem(23, "mm, December 2009"));
+ row.append(new QDataItem(9, "mm"));//, January 2009"));
+ row.append(new QDataItem(22, "mm"));//, February 2009"));
+ row.append(new QDataItem(11, "mm"));//, March 2009"));
+ row.append(new QDataItem(10, "mm"));//, April 2009"));
+ row.append(new QDataItem(69, "mm"));//, May 2009"));
+ row.append(new QDataItem(30, "mm"));//, June 2009"));
+ row.append(new QDataItem(78, "mm"));//, July 2009"));
+ row.append(new QDataItem(93, "mm"));//, August 2009"));
+ row.append(new QDataItem(70, "mm"));//, September 2009"));
+ row.append(new QDataItem(32, "mm"));//, October 2009"));
+ row.append(new QDataItem(56, "mm"));//, November 2009"));
+ row.append(new QDataItem(23, "mm"));//, December 2009"));
data.append(row);
row.clear();
// 2010
- row.append(new QDataItem(12, "mm, January 2010"));
- row.append(new QDataItem(28, "mm, February 2010"));
- row.append(new QDataItem(55, "mm, March 2010"));
- row.append(new QDataItem(20, "mm, April 2010"));
- row.append(new QDataItem(65, "mm, May 2010"));
- row.append(new QDataItem(26, "mm, June 2010"));
- row.append(new QDataItem(134, "mm, July 2010"));
- row.append(new QDataItem(57, "mm, August 2010"));
- row.append(new QDataItem(51, "mm, September 2010"));
- row.append(new QDataItem(53, "mm, October 2010"));
- row.append(new QDataItem(8, "mm, November 2010"));
- row.append(new QDataItem(9, "mm, December 2010"));
+ row.append(new QDataItem(12, "mm"));//, January 2010"));
+ row.append(new QDataItem(28, "mm"));//, February 2010"));
+ row.append(new QDataItem(55, "mm"));//, March 2010"));
+ row.append(new QDataItem(20, "mm"));//, April 2010"));
+ row.append(new QDataItem(65, "mm"));//, May 2010"));
+ row.append(new QDataItem(26, "mm"));//, June 2010"));
+ row.append(new QDataItem(134, "mm"));//, July 2010"));
+ row.append(new QDataItem(57, "mm"));//, August 2010"));
+ row.append(new QDataItem(51, "mm"));//, September 2010"));
+ row.append(new QDataItem(53, "mm"));//, October 2010"));
+ row.append(new QDataItem(8, "mm"));//, November 2010"));
+ row.append(new QDataItem(9, "mm"));//, December 2010"));
data.append(row);
row.clear();
// 2011
- row.append(new QDataItem(34, "mm, January 2011"));
- row.append(new QDataItem(20, "mm, February 2011"));
- row.append(new QDataItem(30, "mm, March 2011"));
- row.append(new QDataItem(31, "mm, April 2011"));
- row.append(new QDataItem(42, "mm, May 2011"));
- row.append(new QDataItem(78, "mm, June 2011"));
- row.append(new QDataItem(85, "mm, July 2011"));
- row.append(new QDataItem(33, "mm, August 2011"));
- row.append(new QDataItem(42, "mm, September 2011"));
- row.append(new QDataItem(87, "mm, October 2011"));
- row.append(new QDataItem(41, "mm, November 2011"));
- row.append(new QDataItem(72, "mm, December 2011"));
+ row.append(new QDataItem(34, "mm"));//, January 2011"));
+ row.append(new QDataItem(20, "mm"));//, February 2011"));
+ row.append(new QDataItem(30, "mm"));//, March 2011"));
+ row.append(new QDataItem(31, "mm"));//, April 2011"));
+ row.append(new QDataItem(42, "mm"));//, May 2011"));
+ row.append(new QDataItem(78, "mm"));//, June 2011"));
+ row.append(new QDataItem(85, "mm"));//, July 2011"));
+ row.append(new QDataItem(33, "mm"));//, August 2011"));
+ row.append(new QDataItem(42, "mm"));//, September 2011"));
+ row.append(new QDataItem(87, "mm"));//, October 2011"));
+ row.append(new QDataItem(41, "mm"));//, November 2011"));
+ row.append(new QDataItem(72, "mm"));//, December 2011"));
data.append(row);
row.clear();
// 2012
- row.append(new QDataItem(32, "mm, January 2012"));
- row.append(new QDataItem(42, "mm, February 2012"));
- row.append(new QDataItem(30, "mm, March 2012"));
- row.append(new QDataItem(50, "mm, April 2012"));
- row.append(new QDataItem(30, "mm, May 2012"));
- row.append(new QDataItem(70, "mm, June 2012"));
- row.append(new QDataItem(52, "mm, July 2012"));
- row.append(new QDataItem(20, "mm, August 2012"));
- row.append(new QDataItem(99, "mm, September 2012"));
- row.append(new QDataItem(70, "mm, October 2012"));
- row.append(new QDataItem(69, "mm, November 2012"));
- row.append(new QDataItem(49, "mm, December 2012"));
+ row.append(new QDataItem(32, "mm"));//, January 2012"));
+ row.append(new QDataItem(42, "mm"));//, February 2012"));
+ row.append(new QDataItem(30, "mm"));//, March 2012"));
+ row.append(new QDataItem(50, "mm"));//, April 2012"));
+ row.append(new QDataItem(30, "mm"));//, May 2012"));
+ row.append(new QDataItem(70, "mm"));//, June 2012"));
+ row.append(new QDataItem(52, "mm"));//, July 2012"));
+ row.append(new QDataItem(20, "mm"));//, August 2012"));
+ row.append(new QDataItem(99, "mm"));//, September 2012"));
+ row.append(new QDataItem(70, "mm"));//, October 2012"));
+ row.append(new QDataItem(69, "mm"));//, November 2012"));
+ row.append(new QDataItem(49, "mm"));//, December 2012"));
data.append(row);
row.clear();
// Set up row and column names
diff --git a/src/datavis3d/engine/q3dbars.cpp b/src/datavis3d/engine/q3dbars.cpp
index 6f29268e..6affa410 100644
--- a/src/datavis3d/engine/q3dbars.cpp
+++ b/src/datavis3d/engine/q3dbars.cpp
@@ -451,34 +451,55 @@ void Q3DBars::drawZoomScene()
}
// Draw labels for axes
- // TODO: label of selected row/column above the bars
- // TODO: label of selected column/row below the bar labels
+ QDataItem *dummyItem = NULL;
+ LabelItem x;
+ LabelItem z;
+ LabelItem y;
+ d_ptr->m_dataSet->d_ptr->axisLabelItems(&x, &z, &y);
+ LabelItem zoomSelectionLabel = d_ptr->m_zoomSelection->d_ptr->labelItem();
+ if (ZoomRow == d_ptr->m_selectionMode) {
+ drawLabel(*dummyItem, zoomSelectionLabel.textureId(), zoomSelectionLabel.size(), viewMatrix,
+ projectionMatrix, false, 0.0f, LabelTop);
+ drawLabel(*dummyItem, z.textureId(), z.size(), viewMatrix, projectionMatrix, false, 0.0f,
+ LabelBottom);
+ } else {
+ drawLabel(*dummyItem, x.textureId(), x.size(), viewMatrix, projectionMatrix, false, 0.0f,
+ LabelBottom);
+ drawLabel(*dummyItem, zoomSelectionLabel.textureId(), zoomSelectionLabel.size(), viewMatrix,
+ projectionMatrix, false, 0.0f, LabelTop);
+ }
+ drawLabel(*dummyItem, y.textureId(), y.size(), viewMatrix, projectionMatrix, false, 90.0f,
+ LabelLeft);
// Draw labels for bars
for (int col = 0; col < d_ptr->m_zoomSelection->d_ptr->row().size(); col++) {
QDataItem *item = d_ptr->m_zoomSelection->d_ptr->getItem(col);
// Draw values
drawLabel(*item, item->d_ptr->textureId(), item->d_ptr->labelSize(), viewMatrix,
- projectionMatrix, false, 0.0f,
- LabelOver);
+ projectionMatrix, false, 0.0f, LabelOver);
// Draw labels
+ // TODO: If there are 0 -valued bars, labeling goes wrong. Fix it.
LabelItem labelItem;
if (ZoomRow == d_ptr->m_selectionMode) {
- // TODO: Testi, piirrä axislabel kokeeksi
-// LabelItem x, z, y;
-// d_ptr->m_dataSet->d_ptr->axisLabelItems(&x, &z, &y);
-// drawLabel(*item, x.textureId(), x.size(),
-// viewMatrix, projectionMatrix, false, -45.0f, LabelBelow);
- if (d_ptr->m_dataSet->d_ptr->columnLabelItems().size() > col)
- labelItem = d_ptr->m_dataSet->d_ptr->columnLabelItems().at(col);
+ if (d_ptr->m_dataSet->d_ptr->columnLabelItems().size() > col) {
+ // If draw order of bars is flipped, label draw order should be too
+ if (d_ptr->m_xFlipped) {
+ labelItem = d_ptr->m_dataSet->d_ptr->columnLabelItems().at(
+ d_ptr->m_dataSet->d_ptr->columnLabelItems().size() - col - 1);
+ } else {
+ labelItem = d_ptr->m_dataSet->d_ptr->columnLabelItems().at(col);
+ }
+ }
} else {
- // TODO: Testi, piirrä axislabel kokeeksi
-// LabelItem x, z, y;
-// d_ptr->m_dataSet->d_ptr->axisLabelItems(&x, &z, &y);
-// drawLabel(*item, z.textureId(), z.size(),
-// viewMatrix, projectionMatrix, false, -45.0f, LabelBelow);
- if (d_ptr->m_dataSet->d_ptr->rowLabelItems().size() > col)
- labelItem = d_ptr->m_dataSet->d_ptr->rowLabelItems().at(col);
+ if (d_ptr->m_dataSet->d_ptr->rowLabelItems().size() > col) {
+ // If draw order of bars is flipped, label draw order should be too
+ if (d_ptr->m_zFlipped) {
+ labelItem = d_ptr->m_dataSet->d_ptr->rowLabelItems().at(
+ d_ptr->m_dataSet->d_ptr->rowLabelItems().size() - col - 1);
+ } else {
+ labelItem = d_ptr->m_dataSet->d_ptr->rowLabelItems().at(col);
+ }
+ }
}
// Check if there is a label before drawing
if (labelItem.textureId() > 0) {
@@ -542,19 +563,23 @@ void Q3DBars::drawScene()
startRow = 0;
stopRow = d_ptr->m_sampleCount.y();
stepRow = 1;
+ d_ptr->m_zFlipped = false;
} else {
startRow = d_ptr->m_sampleCount.y() - 1;
stopRow = -1;
stepRow = -1;
+ d_ptr->m_zFlipped = true;
}
if (viewMatrix.row(0).z() < 0) {
startBar = 0;
stopBar = d_ptr->m_sampleCount.x();
stepBar = 1;
+ d_ptr->m_xFlipped = false;
} else {
startBar = d_ptr->m_sampleCount.x() - 1;
stopBar = -1;
stepBar = -1;
+ d_ptr->m_xFlipped = true;
}
// calculate background rotation based on view matrix rotation
@@ -801,6 +826,10 @@ void Q3DBars::drawScene()
if (!d_ptr->m_zoomActivated && ZoomRow == d_ptr->m_selectionMode) {
item->d_ptr->setTranslation(modelMatrix.column(3).toVector3D());
d_ptr->m_zoomSelection->addItem(item);
+ d_ptr->m_zoomSelection->d_ptr->setLabelItem(
+ d_ptr->m_dataSet->d_ptr->rowLabelItems().at(
+ d_ptr->m_dataSet->d_ptr->rowLabelItems().size()
+ - row - 1));
}
break;
}
@@ -812,6 +841,10 @@ void Q3DBars::drawScene()
if (!d_ptr->m_zoomActivated && ZoomColumn == d_ptr->m_selectionMode) {
item->d_ptr->setTranslation(modelMatrix.column(3).toVector3D());
d_ptr->m_zoomSelection->addItem(item);
+ d_ptr->m_zoomSelection->d_ptr->setLabelItem(
+ d_ptr->m_dataSet->d_ptr->columnLabelItems().at(
+ d_ptr->m_dataSet->d_ptr->columnLabelItems().size()
+ - bar - 1));
}
break;
}
@@ -900,7 +933,9 @@ void Q3DBars::drawLabel(const QDataItem &item, GLuint textureId, QSize textureSi
// Draw label
QMatrix4x4 modelMatrix;
QMatrix4x4 MVPMatrix;
- qreal yPosition = -1.5f;
+ GLfloat xPosition;
+ GLfloat yPosition;
+ GLfloat zPosition = zComp;
switch (position) {
case Q3DBars::LabelBelow:
{
@@ -933,14 +968,41 @@ void Q3DBars::drawLabel(const QDataItem &item, GLuint textureId, QSize textureSi
yPosition -= 0.5f;
break;
}
+ case Q3DBars::LabelBottom:
+ {
+ yPosition = -2.0f; // TODO: Calculate from scene
+ xPosition = 0.0f;
+ break;
+ }
+ case Q3DBars::LabelTop:
+ {
+ yPosition = 0.75f; // TODO: Calculate from scene
+ xPosition = 0.0f;
+ break;
+ }
+ case Q3DBars::LabelLeft:
+ {
+ yPosition = -0.625f; // TODO: Calculate from scene
+ xPosition = -2.5f; // TODO: Calculate from scene
+ break;
+ }
+ case Q3DBars::LabelRight:
+ {
+ yPosition = -0.625f; // TODO: Calculate from scene
+ xPosition = 2.5f; // TODO: Calculate from scene
+ break;
+ }
+ }
+
+ if (position < LabelBottom) {
+ xPosition = item.d_ptr->translation().x();
+ if (useDepth)
+ zPosition = item.d_ptr->translation().z();
+ else if (ZoomColumn == d_ptr->m_selectionMode)
+ xPosition = -(item.d_ptr->translation().z()) + zComp; // flip first to left
}
- qreal zPosition = zComp;
- qreal xPosition = item.d_ptr->translation().x();
- if (useDepth)
- zPosition = item.d_ptr->translation().z();
- else if (ZoomColumn == d_ptr->m_selectionMode)
- xPosition = -(item.d_ptr->translation().z()) + zComp; // flip first to left
+ // Position label
modelMatrix.translate(xPosition, yPosition, zPosition);
// Rotate
@@ -1386,7 +1448,9 @@ Q3DBarsPrivate::Q3DBarsPrivate(Q3DBars *q)
m_labelTransparency(Q3DBars::TransparencyNone),
m_fontSize(10.0f),
m_font(QFont(QStringLiteral("Arial"))),
- m_drawer(new Drawer(*m_theme, m_font, m_labelTransparency))
+ m_drawer(new Drawer(*m_theme, m_font, m_labelTransparency)),
+ m_xFlipped(false),
+ m_zFlipped(false)
{
m_dataSet->d_ptr->setDrawer(m_drawer);
}
diff --git a/src/datavis3d/engine/q3dbars.h b/src/datavis3d/engine/q3dbars.h
index 314e6a03..ef02eee8 100644
--- a/src/datavis3d/engine/q3dbars.h
+++ b/src/datavis3d/engine/q3dbars.h
@@ -114,12 +114,17 @@ public:
ZoomColumn
};
+ // TODO: Should this be moved to Q3DBarsPrivate? Not for use via API directly?
enum LabelPosition {
LabelBelow = 0,
LabelLow,
LabelMid,
LabelHigh,
- LabelOver
+ LabelOver,
+ LabelBottom, // Absolute positions from here onward, used for axes (QDataItem is ignored)
+ LabelTop,
+ LabelLeft,
+ LabelRight
};
public:
diff --git a/src/datavis3d/engine/q3dbars_p.h b/src/datavis3d/engine/q3dbars_p.h
index cb13aea1..bf50367e 100644
--- a/src/datavis3d/engine/q3dbars_p.h
+++ b/src/datavis3d/engine/q3dbars_p.h
@@ -153,6 +153,8 @@ public:
GLfloat m_fontSize;
QFont m_font;
Drawer *m_drawer;
+ bool m_xFlipped;
+ bool m_zFlipped;
};
QTCOMMERCIALDATAVIS3D_END_NAMESPACE
diff --git a/src/datavis3d/engine/qdatarow.cpp b/src/datavis3d/engine/qdatarow.cpp
index 2146aabe..fee4bdc2 100644
--- a/src/datavis3d/engine/qdatarow.cpp
+++ b/src/datavis3d/engine/qdatarow.cpp
@@ -71,7 +71,8 @@ void QDataRow::addItem(QDataItem *item)
QDataRowPrivate::QDataRowPrivate(QDataRow *q, const QString &label)
: q_ptr(q),
- m_label(label)
+ m_label(label),
+ m_labelItem(LabelItem())
{
}
@@ -129,4 +130,19 @@ float QDataRowPrivate::highestValue()
return max;
}
+QString QDataRowPrivate::label()
+{
+ return m_label;
+}
+
+void QDataRowPrivate::setLabelItem(const LabelItem &item)
+{
+ m_labelItem = item;
+}
+
+LabelItem QDataRowPrivate::labelItem()
+{
+ return m_labelItem;
+}
+
QTCOMMERCIALDATAVIS3D_END_NAMESPACE
diff --git a/src/datavis3d/engine/qdatarow_p.h b/src/datavis3d/engine/qdatarow_p.h
index c614af81..50dae99f 100644
--- a/src/datavis3d/engine/qdatarow_p.h
+++ b/src/datavis3d/engine/qdatarow_p.h
@@ -54,6 +54,7 @@
#include "qdatavis3dglobal.h"
#include "qdatarow.h"
+#include "labelitem_p.h"
#include <QVector>
#include <QString>
@@ -63,7 +64,7 @@ class QDataItem;
class QDataRowPrivate
{
- public:
+public:
explicit QDataRowPrivate(QDataRow *q, const QString &label = QString());
~QDataRowPrivate();
@@ -73,11 +74,15 @@ class QDataRowPrivate
QDataItem *getItem(int itemIndex);
void verifySize(int size);
float highestValue();
+ QString label();
+ void setLabelItem(const LabelItem &item);
+ LabelItem labelItem();
- private:
+private:
QDataRow *q_ptr;
QVector<QDataItem*> m_row;
QString m_label;
+ LabelItem m_labelItem;
friend class QDataRow;
};
diff --git a/src/datavis3d/engine/qdataset.cpp b/src/datavis3d/engine/qdataset.cpp
index f32507b6..6a3cafe7 100644
--- a/src/datavis3d/engine/qdataset.cpp
+++ b/src/datavis3d/engine/qdataset.cpp
@@ -80,13 +80,13 @@ void QDataSet::setLabels(const QString &xAxis,
d_ptr->m_zAxis = zAxis;
// Generate axis label texture
if (d_ptr->m_drawer)
- d_ptr->m_drawer->generateLabelItem(d_ptr->m_zAxisItem, xAxis);
+ d_ptr->m_drawer->generateLabelItem(d_ptr->m_zAxisItem, zAxis);
}
if (yAxis != empty && d_ptr->m_yAxis != yAxis) {
d_ptr->m_yAxis = yAxis;
// Generate axis label texture
if (d_ptr->m_drawer)
- d_ptr->m_drawer->generateLabelItem(d_ptr->m_yAxisItem, xAxis);
+ d_ptr->m_drawer->generateLabelItem(d_ptr->m_yAxisItem, yAxis);
}
d_ptr->m_labelsRow = labelsRow;
d_ptr->m_labelsColumn = labelsColumn;
@@ -251,9 +251,13 @@ void QDataSetPrivate::updateTextures()
m_drawer->generateLabelItem(m_zAxisItem, m_zAxis);
m_drawer->generateLabelItem(m_yAxisItem, m_yAxis);
for (int itemCount = 0; itemCount < m_labelsColumn.size(); itemCount++) {
+ if (m_labelItemsColumn.size() < itemCount + 1)
+ m_labelItemsColumn.append(LabelItem());
m_drawer->generateLabelItem(m_labelItemsColumn[itemCount], m_labelsColumn.at(itemCount));
}
for (int itemCount = 0; itemCount < m_labelsRow.size(); itemCount++) {
+ if (m_labelItemsRow.size() < itemCount + 1)
+ m_labelItemsRow.append(LabelItem());
m_drawer->generateLabelItem(m_labelItemsRow[itemCount], m_labelsRow.at(itemCount));
}
}